Tomorrow's Chance

社会人なりたてのエンジニア奮闘記

新たなプログラム言語をどう身につけるか

今日は怒濤の帰省ラッシュだったみたいですね。自分も実家に帰省しました。そんなことで全く作業はできなかったので普段考えてる”学習法としてのコードリーディング”について書いてみます。

参考サイト

http://www.mwsoft.jp/column/program_top10.html

 

新しく言語を覚える上でとりあえず欲しいもの

最低一つの言語は扱えているという前提でだいたい以下の二つがあれば良いと思います。

 

  1. だいたいの代表的な関数と仕様が解説されてるマニュアル(サイトでも文献でも化)
  2. だいたいの関数と言語の特徴が総覧できるようなソースコード

 

 1はだいたいどの言語でもWeb上で簡潔すると思います。だいたい開発者や開発企業、開発グループ等が公式リファレンスを用意されており、文献は逆引きだとか索引的にさらさらっと引くには便利かもしれません。(個人的にはあまり文献には頼らないですが)

問題は2つ目で参考サイトにも「参考文献」として「〜〜のソースを読めば良いと思うよ。」といった書かれ方がされています。例えばRubyならとりあえずActiveRecords読んどけよと言った具合です。個人的にはとても理解できるのですが、職場でいきなりライブラリのソースを読み始めると何故かだいたいの人に驚かれます。

 

個人的な経験談

就職活動時に今のソーシャルなゲームのサーバーサイドなプログラマーになるためにとりあえず簡単そうなPHPから始めようと思い、半年ぐらい独学で学んでその間に書いたソースと簡単すぎるドキュメントを添付して面接時に提出したことがあります。

その時の学習法ですが最初は分厚い参考文献を元に「掲示板の作り方」的なところから一つ一つの機能(継承の仕方、オーバーライドの仕方、オブジェクト指向とは等)を覚えていきました。しかし、地道に理解することがかったるくなったのと遅々として理解が進まないことに焦りを覚えていました。

 

そんな時に、ある程度言語の仕様が掴めたところで「何かライブラリのソースでも読めば一気に理解含まるんじゃね?」という不思議な感覚が沸き上がっていて、当時興味津々であったTwitterのOAuth認証のライブラリのソースを読んでみる事にしました。

とりあえずクラス単位、メソッド単位で読んで見ます。コメントが英語表記(もしくは無い)ので日本語表記に直し、明らかに使う必要のないメソッドを整理する等して自分なりに改変してみました。結果、使った事の無い関数の理解であったり、クラスそのものの作りに対する理解だったりで意外な程気付きの多い作業でした。

 

結局この頃の体験が原体験となり、今はとりあえずフレームワークを理解するにしてもドキュメントは斜め読み程度でいきなりライブラリ等まとまったソースを読む事にしています。最近始めたRubyも参考にあがっているようにActive*系のソースを中心に読んでいます。

向き不向きが別れる方法だと思いますが、所謂「説明書を見ないでいきなりゲームを始めるタイプ」の人間にはオススメの学習法かもしれないと振り返って思いました。