2012年3月25日日曜日

スキルとマインド



スキルは手軽に身につけられる時代

たまにJsdo.itでJavaScriptを書いて遊んでいます。
上は私がポストしたボールの衝突シミュレーションです。

これを作るのに、Jsdo.it上に公開されているコードはもちろん、他の様々なWebサイト(数学や物理学)を参考にさせてもらいました。

やはり他人のコードを読むのは勉強になりますね。

一人で学習しているとどうしても知識や発想が偏ってしまうので、自分の知らない技術に触れるいい機会になりますし、アイデアの刺激にもなります。

元々職業プログラマではない私がコードを書けるようになったのも、こうしたWebの情報資産に負うところが多いです。


でもこれって、よく考えてみると凄い事ですよね。


昔はお金を出さなければ得られなかった情報に、タダ同然で無尽蔵にアクセスできる。
ヤル気と少しの適性さえあれば、その情報を活用して玄人はだしの素人が続々と現れる、そんな時代です。

そんな時代に本当に必要とされているもの、生き残るために大切なものって何なんでしょうか?

2012年3月23日金曜日

Yahoo検索ランキングからキーワードを取得するスクリプト

WSHでDOMを扱う備忘録としてポストします。
最初はVBSで書こうとしたのですが、Msxml2.DOMDocumentが扱いにくかったのでJavaScriptで書き直しました。

コピペして拡張子を.jsにすると実行できます(Windowsのみ)。

2012年3月22日木曜日

外見と中身ーバランスの話

今日は若い人向けの話です。



「外見や見た目なんて下らないし、どうでもいい。内面や、中身こそが大切なんだ!」

「オシャレにばかり気を遣う奴は頭悪い。」

なんて考えてた時期が、俺にもありました。中学生くらいのときかな。いわゆる中二病ってやつ。

冴えないメガネと坊主頭でイケメンとはほど遠く、女の子からモテない現実から目を反らすために、こんな思想を持つに至ったんでしょう、きっと。泣けますね(笑)

2012年3月13日火曜日

ブログを書く理由

私に限らず、なんで人はわざわざブログなどというものを書こうとするのか?

やった事のある人なら分かると思いますが、ブログはメンドクサイのです。
アカウントをとって、見栄えを整えて、記事の内容や構成を検討して…
何かしら動機がないと続くわけがない代物です。

その動機とは何なのでしょうか?
ちょっと思いつく物をかいてみます。

2012年3月12日月曜日

VBA配列クラス ArrayCls の使用方法

インストール

ダウンロード後解凍して下さい。
下記7つのクラスモジュールがインポート済みのエクセルブックが出てきます。

  • ArrayCls
  • Utilities
  • Util_Array
  • Util_Change
  • Util_Exists
  • Util_Operator
  • Util_Search
  • Util_Sort
上記のクラスモジュールを、使いたいエクセルブックにインポートすれば準備完了です。

サンプルコードを動かす

ダウンロードしたエクセルブックには、サンプルコードが付いています。
"sample"モジュールをプロジェクトウィンドウで確認しましょう。
コードを実行し、イミディエイトウィンドウで実行結果を確認してみて下さい。

基本的な使い方

createArray() または Factories.createArray() でインスタンスを生成します。
引数には任意の数の配列要素を渡して初期化することができます。

Dim myArray as ArrayCls
Set myArray = createArray(elm1, elm2, elm3...)
または、直接 New することもできます。
この場合は空の配列が生成されます。

Dim myArray as New ArrayCls

VBAでpushやpopができる配列クラスを実装しました


VBAの配列でpushやpopがしたい!

Excelで繰り返し作業を行うときは、マクロが便利ですね。
「マクロの記録」ボタンを使えば初心者にも簡単にコードを扱えます。

でも、ちょっと複雑な作業を行おうとすると、マクロの記録だけでは難しい。
プログラムとしてVBAを学ぶ必要が出てきます。

ただ、そこで残念なのはVBAの言語設計が古い事です。
現在主流のスクリプト言語ーJavaScript, Python, Ruby などーは本格的なオブジェクト指向で、多くの便利な機能を提供してくれます。

たとえば、配列の末尾に要素を追加する場合を考えてみましょう。
Rubyなら1行で終わりです。

myArray.push(newValue)

しかし、VBAだと…

newIndex = Ubound(myArray) + 1
ReDim Preserve myArray(newIndex)
myArray(newIndex) = newValue

…いかにも冗長で嫌になりますね!
でも、Excelでマクロを書くには、VBAを使うしかありません。
では、どうするか?