AI時代に課題となる、開発プロセス全体の複雑さ
近年のAIの進歩は目を見張る。ほんの2年前は深い知識や経験が必要だったタスクでも、AIがあればものの数分でできてしまう。例えば、自然言語処理エンジンを構築することなく、LLM APIでチャットボットが作れてしまう。また書類をスキャンしてPDFに変換し、重要な部分だけ取り出してまとめることも可能だ。データベースへのアクセスもSQLを書くことなく「こういったデータがほしい」とリクエストすればデータ抽出できてしまう。画像、音声、動画などのメディア生成も自然言語による指示で簡単に行える。
複雑な機械学習パイプラインを構築しなくても、商品や記事のおすすめを表示するレコメンデーションエンジンを作れるようになった。これまでは、顧客や読者を理解することに多くの時間や労力をかけて作っていたにも関わらずだ。
AIの質は短期間で劇的に向上することもある。ほんの少し前まで「いまいち」だったAIモデルの出力が、ある日突然向上して驚いたことはないだろうか。出力する量も速さも人間とは比較にならないほどだ。
自然言語で指示できるからこそ、LLMとのコミュニケーションは開発者の重要な役割になる。最近よくLLMは新人に例えられたりする。経験や知識がまだ浅いところが見受けられるものの、周囲が「自社の事業はこう」「こういう時はここに着目する」とポイントを教えれば、LLMはより適切な回答を返せるようになる。
コーディングにも当てはまる。AIはコーディングが大得意であり、質も日々向上している。一例としてはGitHub Copilotなどが挙げられるが、コード作成はかなり任せられるレベルと言えるだろう。「ただしAIが書いたコードをチェックするのは人間」と草薙氏は念を押す。
実際、職場の新人がAIで素早くコーディングできるのはいいが、シニアエンジニアが大量の不確実なコードをレビューする必要があり、ボトルネックになっているという話をよく聞く。人間が書こうがAIに書いてもらおうが、コードにはレビューが不可欠なので、何かいい解決策を見いだしたいところだ。
問題はコーディングだけではない。アプリケーション開発には、外部のSDKの組み込み、API経由での他サービスとの連携、インフラの選定、データストアの整備……など、ボトルネックになる箇所は枚挙にいとまがない。
こうした実情から草薙氏は「AIにコードを書かせるだけなら非常にスムーズだが、ソフトウェア開発のプロセス全体を改善していくことが必要だ」と話す。
あらためて従来型ワークフローのスムーズではないところを挙げてみよう。コードファーストのIDEでコードを編集すること。コードをGitHubのリポジトリにコミットし、そこから別の人がフォークしたり、READMEを閲覧して読み解いたりすること。初心者にはこうしたGitの使いこなしはそれなりに難しい。また手動によるライブラリやパッケージ管理、SDKの組み込みもある。特にプロジェクトの規模が大きくなればライブラリの依存関係は複雑になる。バージョン管理やSDKの組み込みも同様だ。
またアプリケーションロジックは事前定義したものしか動かせない。できないというよりは安定性を重視したら、それ以外は動かさないのが通常だ。そして、ローカルでビルドして、クラウドにデプロイする作業もある。最後に重要になるのが、成果物を他の人も使えるようにコード、API、ドキュメントを共有することだ。コードを書くことは簡単になっても、まだアプリケーション開発には複雑で労力がかかる作業が山積みになっている。

