🔍
「読み解きながら体験する!初心者が身につけておきたい プログラムを読む技術 3 - AIが書いたコード編」レポート
2025年3月5日、本シリーズ3回目となる「読み解きながら体験する!初心者が身につけておきたい プログラムを読む技術 3 - AIが書いたコード編」が開催されました。前2回では、「プログラムを読む」という行為をどのように実践していくかを学びつつ、実際に「三目並べ」のソースコードを題材にして、注目すべき箇所やコメントづけのポイントなどを共有してきました。
今回の3回目では、より応用的な試みとして 「その場でAI(ChatGPT)にコードを書かせ、それを初見で読み解く」 という取り組みに挑戦。講師を務める岩松洋さんも初めて見るプログラムに、参加者と一緒に取り組むという新鮮なセッションとなりました。ここでは、当日の内容と質疑応答の模様をまとめてお届けします。
はじめに
なぜ「プログラムを読む技術」が大事なのか
岩松さんは、プログラムは「書く」ことだけでなく、「読む」ことが開発現場で非常に大きな割合を占めると強調しました。バグ修正や追加機能の実装などにおいては、まず既存コードを理解しなければ進められないからです。しかし、文法がわかっても、そのプログラムがどういう「設計意図」で書かれたのかを読み取るのは意外と難しいのだといいます。そこで本イベントでは、プログラムを読むポイントや初心者でも取り組みやすい練習方法を学ぶことを目的としました。
これまでの2回との違い
これまでは、あらかじめ用意された「三目並べ」などのプログラムを解説しながら読むスタイルでした。しかし今回は、全員が初めて見るプログラムを、リアルタイムで読み解くという形を取りました。さらに、そのプログラムをAIに生成してもらうことで、開発現場で増えつつある「AIが書いたコードを人間が読む」という状況を追体験する狙いがあったのです。
1. AIにコードを生成してもらう
コード生成のプロセス
岩松さんがChatGPTに「初心者向けのゲームプログラムを、Pythonで100行程度で書いてほしい。ただし解説やヒントは加えないように」と依頼。すると実にコンパクトながらクラス構文を用いたプログラムが返ってきました。誰もが初見で、しかも書き手が人間ではなくAIのため、書き手の意図が推測しづらいという条件のもと、参加者はコードを読み始めました。
まずは「実行」してみる
「プログラムを読む」というと、1行ずつの解析を思い浮かべるかもしれません。しかし、実行可能なコードならば、まず動かして挙動を確認することが大きな助けになります。今回のAIコードは、コンソール上に5×5のマップを表示し、WASD
キーを入力すると自機を移動させるゲームらしいということが、実行によって判明しました。「なるほど、障害物があり、それを避けながらゴールに到達するシンプルゲームだ」と、参加者はすぐに理解できます。このようにコードの大枠を動きから掴むだけで、読み解きへの入り口が大きく広がるというわけです。
2. プログラム全体をどう読むか
手順1:メイン(エントリーポイント)を探す
Pythonでは、明示的にmain()
関数を定義しなくてもプログラムは動きます。そのため、どこが「メイン」か見極めにくいことがあります。しかし、多くの場合は「最下部に直接呼び出される関数」や「メイン相当の処理をまとめた大きな関数」が存在します。そこを最初に探し、 「何を、どの順番でやっているか」 を大づかみに把握すると、プログラム全体の構造が見えやすくなります。
今回のコードでも、クラス内にあるplay()
関数がメイン処理のようでした。そこでは「マップ表示 → キー入力 → 自機を動かす → ゴール判定 → 再表示・再入力」というループが記述されており、ゲームとしての流れが一読で掴めます。
手順2:データ構造の確認
エントリーポイントの見当がついたら、プログラムの各種データ構造を把握します。具体的には、グローバル変数(Pythonならクラス変数やグローバルスコープの定義)を確認して、どんな情報を保持するのか調べると良いでしょう。今回のプログラムではgrid_size
(マップの大きさ)やplayer_pos
(プレイヤーの位置)、goal_pos
(ゴールの位置)、そしておそらく障害物を意味するobstacles
などが見受けられました。変数名を見るだけでも、それがどんな役目なのか想像がつきます。
手順3:大きな設計を意識する
細部を追う前に、ざっくり「このコードは何を意図して書かれたか」を考えるのが、設計を掴む近道です。ゲームであれば「初期化 → ループ → 入力を反映 → 状態更新 → 終了条件で脱出」の流れが多いもの。そういった定番の流れを想定して読めば、一行一行を深掘りしやすくなります。
3. 質疑応答
Q: 「AIに頼ってコードを書いているが、自分で書けるようになるには?」
A: 岩松さんは「まずAIが書いたコードを、目的や設計意図を汲み取りながら読むのが効果的」とアドバイスしました。特に、修正したい機能を自分なりに考え、「この部分を直すにはどうすればいいのか」を追求する行為が、設計力と読む力を同時に鍛える近道になるとのこと。いきなり0から書くのではなく、“AI先輩”が作ったサンプルを読みながら手直しする姿勢がよいといいます。
Q: 「冗長なコードや複雑にまとめられたコードのリーディングは?」
A: いわゆるスパゲッティ状態や凝りすぎたコードは、構造が見えにくいのが難点。ただ、岩松さんは「意識的に難解なコードを生成させ、脳トレのように読み解く練習もアリかもしれません」とコメント。プロジェクトではよく遭遇する“実際にややこしいコード”の疑似体験として、わざと読みづらいプログラムをAIに書かせてみるのも一案です。
全体を踏まえた感想
今回のイベントで印象的だったのは、「プログラムを読む」作業をゲーム的に楽しめる工夫です。AIが書くコードは、一度実行してみるだけで「全体の流れを体験」できるため、設計意図を推測しやすくなります。さらにゲームだと、実行結果が視覚的・即時的にわかるので、初心者にとって理解のモチベーションが高まるのも大きなメリットでしょう。
また、「設計を読む」という意識づけは、あらゆる言語やフレームワークで通用する基本スキルです。AIが生成するコードは整った命名規則で書かれることが多いので、変数名や関数名から狙いが把握しやすい点も役立ちます。逆に、コード量が長く複雑になるときでも、エントリーポイントの把握やデータ構造の整理を先に済ませれば、大まかな動きを把握できるはずです。
初心者に限らず、既存コードのリーディングに苦しむエンジニアは少なくありません。しかし、GPTのような生成AIのサポートを上手に活用すれば、初見のコードを疑似的に触れる機会を何度でも作れます。今回のセッションが示すように、「まず動かして挙動を確かめる」「エントリーポイントの流れを追う」「データ構造を洗う」「読んだうえで機能修正や拡張をやってみる」といった段階的な方法で、読む力をステップアップさせていってはいかがでしょうか。
「プログラムを書く」ことばかりが注目されがちなエンジニアリングの世界で、「読む技術」に焦点を当てた本シリーズは、多くの参加者が「読めるようになりたい」と強く実感する場となりました。次のコードレビューやバグ調査で“読めない”と困る前に、AI生成プログラムを教材として少しずつ読解力を蓄える――そんなスタイルこそ、これからの学習方法として大いに可能性を感じさせる内容でした。
Yardでは、テック領域に特化したスポット相談サービスを提供しています。
興味がある方は、初回の無料スポット相談をお申し込みください。
また、資料請求やお問い合わせもお待ちしております。テック領域の知見を獲得し、事業成長を一緒に実現していきましょう。
Read next
Loading recommendations...