AIの登場でプログラミングはエンターテイメントになるのか(笑)
はじめまして。
私は、「テック大家さん」というブログを運営している。
テック本を出版すべく準備をしているのだが、オンラインで本を書くのにZennが良さそうだと思い早速アカウントを作成、この記事を書いている。
まったくのZenn初心者である。よろしくどうぞ。
本日は、Zennの記事一本目ということで、練習も兼ねて何か執筆してみることにする。
まずは、自己紹介
まずは、少し筆者自身について少し述べよう。
仕事でプログラミングを始めたのはWindows 95という歴史に残るOSが登場した1995年。C言語やC++で、Win32やMFC、COMといった今となってはレガシーの技術が最先端だった頃だ。これらの技術は、Windows固有でネイティブアプリを構築するためのモノである。当時は今のように、どのプラットフォームでも動くアプリを簡単に作れる時代ではなかったのだ。
就職したのは大企業。仕事では年を重ねるにつれ、リーダーやら、オフショア管理やらとソフト開発プロジェクトをマネジメントする立場の仕事になっていくのは仕方がないのか。
しかし、私はプログラミングが大好きだ。
自分の思うようにコードを書き、それが実際に動作するときの達成感やワクワク感がたまらない。
Windows全盛の頃は、仕事で培ったスキルを利用して、週末にシェアウェア(死語?!)をリリースしたりしてたこともある。現代のスマホなら当たりにできることだが、1990年代後半に携帯電話(!)で文字が打てるようになった頃は、これで通勤中にプログラムが書けるようにならないか本気で考えたこともあった。
一方、歴史の歯車を現代まで回すと、今は私が指摘するまでもなく生成AIの全盛期。
AIにちゃんと要件を言い伝えると、あっと間にコーディングしてくれる様は、私のように、検索エンジンが登場する前からプログラミングしているような古い人間からすると、便利すぎて涙が出るほど感動する。今までやってたことは何だったんだ、と笑ってしまうほどだ。
古くからプログラミングをたしなんでいた筆者が、そんな現代をプログラミングをどのように考えているのか少し話してみよう。
産業革命とAI時代との対比
流行りの生成AIを使ってみて、あまりの時代の変化に産業革命と対比したくなる。
18世紀中頃から19世記にかけての産業革命では、それまで手作業でやられていた織物工房が機械化されていく。それまで職人の手で紡いでいた製品が、機械による製造に置き換えられ、人間の作業は機械の見張りなどに単純化されていったわけだ。
今、生成AIのプログラミング技能を見たとき、これと同じことがソフトウェア開発に起こっていると感じる。
もちろん、これまでも産業としてのソフトウェア開発は進歩してきた。さまざまなテクニックや理論により、製品開発の効率化が図られてきたのだ。オブジェクト指向による再利用性の向上とか、アジャイル開発などといった開発手法は、ソフトウェア産業の規模の拡大と効率化に大きな恩恵をもらたした。
しかし、生成AIが今やっているとことは、次元が違う。
一番の特徴が、自然言語によるコーディングだ。言い換えると、要件を伝えて、ソースコードを得るという手法である。
これは、これまでの日本の産業ソフトウェア開発で行われてきた、外注や海外の委託先に要件を投げる方法そのものだ。今AIに与えている、いわゆる「プロンプト」は、委託先に開発依頼する要件をまとめた資料に書かれていたことだ。長年そんな開発をやっていた私からすると、依頼する相手が、人間からAIに変わっただけのことに見えるのだ。しかもAIの場合、要件を入れてからコードが完成するまでの時間が桁違いに早いときている。
これは、すごいことだ。
産業革命で織物職人が機械に置き換わった事象が、現代のソフトウェア開発の現場で起きている。そういうことなのだ。
職業プログラマーは消失するのか
こうなってくると、将来、職業としてのプログラマーという仕事はなくなるのではなかろうか。
こんなコトをいうと、AIだとフレームワークなどの独創性の必要なプログラムは生成できないとか、創造性やイノベーションが必要な分野はAIには無理だろうという意見もあろう。
しかしそれは時間の問題だ。
この世の中、ソフトウェアが必要なのは、何かしらの課題があるからである。課題があるからこそ、その課題を解決するためのソフトウェアが必要になっているのだ。
今は、その課題解決のためのHowを人間が考えてプロンプトにしているわけだが、将来的にはAIが課題自体を解決するソフトウェアを書いてくれるに違いない。
例えば、やらなくてはいけない仕事を忘れないようにしたい、という課題があったとしよう。今なら差し当たり人間がToDoアプリの仕様を考えて、その仕様を満たすようなソフトをAIに作らせることになる。一方、AIがさらに進化した未来には、仕事を忘れないようにしたい、という課題自体をプロンプトとしてAIに与えると便利なツール(アプリ)を構築してくれるであろう。それも、人間が考えたToDoアプリの仕様とは異なるドラスティックな方法で課題を解決してくれる可能性するあるのだ。
となると、少なくとも、一般的な仕事として人間がプログラムを書くことは将来的にはなくなるだろう。そう考えてしまうのである。
ただし、産業革命によって機械化が起こったとしても少数の織物職人が芸術的な、あるいは、繊細な作業をするために生き残ったように、ある種のプログラマーは生き残るだろう。芸術的な仕組みを考えたり、効率を重視するAIなら考えないような、繊細で特徴を持ったプログラムを書くプログラマーだ。
その時のプログラマーは、今で言うところのアーティストとして扱われるような存在かも知れない。
エンターテインメントとしてのプログラミング
さて、現在の私は相変わらず、コードを書くことが好きだからコードを書いている。
何を作るでもなく、気になったツールを学び、気になったフレームワークを学び、新しい技術をつかって何かを「手作り」する。
何か目標があるわけでもなく、経済的な活動にするわけでもなく、心の赴くままに楽しみでプログラムを書きコンピューター(死語?)を動かすわけだ。
時にはAIに書かせることもあるが、そういうのは大抵の場合、自分で書いたとしても楽しめいない類のつまんないコードだ。時間だけかかって無駄に感じるからAIにやらせるのだ。
つまり、このような行為は、Netflixで動画見たり、家庭菜園で野菜作ったり、ガレージでバイクいじりしたりするのと一緒。まあ、一言でいってみるとエンターテインメントなのだ。
先ほど、将来のプログラマーはアーティストかも知れないと述べたが、私は別の要素もあるのではと考えている。それが、エンターテインメントとしてのプログラミングだ。
単純に、「プログラムを書くという作業」は楽しい。実際には、全ての人がこの作業を楽しいと思うわけではないだろう。それはどんなエンターテインメントも一緒だ。楽しいと思えることは人それぞれだ。
実際、プログラムを書く行為にはエンターテインメントしての要素がかなりあると考えている。
試しにお気に入りの「クロードさん」とそのことに関して議論してみた。クロードさんとは生成AIのClaude3.5のことである。親しみを込めて私は彼を普段からクロードさんと呼んでいる(笑)。
私: 「プログラミングってエンターテインメントになると思わない?」
彼の答えはこうだ。
なるほど、面白い視点ですね。確かに、プログラミングをエンタテインメントの一形態と捉えることができます。以下のような観点から、プログラミングはエンタテインメントの要素を多分に含んでいると言えるでしょう:
- 創造性の発揮: 新しいものを作り出す喜びがあります。
- 問題解決の楽しさ: パズルを解くような知的な刺激が得られます。
- 達成感: プログラムが動いた時の喜びは大きな満足感をもたらします。
- 学習と成長: 新しい技術やアプローチを学ぶ過程が刺激的です。
- コミュニティとの交流: オープンソースプロジェクトなどを通じて他の開発者と繋がれま> す。
- 没入感: 「フロー状態」に入り、時間を忘れて没頭できることがあります。
- 即時フィードバック: コードを書いてすぐに結果が見られる点は、ゲーム的な面白さがあ> ります。
プログラミングを純粋に楽しむ「趣味プログラミング」という概念もありますね。これは完全にエンタテインメントとしてのプログラミングと言えるでしょう。
だよね〜(笑)
生成AI導くプログラミングの将来
将来、プログラミングという作業は、エンターテインメントとしてやるような行為になるはず。
映画を見たり、音楽を聴いたり、絵を描いたりするのと本質的に変わりらないものになるのではないか。
AIが多くの実用的なプログラミングを担うようになる一方で、人間にとってのプログラミングはますますこの「楽しみ」としての性質を強めていくだろう。プログラミングが、自己実現の場、あるいは単純に時間を忘れて没頭できる趣味として認識されるようになるかも知れない。
効率や生産性を超えた、人間の創造性と好奇心の純粋な表現としてのプログラミングだ。
私は最近そのように思えてならないのだ。
Discussion