大学の授業でC言語を学んだ
おれがプログラミングを始めたのは大学に入ってからだから20歳の時で、学部は電気電子工学科だったんだけど、漠然と「今後のエンジニアはプログラミングが出来ないといけない」と思って、夏休みにおばあちゃんちに帰省した時に猫でも分かるCとかいう本を読んでみたんだけど、forループとかいうのが全く理解出来ず、プログラミングは無理という判断をして諦めた。i=0と書いてあるのにそれがどんどん書き換わることが受け容れられなかったのだと思う。
でも少しだけかじっておいたから、電電の中では相対的に先取り出来たことになり、情報演習なども比較的にスムーズに出来たし、2回の前期だかにあったプログラミング演習では、ネット麻雀で有名なとつげき東北氏にチャットで教えてもらいながら、数百行のプログラムを作った。
本屋でたまたまRubyと出会った
プログラミングが面白いと思ったので、もっと勉強したいと思って生協の本屋に行ったら、たまたまRubyというプログラミング言語の本が平積みされていて、よくわからないけどオブジェクト指向という言葉が出てきて、少し読んだらなるほどこれはすごいと思ったので本を買って勉強しはじめた。おれのGMailアドレスは、この時のwktkした気持ちを忘れないようにという意味がある。
Rubyを勉強し始めてすぐに、設計が一意にならないことに疑問を持ったおれは、以下のスレッドで質問を投げかけている。今思うとプログラミングの本質に一瞬で到達していて、あぁ単なる天才かということが分かる。
[ruby-list:44431] コンストラクタの引数について&インスタンス変数の持ち方について
ソフトウェア設計について死ぬほど独学した
設計には最善のものがあり、一意に決定すべきだという思いはここらへんから深まっていく。性格自体が完璧主義寄りということもあるだろうけど、理論的に最強の手法が見つかり、1を10にして10を100にしていくことが可能ならば、これは革命的なことだと思った。
おれは研究室の中で独り、ソフトウェアの本を死ぬほど読み漁り、独学した。そして病んだ。2週間、一行もコードが書けなくなることもあったし、「なぜソフトウェアは欧米が強く日本は弱いのか?」と考えた結果、「欧米人はキリスト教を信じているからであり、宗教があるから心を強くもってコードを書けるのだ」という結論に至り、そのままクロスバイクを飛ばして三条のカトリック協会に行き、聖書の朗読会に参加したこともある。この当時の考えをまとめたごっつEffective Javaは今でも語り継がれる名著となっている。
設計に解はなく、シンプル・イズ・ベストであることを知る
その後、就職活動や修士研究を通じて、Vimという最高エディタに出会い、Vimというエディタを使ったプログラミングでは修正のコストが異常に高く、それ故に、ソフトウェアはシンプルに書くしかないということに気づく。これは、1 + 2 + 4 。。。+ Nがたかだか2Nにしかならないのと同じで、結局、その時その時でシンプルなものを作っていけば、最善に比べてたかだか2倍しか労力がかからないことに気づいた。
この時点から、 おれはソフトウェアの設計について深く悩んだことはない。良い設計が見えないのは、まだそのフェイズに達していないからだと考えるようになった。そして色々なソフトウェアを作ってきた。色々な経験をした結果、自分というプログラマを客観的にコントロールすることが出来るようになった。何かやることがあった時に、どういう手順でやるのが良いかとか、自分はどこらへんで嵌る可能性があるとか、そういうことがかなり分かるようになってきた。
おれは、「為す」という言葉をよく使うけど、これは適当に書き散らかすという意味ではない。次の2に繋がるように、まずは1をやるということであり、つまり投資である。やるからには失敗したとしても何か知見が得られるようにやっているから、失敗はあまり怖くない。知見を確実に得る方法は、小さな1の中で徹底的に暴れることだと思う。色々なことを時間を決めてとことん試すということをする。ここらへんは、企業の研究所で働いた経験が生きている。
こうやって、1なら1と割りきって為すことを覚えると、色々なことにチャレンジすることが怖くなくなる。最初から1000を目指そうと思うとためらってしまうけど、1でやってダメならば撤退すればいい。今が2や4でも同様。
まとめると、
- ソフトウェアはシンプルに作るべきである
- そのための作業は「為す」
ということを身を持って理解出来た。これは本当に幸運なことだったと思う。
自分で悩んだことがいい経験になった
最近は、フレームワークとかライブラリとか、サンプル程度のことを適当に書けば結構なことが出来てしまうことが多くなって、また多くの場合は設計自体をかなり強制されるので、悩む機会は少なくなってしまったのではないかと思う。特にウェブケーではその傾向が強いだろうし、その他の分野でも新人は、決められた設計の中で仕事をすることが多いのではないか。自分の頭で悩まないと、いけないと思う。
少なくとも、東大や京大の学生にはそれが求められている。京大の当時の学科長が「日本の電気電子の未来は君たちに懸かっている。もし君たちがダメなら日本はダメなんだ。そういう自覚を持って勉強してほしい」と言ってたことを今でも思い出す。あの言葉は震えた。日立の入社式でも、創始者の小平浪平が「モーターを欧米から買っていたのでは日本の技術に未来はない。自作せねばならない」という思いで日立を作ったというビデオが流れて震えた。きっと小平浪平も、自分がやらなければ日本はダメになるという思いだったに違いない。そういう強迫的な情熱を持って今後も仕事をしたいものである。
最高のものづくりをするプロジェクトにakiradeveloperをいかがですか?