私を育てた仕事ではないプロジェクト達【1】〜時計アプリ〜

はじめに

僕は仕事としての報酬の無い自分主体のプロジェクトというのをよくやっていました。大小はいろいろあるし、完成したものもしなかったものも多数あります。ただ、それらの経験が僕の人生をずっと支え続けています。そんな自分の作品との足跡を残しておこうと思います。

※画像はイメージです。

時計アプリ

VB時代

僕が最初にプログラミングに触れたのは中学生の頃ですが、ちゃんと取り組み始めたのは大学3年くらいの頃です。VisualBasic4を買って何か作ろうと決めました。VisualBasicは入門用としてはかなり優れた環境だったと思います。GUIを簡単に作る事が出来るし、なによりわかりやすかった。
時計の動機は忘れましたが、かなりのめり込んだのを覚えています。中学時代にBasicは使っていたから基礎はある程度できていたので、入りはスムーズでした。ちょうど同好会を抜けた所でもあり、空いた時間をかなり注ぎました。この頃は学校の勉強以外ではバイトとプログラミングが生活のかなりを占めていた気がします。
インターネット上のVBのコミュニティを(殆どROMでしたが)活用するようにもなりました。自分の正体がわかるはずはないのですが、なんとなく自分がどこの誰か知られてしまうかもしれない事にビクビクしていた気がします。
VB単体では音を鳴らしたりするような、所謂システムに近い所を操作するのは難しかったので、WindowsAPIを学ぶようになります。VBからAPIを呼んでOSの機能を使うのは面白い体験でした。時計のくせに一定時間でOSの壁紙を変更したりする機能を付けたりもしていて、遊び倒していたという感覚です。そうして僕の時計は僕だけの僕の為のものとして弄られ続けます。

VC時代

どうやらVisualC++というのがあって、それを使うともっと凄い事が出来るらしいとネットの情報で知りました。WindowsAPIでの知識は生かせるようだったですし、むしろ呼び出すのが簡単になりそうだったので、これをやってやろうと心に決めます。秋葉原のLAOXで買ったのを今でも覚えています(店舗はもうありませんが)。入門的な書籍も一緒に買ったような…気がします。
どうせVBと同じだろう?とたかをくくっていたのですが、これが難しい。ホントに難しかったです。何せC++を知らない。C++がわからないと、VC++で自動的に作られるソースコードが一体何をしているのかわからない。しかも始めてオブジェクト志向の概念を意識しないと書けない体験だったので、関数が順番に呼ばれる訳では無い(関数の呼ばれ方に暗黙のルールがある)という事を把握するのにずいぶんかかりました。
VC++にはC++入門の薄い冊子が入っていて、ある時これをジックリ読んでみて、はじめてなんとなくわかったか〜という理解に辿り着くのです。でも、それがVC++の中でどうやって使われているのか繋がるまでには随分かかりました。
チュートリアルというものをやってもあまり理解できる気はしませんでした。写経するよりも動くものを見て、自分で改造する、痛い目を見て覚える、というのが自分のスタイルになっていったのがこの頃です。
悪戦苦闘しながら作っていたのもまた、時計でした。
苦労してどうして続けるのかよくわかりませんでしたが、この頃はこれに打ち込むのが小さな義務になっていた気がします。そうやって根気よく続けているとなんとなく理解してきて、実はVC++の自動生成を利用して作ったアプリはMFCというMicrosoft製のGUIライブラリ上で動いている事や、本当はCでも書けるものをラップしているのだ、という事が解ってくるのでした。いやー、ほんときつかった。プログラミングについてのWEBページの方々には本当にお世話になっていました。たまに個人技術者のBBSに書き込んでアドバイスを貰っていたのを思い出します。
ちなみに、MFCの存在を把握した後は、MFCを使わずに自分でGUIライブラリを書くということにハマります。これを作っては壊しで断続プロジェクトとして3回くらい書き直しました。Qtとか、wxWidgetなんかがやっていた部分を自力で作ろうとしていたのですから無謀ですね。

言語を変える事で見えた事。得たもの。

VBを使っていた頃は、所謂設計についての理解がかなり浅く、設定画面で設定を変えている途中にアプリが止まってしまうような事があったりしました。所謂MVCが別れてない、酷いコードだったのです。VC++を使い始めてから、はじめて設計という概念ができ始めて、どうやって不具合無く、解りやすくできるのかを考え始めました。
フレームワークのような共通化の概念がプログラミングに大事なもので、そういうものを作る事が興味の対象になっていったのがこの頃です。
「いつ時計完成したんですか?」
「完成?完成とは何か。」
「…」
あれだけ長い時間つぎ込んで結局完成というラインには行きませんでした。ただ、時計を作る事はとても良い経験になって
  • システムから時刻を取るようなOSに近い部分の操作。
  • ロジックを使って時刻を必要な形に分解・整形する事。
  • 描画の概念。チラツキを防いで綺麗に描画するにはダブルバッファリング等の方法が必要である事など。
基本を学ぶにはもってこいの課題だったと思います。
つづきます。

みんなの読んで良かった!

STORYS.JPは、人生のヒントが得られる ライフストーリー共有プラットホームです。