「いまってAIがあるからプログラミングなんて一瞬でできちゃうんでしょ?うちのももっと安く早くできないの?」と無邪気な非エンジニアに言われた経験があるソフトウエアエンジニアの皆さんや、それに対してエンジニアから微妙な表情で微妙な返事をされたビジネス職の皆さんに向けて記事を書きました。なおこの記事のテキストは100%人間の手によって書かれています。
AIを使えば3分ぐらいでプログラミング書けるんでしょ?
その通りです。何もないところからチャットアプリやテトリスや3Dゲームなんかを30秒くらいで書いてくれるようになりました。しかしながら御社のソフトウエアの続きを依頼すると、30分かけた結果動かないし指示に対する理解も間違ったコードを出力したり既存の大事なコードを削除したりします。
これはどういうことかというと、人間でも同じなのですが、空白のキャンバスを渡して「橋を描いてください」というとささっと描けると思います。
(誰がなんと言っても橋ですよね!)
しかしながら「この絵の中に橋を描いてください」
と言われると急に難易度あがりますよね。
- ラフスケッチ vs 丁寧に書き込まれた絵
- 既存のスタイルや作者の方針、構造の理解
みたいなのが必要です、前者は比較的AIにとって得意なのですが、後者はまったくできません1。AIはネット上に公開されている膨大なデータで学習して高い性能を出している反面、ネット上に公開されてないあなたの会社のプログラムコードについての知識がないからです。
そのため、AIコーディングエージェントとよばれるツールは、自分が1回に読み取り可能な文字数(例えば7ファイル合計1万文字)のみ読み出して、そこから推測できる範囲で続きを書きます。一般的に企業のコードは数十万、数百万文字とかもっとたくさんのコードが埋まっていますので、その中からどの1万文字をピックアップすればまだマシな結果が出るかがチャレンジとなっているのが現状です。
逆にいうと既存のコードが1万文字とか、その程度で表現できているくらい小さな規模のプログラミングは無双しますので、PoCなどには最適です。
でもAI活用してちょっとは生産性をあげたりはできないの?
もちろんできます。世の中のAI活用企業のほとんどはこちらです。部品に区切れば大規模な開発でも小規模な開発でもやることはほぼ同じなのでAIの性能を享受できます。
例え話ばかりで恐縮ですが、フランス料理店に例えると「春をイメージしたフルコースを作って」といった雑な指示ではなく、「たべごろの菜の花を選別して」「食器のおすすめをこのカタログから5案だして」のような細分化した小さな指示では大規模な開発現場でも性能を発揮します。フルコースを作るのに10品×20工程で200工程あるのであれば、200回AIの支援を受けることで生産性が上がる可能性があります。
いいですね、では何をすればいいですか?
はい、各エンジニアにAIを買ってあげてください。Github Copilotというツールがまずは王道です。Microsoftが作っているCopilotの開発者版で月3000円くらいです。ほかにもAIに詳しいエンジニアが〇〇というツールが使いたいと言ってきたら、徐々にお試し導入しましょう。
AIツールは1、2週間ごとに性能が上がった新しいツールが出てくるので、3ヶ月に1回程度企業では見直すと良いでしょう。どのツールも使い方にはそんな大差はないので、複数ツールを同時にいれるよりは1つ2つのツールを全員が使いこなせるようになってから次に行くといいでしょう。
エンタープライズ企業の皆さんは、もう一桁くらい手間とお金がかかります。MS AzureやAWSの営業に相談してコンプライアンス上統制の効くAIツールの導入について相談してください。あるいは、外部の会社2とコラボして既存の企業資産を食わせない感じでPoCプロジェクトをフルAIでやってみるといいでしょう。
生産性の上がる工程と上がらない工程を見極める
そうして、AIツールを導入して、なんとか活用せよ!週に1回AIを活用した経験について集まって情報共有会をせよ!と雑にオーダーするだけで、エンジニアたちは他の職種よりはまともに使いこなしてくれるでしょう。
そうして、(先ほど例えた、200工程のなかで)AIの支援を受けると生産性があがる工程と、人間がやったほうが早い工程を見分けられるようになります。たとえば「〇〇作りたい」と思ってからそれが世に出るまでには、要件定義、画面設計、基本設計、セキュリティ、プログラミング、単体テストやシナリオテスト、運用マニュアル作り、マーケや広報連携、インフラ調整みたいなたくさんの工程があり、それぞれの工程の中にも細かいタスクがあるわけです。
「プログラミングをAIに書かせる」というところばかりに注目が集まっていますが、実はそれ以外の工程がPoCではない開発業務においては生産性を向上できる可能性があります。
どこの現場も人不足だから
そもそもエンジニアに時給何千円、何万円も払う理由は高度なことをやってもらうからであって、誰でもできる(ように見えて実は別のスキルのいる)進捗報告書作りに時給を投下してもらうのはもったい無いですよね。そういう仕事こそAIにさせましょう。
エンジニアが作った「機能」に対する専門用語が多用された説明を読み取らせて、ビジネス職が欲しいと考える「価値」という視点から一般人向けの進捗報告書をつくらせると言ったことができます。
他にも、アイデアはめっちゃあるけど、エンジニアに上手に説明できない企画者が、プログラミングAIを活用して自分でモックアップを作っちゃう。さっき説明したように既存のシステムを無視してゼロから作るモックアップはAIはめちゃくちゃ得意なので、それを活用して非エンジニアがディレクション用に活用するというわけです。
いま多くの会社は人不足です。指示を細かく出せば動いてくれる人材はいても、未知の業務や目標を達成するという抽象度の高い仕事ができる人が足りません。それらの仕事のうちいくつかは、AIの支援によって解消できるでしょう。
とくに、AIは翻訳が得意なので、技術職や営業職、経営企画職や法務など、同じことがらでも見るべきポイントが違う人たちがコラボレーションして一つのものを作り上げる企業の現場においては、部署間のコミュニケーションにAIを使ってみるというのは最初の第一歩としておすすめの取り組みです。
まとめると
- 既存の巨大なものの上にあらたに何かを足すのは、人間でもAIでも大変
- まっさらなものから作るのは人間も楽だけどAIは特に得意
- PoCや設計書としてのAI活用はおすすめ
- 開発生産性向上は山ほどAI活用ポイントがある
- 普通の仕事は何かをやり遂げるため200工程くらい余裕である
- まずは著名なAIツールを導入してみんなで使いこなす
- 200工程のうち20工程でも生産性が倍になれば儲け物
- 開発といってもプログラミングはそのごく一工程でしかない
- 人不足の時代、抽象度の高い仕事をAIの支援を受けて皆ができるようになりましょう!
おまけ
やっぱり既存のものに追記できたとしても、さまざまなビジネス要件まで満たして追記するのは難易度が高いことがわかりますね!