AIでプログラマーの仕事がなくなるという嘘
AIに仕事が取られるーなんて話が言われる中で、仕事を取られる筆頭としてあげられるのがプログラマーです。
10年後の仕事図鑑でもエンジニアについて言及されてましたね。
わたしは大学時代AI系の研究していて、いまITエンジニアとして働いています。
その立場から、この説について言及したいと思います!
プログラマーがAIに仕事が奪われる未来ってどんな世界?
まず、そもそもAIにプログラマーが仕事が奪われた未来ってどんな世界なんでしょうか。
おそらく「これ作りたい!」と言ったらすぐにそれが出てくる、ドラえもんのような世界を想像されると思います。
こう言ったらそれが出来る夢のような世界ってことですね!
しかし待ってください、こう言ったら具体的にどんなものができるんでしょうか?
AIがプログラマーを代替できない理由
仕様は常に曖昧である
私は今まで無数に開発依頼を受けてきましたがその仕様は、基本的に曖昧です。
「Airbnbのペット版作ったら売れそうじゃね?」のような雑談ベースのものはもちろん、実際に仕様書としてもらうものも例外なく曖昧です。
これは仕様を考える人が悪いのではなくそういうものなのです。
曖昧なものを具体化するのがエンジニアの仕事
たとえば「犬の絵を描いてください」と言われて、どんな絵を描きますか?
依頼した人の頭の中には、「柴犬が芝生の中で走り回ってる絵」が欲しいと思っていたとします。
しかし「犬の絵を描いてください」とだけ言われて、それを察することはできませんよね。
つまり「曖昧な仕様」を「具体的なもの」する作業が必要になるわけで、プログラマーの仕事とはまさにそれなのです。
細かく仕様書を書けば良いの?
では誰しもが同じものを想像するような、細かい仕様書を書くとしましょう。
- 左上から100px、100pxの位置にボタンを作る。
- ボタンの大きさは縦が200px、横が50pxである。
- ボタンを押すと「/index.html」に遷移する。
これなら誰でも認識の齟齬が起きませんね!
…これって結局、プログラマーが普段プログラミング言語で書いてるものと同じようなものじゃないでしょうか。
<a href="/index.html" width="200px" height="50px" style="top: 100px; left: 100px;" />
具体的な仕様書=コード
プログラミングは、必ず意味が1つになるような文章を作る作業ともいえます。
1つのソースコードからは、同じ動作が保証されてますからね。
つまり誰も認識の齟齬が起きない具体てな仕様書を作るのであれば、それは日本語でプログラミングしているのと同じです。
私たちが普段話している言葉はプログラミングに向かない
そして私たちが普段話している言葉はプログラミングには向いていません。
プログラミング言語は必ず1つの単語に対して、意味が特定できるように細かくルールづけされています。
しかし私たちの話す言葉は、必ず曖昧性を含んでいます。
「太郎と花子がいました。」
「彼女は彼の誕生日に花をプレゼントしました。」
これを読んで、「彼女=花子」「彼=太郎」と想像されたと思います。
しかしそれは経験上、花子が女であり、太郎が男であるというだけです。
20年後には女の子の名前に「太郎」が流行って、「彼女」は「太郎」をさすのが普通になるかもしれません。
私たちが話している言葉は曖昧なもので、自分の経験から意味を推測しています。
それを使ってプログラミングするということが、そもそも包丁を使って紙を切るようなものなのです。
プログラミング言語が賢くなったら解決?
こう疑問に想う人がいるかもしれません。
実際に今のプログラミング言語も、どんどん曖昧なものを汲み取ってくれるようになっています。
たとえば今までは、「これは数字です」「これは文字です」と指定しなくちゃいけなかったのが、型推論によって自分で判断してくれるようになりました。
曖昧を汲み取ってくれるのは必ずしも良いことじゃない
曖昧なものを汲み取ってくれるということは、逆に言えばどう汲み取られるか分からない不確定要素ということになります。
たとえば型推論が出る前は、今までは「これは数字です」って決めていたので、その中は数字しか入っていませんでした。
一方、型推論が入ってくると、「これは数字?文字?」っていうのが分からなくなります。
したがって安全のため、使うたびに「ちゃんと数字が入ってるよね?」と確認する必要が出てきたりもしています。
AIが自動で汲み取って作ったサービス
実際に、「TwitterのようなSNSを作りたい」と言ってAIが汲み取って作ったものを、大企業がリリースできるでしょうか。
「具体的にどんな機能があるの?」「何を押したらどうなるの?」っていう細かいところが分からないと不安ですよね。
結局のところ、AIがプログラマーの仕事を奪うか否かはプログラミング言語がどこまで曖昧性を許容するかの話であり、許容しすぎると不確定要素がありすぎてリスクが高いのです。
まとめ:AIでプログラマーの仕事がなくならない理由
- 仕様書は曖昧なので、それを具体的にしていく作業が必要になる。
- 仕様書の時点で具体的にできるのであれば、それはもう日本語でプログラミングしていると言える。
- 日本語は曖昧性のある言語なので、具体的な仕様を日本語で書くのは不可能に近い。
- 曖昧性をどれくらいAIが汲み取ってくれるかが、AIがプログラミングをする上で争点となる。
- 汲み取ってくれるということは、どう捉えたか分からない不確定要素でもあり、それは使用者にとってのリスクとなる。
10年後の仕事図鑑で言われている内容は?
あえて「AIがプログラマーの仕事を奪う」の表現から想像されやすい誤解のお話をしましたが、「10年後の仕事図鑑」で言われている内容は今まで書いた内容と違います。
ようするに、
- 何かを作ることの敷居が下がって、誰でも作りたいものを作れるようになる
- そのため学習コストの高い最先端のもの以外は、仕事の価値が下がる
ということですね。
AIがエンジニアの仕事を奪うというよりは、AIがエンジニアの仕事を補助した結果、誰でもエンジニアになれる世界になるようです。
WixやUnity、RPGツクール
具体的にはWixでホームページを作ったり、UnityやRPGツクールでゲームを作るに近いです。
そういったように、あらゆるものがプログラミングせずに作れる世界がこれに当たると思います。
とくにWixが良い例だと思いっていて、ホリエモンさんはAIに関する討論番組で、「コンポーネントを並べてくだけでサービスが作れるようになる」とおっしゃっていました。
これはまさにWixの世界だと思います。
Wixがあっても人はWebサイトを作れない
では学習の敷居が下がったときに、その仕事自体は減っていくのでしょうか。
過去にRPGツクールで私含めて家族や友人がゲームを作っていましたが、完成したゲームは1つもありませんでした。
それこそ文章は誰でも書けるけど小説を書ききれる人は少ないように、プログラミングを超えた先でもやることは無数にあって、そこまでやりきれる人はなかなかいません。
携帯電話の契約時にGoogleアカウントを作ることが有料サービスになるくらい、「わからないことを勉強する」というのを避けたい人は多いのです。
つまり敷居が下がることによって仕事が減るというよりは、敷居が下がることによってエンジニアになれる人が増える影響が大きいということになるでしょう。
エンジニアの敷居が下がる
ではエンジニアの敷居が下がると、どうなるのでしょうか。
エンジニアの数が増えて、給料が安くなるのでしょうか?
私はそこまで単純な話にはならないと思います。
エンジニアの敷居
まずエンジニアになる敷居自体は昔からそこまで高くはありません。
学生で、独学でプログラミングしている人なんて無数にいます。
むしろ情報が溢れている今のほうがプログラミング学習は大変なんじゃないかとすら思うほどです。
つまりやる気さえあればエンジニアになれるというのは今も昔も変わらないと思います。
ようするにエンジニアになりたいと思う人が多いか、少ないかの違いというわけです。
例えば「これからの時代、ゴミ拾いが簡単にできるようになる」と言われてもゴミ拾いの仕事をしたいと思わない人も多いでしょう。
仮にエンジニアになりたいと思う人がいなければ、その敷居がいくら下がったところでなる人は増えないのです。
エンジニアになりたい人は確実に増えている
とはいえ、エンジニアになりたい人は確実に増えています。
その理由は人それぞれだと思いますが、話を聞いていると
- 今の仕事より給料が上がる
- 自由な勤務スタイルで働きたい(リモートワーク、私服)
- 人と人との関わりが少ないので、ストレスが少なそう
などを多く見ます。
そしてこれらはエンジニアになりたいというより、ネガティブを避ける消去法的なものです。
エンジニアの仕事がしたいというよりは、そこから得られるライフスタイルに対しての憧れが強いわけですね。
そのため「エンジニアになったけど正直向いてない!」って人もたまに見かけます。
シンプルに需要と供給の話
昔は高給取りの代名詞だった弁護士も、今は人が増えすぎて廃業しているところが多くあるそうです。
つまりはAIが奪ううんぬんではなく、シンプルに
- 待遇の良い仕事は供給が増える
- 供給が増えることで価格が下がっていく
に過ぎないんじゃないでしょうか。
おわりに:AIでプログラマーの仕事は無くなりません
実は私自身、大学時代に「普段話す言葉からプログラミングする言語を作ろう」と思い、研究室で相談したことがありました。
しかし「そんな不確定要素の強い言語使いたくねー」と友人に言われたのが印象に残っています。
「曖昧」を「具体」にするのは、少なくとも100%AIが信用できるようになるまでは人がやらないといけません。
そして100%AIを信用できる世界になっているのであれば、それはもうエンジニアだけでなくあらゆる仕事がAIに取って代わられてるのではないでしょうか。