Rhinoブーム到来?
来月からアリエルの育成プログラムが始まります。本当は、スキルはなくてもポテンシャルで採用する、ということで始めましたが、結局、それなりにスキルのある人を採用してしまいました。まあ、いいんですが。
色々とカリキュラムを考えました。なんでもいいので動くモノを作る、という課題は最初から考えています。もうひとつ、なんでもいいので、オープンソースのソースコードを読む課題がいいだろうと思っています。できれば読んで理解するだけではなく、本家にパッチを送るぐらいにまでなって欲しいと考えています。
現実的なプログラマの実務を考えると、ゼロから動くモノを作り上げる力も重要ですが、他人の書いた(できれば巨大な)ソースコードを読んで理解して改造できる力も同じぐらいに重要だからです。
読める規模で、読むに値して、かつ読むのも楽しいオープンソースを考えていました。言語はJavaに決めていました。色々と考えましたが、突然、Rhinoにしようと決めました。なぜなら、Rhinoブーム到来だからです。
あまりにソースが汚いと困るので自分でも目を通してみました。規模的には、ファイル数100弱、約5万行です(サブディレクトリを除く)。最初に読むにはすこし規模が大きいのが難点です。でも、言語処理系とそうでない部分を見分けることができれば、半分ぐらいは読むのを後回しにできます。ざっと見ると、どこから読むべきかだいたい分かるのですが、そこは敢えて指針を示さないつもりです。まずはとにかく読みます。5万行全てを頭の中に展開するぐらいの勢いで読むのです。デバッグでひたすら追います。最初から最後まで追うぐらいの気持ちでステップ実行し続けます。ある日、突然、コードの全体像が見えます。この瞬間が大事なので、敢えて読み方は示しません。もっとも、言語処理系は背景となる理論が(比較的)確立しているので、コード読みと並行して理論の勉強をした方が効率的です。
動くモノを作る課題では、Spring Frameworkを使うつもりです。複数の言語に最初に手を出しても仕方ないので、課題はJavaに統一します。
11月の目標
- Rhinoのソースコードの構造を理解する
- Spring Frameworkを使った簡単なWebアプリを作る
12月の目標
- Rhinoのオープンバグを修正して本家にパッチを送る
- 作ったWebアプリにRhinoを組み込んで(サーバサイドを)拡張可能にする
1月の目標
- Rhinoのデバッガを理解する
- Rhinoのデバッガでなにかする
目標は状況を見て是正します。
- Category(s)
- カテゴリなし
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/inoue/rhino-boom/tbping