ChatGPTに対してプログラマーができること

ーー最近の話でいうと、ChatGPTのような生成AIが出てきて、なんか「エンジニアの仕事も取られるんじゃないの?」とか、エンジニアもプログラミングをやっていて、ChatGPTももちろんプログラミングをするというのはあるとは思うんですけど、そういう意見も一部はあるのかなとは思うんですけど、そこというのは、あまり心配しなくてもいい話なんですかね?

昔は「AIによってプログラマーの仕事がなくなるんじゃないか」という質問が出た時に、「私が社会人になった時から『プログラマーの仕事はもう少ししたらなくなるよ』と言われていたけど、30年経ってもなくなっていません」と言い切っていたんですね。

ーーはい(笑)。

及川卓也氏(以下、及川):でも2022年ぐらいから、やはりLarge Language Model。大規模言語モデルにおける生成AIのその進化スピードを見ていたら、プログラマーの仕事が全部とは言わないですけど、今のプログラマーがなくなっていくとは私も思います。これはやはりこういった話がある中で、講演とかに呼ばれて話す時にも言うんですけど、今までのプログラミングの進化を考えてみたらもうすでに起こっていることなんですね。

大昔って、いわゆる高級言語と言われている今のプログラミング言語がなかった時代があり、あっても極めて原始的な時代だったというのは最初はCPUに対してそれこそバイナリで2進数とか16進数とかで、機械語で命令を下していたんです。それでよくわからない02とか0Aという言葉が、これがレジスタのどこの値をどこに持ってくるみたいなものに結局はなっているんです。

だけどとても人間がそれを理解できないからということで、アセンブリが生まれて、それでもわかりにくいわけですよ。なのでそこで高級言語が生まれて、いわゆるFORTRANとか、COBOLとか、Cとか、C++とか、そこがどんどん発展していったわけですけど、そこに至ると。そう考えると、昔は機械語でプログラミングをしていた仕事ってもちろん今でもあります。ただ、そこでの最適化が必要なものって当然あるわけですが、極めて少なくなって機械語エンジニアという仕事が技術の進化によって奪われちゃったわけです。

さらにいうと、今のプログラミング言語で書いてある仕事も、一部はノーコードによってもうすでに奪われているわけです。そう考えるとプログラマーの仕事ってずっと技術の進化によって奪われ続けていたわけです。今回も、いわゆるプログラミング言語でプログラムを書くというところの仕事が、生成AIによって奪われるということは確実に起きるとは思います。

これが果たして、エンジニアに対してどういう意味合いを持つかというと、例えば機械語でプログラミングをしていた人たちに「アセンブリが出ました」。アセンブリを書いていた人に「C言語が出ました」。でもC言語というのは極めてローレベルな言語でありアセンブリに毛が生えたようなところもあるわけですよね。

それからC++になり、さらにもっと高級な上のほうの言語になっていって、自然言語に近いかたちでプログラミングができるようになったという状態の時に、「いや、俺はC言語がよかったからオブジェクト指向なんか絶対にイヤだよ」と言っている人はいます。でもそれは、私もオブジェクト指向が苦手だったんですけれども、理解しにくい人たちだったわけであり、本来ならばどんどん楽になることに関してはエンジニアは喜んでいたわけなんですね。

今回も考え方によっては、生成AIを使うことによって自分の仕事が楽になると考えたとしても、絶対に人間じゃないとできない部分というのが存在し続けるわけです。簡単にいうと生成AIを作るエンジニアはしばらくの間は少なくとも必要なわけです。生成AI自身を生成AIが作ってくれるようにはならなくて、生成AIがおそらくサポートはするけれども最終的に作り上げていくのは、やはり人間が必要だというところがあるわけなんです。

他にもいくつかその領域というのはあるし、生成AIが出すコードというのはまだまだそんなに丸投げできるほど信頼に足りないというところが見えているわけなので。そう考えると、まだ人間がやるべきところはあると。だから、人間がやらなくて良いところが増えてきたと考えることがまずは妥当な考え方だとは思います。

もう1つ、私も含めて、やはりChatGPTによってプログラミングができるというのを知った時に、それなりにショックを覚える人はいると思うんですね。これは何かというと、「アイデンティティクライシス」なんですよ。自分のアイデンティティはソフトウェアエンジニアであり、言い方は悪いけれども一般人にはできないことを自分はやっているというのが自分のアイデンティティだったわけです。

それが例えば、英語を話せる人が英語を話せない人と比べて「自分は英語を話せるから」というところがあるからアイデンティティになっていたりとか、それが2ヶ国語、3ヶ国語、4ヶ国語をしゃべれたならば、メチャクチャなアイデンティティになっているはずなんです。

だけど例えばこれが、機械翻訳が出て、それもすべて音声認識でしかも音声出力をしてということになったら、その人の仕事がなくなるから、マルチランゲージのスピーキング能力があるというアイデンティティって喪失するわけじゃないですか。それと同じことが、コンピューターに対して命令するためには言い方は悪いけれども、ある意味特権的な能力としてプログラミング能力を持っている自分というアイデンティティがあったのが、それが失われているわけなんですよ。

でもこれは、やはり技術の進化とともに失われるものは失われると考えたほうがいいんだと思います。なのでその中で人間として何が必要かということを考えるのと、何度も言いますけど生成AIはどんな状況においても完璧ではないんですね。絶対に人間が必要であり続けると思いますから、それが何であるかとか自分の付加価値は何なのかということを考え続けていくといいんじゃないかと私は思います。

生成AIを使うための4象限

ーーなるほど。ただ、やはり技術がどんどん進化していくと、それに対してストップをかける人たちも当然けっこういるかなと。私的には技術って進化していくものかなと思っていて、それを止めるのは……。もちろん倫理的にいろんなことを考えることは大事なんですけど、止める必要はないんじゃないのかなといつも思うんですけど。そこはどんどん進化していくべきとか、なんか及川さん的には思っていたりしますか?

及川:基本的には私はテクノロジーに対して極めてオプティミスティックな人間なんですね。なので止める必要はないなと思いつつ、使いこなす能力、リテラシーと言ってもいいと思うんですけど、これは必要であると。なのでちょっと1個、最近それを整理したスライドがあるのでそれを画面共有しますね。

(スライドを示して)生成AIをどう使うかというところを4象限で考えてみているんですね。横がやれるやれないで、左側がやれない、右側がやれるです。それで縦の軸がやりたくない、やりたいのWANTというわけなんですね。これで考えると、まずもう実際に見せちゃいますね。

こんなかたちで、まずこの左上のこのドクロマークのところを言うと、今ってChatGPTは間違いを言っちゃうんですよ。それはもう仕方ないんですね。やはり間違いを言い続ける可能性があると。なので、ぜんぜんわからないド素人が、あえて「ド素人」と言いましたけど。ド素人と言わずとも、技術がわからない人が吐いてきたコードをそのまま使うということは、今の時代は極めて危険なわけです。

一方でわかりやすいところでいうと、今度は右下の部分なんですけれども。「やれるけどやりたくない仕事」って山ほどあるわけですよ。私の「やれるけれどもやりたくない仕事」の1つが、正規表現を書くことですね。これは今も、極めて生成AIが得意なわけです。あとはSQLのクエリなども得意なわけです。こういった部分って、やろうと思えばやれるけれども「なんか面倒くさいな」とか、さんざん今まで何回も同じようなことをやってきていて、ちょっとだけ違うのをまたやるのはイヤだな、と。

こういうのは、もうだいぶライブラリになっていたりするわけですけれども、でもそれを同じようなコードをイチから書かなきゃいけない状況ってあるわけなので、そういう時に、ここに任せるというのがあると。

右上のこれは、GitHubのCopilotがキャッチフレーズで言っていたように、AIペアプログラミングみたいなかたちで、できるけれどもちょっといろいろアドバイスをもらいながら進めていきたい時には、積極的に使えばいいわけです。

左下はもうやれないしやりたくないんだから、これはやらなければいい話なんですね。なのでザックリ言うと、今の時点では「人間ができないことを任せないようにする」必要があると。やはり最低限、出してきたものを判断するのは人間なので、丸投げしちゃいけない。これが、先ほど言ったリテラシーというか使いこなす能力の部分だと思います。

なので基本的には、全部右側に寄せるべきである。ですが、例えば、やれないけどやりたいものをやれるようにするために生成AIを使うということは、十分できるんですね。

例えば私が新しい言語を学ぼうとして、その公式サイトにチュートリアルがあったり、いろいろオンラインドキュメントがあるけれど「なんか書いてあることがよくわからない」といった時に、ChatGPTに「ここはこういう意味なのかな」という相談をしながら、教えてもらいながら、そこを習得することが可能なわけなので。こういった使い方もあるだろうと。なので、こんなかたちに生成AIを考えていくといいかなと。

ChatGPTに対してプログラマーができること

ーーなるほど。やはりけっこう今話題になっているところなのでどうしてもそこは聞いておきたいなと思いました。

このあたりも踏まえて、今後というか将来的にエンジニアはどうあるべきか、及川さん的に「こうあったほうがいいのでは」とかあったりしますか。

及川:今の話にあるように、まず「リテラシー」という最低限の部分は必要だと思います。これは簡単にいうと、電卓があるんだしExcelもあるんだから、もう小学校で算数とか中学で数学とかを教えなくてもいいでしょう、というのはめちゃくちゃナンセンスじゃないですか。関数電卓があろうがExcelがあろうが、ちゃんと当たり前のように四則演算と中学数学ぐらいはみんな学ぼうというのは、それは絶対にどこかで必要になるからなんです。

なので、まずはその部分のIT基礎力。これは例えば小学校でのプログラミング的思考教育だったり、あとは中学とか高校での家庭科、技術や情報技術で並ぶようなもの。ここは必要ということで、ここは学校教育でもしっかりやるし社会人でも身に付けてほしいなと思います。ちょっと宣伝で言うと、うちの会社もそこに非常に危機感を持っていて、中高生向けのプログラミング学習サービスの「Jasmine Tea」というのを出しているんですね。

ーーそのプログラミング学習サービス「Jasmine Tea」について、もう少し詳しく教えていただけますか?

今までお話してきた内容からもわかるかと思うんですが、私はソフトウェア力が個人にも会社にも社会にも必要だと思っていて、その中でもプログラミングが肝だと思っています。

IT職の人のキャリアパスが、途中からピープルマネージャーになっちゃうとか、手を動かさなくなって一人前と考えられていた時代があった。今もそういう会社は少なくないと思うんですが、という話にも関係しますが、実装力の重要性はもっと理解されるべきだと思うんです。

必ずしもITに関係する人全員がプログラマーを目指さなくても良いんですが、少なくともプログラミングとはどういう仕事であって、どのような能力が必要とされるかを知ることは、ITを必要とする事業に関わる人に必要なことだと思います。それこそ「ソフトウェアファーストの時代」というのはそういうことなんです。

このように考えると、プログラミングを、昔の「読み・書き・そろばん」と同じように、社会で生きるための必須にして、「読み・書き・プログラミング」にすべきじゃないかと。同じように考えているかどうかわかりませんが、一般企業でも社員にプログラミングを学ばせたりするところも増えています。個人として、社会人向けプログラミングスクールに通う人もでてきたりしています。

ただ、本当は次世代、これから社会に出る子どもたちにこそ、早くからプログラミングを学んでほしいと思います。前に外資系に勤務していたときにも実感したんですが、例えば、ダイバーシティを高めるために、女性エンジニアを増やしたいとか、特定の地域や学校からだけではなく、いろんな経験をした人をエンジニアとして採用したいと思っても、そもそもプログラミングができる人が極めて偏っているんです。

部下とか若い同僚とかに聞くと、「だって、大学の学科に女学生なんてほとんどいなかったですよ」と。これは、女学生の話だけではないですが、もっと早い段階から理系やコンピューターサイエンスに興味を持ち、そちらを進路として考えてもらうようにしないと駄目じゃないかと考えたわけです。

国、例えば文科省とかもそのように考えていたと思うので、小学校でのプログラミング教育がスタートしたり、中学校や高校での情報の科目が追加や強化されたというのがありますね。大学入試で情報も入ってきますし。ただ、そう見たときに、ちょうどプログラミング初心者がテキストプログラミングを学ぶための適切な言語と環境がないということで、スイートスポットというか、ブラックホールになっていたと思うので、その空いていた部分に関してサービスを出したというところがあります。

一番敷居の低い学習環境としては、ビジュアルプログラミング言語がありますよね。とても良くできています。ですが、ビジュアルプログラミングだけでは、本格的なプログラミング学習は難しい。でも、次に何で学ぶかというと、いきなりPythonやJavaScriptになるんです。

PythonやJavaScriptの学習サービス、特に子どもたちに向けたものはよくできているものもたくさんあります。それで学べる子はそれで学べば良い。でも、聞いてみると、PythonやJavaScriptなどの本格言語の敷居の高さで挫折してしまう子どもたちも少なからずいる。

例えば、Scratchでゲームを作って楽しんでいた子どもが、周りの大人の勧めもあって、Unityを学ぼうとしたら、あまりの難しさに、またScratchに戻ってしまったとか。

だったら、Scratchのようなビジュアルプログラミング、PythonやJavaScriptのような本格的なテキストプログラミング言語、これらに加えて第三の選択肢として、テキストプログラミングの学習に特化した言語や学習サービスが必要じゃないか。そんなところからスタートして、できたのがJasmine Teaです。

ーーJasmine Teaではどのような工夫がされているんですか?

今回、Jasmine Teaを開発に際して、何人かの教育関係者、プログラミングを教えている人、教えた経験のある人に話を聞きました。すると、いくつかの課題が見えてきました。

まずはプログラミングを教えるために、必要な環境を準備する、してもらうのが大変。VS Codeをインストールして、そこにいくつかのプラグインを入れて、環境をセットアップしてもらって。さらに大変なのが、子どもによってはiPadを使っていることがあるそうです。こうなると、使える教材も限られてくる。コロナ禍でGIGAスクール環境がいっきに整備されたんですが、学校によっては端末をiPadにしている。けっこう多いみたいです。

それに対して、Jasmine Teaでは、ブラウザさえあれば使えるようにしました。iPadもサポートしています。これ、結構たいへん、特にUI上の制約、マウスが無いので、ホバーでなにかを表示さえるとかもできませんし、画面サイズも小さい、物理キーボードがないことも想定して、ソフトキーボードで操作できるようにしたり、と大変なんです。

あとは、子どもたちが飽きちゃうことがあるそうなので、Jasmine Teaではゲームやアニメーションなどを作れる機能を標準装備しています。あちこちから権利関係が怪しい画像を持ってきたりする必要もないです。音楽を鳴らすこともできますし、音声認識や出力もあるので、簡単な音声アシスタントみたいなアプリも作れます。楽しい要素をできるだけ入れて、楽しみながら学べるようにしています。

ただ、機能にしても言語仕様にしても、難しくなりすぎないようにしています。Jasmine Teaはあくまでも学習に特化。テキストプログラミングの初歩を学んだら、とっとと卒業して、Pythonなり、JavaScriptなりの学習に進んでほしい。という、ちょっと自虐的なプロダクトなんです。

簡単だけど、言語にしても、開発手法にしても、基礎は学べるというものを目指しています。まだまだ、足りないもの、例えば、学習のためのテキストや動画なども足りないので、協力頂ける方を絶賛募集中です。特に、学校で使ってみたいとか、地域のプログラミングワークショップで試したいというのがあれば、それは大歓迎です。

ーーこのJasmine Teaの開発の背景も踏まえて、再度、社会人のエンジニアはどうあるべきと考えますか。

今お話した子どもに対しての期待と同じように、やはり社会人も同じようにその実装を含めた基礎力を持ってほしいと。

もう1つは、やはり開発というのは、組織としても個人としても今の自分がどの状態にいるかということと、どこの状態に持っていきたいかという、現状であるAs isと将来の理想像であるTo beを理解し、そこのギャップを埋める必要があるんですね。

そういう意味でいうと、アセスメントが非常に重要であり、これもまたちょっと宣伝になっちゃうんですけど、私が個人的にもしくは会社が支援している、もしくは会社が提供しているアセスメントサービスとか仕組みがあります。その一つが今日ちょうど先ほど私がエンジェル投資したというプレスリリースを出したんですけど、オンラインのコーディング試験というのをやっているハイヤールーという会社があって、これでエンジニアの能力が測れます。

組織の方は、こういったものを使ってしっかりと設計能力、実装能力を測り、本人にどこまで伸ばしてほしいかというギャップを提示して、その育成を支援するようにしてほしい。あとはプロダクトマネージメントに関しては「DIA for PM」というのをエクサウィザーズとパーソルイノベーションとTablyで共同開発して提供しているのがあるので、これを使えば同じく現状の実力がレーダーチャートで出てくるので、そのギャップを埋めることを考えるのに使ってほしいです。

まず現状がわからないと、ダイエットにしたって今の自分が体重何kgで体脂肪がどれくらいかというのがわからないと、どこまで何を縮めればいいか、何をやればいいかわからないということになりますから、現状のAs isとTo beをしっかりと持つようにして、それをトラッキングしていくということをやられるのが、組織、個人たちにもとても重要じゃないかなと思います。

ーー今回はお忙しい中ありがとうございました。

及川:ありがとうございました。