プログラミングについてとか その2

どうもこんばんは、south37です。
今日も前回に引き続き、自分がプログラミングに触れてどんな事を勉強してきたのか書いていきたいと思います。
前回が学部3年の終わり頃までだったので、今日は4年になったあたりからですね。

学部4年

4年になって最初のビッグイベントは研究室配属でした。僕はかなりガチなところを選んだので、研究が生活の大部分を占めるようになりました。必要単位はそろえていたので、必修以外の授業はほとんどありませんでした。
唯一履修した授業は「理論輪講」で、これは理論系の研究室の先生と輪講をやるというものでした。僕は数値計算によるシミュレーションをやっている研究室を選んで、助教の先生に毎週成果を見てもらいながら「粉体」のシミュレーションを行っていました。C++で書かれたソースコードを頂いてそれを元に進めたのですが、この時に初めてある程度の大きさを持ったソースを読みました。
C++と言ってもclassなどは使わずbetter Cとして利用しており、バカでかい1ファイルに全てをまとめているような有り様でした。それでも、ソースを読んでアルゴリズムなどがどの様に実装されているのかを見るのは楽しかったです。

また、この頃にLinuxをちゃんと使うようになりました。少し前にノートPCにデュアルブートで入れたはもののそんなに使っていなかったのですが、C++のコードをgccでコンパイルしたりsshで学校のサーバに接続してシミュレーションを走らせたりする為に、Linuxを使うようになりました。一番感動したのはpackage管理システム*1で、コマンドを叩くだけでソフトウェアがインストール出来るのはとてもクールに感じました。また、Web上の情報を見ながらemacsの拡張を行ったりbashrcの書き換えなんかもやっていました。テキストを書き加える事によってツールがどんどん便利になるのを実体験として感じて、楽しかったです。

夏学期はそんな感じでプログラミング界隈に軽く触れながらも、基本は研究してました。夏休みに入ると、いよいよ院試勉強期間って事でひたすら院試の過去問解いたりしてました。あんまり記憶に無いので、プログラミングからは離れていたんじゃないかと思います。学科の友達と集まって勉強したりして、けっこう楽しかったのを覚えています。

4年冬学期

冬学期に入ってからは、研究が更に本格化しました。それと並行しながらも、何となくの興味でメタプログラミングRubyを読んだのがきっかけ、Rubyが大好きになりました。
メタプログラミングRubyは本当に名著なので、是非ともオススメしたいです。ブログでメタプログラミングについて書いた回もあったので、内容についてはそちらを読んで頂ければ良いかと思います。対談形式なのでものすごく読みやすく、それでいてクールなテクニックについて詳細な知識が得られます。この時、Rubyという言語の構造や表現力に惚れました。

また、Rubyによるデザインパターンという本も読みました。これは、よく耳にする「デザインパターン」というものについて簡単にでも知っておこうと思ったからです。この本も、メタプログラミングRubyほどでは無いにしろとても面白かったです。この本の中で述べられる「実装に対してでは無く、インターフェイスに対してプログラミングする」という言葉が印象的でした。変わるものを変わらないものから分離する、継承より集約&委譲、YAGNI(You Ain't Gonna Need Itの略、必要になるまで作るな)、といった原則も述べられており、とても参考になったように思います。

このへんで自分の中でrubyブームが来て、研究用の簡単なスクリプトなんかを書くようになりました。また、Amazonの履歴を見てみるとJavaScript: The Good Partsもこの頃に買っているようです。ただ、この頃はJSについてはあんまり分かってなかったように思います。

プログラミングHaskellを読んでみたりもしましたが、結局Haskellについては今もよく分かりません。もう一度ちゃんと勉強したいです。

4年はこんな感じの1年でした。

修士1年になってから

修士になってすぐの記憶はあんまり無いのですが、5月頃に自作のアプリやサービスが無いことに焦りを感じ始めました。そこで、前々から興味のあったRuby on Railsを勉強してみようと思いRailsによるアジャイルWebアプリケーション開発 第4版を読み始めました。これがものすごく読みやすくいい本で、railsに関しての理解がかなり深まりました。サンプルアプリを作りながら進めていった後、自分でもニコニコ動画のパクリを作ってみました。自分で作ってみるとより理解が深まり、また自分が書いたコードで実際にサービスが出来上がるのを見るのは感動的でもありました。
herokuのようなクールなサービスが世の中にたくさんある事も知りました。Coffee Scriptやsassのアプローチにも感動しました。railsは信念がクールで利用するサービスがクールで成長を止めないところがクールで、素晴らしいフレームワークだと思います。

夏休みにはVOYAGE GROUPやサイバーエージェントインターンシップをし、様々な事を学びました。そしてそのまま現在に至ります。

今年に入ってからブログなどで紹介されている便利なツールにもキャッチアップ出来るようになり、勉強がとても楽しくなったように思います。これからも、知識を伸ばし続けていきたいです。

雑な終わり方になっちゃいましたが、今日はここまでです。

*1:当時はUbuntuを使っていたのでSynaptic