生成AIはプログラマーの仕事をどう変えたか?

2024/04/10に公開

1. はじめに

プログラマーとしての私の仕事は、2022年にChatGPTが登場してから大幅に変わりました。
チャット形式のUIを持つ高性能な言語モデルAI(LLM)の出現により、コーディングの仕方そのものが大きく変容したのです。

具体的には、以下のようなプログラミングの仕事のフローのうちのコーディング部分をAIが代替してくれるようになったのです。

つまり、プログラマーの役割が「コーディングそのもの」から、「アイデア出し」と「クオリティ管理」に移行したということになります。コーディングの生産性向上によって、本来の創造的で付加価値の高い仕事に注力できるようになったとも言えるでしょう。

本記事では、具体的にどのような変化があったのかを、私自身の生産性の数値や働き方の実例を交えながら説明していきます。

2. 数値に表れた生産性の向上

私は2022年末にChatGPTをフル活用し始めたので、2022年と2023年の実績データを用いることでAI登場以前と以後の生産性を比較することができると言えます。

まず組織全体のGitHubのコミット数はChatGPTを活用し始めた2023年に31%も増加しました。さらに、コミット数以上に制約が多いはずのスマートフォンアプリのリリース数も35%増加しました。

また、単なる量的な増加だけでなく、私が携わっている落とし物防止タグMAMORIOのアプリの品質も向上させることができました。
ユーザー評価の平均値が+0.1上がり、クラッシュ数は95%減少し、さらに、位置情報アプリ特有の消費電力やサーバー送信ログ数もそれぞれ45%、60%削減できました。

加えて、私がブログで外部に発信する技術記事の数も増えています。
従来は自分の技術領域がニッチだったこともあり知見を広めるためにブログを書く手間をかける意欲がなかったのですが、開発の生産性が上がり、そういった時間的・精神的な余裕ができてきたのです。

3. 使い方

私が使っているAIはChatGPT-4で、ブラウザ上のチャットウィンドウに質問やコードを入力し、対話形式で応答を得ています。
具体的な利用シーンは以下のようなパターンが一般的です。

1. ざっくりとしたアプローチ方法をAIに尋ねる
2. 要件を渡してAIにコードを生成させる
3. エラーを直す

例えば、私が「音声で話しかけたら挨拶を返すraspberry piのロボットを作る」という全く未知のタスクを与えられた場合は以下の様にAIを利用します。

一つ一つの回答が完璧なものでなくても、円の範囲を徐々に縮めていくように大まかな方針決めからデバッグまでの一連の流れをAIにアシストしてもらうことで、プログラミングの生産性が大幅に向上します。

作業フローの中にAIを組み込むことで、エンジニアはクオリティ管理に集中できるようになりました。

4. 技術的挑戦の拡大

AIの助力により、私はこれまで手を付けたことがなかった技術分野にも大胆に挑戦できるようになりました。
メインの技術領域がiOSエンジニアだった私でも、サーバー側やインフラ、フロントエンドなど、従来ならメンテナンス程度にとどまっていた周辺領域に幅広く手を染められるようになったのです。

https://zenn.dev/iototaku/articles/7beb58415b042b

これが可能になったのは生成AIに対して気兼ねなく質問できるという魅力があるためです。
AIには以下のように同僚のエンジニアや技術顧問には聞きにくい質問を投げることができますし、エラーメッセージをそのまま投げつけても失礼にはあたりませんし、何回同じ質問をしても人間関係が壊れることがありません。
「そんなことも知らないのか」とか「入門書を読め」とか「仕様書を読め」と言い返されることもなく、AIならいくらでも質問攻めにできるわけです。

エンジニアの悩みの上位には常に同僚とのコミュニケーションの問題がありますが、非人間的なコミュニケーションを受け入れてジュニアのエンジニアの能力を引き上げてくれるAIの教育能力は圧倒的です。

5. エンジニアもスマートフォンで仕事ができる

あまり触れらることはありませんが、私はAIがもたらした最大の革新の一つにエンジニアの仕事もスマートフォンでできるようになったことだと考えています。
もちろん完全な置き換えはできませんが、私の場合、出張や旅行で移動している際に次にPCを使える環境になったときにAIに投げる予定の指示をメモしておくようになりました。

従来もスマホでメモを書いたりコミュニケーションをとることはできましたが、それらはあくまでアイディアやタスクの整理であり、実際に集手を動かすコーディングとはまた別の話でした。
ですが今はざっくりとしたタスクの名前や思いつきのアイディアであっても、その下に人間の言葉でAIへの指示を添えることで、そのままコーディングへとシームレスにつなげられます。

https://getnavi.jp/book/492319/

かつて起業家の堀江貴文氏は「これからはスマホで仕事をする時代がくる」と述べていましたが、PCが不要になることはなさそうなものの、生成AIの登場によって経営者がスマホで部下に指示を出すようにエンジニアもAIに指示を出せるようになったと言えるでしょう。

6. 結論:解決されない最後の障壁

2023年を通してAIを活用した結果、知的労働の負荷が大幅に軽減されたことが分かりました。
しかし一方で、今後AIが精度とレスポンス速度を更に高めていったとしても最後の障壁となりそうな2つの課題が浮かび上がってきました。

1つ目は精神的負荷の問題です。
エンジニアは新しいタスクに着手する際、過去のトラウマや予期せぬトラブルを心配して踏み出せなくなってしまうことがあります。
システム障害を起こすプレッシャーや、トライアンドエラーを繰り返したのに進まなかった嫌な作業の記憶や、一つのタスクを片付けたら隠れていたタスクがたくさん生まれてしまうことなど、さまざまな不安が反射的に頭に浮かんで仕事に手を付けられなくなってしまうのです。

AIが知的作業を全て代替できたとしても、こうした肉体的な防御反応やストレスが完全に解消されるわけではありません。

2つ目はマルチタスクへの対応です。
生成AIの登場によってエンジニアがより付加価値の高い仕事に集中できるようになったとしても、人間が掛け持ちできるプロジェクトの数には上限があります。
これはマルチタスクによる時間の有効活用の利点をスイッチングコストが上回ってしまうからです。
たとえば以下の論文では時間あたりのエンジニアの生産性は2つのプロジェクトに関わることで最大になり3つ目以後は下がってしまうことが指摘されています。

http://www.scielo.org.za/scielo.php?script=sci_arttext&pid=S2224-78902015000300009

理想を言えばCPUのコア数のように組織が抱えているプロジェクト数に応じてエンジニアや管理人材を増減できれば良いのですがそれは不可能なので、一人の人間が抱え込めるタスクの量は3個という制約に従って組織全体の事業計画や人材の採用をうまく行なっていく必要があります。

このように、AIがいくら知的労働の生産性をあげても人間の精神的障壁やマルチタスクの壁は取り除けません。
ですので今後はエンジニア個々人のメンタルヘルスの支援の強化やマルチタスクと副業を前提とした時代への組織の適応が求められることが予想されます。

Discussion