小山博史のJavaを楽しむ(10)
【新人なるプログラマーへ】
ソースコードを読みましょう
ガリレオ
小山博史
2008/4/9
■ ソースコードを読む能力を高めるには?
さて、こういった基礎能力を上げるということになると、大抵つまらない反復作業が必要になります。反復作業はすぐに飽きてきてしまうので、ゲーム要素を取り入れたりして、持続しやすくするなどの工夫が必要なのです。「キーボード入力の能力」を上げるために、タイピングゲームなどを購入した人などもいるのではないでしょうか。
ということで、「ソースコードを読む能力」を上げるためにも、たくさんのソースコードを読む必要があるわけですが、ただ漫然と読んでいても長続きしません。いくつかの点を心掛けながら読めば、継続できるはずです。筆者のお勧めとして、次のような項目を挙げてみました。
- 記録を付ける
- 興味を持っている分野のソースコードを読む
- 良いソースコードを読む
- 仕事でも役立つソースコードを読む
- ちょっと変更して動作させてみる
- バグがないか探してみる
■ 【1】記録を付ける
「記録を付ける」というのは、自分でノートを付けてもいいでしょうし、ブログなどでソースコードを読んだときに気が付いたことを書いてみるとかでもいいでしょう。
こういった学習は積み重ねをどれくらいしてきたかが分かるようにするということが大切です。なんとなくではなく、この日に、このソースコードを読んだ、というのを工夫して記録してみましょう。記録をたまに確認してみると、努力した分量が分かりますから、それが持続の原動力となるはずです。
■ 【2】興味を持っている分野のソースコードを読む
「興味を持っている分野のソースコードを読む」というのは、どうせ読むのなら面白いと思うソースコードを読みましょう、ということです。あのプログラムはどうやって動いているのか知ってみたい、という知的好奇心をくすぐるプログラムを対象とするのが、一番楽しいはずです。
ただし、レベルがありますから、現在の自分のレベルに合ったソースコードを選ぶ必要はあります。
例えば、暗号化通信に興味があったとします。原理的な仕組みを知りたい場合は、アルゴリズムを説明しつつソースコードで実装例を提示している参考書を手に入れて読むべきでしょうし、アルゴリズムの実装は興味がなくてライブラリを使うつもりで、ライブラリを使ってどんなふうにプログラムを作成するのかを知りたい場合には、そういう内容の参考書を手に入れるべきでしょう。
参考書レベルではなく、実際に使われている実用レベルのもので、目的のライブラリをどう使っているのかを知りたい場合は、オープンソースプログラムを探してみるべきでしょう。
■ 【3】“良い”ソースコードを読む
「良いソースコードを読む」というのは、参考として読むなら良いソースコードを読むべきだという当たり前のことをいっているだけです。
ただし、これが意外と難しいかもしれません。なぜなら、どういったソースコードが“良い”ソースコードかという評価は、あまり行われていないため、これから読もうとしているソースコードが“良い”のかどうかは前もって分からないからです。書籍などについているサンプルコードについては、書籍の評価を参考にするしかないでしょう。信頼の置ける知り合いの評価も参考になるでしょう。
オープンソース系では、多くの開発者が参加していて、ユーザーコミュニティも多く、公開されてからある程度時間が経過しているところのものは、多くのレビューにさらされていると考えられるので、良いソースコードがある可能性が高いと思います。
しかし、修正パッチがユーザーからたくさん投稿されている場合はどうでしょう。オリジナルがひど過ぎるのか、読みやすいコードだからユーザーからもパッチが出しやすいのか、判断はなかなかしにくそうです。ソースコードを読んでみれば分かるのでしょう。
■ 【4】仕事でも役立つソースコードを読む
「仕事でも役立つソースコードを読む」というのは、「どうせなら、仕事でも使えるソースコードを読みましょう」ということです。例えば、JavaコンパイラやJava VMを使った開発の仕事をしている場合は、Javaの開発元サン・マイクロシステムズのJDK(Java SE Development Kit、Java開発キット)のソースコードや、オープンソース団体Apacheの「Apache Harmony」というJDKのソースコードを読むなどです。
![]() |
| 図6 サン・マイクロシステムズのJDKのダウンロードページ |
しかし、ライセンスを意識する必要もあります。そこで得たアイデアやコードを自社の製品へ、無意識のうちでもライセンス違反となる形で反映してしまうと、“問題”となります。そういった危険を冒すぐらいなら、最初から読まない、という選択もあるわけですが、こういった特殊な事情がなくライセンスに同意できるなら、自分の仕事と関係するプログラムのソースコードを読んでみるといいでしょう。
![]() |
| 図7 Apache Harmonyのダウンロードページ |
例えば、オープンソースのアプリケーション・サーバである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を通してその仕組みを理解しましょう |
||
| 1-2 |
| INDEX | ||
| 第10回 【新人なるプログラマーへ】ソースコードを読みましょう | ||
| Page1 ソースコードを読むのって、どんなとき? ソースコードを読む能力はプログラマーの“基礎能力” |
||
| Page2 ソースコードを読む能力を高めるには? ソースコードから理解できる“技術者”を目指そう! |
||
小山博史のJavaを楽しむ バックナンバー
- 第1回 JavaとJavaScriptの親しい関係
- 第2回 いろいろなJavaを楽しむ
- 第3回 待望のJava SE 6 でパーシステンス
- 第4回 (Java+Derby)* Ruby on Rails プログラミング
- 第5回 【新人研修向け特別企画】JavaでPHPを使ってみた
- 第6回 JavaFXでJava RIA開発はどれくらい変わるの?
- 第7回 そろそろブログ+RSSアプリでも作ってみませんか?
- 第8回 デスクトップをJava製ウィジェットでにぎやかに
- 第9回 Google Android用携帯アプリ作成のための基礎知識
- 第10回 【新人なるプログラマーへ】ソースコードを読みましょう
- 第11回 Javaはクラウドのプラットフォームになり得るのか
- 第12回 「Javaは遅い」から「Javaは楽しい」に至る歴史
- 第13回 Subversionならできる! NetBook最強バックアップ術
- 第14回 UNIX/Linuxも楽しむJava開発者になるための学習法
- 第15回 年末でJetty(絶対)にできるAndroid携帯サーバ活用
| Java Solutionコラム一覧 |
TechTargetジャパン
- EclipseでScalaプログラミングを始めるための基礎 (2012/2/10)
概要や5つの特徴を紹介し、開発環境を構築して対話型実行環境「REPL」やEclipse上でHello Worldを実行します - 並列分散処理の常識をHadoopファミリから学ぶ (2012/2/8)
並列分散処理の課題やHadoopの長所/短所、そして短所を補うHadoop関連プロジェクトの構成や概要などを簡単に紹介 - WebLogicサーバ最新版「12c」の気になる4つの特徴 (2012/1/31)
久々にメジャーアップグレードしたJavaアプリケーションサーバについて、製品担当者に軽量インストーラなどの特徴を聞いた - GitHubをもっとソーシャルに使いこなすための7つ道具 (2012/1/23)
ソースコードホスティングのGitHub周辺で便利な新サービスが続々登場しているので、まとめて紹介しよう。特に連動クラウド「fluxflex」が注目だ
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


