Day 4・関数・モジュール(再利用と部品化)
設計は人・実装はAI(AIに任せる部分と自分が持つ判断)
何を作るかは人が決め、どう書くかはAIに任せる。その線引きと確認方法を身につける。
「何を作るか」と「どう書くか」を分ける
AIはコードを書くのが得意です。しかし「何を作るべきか」「どういう条件を満たせば正しいのか」を決めるのは、状況を理解している人の仕事です。この2つを分けて考えるのが、AI時代のプログラミングの基本姿勢です。設計は人、実装はAI、と覚えてください。
- 設計(人が持つ): 何を作るか、どんな入力に対し何を返すか、どこまで正しければ良いか
- 実装(AIに任せられる): 決めた仕様どおりに動くコードを書くこと、細かい書き方や言語仕様
- 確認(人が持つ): 出てきたコードが仕様を満たしているか、読んで判断すること
なぜ設計を手放してはいけないのか
AIは指示されたことは上手にこなしますが、あなたの目的や制約を勝手には知りません。曖昧な指示には、それらしいが的外れなコードで応じることがあります。何を正解とするかを人が握っていないと、動くのに間違っている、を見抜けなくなります。
良い指示は「関数の仕様」で渡す
ここまで学んだ関数の考え方が、そのままAIへの指示の形になります。関数名・引数・戻り値・満たすべき条件を明確に伝えると、AIは狙いどおりのコードを出しやすくなります。
曖昧な指示
「税込み計算するコードを書いて」
仕様として渡す指示
「関数 with_tax(price, rate=0.1) を作って。price は整数、rate は税率。price に税を足した金額を小数で返す。price が0なら0を返す」
# AIが仕様どおり書いたコードを、人が読んで確認する
def with_tax(price, rate=0.1):
return price + price * rate
# 自分で決めた期待値で検算する
print(with_tax(1000)) # 1100.0 を期待
print(with_tax(0)) # 0.0 を期待
print(with_tax(1000, 0)) # 1000.0 を期待動いた=正しい、ではない
エラー無く動くことと、仕様を満たすことは別です。AIのコードがそれっぽく動いても、境界値(0や空、想定外の値)で意図と違うことはよくあります。自分が決めた期待値でチェックするまで、正しいと判断してはいけません。
読める・直せる・説明できる
実装をAIに任せるほど、人に残る力は「読める・直せる・説明できる」の3つになります。コードを読んで意図を追え、間違いを見つけて直せ、なぜそうなっているかを言葉で説明できる。これがあれば、AIを道具として安全に使いこなせます。
- 読める: 変数名・関数名・処理の流れを追い、何をしているか説明できる
- 直せる: 期待と違う箇所を特定し、修正できる(またはAIに的確な修正指示を出せる)
- 説明できる: なぜこの設計・この値なのかを、根拠を持って言える
AIにはこう聞く
「このコードが何をしているか1行ずつ説明して」「この関数が想定外の入力(空・0・マイナス)で何を返すか教えて」と聞くと、読む力・確認する力を補えます。ただし最終的に仕様を満たすかの判断は人が下します。AIの説明も一つの意見として、自分で裏を取る姿勢を持ちましょう。
読んでも腑に落ちない所は、AIに噛み砕いてもらいましょう。
理解度チェック
答えられれば、面接で説明できる状態に一歩近づきます。
「設計は人・実装はAI」という考え方で、人が最後まで手放すべきでないものはどれ?
AIが書いたコードがエラー無く動きました。この時点で言えることはどれ?
AIに実装を任せる時代に、人が持ち続けるべき力を「読める・直せる・説明できる」の観点から説明してください。
記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。