i-school - コメントの使い方と重要性

1.コメントの記法


 C#では、一般的に2種類のコメントが使われます。


<1.一行コメント>


 スラッシュを二つ使うものです。

 下記のように // で始まる行はコメント行となります。
この行はコードとして認識されず、プログラマーがコードを理解するためのメモや説明として使われます。

// これは一行コメントです。

 基本的にはこちらを利用します。


<2.複数行コメント>


 /* で始まり */ で終わる部分は複数行コメントとなります。
これは複数行にわたる説明や、一時的に無効化したいコードブロックに対して使われます。

/*
これは
複数行コメントです。
この範囲内すべてがコメントになり、コードとして認識されなくなります
*/

 複数行コメントは一部のシナリオで有用なこともありますが、特に共同作業の際には、一行コメントが推奨されます。
それは以下のような理由からです。


1.明確さ

 一行コメントはその行だけに関連していることが明確であり、それがどのコードに対するコメントなのかを素早く理解することができます。


2.見落としの防止

 複数行コメントは見落としやすく、意図せずにコメントの範囲が広がってしまうことがあります。
これは特に、多くの人が共同でコードを触る状況では混乱を招く可能性があります。



3.Gitとの互換性

 一行コメントはGitなどのバージョン管理システムでの変更を追跡する際にも有利です。
それぞれのコメントとそれに関連するコードが同じ行にあるため、差分が明確になります。

 ただし、コードは全体を表示しないため、一部を切り取って表示される場合、複数行コメントの範囲内であるかどうかを確認できません。



 したがって、コードの可読性とメンテナンス性を向上させるためにも、一行コメントを使うことを推奨します。

 特にエディターのショートカットキーを登録しておくことで、一括で、すばやくコメント、コメント解除が可能です。


  => 知っておきたい豆知識
 

 作業効率を上げるためにも、ショートカットキーは積極的に利用しましょう。


2.コメントの種類


 コメントはソースコードを解釈する上で非常に役立つ道具です。
しかし、どのようなコメントを書くべきかは時として混乱を生むかもしれません。

 以下、二つの主要なコメントの種類について考えてみましょう。


<1.ソースコードをそのまま読んだもの>


 この種類のコメントはコードの動作を直訳したものです。
具体的なアクションや変数の値、関数の目的などを説明することが多いです。

int playerHealth = 10;

// playerHealth 変数の値を1減らす
playerHealth -= 1;

 まずは、こちらタイプのコメントを書けるか、チャレンジしてみてください。


<2.ゲーム内の機能として解釈したもの>


 この種類のコメントはコードがゲーム内でどのような機能を果たすか、またはどのような結果をもたらすかを説明します。
これは特に、具体的なコードの動作よりも、そのコードがゲーム内の全体的な動作にどのように影響を与えるかを理解するのに役立ちます。

// プレイヤーにダメージを与える
playerHealth -= 1;

 直訳していた最初のコメントよりも具体性が増しています。
処理の内容を具体的なゲーム内の動作として置き換えて解釈することが出来れば、コメントとしての機能を果たすことが出来ます。

 こちらのような、ゲーム内の機能として解釈した内容のコメントを書けるようにすることを目指しましょう。


3.コメントを書くことで処理を読み解けているかの判断


 コメントを書くことは、自分自身がコードを正確に理解しているかを確認する素晴らしい方法です。
何かを説明する能力は理解度の良い指標であり、この技術は"ラバーダック・デバッギング"としても知られています。

 また、自分が書いたコードを数ヶ月後や他の人が後で見るときに、その意図を明確にするためにもコメントは非常に有用です。

 裏を返せば、特に、解釈したコメントを書くことが出来なければ、処理を読み解けていない、ということにもなります。
その場合、自分のソースコードを読み解く力が不足していることがわかります。

 客観的に判断することで、復習すべき内容が見えてきます。

 そういった判断が出来るという点でも、コメントを書けるということは大切な技術です。


4.コードを読み解けていないときにどうするか


 ある特定のコードブロックやメソッドを読み解くのに困った場合、以下の手順を試してみてください。


<1.コードを分割する>


 問題のある部分をさらに細かいパーツに分割します。
これにより、各部分が何をするのか、そしてそれらがどのように相互作用するのかを理解しやすくなります。

 自分がどこまで理解できているのかを知ることで、読み解けていない部分を調べていく糸口になります。

 これはエラーの原因を特定する際にも応用できる、問題点の切り分けの手法です。


<2.ドキュメンテーションを読む>


 公式のドキュメンテーションやヘルプファイルは、使用しているメソッドやクラスが何をするのかを理解するための最初のリソースであるべきです。

 ただし、書いてある内容が難しい場合には、インターネットの記事を検索し、その中から、自分の理解できる内容を見つけるようにしましょう。


<3.デバッギングツールを使う>


 コードがどのように動作するかを見るために、ブレークポイントを設定し、変数の値をステップごとに確認します。
また、Debug.Log メソッドを利用したり、インスペクターの動きを見ることも重要です。


<4.コミュニティやチャットツールに尋ねる>


 Stack OverflowやUnityのフォーラムなど、他の開発者に質問することで追加の洞察を得ることができます。
国内であれば teratail なども活用しましょう。

 最近は ChatGPT といった AI のチャットツールもありますので、こういった機能を活用する方法もいいでしょう。


5.まとめ


 コメントはコードを読み解く際の非常に有用な道具ですが、それだけでは十分ではありません。
適切なデバッギング、ドキュメンテーションの利用、そして必要に応じてコミュニティからの助けを求めることも、効果的なコード読解術となるでしょう

 また、ソースコードを読み解くことが出来れば、処理の内容を理解した上で、コメントを書くことが出来ます。

 そして、読み解くことが出来てはじめて、自分でソースコードを書いていくことも出来る用になります。

 プログラムを読み解いていく力がつき、正しく読み解くことで、今度は書いていく力を身につけることにつながるからです。
このようにして、プログラミングの学習は、すべて基礎の積み重ねでつながっています。

 コメントも同じです。たくさん書いて、処理を読み解く力を養っていきましょう。