AIでプログラミングスキルはどうなる? (その1)


IT分野のスキルといえばプログラミングです。2020年代に入ると日本の学校教育でもプログラミングが取り入れられ、大学入学共通テストでも「情報」の科目でプログラミング問題が出題されるようになりました。ただ一方で、この2~3年間でのAI技術の急激な進歩によって、プログラミングスキルの価値が無くなったのではないかという意見もあります。

今回は、その点について少し考えてみたいと思います。

そもそもプログラミングとは?

「プログラミング」と聞いて連想されるのは、いわゆる「プログラミング言語を使ってプログラムを書く」ことです。これはもちろん正しい意味です。

典型的なプログラム例

ただし、プログラミングという手段で何をするかと言えば、ソフトウエアを作ること、さらに言えば情報システムを作ることが目的になります。

プログラムよりも、ソフトウエアやシステムの方が大きな概念です。ここでは簡単に、ソフトウエアはプログラムの集合体、情報システムはソフトウエアの集合体と考えてみます。情報システムにはさまざまな機能が含まれており、それが個々のソフトウエア、さらにプログラムによって実現されていることになります。プログラムは、情報システムを構成するパーツという位置付けになります。

そのとき、プログラムはどのように作ればよいでしょうか。パーツはあくまでもシステムの一部を構成するものですから、全体像が決まらなければパーツの役割も決まりません。プログラムを書く前に、システム全体の「設計」を行う必要があります。このような設計やプログラミングをどのように行うか「開発プロセス」も考える必要があります。そして何より、「何のためにシステムを作るか」、つまり「解決したい問題」が何であり、そのためにどのようなシステムが必要か、それが本当に問題の解決につながるかを考える必要があります。これはかなり大きな問題ということができます。

まとめてみると、プログラミングとは「狭い意味ではプログラムを書くこと」であり、「広い意味ではシステム全体を考えること」、さらに広く言えば「問題を解決すること」です。

AIでプログラミングを行う方法

さて、AIについて考えてみましょう。
ここ数年で急激に進歩したAI技術は、もちろんプログラミング分野にも取り入れられています。プログラミング用AIにもさまざまな種類があるのですが、人間が使うときの方法で簡単に分類すると次のようになります。

  • チャット型: ChatGPTのようなチャット型生成AIにプログラム作成を指示する。生成内容は人間が保存して実行する。簡単なプログラムをゼロから作るときに適している。
  • 補完型: 人間がプログラムを書いているときに、AIがその先の作成内容を提案する。AIに人間の補助をさせるような使い方。開発環境に組み込んで使うことが一般的。
  • CLI型: コマンド入力方式を使ってAIに指示することで、プログラムの分析や作成を行わさせる。担当者に細かく指示するような使い方。
  • エージェント型: プログラム作成からテスト、インストールなどまでAIが思考して実行できる仕組み。プログラム作成に関連するさまざまな作業も含めて担当者に任せるような使い方。

使い方での分類ですが、結果的にどこまでAIに任せるかの違いが出てきます。お任せしたら人間が細かい作業はしなくて済むので、使い方と直結するわけです。いずれの方法も、2024年から2025年にかけて急激に進歩し、高度で、意図した通りのプログラムを作成することが可能になっています。

プログラミング以外に出来ること

CLI型やエージェント型のAIは、プログラミングの後の作業も行うことが出来ます。作成したプログラムをGitHubのようなシステムにアップロードする「コミット」や、クラウド環境などにアップロードして実行可能にする「デプロイ」も可能です。これらをすべてAIに実行させれば、プログラムの記述からシステム構築までを全自動的に行えるようになります。

最後の「問題解決」はどうでしょうか?AIに質問すると、インターネット上の情報検索も駆使して、いろいろな解決策を示してくれます。非常に便利で助かりますが、「解決した」と判断できるのは問題を問題と認識している人間です。AIは補助なら出来るといえます。

AIは大きな仕事が苦手

ただ、すべてを自動にすると問題が起きます。AIは常に正しい結果を出す訳ではありません。現在のAIアルゴリズムは学習データを元に最も正解率が高いであろう答えを出してきますが、正解率は100%ではありません。正解率が100%ではない解決手段を、何段もつなげたらどうなるでしょうか?最終的な正解率はさらに低くなってしまいます。つまり今のAIは、「大きな仕事」「長い仕事」を担当させると間違いやすくなるのです。対策として、仕事を適切な大きさに分解し、途中結果を確認することが重要になります。人間が仕事をするときと同じですね(分割統治法)。


ところで、プログラミングAIが間違えると何が起きるでしょうか。プログラム作成や補完では、間違ったプログラムが作成されます。本当に間違ったプログラムは実行も出来ませんから、まだダメージは少ないです。しかしエージェント型AIであれば、秘密データをサーバにアップロードして公開してしまったり、サーバ内の重要なデータやプログラムを消してしまうことがあり得ます。これではAIに任せきりというわけにはいきません。AIが間違っても大きな問題につながらないような安全策を、人間が考えて、用意しておく必要もあるでしょう。

プログラミングはどうなる?

まとめてみましょう。現時点でも、AIはかなりのことを行えますが、「大きな仕事が苦手」です。そしてプログラミングにも、狭い意味のプログラミングから、広い意味でのプログラミングまで幅があります。広い意味のプログラミングとは、大きな問題を解決することです。AIは狭い意味のプログラミングは相当正確に行えますが、広い意味でのプログラミングは苦手です。
そう考えてみると、AI時代の人間の役目は、大きな問題を考えること、大きな問題を小さく分割してAIに行えるようにすること、と言うことができます。
これはプログラミングの考え方そのものです。
AI時代になっても、プログラミングの本質は変わらないのです。

狭い意味のプログラミングはもう不要?

前段で、AIは「狭い意味のプログラミングは相当正確に行える」と説明しました。では、プログラムを書くスキルはにはもう価値は無いのでしょうか?

この点については、次のような理由から、引き続き「狭い意味のプログラミングスキルを習得する」ことに価値があると言えます。

  • AIの正確性は100%ではないので、間違いはあり得る。間違えた点を発見し修正するスキルは必要。
  • AIが間違えたとき、それが「問題がまだ大きすぎた」のであればさらに分割する必要があるが、それを判断するためにはAIが作成したプログラムを理解する必要がある。AIは「出来ませんでした」と言わないので、人間が中身を確認しなければいけない。
  • AIは「機能でないもの」つまり「非機能要件」を正確に認識することが出来ない(それは必要な情報を伝えない・認識していない人間の責任でもありますが)。そのため性能やセキュリティ面、さらにその両者のバランスをどうするかを判断できない。人間が判断し、プログラムを修正するよう指示する必要があります。

「狭い意味のプログラミングスキル」には引き続き価値はありますが、AI時代ではそのスキルを発揮するのは「書く」際よりも「読む・理解する」際の方が多くなります。そして「理解」するためにはその背景、コンピュータや情報システムの技術や理論を理解していることが必要です。

まとめ

プログラミングを学ぶことは引き続き重要です。ただしプログラムを「読む・理解する」機会の方が多くなり、IT分野の理論・技術を理解しておくことの重要性が高くなります。また、「広い意味でのプログラミング」を行うためには、解決すべき問題を理解し分解していく訓練も重要です。

2026年2月6日公開


Other news

ページ右上の ボタンを押すとメニューが表示されます

×を押すと閉じます

日本語学校に通う留学生の方へ
留学生のための
コースがあります