AIにコードを書かせれば十分?それで本当に仕事になりますか?
投稿日: 2025年10月04日
この記事は「 AIがコードを書く時代だからこそ、プログラミングを学ぶべき理由 」のアップデートバージョンです。
Claude Code、Codex、Gemini CLI・・・。特に、この半年間、コーディングエージェントを使ったAI駆動開発が凄まじい進化を見せています。このなかで、素朴で純粋な疑問として、そして、プログラミング学習者にとっては大いなる不安💦として「日本語(自然言語)で指示すれば、AIがプログラムを書いてくれるのに、プログラミングを学ぶ意味はあるの?プログラミング言語を覚えて、コードを書いたり、読んだりするスキルって、これからの時代に必要なの?」というものがあるのではないかと思います。
これに対して、自分は「仕事としてソフトウェア開発に従事するならば」という条件付きですが「少なくともジュニアレベル~ミドルレベルのプログラミングスキルは、AI駆動開発を前提としても必要でしょ?」と考えています。
なぜ、そう考えるのか。
だって、人間には、AIの回答の善し悪しを評価したり、AIが出した複数案から良いものを選んだり、パッチワークしてより良いものに仕上げることが求められるわけで、そのプロセスでプログラミングのスキルや経験が必要になるのだから・・・というのが自分なりの理由です。
「それってどういうこと?」と感じる方もいると思うので、ShiftB の受講生に多いと思われる子育て世代に身近な例を使って、丁寧に説明してみたいと思います。ちょいと長めになりますが、お付き合いいただければと思います🙇♂️
いま生成AIに、次のような指示(プロンプト)を投げたとします。
小学1年生の男の子の母です。最近、息子が公園で鳩に石を投げるようになってしまいました。注意はしているのですが効果がなく、次に同じことをしたら、強く叱って、なぜ良くないのかしっかり伝えなければと考えています。具体的な案を3つ考えてみてください。
実際にAIに指示を与えると、ほんの数秒で回答を生成してくれます。いま、AIは、次の3つの案を作成してくれました。
(案1) 石を鳩に投げたら、鳩はすごく痛いんだよ。もし誰かが君に石を投げたらどう? 痛くて、怖くて、泣いちゃうでしょ? 鳩も同じ気持ちなんだよ。動物だって命があるから、いじめていい理由なんてないんだ。君は優しい子だから、そういうことはしちゃいけない。次からは、石を投げるんじゃなくて、静かに見てあげよう。
(案2) 鳩に石を投げるのは、絶対にやってはいけないことだよ。動物を傷つけるのは『いじめ』なんだ。学校でも、人をたたいたりしたらダメって教わるでしょ? 動物だって同じなんだ。もしケガをさせたら、君が責任をとらないといけなくなるし、大人になっても困ることになる。だから今ここで絶対にやめるって約束して。
(案3) 君がやったことは悪いことだよ。鳩は命を持っている大切な存在で、石をぶつけられたら傷ついてしまう。人間は強いから、弱い生き物をいじめようと思えばできちゃうんだ。でも、本当に強い人は、いじめたりせずに守ることができる人なんだよ。お母さんは君に強くて優しい人になってほしい。だからもう二度と鳩に石を投げないでほしい。
さて、質問です。これらの3案のなかに、手直しせずに、そのまま使えるような案 はあったでしょうか?
・・・なかったと思います。実際問題として、AIが完璧な提案を出してくれることはほとんどなく、たいていは手直しが必要になります。また、より良いものにするために、複数の案の良いところを組み合わせて再構築するといった工夫も求められます。
つづいて質問です。手直しが必要な前提で、たたき台として最も使えそうなのはどの案だったでしょうか?
これは皆さんそれぞれで答えが違ってくると思いますが、案を比較して「これが良さそう」といったものを選ぶことができたと思います。
このように案を評価・選定できるのは、皆さんがAIの生成した回答(文章)を読んで理解することができるから、そして、皆さんが親として自分の子を育ててきたことの経験・知見を持っているからに他なりません。
裏を返せば、AI回答を読んで理解できなかったり、子育ての経験がなければ評価や選定などはできないということです。これは、次のような例で体験することができます。
タイ在住の一児の母です。最近、息子の友人(6歳・タイ人の男の子)が公園で鳩に石を投げるようになってしまいました。同じことをしているのを見かけたら、強く叱り、なぜ良くないのかしっかり伝えなければと考えています。どのようにタイ語で声かけすればよいのか、具体的な案を3つ考えてみてください。
AIが作成してくれた回答は以下の通りです。
(案1) หนูห้ามทำแบบนี้นะ มันอันตรายแล้วก็นกเจ็บมากเลย เวลาโดนหิน นกเขาก็เหมือนเรา เวลาเราเจ็บ เขาก็เจ็บเหมือนกัน หนูอยากให้คนอื่นทำให้เราบาดเจ็บไหม? ไม่อยากใช่ไหม เพราะฉะนั้น เราต้องใจดีต่อสัตว์ ถ้าอยากเล่น เราไปเล่นอย่างอื่นดีกว่า เช่น วิ่งเล่นหรือเล่นบอล
(案2) หนูรู้ไหมว่านกก็มีชีวิตเหมือนเรา เวลานกเจ็บ เขาก็ร้องไห้ในใจ เหมือนเวลาเราล้มแล้วเจ็บ หนูอยากให้เพื่อนๆ ทำแบบนั้นกับหนูไหม? ถ้าไม่อยาก ก็อย่าทำกับนกเลยนะ สัตว์ทุกตัวควรได้อยู่กับเราด้วยความปลอดภัย ถ้าหนูอยากสนุก เรามาหาอย่างอื่นเล่นกันนะ
(案3) เด็กดีไม่ทำร้ายนกนะ ถ้าเราทำแบบนี้ คนอื่นก็จะกลัวเรา แล้วสัตว์ก็ตายได้เลย การโยนหินใส่นกไม่ใช่การเล่น แต่เป็นการทำร้าย ถ้าอยากเป็นคนเก่งและใจดี ต้องหยุดเดี๋ยวนี้เลย แล้วคิดว่าต่อไปจะดูแลสัตว์ยังไงได้บ้าง เข้าใจไหม
お分かりいただけたように、タイ語のスキルがなければ、これらの回答は謎の呪文でしかありません。
さきほど確認したように、AIが完璧な提案を出してくれることはほとんどなく、手直しは必須です。ただ、タイ語の回答では手直しは当然ながら案を選ぶことすら不可能です。仮に日本語に翻訳したとしても「タイ文化の理解」や「タイ人の子どもと接した経験」がなければ、どの案がよいものなのかの判断はできないのです。
そして、まさに、この状態がプログラミングのスキルや経験を持たない人が、AI駆動開発をやったときの状態になってくるのだと思います。
結局のところ、AI駆動開発を前提にしても少なくともジュニアレベル〜ミドルレベルのプログラミングスキルは最低限必要になってくるんじゃないのかな・・・と考えています。
でも、こんなふうに結論づけると、次のように思われる方もいると思います。
AIに作成させたプログラムが理解できなくても、実際に動かしてみれば、評価や不具合の確認は十分にできるんじゃない?
実は、この主張は半分正しく、プログラムの場合、実際に動作させて評価やテストすることは有効な手段です。いわゆる「ブラックボックステスト」とよばれるもので、実際のソフトウェア開発でも使われています。
ただし、表面的な振る舞いからは発見が難しい問題やバグがあるため、ブラックボックステストだけ十分な品質保証ができないというのが実際のところです。ブラックボックステストだけで品質保証するというのは、調理で例えると「材料(入力)」と「完成した料理(出力)」だけを見て、調理工程の適切さも含めて評価・検査して品質保証するようなもので、現実的ではないのです。
たとえば、完成した料理を見て「まさか生肉を切った包丁で、そのままサラダ用のタマネギを切っていないよね?」「まさか生肉を洗剤で洗ってないよね?」なんてことを評価・確認することは不可能ですよね?
そして、より根本的な問題は、調理の知識・経験が無ければ、そもそも何が危険で、何が不適切なのかに気づくことさえできないということです。知識がなければ、どこを見れば良いのか、その判断基準自体を持つことができないのです。よって「実際に動かしてみれば、評価や不具合の確認は十分にできるんじゃない?」すら、実際にはそううまくはいかないのです。
・・・ということで、AI駆動開発の時代が到来したものの、最低限のプログラミングスキルをもっていなければ、ソフトウェアエンジニアとして仕事にならないんじゃない?というお話でした。