21
Help us understand the problem. What are the problem?

posted at

updated at

昔作ってたクソVBAを紹介する

はじめに

私は文系の学部出身で、少なくとも現在は職業プログラマーではありません。学生のころ縁故でコーディングができるアルバイトをやらせてもらい、はじめて実用的なプログラムを書いたのはVBAでした。ひとは孵って最初に使った言語を親と思って付いていく習性があって、VBAでいろんなものを作った記憶があります。

この記事では、私がプログラミングを始めてから日が浅い頃に書いた、役に立たないけど愛おしいプログラムたちをご紹介します。

画像デコーダー

ビットマップ画像ファイル *.bmp を解析して各画素の色を取得し、セルを小さな正方形に整形して背景色で画像を表現しています。

こんなエクストリームな用途でないと再現できないことですが、あるブックに設定できる背景色数には限度があるようで、フルカラーの写真などを読み込ませようとするとエラーが出ます。

image.png

迷路ソルバ

迷路生成と探索です。これもセルの背景色で表現しています。

たしかアルゴリズムの勉強をしていて作りました。画面の更新を切れば生成速度は早くなるんですが、うねうね動いて面白い方を優先しました。その代わりステータスバーで進捗を見せています。

MIDIプレイヤー

再びバイナリファイルの解析です。ここではMIDIファイル *.mid から音符や発音タイミング情報をシートに書き出し、それを順番に送ることで再生しています。マルチトラック対応なのでピアノ曲だけでなく、オーケストラでも大丈夫です。

がっつりWindowsAPIプログラミングです。VB6の資料をたくさん読みました。この頃あたり、並行してVB.NETを書いていました。いま日曜プログラマーとしてできることの大体はこの時期に身に着けたと思っています。

ライフゲーム

2次元セルラーオートマトン、いわゆるライフゲームです。虹色なのはHSVとRGBの相互変換を書いたからです。この時調べたサンプルコードをきっかけにJavaScriptを書き始めたような。

とりあえず乱数で初期値を与えています、十分見ていて面白いです。

ところで、VB6系の疑似乱数生成器は作りが粗悪なのはご存知でしょうか。私の取り出し方にも問題があるのですが、VBA組み込みのRandomizeRndを使うと、初期値は同じパターンの繰り返しになります。

6/10 訂正します。

image.png

上の動画では.NETのSystem.Randomを借りて来ています。

おわりに

以上、VBAが大好きだった頃に書いたクソプログラムたちでした。VBAが親だとするなら、さしずめ今は反抗期といったところ。しばらく書いていませんが、どこか懐かしくて面白いプログラミング言語です。

上記のプログラムはいずれもGitHubに置いてあります。はじめたての頃作ったもので今では見てられないので、リンクは特に貼りません。気になった方は他の記事から辿ってみてください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
21
Help us understand the problem. What are the problem?