AI時代、コーディングを学ぶ理由が変わった
このトピックを終えると
AI時代に、コーディングの基礎が依然としてなぜ必要なのか、そしてこの講義をどのような心構えで受けるべきかを理解し、方向性を定めることができます。
過去のコーディング教育
コーディングは、長らくコンピューターサイエンス、ソフトウェアエンジニアリングの専有物でした。
C、Java、Python、JavaScript — 多数の言語が存在し、それぞれの構文を習得し、フレームワークを学び、数千行のコードを自分で書いてデバッグするプロセスを経る必要がありました。独学でこれらすべてを習得することはほぼ不可能でした。大学の学位を取得するために数年から数十年間を費やし、実戦プロジェクトで経験を積み、チームメンバーと協力して一つのサービスを作り上げる必要がありました。
そのため、過去の教育方法は当然、基礎から着実に積み重ねる構造でした。変数とは何かを学び、条件文を学び、繰り返し文を学び、関数を学び、オブジェクトを学ぶ — これらのステップを踏むことで初めて、次の段階に進むことができました。ハーバード大学のCS50は、最初の週から2進法とC言語のポインターを教え、国内の代表的な講義である「生活コーディング」は、HTMLから始めて12週かけてウェブサーバーを作成するプロセスを案内します。この方法は確かに体系的ですが、前提がありました。それは、結局、自分自身ですべてのコードを自分で書く必要があるということです。
AIが変えたこと
しかし、AIが登場しました。
2022年末にOpenAIのChatGPTが公開され、2023年にGitHub Copilotが本格的に普及し、コーディングの風景は完全に変わりました。AIは今や、人間を凌駕するレベルでコードを作成します。構文を覚える必要はなく、意図を説明すればコードが生成され、エラーを貼り付けると原因を分析し、「このコードをより高速に作成して」と言えば、最適化まで行います。
TeslaのAI部門の責任者であり、OpenAIの共同創業者であるAndrej Karpathyは、次のように言いました。
「最もホットな新しいプログラミング言語は、英語です。」 — Andrej Karpathy、2023年1月 X(旧Twitter)
私たちは今、世界最高レベルのプログラマーをそばに置いて働く時代に生きています。
この変化は、「コーディングを学ぶ必要がない」という意味ではありません。むしろ、その逆です。学ぶべきものの種類が変わったという意味です。
では、なぜ基礎が必要なのか
非常に簡単なコードであれば問題ありません。AIに「ログインページを作成して」と言えば作成してくれます。
しかし、コードが数千行、数十万行に増えると話は変わります。ファイルが数百個になり、データベーステーブルが絡み合い、サーバーとフロントエンドが複雑に接続し始めると — AIも、人も一人では対応できなくなります。
この時、リファクタリングが何かを知らず、コードの構造を理解せず、正規化や最適化という概念を知らないとしたら、どうなるでしょうか?
AIに指示を出すことができません。
「このコードを修正して」と言うことはできますが、「このコンポーネントを分離して再利用可能なようにリファクタリングして」と言うには、リファクタリングが何かを知っている必要があります。「DBが遅い」と言うことはできますが、「このテーブルのN+1クエリ問題をJOINで解決して」と言うには、JOINが何か、N+1が何かを知っている必要があります。
AI時代には、人間はコードのすべての詳細を覚える必要はありません。AIが概念の説明からコードの作成、基本的な構造の設計、最適化まで行うことができます。しかし、用語を知らず、コンピューターサイエンスの基礎を理解していなければ、些細なデバッグもできず、AIが目指す方向が正しいかどうかさえ判断できません。
実際に起こっていること
これは理論的な話ではありません。現在、現場で起こっていることです。
AIコードを検証できず、法廷に訴えられた弁護士
2023年6月、ニューヨーク南部地区裁判所では、弁護士のSteven Schwartzが制裁を受けました(Mata v. Avianca, Inc.事件)。ChatGPTに法的調査を依頼した後、AIが作成した存在しない判例6件を裁判所にそのまま提出したのです。Kevin Castel判事は、「ツールを使用することは自由だが、その結果を検証する責任はユーザーにある」と判決しました。
コーディングでも同じことが起こります。AIが作成したコードが「動作する」ように見えても、それが正しいロジックであるか、エッジケースを処理しているか、セキュリティに問題がないかを判断するには、基礎を知っている人が必要です。
GitClearレポート — AIコードの隠れたコスト
2024年1月、ソフトウェア分析会社GitClearは、1億5千万行のコードを分析したレポートを発表しました。AIコーディングツール(Copilotなど)の導入後、**コードの変更率(code churn)が39%増加しました。**急速に作成されたものの、すぐに削除または再作成されるコードが急激に増加したのです。
その理由は明確です。AIが作成したコードを、コードの構造を理解している人がレビューしないと、急速に作成して急速に破棄するという悪循環が繰り返されます。リファクタリング、モジュール化、関心事の分離などの概念を理解しているリーダーがいなければ、AIが作成したコードは長持ちしません。
専門外の研究者のデータパイプライン
これは特定の事件ではなく、現在、世界中の研究室で毎日起こっていることです。Pythonをほとんど知らない研究者が、AIの助けを借りてデータ分析コードを作成します。1,000件のテストデータではうまく動作します。しかし、実際の100万件のデータを投入すると、サーバーが停止します。
その原因はほとんど同じです。AIが作成した二重forループ、つまりO(N²)の時間計算量のコードです。時間計算量を知っている人であれば、コードを見ただけで「これはデータが増えると破綻する」と判断し、AIにハッシュマップベースのO(N)の解法に置き換えるように指示できたはずです。
私たちが言葉を学ぶように
私たちは、母語を学ぶときに、両親や周囲の人々から聞いて真似ることで、自然に言葉を学びます。それだけで、日常的な会話は十分に可能です。
しかし、ある時点でABCDを学び、文章を書き、文法と文の構造を学びます。このプロセスがなければ、契約書を読むことも、レポートを書くことも、複雑な論理を正確に伝えることもできません。
コーディングも同様です。AIと対話し、簡単なものをすぐに作成することができます。しかし、変数とは何か、関数とは何か、データベースがどのように機能するか — この基礎がなければ、複雑な問題に直面したときに、AIに適切な指示を出すことはできません。
したがって、学習方法も変わりました
過去には、基礎から一つずつ学び、コードを自分で書いて、実行し、失敗し、再び修正するプロセスを数年にわたって繰り返す必要がありました。
現在は違います。
基礎を学び、すぐにそれぞれのドメインの知識に基づいて、コーディングの広大な海にAIと一緒に旅立つことができます。
生物学者であれば、遺伝子データ分析で、化学者であれば、分子シミュレーションで、経営者であれば、売上ダッシュボードで、デザイナーであれば、インタラクティブなポートフォリオで — 自分の専門分野でコーディングをすぐに適用することができます。基礎が確立された人は、問題が発生した場合に、それが何であるかを自分で予測することができ、AIが再帰的にレビューしても、自分自身では見つけることができない構造的な問題を人間が方向性を示すことができます。
コーディングの技術的な実装は、AIが行います。しかし、ドメイン知識に基づいた意図、方向性、企画 — これらは人間だけができることであり、このような指示を適切に出せば、AIはそれを十分に実現できます。
この講義の目的
率直に言います。
この講義をすべて受講しても、自分でコードを書いて、ホームページを最初から最後まで作成することは難しいかもしれません。過去であれば、それは失敗を意味していましたが、現在はそうではありません。
この基礎を築き、AIと一緒に進んでいけば、十分に可能です。
忘れても構いません。覚えていなくても構いません。途中で止まって、AIと色々なものを作ってみて、わからないことが出てきたら、戻ってきても構いません。
ただし、AIが言っていることを理解していなければなりません。 AIが「この部分を非同期で処理します」と言ったときに、非同期が何かを知らずに「はい」と答えてしまうと、後で問題が発生したときに、どこから間違っているのかを見つけることができません。
AIが言っていることを理解し、リーダーとして方向性を示すことができること。 それこそが、この教育の目的です。