【新人なるプログラマーへ】ソースコードを読みましょう:小山博史のJavaを楽しむ(10)(2/2 ページ)
教育界、技術者コミュニティでJava言語の教育と啓蒙に長年携わってきた筆者が、独自の視点からJavaの面白さを掘り下げていく。(編集部)
ソースコードを読む能力を高めるには?
さて、こういった基礎能力を上げるということになると、大抵つまらない反復作業が必要になります。反復作業はすぐに飽きてきてしまうので、ゲーム要素を取り入れたりして、持続しやすくするなどの工夫が必要なのです。「キーボード入力の能力」を上げるために、タイピングゲームなどを購入した人などもいるのではないでしょうか。
ということで、「ソースコードを読む能力」を上げるためにも、たくさんのソースコードを読む必要があるわけですが、ただ漫然と読んでいても長続きしません。いくつかの点を心掛けながら読めば、継続できるはずです。筆者のお勧めとして、次のような項目を挙げてみました。
- 記録を付ける
- 興味を持っている分野のソースコードを読む
- 良いソースコードを読む
- 仕事でも役立つソースコードを読む
- ちょっと変更して動作させてみる
- バグがないか探してみる
【1】記録を付ける
「記録を付ける」というのは、自分でノートを付けてもいいでしょうし、ブログなどでソースコードを読んだときに気が付いたことを書いてみるとかでもいいでしょう。
こういった学習は積み重ねをどれくらいしてきたかが分かるようにするということが大切です。なんとなくではなく、この日に、このソースコードを読んだ、というのを工夫して記録してみましょう。記録をたまに確認してみると、努力した分量が分かりますから、それが持続の原動力となるはずです。
【2】興味を持っている分野のソースコードを読む
「興味を持っている分野のソースコードを読む」というのは、どうせ読むのなら面白いと思うソースコードを読みましょう、ということです。あのプログラムはどうやって動いているのか知ってみたい、という知的好奇心をくすぐるプログラムを対象とするのが、一番楽しいはずです。
ただし、レベルがありますから、現在の自分のレベルに合ったソースコードを選ぶ必要はあります。
例えば、暗号化通信に興味があったとします。原理的な仕組みを知りたい場合は、アルゴリズムを説明しつつソースコードで実装例を提示している参考書を手に入れて読むべきでしょうし、アルゴリズムの実装は興味がなくてライブラリを使うつもりで、ライブラリを使ってどんなふうにプログラムを作成するのかを知りたい場合には、そういう内容の参考書を手に入れるべきでしょう。
参考書レベルではなく、実際に使われている実用レベルのもので、目的のライブラリをどう使っているのかを知りたい場合は、オープンソースプログラムを探してみるべきでしょう。
【3】“良い”ソースコードを読む
「良いソースコードを読む」というのは、参考として読むなら良いソースコードを読むべきだという当たり前のことをいっているだけです。
ただし、これが意外と難しいかもしれません。なぜなら、どういったソースコードが“良い”ソースコードかという評価は、あまり行われていないため、これから読もうとしているソースコードが“良い”のかどうかは前もって分からないからです。書籍などについているサンプルコードについては、書籍の評価を参考にするしかないでしょう。信頼の置ける知り合いの評価も参考になるでしょう。
オープンソース系では、多くの開発者が参加していて、ユーザーコミュニティも多く、公開されてからある程度時間が経過しているところのものは、多くのレビューにさらされていると考えられるので、良いソースコードがある可能性が高いと思います。
しかし、修正パッチがユーザーからたくさん投稿されている場合はどうでしょう。オリジナルがひど過ぎるのか、読みやすいコードだからユーザーからもパッチが出しやすいのか、判断はなかなかしにくそうです。ソースコードを読んでみれば分かるのでしょう。
【4】仕事でも役立つソースコードを読む
「仕事でも役立つソースコードを読む」というのは、「どうせなら、仕事でも使えるソースコードを読みましょう」ということです。例えば、JavaコンパイラやJava VMを使った開発の仕事をしている場合は、Javaの開発元サン・マイクロシステムズのJDK(Java SE Development Kit、Java開発キット)のソースコードや、オープンソース団体Apacheの「Apache Harmony」というJDKのソースコードを読むなどです。
しかし、ライセンスを意識する必要もあります。そこで得たアイデアやコードを自社の製品へ、無意識のうちでもライセンス違反となる形で反映してしまうと、“問題”となります。そういった危険を冒すぐらいなら、最初から読まない、という選択もあるわけですが、こういった特殊な事情がなくライセンスに同意できるなら、自分の仕事と関係するプログラムのソースコードを読んでみるといいでしょう。
例えば、オープンソースのアプリケーション・サーバであるApache Tomcatを使っているなら、そのソースコードを読んでみると面白いのではないでしょうか。
【5】ちょっと変更して動作させてみる
「ちょっと変更して動作させてみる」というのは、参考書のサンプルなども、理解を深めるためには、自分でちょっと変更して、それが思ったとおりに動作することを確認するものですが、それと同じことをしてみましょう、ということです。
読んでいるだけではつまらないので、少しは変更を加えて動かしてみて、ソースコードのどこを触ると、どこに影響が出てくるのかを確認してみると、かなり楽しくなってくるはずです。オープソースソフトウェアだと、コンパイルやビルドも簡単にできるようになっているものが多いので、変更して動作させることはそれほど難しくはないはずです。
いろいろと遊んでみることで楽しく理解が深まるはずですし、自分のソースコードの分析が間違っていなかったことを確認できるはずです。
【6】バグがないか探してみる
バグを見つけたら報告してみるのも楽しいはずです。開発者からレスポンスが返ってきて、会話ができます。
もし、バグを直せるようならパッチとして報告してみるのもいいでしょう。ちょっと変更して動作させることができるようになっていれば、自分でバグを直したものを動作させて、問題が発生しなくなっていることを確認できるはずです。力を認められると、そのプロジェクトに開発者として参加できるかもしれません。ただし、クレーマーみたいにならないように注意しましょう。
ソースコードから理解できる“技術者”を目指そう!
さて、どうでしょうか。ソースコードを少しは読んでみたくなってきたでしょうか。
オープンソースのプログラムのような実践的なソースコードを理解するためには、基本となるアルゴリズムやデザインパターンについて知識を持っていた方が有利ですから、そういった関係の参考書から先に勉強してみるのもいいかもしれません。最初から自分にとって敷居の高いプログラムに挑戦する必要はありませんから、もっと身近にあるものから読み始めてもいいでしょう。
例えばJava技術者なら、JDKについているデモ・プログラムのソースコードは一番手ごろではないかと思います。ソースコードのバージョンが2005年ころに書かれたものが多いようなので、書き方などについて、ちょっと古い部分があるかもしれませんが、基本となるAPIの使い方がたくさん紹介されていて、結構勉強になるはずです。
また世の中には、Google Code SearchのようにWeb上にあるソースコードを検索するサービスやソースコードをWeb上で共有して参照できるサービスもあるので、そういったサービスを利用してみるのも1つの方法かもしれません。
編集部注:ソースコードを検索するサービスについて詳しく知りたい読者は、記事「見つけて得するソースコード専用の検索エンジン」をご覧ください。
「ソースコードから理解できる“技術者”」をあなたも目指してみませんか?
@IT関連リンク
CoolなEclipseプラグイン
役立つプラグインを毎月紹介。第1回は「Javaのプロパティファイルエディタ」「Tomcatコントローラ」「HTML/JSP/XMLエディタ」
第1回 Javaプロパティファイルを編集できるEclipseプラグイン
第5回 正規表現の入力・テストをするプラグイン
第6回 サンプルコードの入手をサポートするプラグイン
第7回 プログラミングにあると便利なプラグイン
第8回 RSSを表示できるEclipseプラグイン
第18回 お決まりコードを設計書から自動生成するblancoCsv
デバッグのヒント教えます
Javaエンジニアの皆さんが必ずぶつかるデバッグについて、実例を挙げながらその具体的な対処法について解説していきます
プログラマーの常識をJavaで身につける
Javaコアパッケージは応用範囲が広いため、普段使わないクラスに意外な発見があるはずです。そこから、さまざまな「常識」を学びましょう
Podcastでプログラマーに必要な英語をStudyしよう!
安藤幸央のランダウン(34) 英語に対する苦手意識を克服し、コンピュータ分野に特化した英語を学習する方法の1つとして、海外のさまざまなPodcast/Videocastを紹介
「Java Solution」フォーラム 2007/5/10
Javaプログラマになるための定番Javaサイトの歩き方
Javaをマスターするためには、書籍や雑誌記事を読む前に目を通すべきサイトがある。サンのサイトをはじめとする定番サイトの読み方を紹介する
「Java Solution」フォーラム 2002/7/18
Javaプログラマのお役立ちサイト
安藤幸央のランダウン(4) 今回は、Javaプログラマに必須のお役立ちWebサイトをいくつかご紹介。これで、あなたの仕事もはかどる?
「Java Solution」フォーラム 2001/11/21
Javaでコンパイラの基礎を理解する
コンパイラを意識したコーディングをすると、パフォーマンスが向上し、プログラミング力も向上します。Javaを通してその仕組みを理解しましょう
- ビルドツールGradleのインストールと使い方、Jenkins/Git連携
- JBoss Forgeでアジャイルな対話式開発をやってみた
- JavaとJavaScriptの良いとこ取り? 「Dart」超入門
- 年末でJetty(絶対)にできる Android携帯サーバ活用
- UNIX/Linuxも楽しむ Java開発者になるための学習法
- Subversionならできる! NetBook最強バックアップ術
- 「Javaは遅い」から「Javaは楽しい」に至る歴史
- Javaはクラウドのプラットフォームになり得るのか
- 【新人なるプログラマーへ】ソースコードを読みましょう
- Google Android用携帯アプリ作成のための基礎知識
- デスクトップをJava製ウィジェットでにぎやかに
- そろそろブログ+RSSアプリでも作ってみませんか?
- JavaFXでJava RIA開発はどれくらい変わるの?
- 【新人研修向け特別企画】JavaでPHPを使ってみた
- (Java+Derby)* Ruby on Rails プログラミング
- 待望のJava SE 6 でパーシステンス
- いろいろなJavaを使ってみよう
- JavaとJavaScriptの親しい関係
Copyright © ITmedia, Inc. All Rights Reserved.