Ryukalice

AIによって突然一変した生活

2023-05-26

AI の進化が止まらない。少し前までは「AI」と言われるとチャットボットのようなものを思い浮かべる人が多かっただろう。私も7年ほど前に人工無能開発の教本に執筆協力をしたことがある。Python で人工知能を作りたい人向けの足掛かりとして、与えた質問文に対して事前に覚えさせたデータから回答文を生成するアルゴリズムをこの書籍で開発するサンプルアプリケーションのプロトタイプとして提供したのだ。この技術は質問文の形態素を解析して教育した会話データからマルコフ連鎖でそれらしい文章を生成するだけのもので、強化学習の機能は搭載したものの俗に言う「AI」とは程遠い存在であった。それからも AI を使ったお遊びとして、TensorFlow 等でデータを食わせてみて何か出力や判断をさせてみた程度の体験はあり、今所属しているチームでも機械学習で OCR(光学的文字認識) の精度を上げる研究開発を行なっているところではあるが、それら程度を扱っていた身としてはこれ程早くプログラマーの仕事が AI に奪われるとは想像していなかった。むしろプログラマーの仕事が AI に変わる頃には世の中の大半の仕事が既に AI に置き換わっているだろうと想像していたのだが、現実は逆であった。まずプログラマーの仕事が減ったのだ。

芸術の分野においては AI が作品を出力することに対して人それぞれの心情が存在し、その是非についての議論が留まることはない。しかし、プログラミングの分野においてはそこに心情はほとんど存在しない。「でもこれ AI が書いたんでしょ」とプログラムそのものが否定されることは滅多にないだろう。プログラミングも一種の芸術性を覚えながら嗜む側面があるが、基本的には純粋な芸術の分野とは全く異なる性質を持っていて、自分の書いたプログラムの癖や作法を学習されて他の人の仕事に流用されたところで不快感を覚える人は少ないだろうし、むしろ自分の知識が他人の仕事を早めるのであれば歓迎する人も多いだろう。単純にプログラムの芸術性で大した競争が発生しておらず、プログラムのユーザーもコードの品質や来歴について興味がないので、人間が書いたか AI が書いたかは重要視されないし、自分のプログラムの癖や作法が学習されて他の人に流用されることに対する危機感もない。このまま AI が進化し続けると AI に命令する側の技術や知識の要求レベルも下がっていって技術や知識の価値が下がっていくという危機感はあるが、私は怠惰を美徳とするプログラマーなのでそんな危機感よりも今の仕事が早く片付くことが重要だ。ゲームが私を待っているのだ。

しかし多少の戸惑いもある。私は人より美しいコードを書くという自負があり、人よりコードを書くのが早いという自負もある。どこに行ってもそれが評価され続けてきたからこそ、今の労働環境や労働時間や収入がある。しかし、美しいコードを早く書けるという技術の価値はもう薄れてしまった。何故なら、ChatGPT と GitHub Copilot によって私が書くコードの量は2割以下になったからだ。今まではエディターの補完に頼ったり、インターネット上からサンプルコードを探してきたりする暇があれば自分の手を動かした方が早いと思い続けてきたが、もうそういうレベルではない。自分の手を動かすよりも明らかに AI にやらせた方が早い。AI が出力したコードの方が自分が想像していたコードにはなかった発想があって驚かされることもある。私は元々1日2時間程度しか働かないように心掛けているが、労働時間の確保の仕方まで AI に引っ張られるようになってきた。GPT4 が3時間に25回しか質問できないので、上限まで使ったら業務終了して3時間以上経った後にまた仕事を始める、といった生活になっている。AI の労働時間に合わせて私の労働時間が決められてしまっているのだ。

日常のプログラミングに AI を取り入れ始めた頃は「こんなものに仕事を奪われるプログラマーは普段からその程度のコードしか書かない人だけでしょ」と正直思っていたものだが、現実はむしろ逆で高度の仕事であるほど AI が手放せなくなってくる。最初はググってサンプルコードがヒットするような情報の範囲だけ補完できる程度のものを想像していたのだが、実際は AI がゼロベースで独自の設計を構築して提案してくれるのだ。リファクタリングもしてくれる。テストも書いてくれる。何をしているコードなのか解説もしてくれる。識別子の相談にも乗ってくれる。型で怒られても解決してくれる。正規表現も書いてくれる。テストを書かずにリファクタしても diff を渡せばデグレがないか見てくれる。設計の相談をしたり「もっといい書き方ない?」といった漠然とした悩みにも答えてくれる。いい設計を思い付いてその修正がプロジェクト全体に及ぶ場合も全部修正してくれる。全体的に「とりあえず Issue を立てて後回しにする」ということが減ったと思う。思い付いた設計や改善がすぐに形になるので思考がプロダクトにリアルタイムで反映しやすくなって仕事のストレスが大幅に軽減した。もう AI のないプログラミングには絶対に戻れない。セキュリティや金額や諸々の理由でまだ AI を使うに至っていないプログラマーも多いと思うが、近い将来このプログラミング体験が一般的になれば、業界の技術レベル(特に下限)は跳ね上がるだろうし、それによって淘汰されるプログラマーも少なからず出てくるだろう。私は副業で slack に常駐して技術相談に乗ったりコードレビューをしたりテスト文化の構築に力を貸したり等といった仕事をしてきたが、これらの仕事はもうほとんど価値が無くなったと思う。

とはいえ、私は人から要件を聞き出して早く形にするコミュニケーション能力と実行力に長けているし、AI を働かせるにあたって何を聞けばいいのか、どんな聞き方をすればいいのか、どれぐらいの粒度で聞けばいいのか、出力された結果の是非はどうなのか、といった感性に優れている優秀な人材であるため、今のところは仕事になっている。今後はこういった能力を伸ばしていかなければならないのだろう。今までプログラマーの技術力は捨ててきたコードの屍の上に成り立っていた部分が多いと思う。どれだけコードを書いてきたかが直接的な経験値になっていたので、成長したければとにかくコードを書け、というのが正解であったが今後は AI の使いこなし方であったり、要件の引き出し方や解釈のスピード等を磨くのが成長する近道になるのだと思う。AI にぶん投げて AI ができないことを人間がやる、これが昔憧れたプログラマーの未来か?と思う部分もあるが、今は自分の仕事の品質と速度が上がったことに感謝して存分に甘えて生活しようと思う。