AI時代のプログラミングの教え方
1.コーディングをAIに任せる時代が来た
よく知っている大手IT企業のエンジニアが「最近は、ほぼAIに書かせている」と言っていました。また、今年の春、ソフトバンクの孫氏も「一人ひとりに、1,000個のAIエージェントを作らせている。これからはAIエージェントを使うので人は書かない」という趣旨のことを言われています。さらに、Qiitaにある投稿でも、たくさんの事例を確認できます。もはや「脱コーディング」は常識となりました。
わたしはどうかというと、ここ1、2年、自分が作ったシステムの改修やツールの作成などをしていますが、コードをゼロから手書きしたことは**一度も**ありません。JavaやPythonのコードを書いていますが、IntelliJやVS CodeでAIアシスタントをフル活用しています。Eclipseでも、Copilot4Eclipseプラグインを入れてGitHub Copilotを使います。
そうなんです!
わずか数年で、こんな時代になってしまったのです。
それなのに、講義(Java入門)では手書きが当然のように教えているので、さすがに「これはどうなのか」と疑問に思うようになりました。
では、なぜAIを使わせなかったのかというと、「最初からAIを使うとコードを書けなくなる」と思ったからでした。でも、足元で「コードを書かなくなる」時代に突入しているので、これはなんだか矛盾しています。ちょっとマズイのでは、と思うのです。
2.どうするかではなく、何ができるかを教える
文法を知っていれば、一度くらいは、手書きで試してみてもいいでしょうが、初めての人は、自分で書くとコンパイルエラーになりがちです。わたしは、エラーの説明や修正方法を教えることが必要でしょうか?
いえ、それはAIの仕事です。わたしは、AIに正しく質問する方法を教えるでしょう。ですから、文法を理解したら、若干のコーディング練習の後で、多くはコードをAIに書いてもらって結果を確認するという学習方法がいいと思います。
「それだと規則(文法)を忘れてしまうのでは?」と思いますか。確かに、そうです。ですから、覚えて欲しい度合が高ければ、手書きを通して記憶を定着させなくてはいけません。それでも、より重要なことは、「どうするかよりも、どういうことができるか」を理解して記憶することです。もはや、文法の詳細を覚えるのは最優先事項ではありません。
例えば、「コンソールに計算結果を表示するプログラムの書き方」よりも、「コンソールに計算結果を表示できる」という事実を理解して覚えることが重要です。その事実を確認したい時は、適切に指示すればAIがコードを書き、実行して見せてくれます。
つまり、文法の詳細よりも、何ができるかを理解して記憶していることが重要なのです。そして、それはとても簡単なことです。この原則に従うと、プログラミング学習のコストは、大幅に低減するはずです。
3.プログラミング=手順を考えること
プログラムでどういうことができるか理解させたら、それらを組み合わせて何かの処理を作らせます。例を示します。
**学習した内容**
- 必要なデータをキーボードから入力できる
- データは変数に入れて利用できる
- 変数(データ)と演算子を使っていろいろな演算ができる
- 演算結果をコンソールに表示できる
**作りたい処理**
- キーボードから x に値を代入し、y = 2x³ - 7x² + 3x - 10 を計算して結果を表示する
(注:べき乗を ^ で記述しています)
**処理の手順**

「学習した内容」はすでに学んだ事柄で、「作りたい処理」はプログラムで実現させたい内容です。そして「処理の手順」は、実行する手順を日常のことばで書いたものです。これは言葉による疑似コードで **SPD(Structured Programming Diagram)** といいます。
SPDを読むと、何をしようとしているのか誰でもわかります。処理のアルゴリズムがわかりやすい言葉で、明瞭に書かれています。
SPDはワードでも作成できますが、ノートに手書きすることを勧めています。書いたり消したりしながら、具体的な手順を考えることができるので、アルゴリズム作成の訓練になり、とても効果的です。また、繰り返しや分岐の表現では小さな図形を描いたりするので、ワードよりも手書きの方が書きやすいのです。
4.SPDからプログラムコードを生成する
最後はコーディングと実行です。AIにコードを生成させ、実行して試させます。
具体的には、エディタにコメントでSPDに書いてある項目を指示として書きます。そしてEnterキーを押すとコードが生成されるので、タブを押してコードを承認します。
あとはこの繰り返しでSPD全体をコードに変換させます。
AIが生成したコード:
\# キーボードから変数xに値を入力する
x = float(input("xの値を入力してください: "))
\# y=2x^3-7x^2+3x-10 を計算する
y = 2 \* x\*\*3 - 7 \* x\*\*2 + 3 \* x - 10
\# yをコンソールに表示する
print("yの値は:", y)
Discussion