COBOL技術者の憂鬱

COBOLプログラマは不在にしています

学び続けること

昨年は、多くの技術系イベントに参加したり、技術書を読みあさったりといったことをやっていました。
もともと、こんな感じでWebアプリやらLLやらオープンソースやらの世界に興味を持ったのは、二年前にRubyでRetroTubeを作って公開し、大勢の方からフィードバックをいただいたことがきっかけでした。
それまでメインフレームの狭い世界に閉じこもっていた自分にとって、オープンソース系の人たちが自由にのびのびと活動している様子が、とても新鮮に感じられたのです。
けれども当時の私は、彼らの真似事のようなことをやっているだけで、少しも真髄にはたどりついていませんでした。
「あれ?Ruby使ってるのに、オブジェクト指向知らないの?フレームワークは使ってないの?」とか、そういった意味のことをよく言われていたように記憶しています。
それまで手続き型で、かつフルスクラッチでプログラムを書いていて、それ以外にやり方を知らなかった私は、自然とそちら方面へ触手が伸びていくことになったのです。


オブジェクト指向については、最初は手続き型の世界の対極にあるものとして捉えていたのですが、そのおかげでなかなか理解が進まなかったように思います。
クラスやオブジェクトなどの使い方は理解できても、具体的にどのような場面でどう利用すればよいのかがさっぱりわかっていなかったのです。
色んな技術書を読んでみて、ある時、手続き型とオブジェクト指向とは、実は繋がっているんだなということを感じるようになってきました。
手続き型プログラミングで開発している中で発生した様々な問題を解決する為に、オブジェクト指向という考え方が産まれてきたんだなということを肌で感じ取れるようになってきたのです。
私はメインフレーム開発の現場で、一度体を壊すまで働いたことがあるのですが、エンジニアがそういった状況に陥らないようにする為に、このような考え方が編み出されてきたのだということに気づき、それはまた、勉強を続けていく上でのモチベーションになってきたように思います。


フレームワークについては、主にRails関連の技術書を3〜4冊読んで、写経もいっぱいやったにもかかわらず、今ひとつ馴染むことができませんでした。まるで穴埋め式の問題を解かされているような気がして、少しも理解できていなかったように思います。
それより、PHPを使って一からガリガリ書いていった方が直感的に作業できて、よっぽど速くできあがるので、これで充分だと思っていました。
けれども、できあがったソースコードを後から読み返してみると、いつもヒサンな状態になってしまっているので、これはちょっとなんとかしないといけないなーとも考えていました。
私も一応は、プログラムを書くことをメシの種にしている人種なので、汚いコードだけは許せなかったのです。
どうしたら速く奇麗なコードを書くことができるのか?
それを実現してくれるのが、フレームワークというものなのではないかと、改めて思うようになりました。
最近読んだある技術書の中に、自作フレームワークの作り方が記されていて、実際に自分でもやってみたのですが、それまで抱えていたモヤモヤ感をきれいに解消することができたように思っています。

RailsやCakeなどの既製のフレームワークだと、「DB作って、そこからソース生成して、後はちょこちょこっとカスタマイズして、はいもうできあがり!」という感じで、中途半端な理解でもできあがってしまうので、内部で何が行われているのかが見えずに、そこがとても気持ち悪かったのです。通常は、ブラックボックスとして置いておくべき部分なのかもしれないのですが、そのあたりに違和感があって、今まで馴染めなかったのだということに気づきました。
既製のフレームワークを使う場合であっても、できあがったソースコードを一度は内部までじっくりみていった方がよいのではないかと思っています。
そういう内部からの視点で描かれているフレームワークの解説書と、なかなか出会うことができなかったのが、今にして思うと残念です。


とにかく、昨年一年間で、わからないわからないとそれまで悩んでいた部分が、少しづつではありますが、ほぐれてきたように思います。と同時に、観客席からぼんやりと眺めていた頃とは違って、内部からプレーに参加している意識が芽生えてきましたね。
これは、私にとっては大きな一歩です。この調子で学び続けていこうと思います。

今年は、さらに一歩進んで、他人に教えたりできるところまで成長していきたいですね。