現場配属直後の新人向け!初見プログラムの攻略法!

コラム
 

プログラムの修正を任されたけど、
いったいどうすればいいんだぁ!

ハトみかん
ハトみかん

お、落ち着いて、、
いきなりコードに触るのではなく、
まずは正しく内容を理解することが大事だよ。
一つ一つ手順を見ていこう!

はじめに

初めて触るプログラムの修正をやることになった!
いきなりコードを読んでも、何の変数かも解らないしどこを直せばいいかも検討もつかない!
研修で学んだレベルのコードと全然違うし、いったいどうすればいいんだ!

まずは落ち着いて、いきなりコードを上から読んだり書いたりしてはいけません。
コードではなくドキュメントから確認して、コードを読み解くことが重要です。

まずはテスト仕様書を確認!

テスト仕様書を探してください!
テスト仕様書にはどうすれば動くかと、何をすると動かないのかが書いてあります。
初見のプログラムであれば、まずはどんな処理なのかをざっくりと理解したいので、単体テスト仕様書より結合テスト仕様書などを見る方がいいかと思います。

コード実際に動かすことが、理解への一番の近道です。
実際にデータを入れたり、処理を実行したり簡単にテストをしてみて、どのような動きをするのか確認しましょう。

これはコードを修正する前にやることが重要です。
修正後に動かしてみて、エラーが発生した場合は、修正が間違っていてエラーになったのか、修正する前からエラーが起きていたのかが分からなくなってしまいます。

万が一そのエラーが修正前から起きていたものであれば、なおさら早期発見が重要なので、修正前の簡単な確認は習慣化しておきましょう。

テスト仕様書がなかった?
それなら仕方ないですね。

テスト仕様書を残さないことによる弊害を身をもって体験できたということで、次に自分がやる際に仕様書を作成する重要性を意識しましょう。

次は設計書を確認!

軽いバグの修正や処理の変更(例えば初期値を変えるとか、if文の条件を変える等)であれば、テスト仕様書だけで処理のパターンや正常系/異常系を把握できると思います。

しかしデータの連携や処理の新規追加など、規模が少し大きいのであれば、設計書も必ず確認しましょう!

「最初に設計書を確認すれば、テスト仕様書とか見なくてもいいのでは?」

その考えは良いと思います。
一般的なウォーターフォールモデルの開発だと設計書とテスト仕様書は対になっていますし、お客様に提出したりする場合もあって分かりやすく書かれていることが多いです。

しかし、時として、「実際のコードが設計書通りに書かれていない」ことがあります。
もう一度言います、「実際のコードが設計書通りに書かれていない」ことがあります。
なので設計書を見るよりも先に、テスト仕様書を見ながら実際に動かして確認することが重要なのです。

実装を進めていくうちに、そもそもの設計自体を修正することはよくあります。
そして設計書、ドキュメントの修正は抜け漏れがあったり、後回しにされる場合があります。
システムが大きければ大きいほど、資料の数が増えて管理が難しくなるのは、経験がなくても想像がつくかと思います。

実際に動かして確認したうえで、システムや機能の理解を深めるために、設計書を確認してどのような処理をしているのかを調べましょう。

またコードを修正したことで設計書も直さなければならない場合もあるため、ついでに設計書の修正箇所も見当をつけておくと作業スピードもアップします。

いよいよコードに目を通す!

研修ではそこまで長いコードを触る機会はないかもしれません。
しかし現場ではおそらく数千、数万行のコードを見ることになるかと思います。
(技術力が高いところであれば、ファイルを分けて一つ一つは短く抑えられているかもしれません)

コメント

まずはコメントを見ていきましょう。
コメントは先人たちが後世の人の為に残したメッセージです。

きちんと管理されているコードであれば、各ファイルの上部、そして各関数ごとにヘッダーというものがついています。

これはそのファイル、関数についての説明が書かれているもので、引数や戻り値などを見ればどんなデータが入って、処理されて、出ていくのかを知ることができます。
また変数名や型も載っている場合もしっかりとチェックしておきましょう。

変数名

次は変数名に注目してください。
管理がしっかりされている現場では変数名は規約などで決まっています。
基本的には読むだけでどのような値が入っているのかが分かる名前になっているはずです。

例えば数字であれば「number/num」で、データ型が分かるように「int_num/intNum/num_int」など、プログラム毎に統一されているはずです。
(もし統一されていなくても、自分が書くときは必ず意識しましょう!)

分岐処理/ループ処理

コメントや変数名で処理の入口、出口、使っているデータを理解したところで、ようやく処理の流れを追っていきます。

最初のうちはデバッグなどで、一行一行どのデータにどんな処理をしているのか、確認するのもいいですが、プログラムのネックである二つ、「分岐処理」と「ループ処理」を重点的に見ましょう。

なぜこの二つが重要かというと、分岐やループの条件は難しい処理をしようとすると複雑になってしまい、特にバグが発生しやすいため、重点的に確認しなければなりません。

条件の判定にどんなデータを使っているのか、分岐後の違いは何か、ループはどれくらい繰り返されるのか、などなど。

さいごに

初見のプログラムを確認するポイントは、コメントと変数で処理の意図を理解し、分岐やループ処理で流れを理解することです。

初心者プログラマーであれば、いきなり新規でプログラムを作成することは稀で、基本的には既存のコードを見たり修正したりして仕様を理解していくものです。

つまり誰もが通る道なので、不安にならず、一歩一歩と技術を身につけていきましょう!

タイトルとURLをコピーしました