他人が書いたコードを解析する5つのステップ

2014年12月17日に投稿 → に更新

自分が一からコードを書くのと、他人が書いたコードを修正するのとでは、必要なスキルが異なります。

自分で一から書くならば、プログラミング言語の知識があればできますが、他人が書いたコードを修正するには、他人が書いたコードを理解しなければなりません。

プログラミング言語の知識があっても、それがどういう設計思想で作られているかが分からないと、どこで何をやっているプログラムなのかが分かりません。

そこで、他人が書いたコードを解析する5つのステップを紹介します。

1. 全体の構造を把握する

まずは大きな単位、構造を把握します。

ディレクトリ構成を見て、大きな単位でソースコードがどのようにグループ分けされているかを見ます。

次にソースコードのファイル名を見て、どのような機能を持っているかを大雑把に把握します。

これで大まかなプログラム構成が把握できます。

2. 静的解析ツールを使う

続いてプログラム間の関連を調べます。

静的解析ツールというソースコードを解析してクラス図などの静的構造を表す図を出力してくれるソフトウェアがあります。

オブジェクト指向言語であれば、クラス図を見れば、クラス間の関連が分かり、どういう設計思想でプログラムが作られているかが分かります。

Javaだと

  • AmaterasUML
  • The ObjectAid UML Explorer for Eclipse
  • Class Visualizer

などの静的解析ツールがあります。このような静的解析ツールがない言語もあるので、その場合はこのステップをスキップして次に進みます。

3. ソースコードを読む

クラス図でクラスの関連を把握したら、修正したい内容に関連するコードを読んでいきます。

ソースコードを読むだけで、修正方法が分かったら、解析を終了してソースコードの修正に入ります。

4. デバッガでブレークポイント設定してステップ実行する

ソースコードを読んでもよくわからない場合は、ブレークポイントを設定してデバッガでステップ実行してみます。

ステップ実行すると、

  • どういう流れでプログラムが動いているのか
  • 実行途中で変数の値を確認

することができます。これにより、ソースコードを読んだだけでは分からなかったことが分かる場合があります。

5. プログラムを書いた本人に質問する

ステップ実行しても、よくわからない場合は、プログラムを書いた本人に質問します。プログラムを書いた本人なら、そのプログラムを十分に理解しているはずなので、分からなかったことが解決できるはずです。

ただ、この方法はいつでも使えるわけではありません。プロジェクトの要員が入れ替わっていて、そのプログラムを書いた人がいない場合もあります。

また、質問をするのは、答える人の時間を使わせることになるので、できれば自分で解決したいところです。ですから、これは最終手段でありできれば使いたくない手でもあります。

ただ、「一人で長時間取り組んでもわからなかったことが、聞いたら一瞬で分かった」ということもよくあるので、相手の時間を取らせず早めに軽く聞いてみるのも良い手です。

他人のソースコードを読むことで学べることは多い

作業としては自分で一からプログラムを組んでいく方が楽しいですが、それだけだと、自分の域を出られません。

他人のソースコードを読むと自分とは違う設計思想で作られていたり、知らないAPIが使わていて、分かりにくかったりもしますが、自分の発想の外側にある知識を学ぶことができます。

その際に、ここで紹介した解析方法をぜひ使ってみてください!

プログラミング初心者におすすめのサービス
1. 講師から対面で学びたい派なら

プログラマカレッジをおすすめします。ProEngineerという転職エージェントが運営しているプログラミングスクールです。20代限定なんですが、無料で受講できて、修了後、就職支援もしてくれるんです。最高過ぎですよ、これ!!企業からの協賛金で運営しているのでスクールを無料にできるんだそうです。すばらしいシステムだと思います!

30代以上の方には

プログラマカレッジは20代限定なので30代以上の方にはWebCampをおすすめします。受講料の返金保証がついているし、毎日11時〜23時まで通い放題なのでとてもいいと思います!

2. 自宅で学びたい派なら

「就職保証付き」オンライン就職予備校をおすすめします。Javaエンジニアコースでは就職保証がついているのでプログラマーとして就職したい方にはぴったりです。Javaエンジニアの求人ってめっちゃ多いし、求められる技術レベルもそこまで高くないのでちゃんとした教育プログラムなら就職保証できるだろうなとJavaエンジニア経験者の私も思います。

3. つまづいた時に質問したくなったら

プログラマー専用の質問サイトteratailをおすすめします。 つまづいた時にteratrailで質問すれば教えてもらえます。

4. 未経験の人でも登録できる転職エージェント

ワークポートは未経験の人の転職活動も支援してくれますし、全国の求人を扱っているので地方在住の方にもご利用いただけます。

これらのサービスを活用すれば、全くの初心者からでもプログラミングをばっちり出来るようになると思います!レッツトライです!

エージェントを使った方が転職活動は楽です

東京・大阪近郊のイケてるIT企業に転職したい人には『レバテックキャリア』

 東京・大阪近郊のエンジニア経験者向け転職サービスです。

このサービスを運営しているレバレジーズという会社はシステム開発もやっているので、現場の仕事をよくわかってくれてますし、ヒカ☆ラボというIT系の勉強会なども主催していたりteratailというプログラマー専用の質問サイトを運営してて好感が持てます。求人案件もWebやスマホの面白い仕事が多いのでいいと思います。

ホームページを見ると分かるんですが、若くて美人の担当者が多いのもナイスなんです!私の場合(たぶんあなたも)、担当者が美人だと転職活動のモチベーションめちゃ上がりますからね笑

エンジニア未経験の方や地方在住の方にはワークポートというエージェントをおすすめします。

エンジニア未経験の方や地方在住の方には『ワークポート』

全国の求人を扱っていて、しかもITエンジニア未経験の人にも転職支援をしてくれるエージェントです。

未経験の人はサポート対象外のエージェントが多い中、ワークポートは未経験者を支援し転職を成功させています。

未経験の方こそエージェントから職務経歴書の作り方や面接の仕方のレクチャーを受けた方がずっとうまくいきます。

『派遣社員』なら正社員とフリーランスの『良いとこ取り』!

  • 「フリーランスになりたいけど、確定申告とかめんどくさいな」
  • 「定時帰りできる職場や、時短勤務がしたい」

という方には派遣社員がおすすめです。

派遣ってネガティブなイメージありますが、ITエンジニアの派遣社員なら

  • 時給が高く、給料も悪くない
  • やりたい仕事を選べる
  • 確定申告不要(派遣会社がやってくれる)
  • 厚生年金、健康保険も派遣会社が入ってくれる

ので、正社員とフリーランスのいいとこ取りな、とてもいい選択なんです。

 - 技術