プログラムの理解を早める方法
・プログラムを読んでいるけどなかなか理解できない
・プログラミングの勉強をしているけどプログラムをどう読めばいいかわからない
という人のための記事です。
私は今までいろいろなプログラムの読み方をしてきましたが、最も理解が早かった読み方があるので共有します。
プログラムを理解するときは「システムの役割を理解する」→「システムを構成する部品(モジュール)を理解する」→「モジュールを構成する機能(関数・クラス)を理解する」のように大枠から紐解いて行きましょう。
大枠を理解していれば「個々の機能や処理がなぜ必要なのか」ということが理解しやすくなります。
具体的な方法について説明します。
システムの役割を理解する
まずはシステムの役割を理解しましょう。
私は最初の現場の時は何を作っているかわからないまま仕事していました。
これは非常によくないです。
何を作っているかわからないと検討違いのものを作ったりしてしまいますし、モチベーションも下がります。
「どんな役割のシステムか?」
「どんな現場で使われているのか?」
最低限この2つは理解しておきましょう。
システムを構成する部品(モジュール)を理解する
次はシステムを構成する部品(モジュール)について理解します。
掃除機や扇風機などの家電の場合はネジやフレームが部品ですが、プログラミングの場合は「一つの目的を果たす為のクラスや関数のグループ」が部品です。
自分が担当する部品以外はあまり細かく見る必要はありませんが、
「どのような部品でシステムが構成されているのか」
ということを理解することが大切です。
また、自分の担当するモジュールにどんな関数やクラスがあるかざっと理解しておきましょう。
機能(関数・クラス)を理解する
次に関数やクラスといったモジュールを構成する機能を理解していきます。関数を例に説明しますが、クラスも同じやり方でOKです。
関数を理解する場合もいきなり1行目から見ずに、「入出力を理解する」、「ブロック単位で理解する」、「ブロックを構成する要素を理解する」のように大枠から順にプログラムを追っていきます。
入力と結果を理解する
まずは引数や戻り値といった関数の入力と結果を理解します。
中身の処理は考えずに
「この関数を呼んだらこんな処理がされる」
「この値を入れたらこの数字が返ってくる」
など、関数の機能をざっくりと理解しましょう。
最初はいろいろ考えるよりも実際に動かしてみた方が早いでしょう。
ブロック単位で理解する
いよいよ関数の中身を見ていく訳ですが、この場合も先頭から1行ずつ見るのはやめましょう。
まずはブロック単位でプログラムを理解します。
コメントで明示されていれば楽なのですが、何も書かれていない場合もあります。
その場合は「この一連の処理はここまでかな?」というざっくりな感じでいいので仮説を立てて適当な場所で区切りましょう。
ブロックが大きい場合は更に区切りましょう。
処理の規模によりますが、5〜10行程度に区切ると理解しやすいと思います。
ブロックを構成する要素を理解する
区切ったブロックの処理を一つずつ理解します。
一つずつ処理を見てこの一連の処理が何をやっているか理解します。
分からない処理が出てきたらググるなどして調べます。
ステップ実行をしたり、そこだけ切り出して実行して動かしてみるのも有効です。
うまく動かなかったら「ブロックの範囲を変える」、「上のブロックから動かしてみる」などいろいろ試してみましょう。
やはり最初は実際に動かしてみた方が理解が早いです。
迷ったら即実行しましょう。
大きな枠から理解することが大切です
私も最初はプログラムの読み方が分からずかなり苦労しました。一つ一つの処理を見てしまい、「何の為にその処理が必要なのか」を理解せずに作業していました。これを続けていると思わぬ見落としがあったり、見当違いのシステムを作ってしまい大きな手戻りや不具合の原因になります。
プログラムを理解する時にいきなりソースコードを見てしまいがちですが、最初から狭い視点で見るとその処理がなぜ必要なのかわかりません。
最初は大きな枠を見ることが大切です。
関連記事>>プログラミングの始め方まとめ
関連記事>>プログラミングは実践しなければ上達しない