他人が書いたコードを解析する5つのステップ
自分が一からコードを書くのと、他人が書いたコードを修正するのとでは、必要なスキルが異なります。
自分で一から書くならば、プログラミング言語の知識があればできますが、他人が書いたコードを修正するには、他人が書いたコードを理解しなければなりません。
プログラミング言語の知識があっても、それがどういう設計思想で作られているかが分からないと、どこで何をやっているプログラムなのかが分かりません。
そこで、他人が書いたコードを解析する5つのステップを紹介します。
Contents
1. 全体の構造を把握する
まずは大きな単位、構造を把握します。
ディレクトリ構成を見て、大きな単位でソースコードがどのようにグループ分けされているかを見ます。
次にソースコードのファイル名を見て、どのような機能を持っているかを大雑把に把握します。
これで大まかなプログラム構成が把握できます。
2. 静的解析ツールを使う
続いてプログラム間の関連を調べます。
静的解析ツールというソースコードを解析してクラス図などの静的構造を表す図を出力してくれるソフトウェアがあります。
オブジェクト指向言語であれば、クラス図を見れば、クラス間の関連が分かり、どういう設計思想でプログラムが作られているかが分かります。
Javaだと
- AmaterasUML
- The ObjectAid UML Explorer for Eclipse
- Class Visualizer
などの静的解析ツールがあります。このような静的解析ツールがない言語もあるので、その場合はこのステップをスキップして次に進みます。
3. ソースコードを読む
クラス図でクラスの関連を把握したら、修正したい内容に関連するコードを読んでいきます。
ソースコードを読むだけで、修正方法が分かったら、解析を終了してソースコードの修正に入ります。
4. デバッガでブレークポイント設定してステップ実行する
ソースコードを読んでもよくわからない場合は、ブレークポイントを設定してデバッガでステップ実行してみます。
ステップ実行すると、
- どういう流れでプログラムが動いているのか
- 実行途中で変数の値を確認
することができます。これにより、ソースコードを読んだだけでは分からなかったことが分かる場合があります。
5. プログラムを書いた本人に質問する
ステップ実行しても、よくわからない場合は、プログラムを書いた本人に質問します。プログラムを書いた本人なら、そのプログラムを十分に理解しているはずなので、分からなかったことが解決できるはずです。
ただ、この方法はいつでも使えるわけではありません。プロジェクトの要員が入れ替わっていて、そのプログラムを書いた人がいない場合もあります。
また、質問をするのは、答える人の時間を使わせることになるので、できれば自分で解決したいところです。ですから、これは最終手段でありできれば使いたくない手でもあります。
ただ、「一人で長時間取り組んでもわからなかったことが、聞いたら一瞬で分かった」ということもよくあるので、相手の時間を取らせず早めに軽く聞いてみるのも良い手です。
他人のソースコードを読むことで学べることは多い
作業としては自分で一からプログラムを組んでいく方が楽しいですが、それだけだと、自分の域を出られません。
他人のソースコードを読むと自分とは違う設計思想で作られていたり、知らないAPIが使わていて、分かりにくかったりもしますが、自分の発想の外側にある知識を学ぶことができます。
その際に、ここで紹介した解析方法をぜひ使ってみてください!