AIにコードを書いてもらう時代の仕事についての考察

# はじめに

アプリケーション開発の領域でも生成AIの進展が目覚ましいです。Webアプリの開発者である私もClineなどを利用してみて、これは仕事のあり方などが変わりそうだ、一方で変わらない部分もありそうだと感じました。今回はAIにコードを書いてもらった所感を記しつつ、仕事のあり方がどう変わっていきそうかなどの考えを整理してみたいと思います。

## AIにコードを書かせていて感じること

Clineを通じてAIにコードを書いてもらった際の所感をざっくりと述べると、
**1.めちゃくちゃ手の早い作業者に指示を出してコードを書いてもらっている**、**2.自分はレビュワーに回る**という印象です。普段からレビューをしている身からすると「これ、いつも通りの仕事（の一部）だ」と感じました。コードの品質はかなり高く、一般的なWebアプリの開発という文脈に限れば、自分でコードを書く時代は終わりつつある気がしてきます。

### 指示者としての汎用的な仕事のスキルがそのまま活きてくる

そのため、例えば、**指示は具体的にする**、**一つ一つの指示は細かくする**、**理解度を確認してずれている場合は軌道修正を促す**といった一般的な仕事のスキルはAI相手でも重要です。抽象度が高く長く複雑な指示よりも具体的で短く簡潔な指示を心掛けること、指示へ理解度を丁寧に確認することなどはAI相手でも重要だと感じました。

### 言語やライブラリへの理解など技術的な知識はまだ重要

また、AIツールの出力品質は、与えるプロンプトの質に大きく依存する印象です。例えば、

- 「Webアプリを作りたい」という漠然とした要求をする場合
- 「特定の言語・フレームワークでWebアプリを作りたい」という具体的な要求をする場合
- 「特定のアーキテクチャパターンに従って実装したい」というより高度な要求をする場合

で出力されるプログラムはかなり異なります。言語・ライブラリへの理解やアーキテクトへの理解力は依然必要な印象です。
とりあえず動くアプリが作れていることとより品質の高いアプリが作れていることは違いますよね、ということです。
とはいえAI関係の動きはとても速いのでそのうち気が付いたらこの辺りも全く意識しなくなるかもしれません。

### AIも一発で完璧なコードを書くわけじゃない

AIは一発で完璧なコードを即座に生成するわけではありません。

- 細かな要件の取り込み漏れ
- バグの混入
- 既存コードベースとの整合性のとれないコードを生成する

など、生成したコードを見ていくと、指摘したいことがでてきます。
ということで事前の指示を細かくするのかにしろ、作成したコードをレビューするのかにしろ、レビュワーの仕事はまだしばらく重要そうです。

### AIの仕事が早すぎて仕事のやり方が変わりそう

とはいえ、従来のレビューとは異なる部分もありそうです。AIはアウトプットまでが早すぎます。
かなり短絡しますが、例えば、従来のレビュー業務では作業者の作業時間中に別タスクを進めるということができていました（以下の図のイメージ）。

[![](https://mermaid.ink/img/pako:eNp1kU9PwjAYxr9K8ybcFrPxR6BnY7h48mZ2qVBgCdvI6BKQkDAWojHcOHjRqFGMiYJXFYEPUzb5GBY6psbYU_u8z_Nr-75tKNolChgqxGJMt5BYJcLovu2YhCFUKGDTlDJpGo1IThRw4kCqzGA1ioL5MLwacW-ynF2GozH3L7g_5r0p771JWyKBZGnV7XPvJZhcr-76kbnrhYPTz_t3WZJ77j0uXx9Wt4PYE8wH3Hvi_jP3h9wfcf9Dkhu0yAzbQjFDyjInRYyIpiA1j1VVQZoa_Sc4G0mTKCcVRMqMOhujVpWGn3dxf7pazILzm5iY2kaOtX-g6Ria-oZunxt3I8ptGoI3sL8vidq1mITjO-FJ_gaDAiYVczFKYo7tdUIHVqUm1QGLbYmWiVtjOuhWR1iJy-zDllUEzByXKuDYbqUKuExqDXFy6-vp7xmk4hAzVuvEOrJtcxsRR8BtaAJWFWgBTudzO_lMMpPPqtmMlsrtZjsKnGwCWucLmvkEow?type=png)](https://mermaid.live/edit#pako:eNp1kU9PwjAYxr9K8ybcFrPxR6BnY7h48mZ2qVBgCdvI6BKQkDAWojHcOHjRqFGMiYJXFYEPUzb5GBY6psbYU_u8z_Nr-75tKNolChgqxGJMt5BYJcLovu2YhCFUKGDTlDJpGo1IThRw4kCqzGA1ioL5MLwacW-ynF2GozH3L7g_5r0p771JWyKBZGnV7XPvJZhcr-76kbnrhYPTz_t3WZJ77j0uXx9Wt4PYE8wH3Hvi_jP3h9wfcf9Dkhu0yAzbQjFDyjInRYyIpiA1j1VVQZoa_Sc4G0mTKCcVRMqMOhujVpWGn3dxf7pazILzm5iY2kaOtX-g6Ria-oZunxt3I8ptGoI3sL8vidq1mITjO-FJ_gaDAiYVczFKYo7tdUIHVqUm1QGLbYmWiVtjOuhWR1iJy-zDllUEzByXKuDYbqUKuExqDXFy6-vp7xmk4hAzVuvEOrJtcxsRR8BtaAJWFWgBTudzO_lMMpPPqtmMlsrtZjsKnGwCWucLmvkEow)

しかし、AIは30秒～10分ほどで作業が完了するので人間の指示者では作業を並列化できません（以下の図のイメージ）。

[![](https://mermaid.ink/img/pako:eNqNUs9LAkEU_leGB96WUFPcnVsQkYdO3WIvk4664O7KOguaCG6L9ANvQl2Cin4QlHYtf9QfM2p28l9odHSSTs3pzXvf971v3psaZNwsBQx54jBmOkicLGF0x_VswhAqFLBtyzSpWOVlOrKLI3syyyxWpGgrzYMnHnRHw6vJQ4eHlzzs8OM-P36XqEgEydK00eTB67h7Pb1rLsGNYNI6-brvyZKMhdro7XF621KY8UeLB888fOFhm4cPPBxI5TLNMMt1kNKYDU5Hvd73RXs2OJMQqSEBGJGYhqIGjkY1lFy-bF2Vh_3p53B8fqPwcQ2RHKMeOoz9l7KpKPFfysqpGoRwupVWLuVM8KKLJJO1fqqq3Mx9xf9WVeO5hZgNGthUbMzKig3X5lgTWIHa1AQswizNEb_ITDCduoASn7n7VScDmHk-1cBz_XwBcI4Uy-Lml-b_YtsieY_YKlsizoHr2iuKuAKuQQVwVIMq4ISe2DD0pJ4yjJShx_Vksq7B0YIQq_8AiNwWbg?type=png)](https://mermaid.live/edit#pako:eNqNUs9LAkEU_leGB96WUFPcnVsQkYdO3WIvk4664O7KOguaCG6L9ANvQl2Cin4QlHYtf9QfM2p28l9odHSSTs3pzXvf971v3psaZNwsBQx54jBmOkicLGF0x_VswhAqFLBtyzSpWOVlOrKLI3syyyxWpGgrzYMnHnRHw6vJQ4eHlzzs8OM-P36XqEgEydK00eTB67h7Pb1rLsGNYNI6-brvyZKMhdro7XF621KY8UeLB888fOFhm4cPPBxI5TLNMMt1kNKYDU5Hvd73RXs2OJMQqSEBGJGYhqIGjkY1lFy-bF2Vh_3p53B8fqPwcQ2RHKMeOoz9l7KpKPFfysqpGoRwupVWLuVM8KKLJJO1fqqq3Mx9xf9WVeO5hZgNGthUbMzKig3X5lgTWIHa1AQswizNEb_ITDCduoASn7n7VScDmHk-1cBz_XwBcI4Uy-Lml-b_YtsieY_YKlsizoHr2iuKuAKuQQVwVIMq4ISe2DD0pJ4yjJShx_Vksq7B0YIQq_8AiNwWbg)

ということで、AIを前提にした新たなワークフローを模索していく必要がありそうです。今までのワークフローで仕事をしていると指示者のレビュー負荷が爆発しそうです。

### 新しく技術を学ぶ人はどうやって勉強するのだろうか

自分でコードを書かない時代になって、一方で言語・フレームワークへの理解やアーキテクチャへの造詣が求められる状態になっていく中で、初学者はどのように学習していけばいいのだろうかということを考えています。OJT（On-the-Job Training）的に、最低限コードを読み書きできる人材が現場のコードをいじってより深い領域を学習していくということは難しくなるかもしれません。\
AIに聞くと何でも分かりやすく教えてくれるという意味で入門すること自体はより簡単になっているので業務とは関わらない形で学習していくことが重要なのかもしれません。このあたり、初学者の汎的なロードマップには変更の余地がありそうです。

## 上記の現状認識を踏まえて

現時点でのAIの状況であれば、指示者としての能力はまだ活かされそうです。\
指示者としての能力というのは、大きく以下のように分解できそうです。
1. 要望・要件・制約を言語化する能力
2. 要望・要件・制約を前提に、細かく丁寧な指示出しをする能力
    - ビジネス要件だけでなく、技術的なアーキテクチャ・既存コードベースへの理解力を下敷きにする
3. AIのアウトプットの良し悪しを判断する能力
    - 2.のインプット情報との整合性を判断する

AIという優秀で手の早い作業者を得て、全員が指示者になっていくというのが今後の仕事のあり方なのかもしれません。
一方で、初学者にとっては、コードを書く機会が減り、いきなり指示者のようなふるまいを求められるという点は厳しいように思えます。
幸い、AIは指導者としても優秀ですから、既存のOffJTやOJTのあり方の見直して、AIとの対話を前提に技術的なキャッチアップをしていくロードマップを検討する必要がありそうです。

# 終わりに

AIに関する情報を追いつつ、自分でも使ってみて今後の仕事のあり方を考えてみました。AI関係はかなり動きが早いため数日後には全く違う状況になるかもしれません。今後も動静を追いつつ、仕事のあり方を考えていきたいと思います。