「ソースコードを早く理解する読み方のコツが知りたい」
「既存のコードが多すぎてどこから読んだら良いか分からない...」
「他人が書いたコードを読んでもい何をやっているか全然理解できない...」
今回はそういった悩みを解決します。
記事の信頼性
この記事を書いている私はエンジニア歴8年で、今も開発現場でプログラミングをしています。
そういった経験から、プログラミングを勉強している方に向けてアドバイスをお伝えすることができます。
開発現場では他の人が書いたコードを読む機会がたくさんあります。
ですがこれが案外難しいんですよね…
他人の意図を汲み取れなんて言われても、無理な話(笑)
実は、ソースコードの読み方にはちょっとしたコツがあり、それを知っているかどうかで効率が大きく変わります。
そこで本記事では『開発現場で使えるソースコードの読み方』について、現役エンジニアの私が紹介します。
『効率的に読むコツを知ることで得られる3つのメリット』も合わせてお伝えします。
この記事を読むことで、他人の書いたコードをスラスラと読めるようになりますよ。
【本質】ソースコードを読むコツは『ソースコードを読まない』こと
「何を言っているんだ・・・?」
と感じるかもしれませんが、結構本質的なことで重要です。
あまり理解できない人は、おそらく効率的にソースコードを読めていないかも?です。
どういうことか具体的に解説しますね。
いきなりコードを読み始めると撃沈します
まず、いきなりソースコードを読み始めると撃沈するのでやめましょう。
なぜなら、長年動いているシステム系は一千万行とかの単位でソースコードがあるので、1日千行読んだとしても千日かかります。
単純計算で全部読むのに3年かかる計算です。
この数値から分かるように、無策にコードを読み始めると途方も無い時間がかかるので無理ゲーです。
プログラミング初心者あるあるで気持ちはよく分かりますが、いきなりコードを読み始めると撃沈するのでやめましょう。
コードを読み始める前に8割程は勝負が決まる
ソースコードを読んで理解するには、コードを読み始める前に8割程は勝負が決まると言っても過言ではないです。
というのも、コードの読み方を知っているかいないかで作業効率は大きく変わります。
僕も入社した当時はソースコードの読み方なんて全然知らなかったので、時間通りに仕事が終わらず、残業だらけの日々でした、、
本記事では巨大なシステム開発を行う現役エンジニアが、ソースコードの読み方のコツを伝授します。
【すぐに使える】ソースコードの読み方【効率読む6つのコツ】
現役エンジニアの私が普段仕事をする上で、ソースコードを読むときに意識していることが6つあります。
ソースコードを効率よく読む6つのコツ
- ソースコードを読む目的を明確にする
- 読まなくても良い部分は読まない
- 推測しながら読む
- 無駄なソースコードは消して読む
- メモを取る
- デバッグ・テストする
1つずつ解説しますね。
コードを読む目的を明確にする
ソースコードを読むときは目的を明確にして読むことが大切です。
なぜなら、目的によってコードの読み方は大きく変わるから。
例えば次のようなイメージ。
- 構造を理解する:各処理の詳細は追わずに、全体の流れや役割を把握するようにザッと読んでいく。
- 不具合解析をする:原因箇所を特定したら徹底的に読む。メソッドの名前とかコメントとか何も信じない。書いてあることを忠実に理解する。
上記のように、目的が変わればコードの読み方も変えることがコツです。
ソースコードを読むときは、読む目的を明確にしましょう。
読まなくても良い部分は読まない
読まなくても良い部分は読まない工夫をしましょう。
なぜなら、目的を果たすために不要な情報を読んでも前に進めないからです。
特に大規模なシステムだと、どこから読めば良いか分からず、いたずらに読み始めると何日あっても時間が足りません。
なので、設計書があれば事前に構造を把握して、読むべきところを絞り、知りたいところだけを読むべき。
ソースコードを読むときは、読まなくても良い部分は読まない工夫をしましょう。
推測しながら読む
全体像や処理をある程度推測しながらソースコードを読むと内容が理解しやすくなります。
メソッドの中身をいちいち事細かに読んでいては時間が足りませんし、効率が悪いです。
なので、クラスやメソッド名から何をしている処理なのかある程度推測しましょう。
例えば、以下のようなコードがあった場合
File.Write("sample.txt")
Fileクラスやwriteメソッドの詳細はわかりませんが、何かの文章をsamle.txtというファイルに出力しているのでは?ということが推測できますよね。
中身の実装がどうなっていようと、全体把握の段階では気にする必要はありません。
全体像や処理を推測しながらソースコードを読むと、内容が効率的に理解できます。
無駄なコードは消して読む
無駄なコードは消して読みましょう。
なぜなら、知りたいこと以外の情報が入ってくるとノイズでしかないから。
例えば、以下のようなコードです。
・戻り値チェック
・エラーハンドリング処理
・昔のコードを消した履歴やコメント
長年動いているソフトや大規模なシステムだと上記のようなコードがたくさんあります。
これらを真面目に読むと実現したい機能がなんだったのかボケてきてしまいます。
ソースコードを読む際はいらないコードを消してしまい、必要な部分だけ残して読むと効率的に読めます。
メモを取る
コードを読むときは、クラスの関係ややメソッドの繋がりをメモしながら読むことをオススメします。
というのも、一度読んだだけだと案外忘れるもので、気づいたら何回も同じコードを読んだりしてしまうんですよね。
読んで分かった内容や構造をメモしておくと二度手間を避けつつ、頭の整理にも繋がります。
デバッグ・テストする
実際に動かしながらソースコードを追うデバッグやテストも非常に有効です。
百聞は一見にしかずで、実際の動きを見ながらコードを追うことができれば、膨大なソースコードのどこを通っているかが確実に理解できます。
また、一時変数の中身などスナップショットの状態もわかるので、解析などで非常に役立ちます。
IDE(統合開発環境)を使っている方はデバック機能を積極的に使っていきましょう。
プログラミングにオススメの統合開発環境やエディタについては以下の記事で詳しく解説しています。合わせてどうぞ。
ソースコードを読む力はエンジニアの基礎スキル【3つのメリット】
ソースコードを読む力はエンジニアの基礎スキルであり、スキルを磨けば磨くほど良いことばかりです。
具体的には次の3つのメリットがあります。
ソースコードを読む力を磨く3つのメリット
- コーディングスキルが上がる
- ソフトウェアの品質が上がる
- 仕事を早く終えられる → 自分の時間が増える
それぞれお簡単に解説しますね。
コーディングスキルが上がる
ソースコードを読む力が上がるとコーディングスキルが上がります。
なぜなら、たくさんの良い悪いコードを読むことで、どうやってコード書いたら良いかが分かるようになるから。
自分でコードを書くときに「どうやって書いたら良いんだろう…?」と迷ったことないですか?
それは単純に自分の引き出し不足。
他人のコードを読んで「この書き方上手いな」と思うアイデアをたくさん蓄えておけば、書き方に悩むことは少なくなりますよ。
他人のソースコードを効率的に読めるようになると、コーディングスキルが上がり、自分が書くコードも綺麗になります。
ソフトウェアの品質が上がる
ソースコードを読む力が上がると、作成するソフトウェアの品質が上がります。
特に、チームで開発するようなソフトウェアの場合、チームのメンバーが書いたコードをレビューする機会があります。
そういった、レビューの場で正しくコードを理解し、不具合になりそうな部分をあらかじめ摘出する事で、のちの重大な不具合を防ぐことができます。
実際の製品開発現場ではレビューをする機会が多くあるので、コードを読んで理解する力は結構重要ですよ。
ソースコードを読む力を上がてソフトウェアの品質を向上させましょう。
仕事を早く終えられる → 自分の時間が増える
ソースコードを読む力が高い人は仕事を早く終えられるので、自分の時間を増やすことに繋がります。
ソフトウェア開発に関わる以上、ソースコードを読んだり書いたりする作業は必ずあります。
コードを読んだり書いたりする速度が早ければ早いほど、作業効率が高いと言えますよね。
作業が早く終わった時間を、さらに自己研鑽に回せば、さらに仕事を早く終わられられるという好循環を生み出すことも。
ソースコードを読む力を高めて仕事を早く終わらせ、自分の時間を増やしましょう。
ソースコードを効率よく読めるようになるために読んでおきたい本5選
さいごに、私のエンジニア生活の中でソースコードを効率的に読むのに参考になった本を5つ紹介します。
ソースコードを読む力を上げる本5選
- リーダブルコード
- ビューティフルコード
- ビューティフルアーキテクチャ
- レガシーコード改善ガイド
- リファクタリング プログラムの体質改善テクニック
エンジニアとして現場で活躍を目指すなら是非読んでおきたい本ですよ。
リーダブルコード
エンジニア界では名著の1冊です。
リーダブルコードを読むことで、コードを書く時に気をつけるべきことや読みやすいコードとは何かを理解することができます。
エンジニアを目指すのであれば、プログラミングの勉強と合わせてぜひ読んでおきたい一冊です。
ビューティフルコード
C言語、XML、Rubyといった、今は当たり前のように使われている言語の生みの親であり一流のプログラマの方々が「美しいコード」について思い入れを語った本です。
超一流の開発者の方々の考え方や物の見方に触れることができる貴重な一冊です。
ビューティフルアーキテクチャ
先ほどのビューティフルコードに続く、一流のアーキテクトたちによるエッセイ集です。
ソースコードの理解には「アーキテクチャ」を理解することが必要です。
「美しいアーキテクチャ」をテーマに、オブジェクト指向提唱をはじめとする一流の開発者のソフトウェアアーキテクチャの考え方や哲学について触れることができる1冊です。
レガシーコード改善ガイド
大規模なシステム開発では、構造が複雑で理解できないようなコードに触れる機会があります。
難解なコードに対する分析手法・対処手法について、「コードを理解し、テストできるようにし、リファクタリングを可能にし、機能を追加できるテクニックを学ぶことができる1冊です。
システムエンジニアの人はぜひ読んでおくとコードを読む力を高めることができます。
リファクタリング プログラムの体質改善テクニック
オブジェクト指向は良いと言われているものの、実際の製品に綺麗に適応されていないのも事実。
そんな中で、オブジェクト指向に関する具体的な改善方法が綴られている本です。
いきなり読むと難しいですが、ある程度現場で経験を積んだ人がさらなるレベルアップを目指すときに読むと、違った見方が身に付く本です。