匠達のセル道TOPへ    


第8回  bykin編  インタビュー実施日:2002/11/12


1 初めてエクセルに触れた時期は?

 私の職場はPCの導入が遅かったんです。OA機器といえばすなわちワープロでした。ですからDOSのPCやソフトはほとんど使ったことがありません。表計算ソフトも最初に使ったのは富士通のワープロ「OASYS」に付いてくるカルクという機能でした。その後「OASYS」に何故かMSの「マルチプラン」がオプションで付くようになり、しばらくはそれを使ってました。
 Win3.1が一般的になった頃、ようやく本格的にPCが(といっても数台ですが)導入され始めたので、最初にエクセルに触れたのもその時期です。バージョンは5.0でした。ウィンドウズ特有の操作方法に最初はちょっと戸惑いましたが「マルチプラン」と関数がそっくりだったのであまり抵抗なく覚えることができました。

2 初めてVBAコードを書いた時期は?

 エクセルで業務をするためにいろいろと参考書を読んだりしていたのですが、マクロのこともそこで知りました。自動記録でいろいろ実験してみたら結構面白かったので専門的な参考書(当時は少なかった)を買ってきたりして深みにはまってしまったという感じです(笑)。
 私は文科系出身の人間ですが、エクセルを知る前に仕事で一時COBOLを扱っていたことがあり、そういうプログラミングの知識がVBAの文法を理解するのに役に立ちました。とは言うものの当時は差込印刷用のマクロをちょこっと組んでたくらいのものです。
 エクセルが95にバージョンアップした頃に仕事の関係で作ったローンのシミュレーションソフトが最初のまともな作品かな?
 最初は1つのファイルだけだったんですが、機能を強化していくうちにサイズが大きくなってしまって、最後はXLSファイルを5つくらい同時に開いて使っていたというややこしいソフトでした。マシンの解像度に合わせてメイン画面用のシートを複数枚用意して、起動時に解像度を取得して対応するサイズの画面に切り替えたり、ダイアログボックスをシート上の任意の位置に表示させる裏技を編み出したり、当時からAPIを使ってディープなことをやってました(笑)。

3 VBAコードを書く時間を無理やり1日平均にすると?

 最近は仕事の内容が変わったこともあり、業務用のコードを書くことはほとんどありません。自宅でソフトを開発するためと、Q&A掲示板に回答を付けるときの確認用に書くという感じです。
 平日は夜しか時間が取れないので長くても2時間が限度です。ソフト開発中の休日なんかは朝から晩までPCと格闘していることもあります。アイデアを思いつくとその場ですぐコードにしないと忘れちゃうんですね。だから布団の中で思いついて、夜中にコードに赤ペン入れるなんてこともたまにあります。(長いコードは大体印刷してます)
 でも全然書かない日も結構あるから平均すると1日1時間あるかないかってとこだと思います。

4 思い入れのある作品とその理由は?

 公開はしていないのですが、ローンソフトを作ったのと同時期から個人的に作り始めた小学校低学年用の算数のお勉強ソフトがあるんです。その名も「いちにのさんすう」(笑)。
 セルを使って計算式を表示させ、数字のボタンを押すことで順番に解答していくというものです。ローンソフトと同様に解像度チェックをやったり、操作説明のシートを用意してボタンで表示させたり、成績をシートに保存して確認できるようにしたり・・・とVBAを使いまくった作品なんですが、エクセルが95から97にバージョンアップした際に97では動かない(実行エラーが出る)ことが判明し、大ショックを受けました。
 MSのアナウンスでは互換性があるはずだったのに!っと怒り心頭に達した私は97で作り直すくらいなら・・・ということで無謀にもVBを入手し、そっちで一から作り直したのでした。(結局MSが儲かった)
 VB版は一応完成していて公開しようとも思っていたのですが、効果音を自分で作ろうとして結局断念し、そのままお蔵入りとなっています(笑)。
 でもVBを覚えたことでVBAに対する理解もまた深まりました。そのきっかけを作ってくれた作品です。

5 これからVBAを覚えようとういう方々へのアドバイスを!

 私がVBAを使い始めた頃はインターネットも普及していないし、数冊の参考書とヘルプが唯一の先生だったのですが、最近は随分変わりました。参考書は何種類も出版されているし、ネットで調べればサンプルコードもいろいろと見つけることができます。
 でも、便利になったからといって既存のコードをそのまま使っているだけでは覚えたことにはなりません。自分のやりたい処理にそのコードをどう応用させて行くのか、その力量が問われるわけです。
 まずVBAコードに対する読解力を身につけることが大切だと思います。そのために私はVBAのリファレンス本を入手することをお勧めします。ステートメント・プロパティ・メソッドなどの解説が載っている辞書みたいな本のことです。ヘルプでも調べることはできますが、やはり遅いですよね。それに本ならPCが使えない状況で紙に書かれたコードしか手元になくてもOKです。
 プロパティやメソッドはそれこそ山のようにあるので、すべてを覚えることは実際不可能ですし、その必要もありません。英文を読むときに英和辞典を使うのと同じように、VBAコードを読むときにリファレンス本を上手に使うことで、自然と理解が深まっていくと思います。

ちなみに私もリファレンス本を愛用しています。私の場合、これなくしてソフトを作ることは不可能です(笑)。

6 初心者時代の作品を「匠達のセル道」でアップさせていただけませんか?

 初期の作品は業務用ばかりなので申し訳ありませんが公開はできません。なので、エクセル95時代に作ったユーティリティなんですが・・・「bykin's Utility」
 VBAを書くときの補助ツールとして開発したものです。これも95でしか動かなかったのですが、今回公開するにあたりエクセル2000で動作チェックを行い一部コードを修正しましたので、97以降でも一応動くと思います。それにしてもこの頃からVBAでセットアップ作ってたんですね(笑)。

7 VBA作成時こころがけていること、宣伝、直リン、何でも結構、最後に一言!

 最近はコードを書くのはもっぱら趣味の世界なので、作品はゲームユーティリティになってしまいます。
 エクセル+VBAの環境でゲームを作るときに必ず考えるのは、如何にしてユーザーの操作を制限するか?っていうことです。VBと違ってエクセルという基盤の上に乗っかったソフトなので、標準でできる各種操作をされたら困る場合がゲームでは多々あるんですね。ユーザーがどんな操作をするのかはこちらではわからないわけです。だから、メニューを独自のものに変更して他のツールバーは表示できなくしたり、キーボードからの入力を制限したりなんてことをいろいろやってます。このあたりの考え方については賛否両論いろいろあると思うんですが、私は「Microsoft Excel97 デベロッパーズハンドブック」(アスキー出版局1997年発行)という参考書の影響を強く受けています。
 もうひとつ常に念頭に置いているのは、せっかくエクセルを使うのだからなるべくワークシートを有効に利用した作品にしようということです。そのほうがエクセルらしくていいと思うんです。もっとも私の作ったゲームではワークシートなんて使っていないように見えて、実はワークシート上で操作しているって感じのやつが多いんですけどね(笑)。
 でもゲームで一番悩むのはやっぱりゲームの内容かな?・・・これはコード書くのよりよっぽどしんどい作業です(笑)。

 ユーティリティの場合は、自分が困っていることを何とか解決したいという欲求からコードを書き始めることが多いです。
 私は画面上でコードを推敲するのはどうも苦手で、ついつい印刷してしまいます。皆さんもご存知のとおり印刷は白黒でしかできませんよね。画面と同じ配色で印刷もできればいいのに・・・と以前から不満に思っていたのですが、電子メールの返信文の作成を補助するツールを開発したことがきっかけで、VBAコードをHTMLに変換すればカラー印刷ができる!というアイデアが浮かびました。それを元にいろいろと試行錯誤しながら作成したのが「VBAコードHTML変換」というアドインです。このアドインではVBAコードを読み込んで単語のチェックをする必要があるのですが、そのためにはVBEditorがどのようにコードを色分けしているのかを調べなければなりません。ところがこの色分けの基準が実に曖昧なんですね。アドインのReadMeに少し詳しく書きましたが、ヘルプとの整合性がまるでないんです。結局キーワードや関数をひとつひとつチェックする羽目になってしまいました。おかげでVBEditorには強くなりましたが(笑)。
 このようにユーティリティでは操作する親ソフトの処理の基準が不明なことが多いのが困りものです。まあ、実験しているうちに親ソフトの開発者の意図が何となく見えてくるので、それはそれで面白いですけど(笑)。

 次に、私が公開しているゲームにはVBAで作ったセットアップ(インストール)ソフトが付属していることが多いのですが、近田さんからこれにはどういう意図があるのかと訊かれましたので、ここでお答えしようと思います。
 VBAでセットアップを作ること自体は、アドインを作成したときの配布用として以前からやっていました。アドインには登録という処理が必要だからです。でもゲームの場合はそういった処理は必要ありません。なのに何故わざわざセットアップを使うようにしているのかというと・・・
XLSファイルに使われるアイコンは通常は皆さんご存知のものにしかなりませんが、ゲームの場合はそれだと業務用のソフトみたいでイメージわきませんよね。なんとか独自のアイコンが使えないものかと思ったのが直接のきっかけです。ショートカットファイルのアイコンなら自由に変更できますが、リンク先ファイルがどこのフォルダ内に配置されるのかはユーザー次第なので、ショートカットのプロパティをあらかじめ設定しておくことはできません。
 そこで、ユーザーにセットアップを実行してもらうことで、
(1)セットアップ先のフォルダをユーザーに任意に設定してもらう。
(2)上記フォルダにゲーム本体のファイルを転送する。
(3)ショートカットファイルを作成し、リンク先を(2)で転送したファイルにする。(ここがポイント)
(4)ショートカットファイルをデスクトップに移動する。
(5)不要なファイルを削除する。
という一連の処理を自動で行うようにしています。・・・と書くと何やら難しい話のようですが、要は市販のソフトみたいにカッコよくしたかったっていうことです(笑)。
 私のゲームで遊ばれる方は当然エクセルをお持ちのはずなので、セットアップ用のEXEを作らなくてもVBAで充分対応できるんです。VBAでもWSH(WindowsScriptingHost)を使うことで、ショートカットファイルの作成やデスクトップへのコピーなどという処理が簡単にできるんですね。WSHは最近のマシンなら標準で使えるので覚えておいて損はないと思います。
 それと、INIファイルから情報を読み込むことで、複数のゲームソフトで同じセットアップソフトが使えるようにしています。こうしておけば今後も使いまわしができますからね。(予定はないんですが・・・)
でも、セットアップを作ることよりアイコンのデザインを考えることのほうが一苦労です(笑)。

最後に・・・私はゲームでもユーティリティでもインターフェースをユーザーにわかりやすく設計することが一番重要だと考えています。ソフトを作った本人はどういう操作をすればいいのか当然わかっていますが、ユーザーはそうではありません。ぱっと見ただけで操作方法がイメージできるような画面設計ができれば最高ですね。
私はこれからもユーザーに優しいソフトを作って行けたらいいなと思っています。

・・・やっぱし標準語で書くのは疲れるわ、ホンマ(笑)。
わての公開作品は、れいぞーはんのHPからダウンロードできます。
試してみてな。
ほな。


匠達のセル道TOP