必須スキルとしての「AIツールのオーケストレーション」とその不確実性について
はじめに
現代の知的作業環境は、かつてない規模の変革の渦中にあります。AIツールの普及とインターネットによる利用可能なリソースの増加は、私たちの作業環境に根本的な変化をもたらしています。この変化の最前線にいるのが、ソフトウェア開発の分野です。その経験から、私たちは今後の知的作業全般における変容を理解し、それに適応するための重要な示唆を得ることができます。
本稿では、短納期省工数で成果を出す、そのためにAIツール群やインターネット上にあるリソースを活用する、という構図を基本として設定します。そのうえで、どのような負担が我々に課されるのかを言語化し、適切なフレームでそれを捉えることを目指します。
執筆のきっかけ
私たちは短期ハッカソンであるSpajam 2024の第5回予選で優秀賞を獲り、本選に出場しました。その予選と本選の際にChatGPTをはじめとするAIツールを多く利用し、また、その利用方法について深く内省する機会がありました。 また、その件について、メンバーが振り返り記事を書いたのですが、私はその内容について以下のように返答しました。
上記のコメントを考えるうちに明確になった「不確実性」への認識について、ナレッジワーカーやビジネスプレイヤーなどに共有できるものがあると考えたため、自分の現状の認識と、必要とされる対処を以下に書き記しておこうと思います。
開発環境における2つの不確実性
AIツールがもたらすボラティリティ
まず、ソフトウェア開発について中心的に取り扱い、最後にVUCAへの向き合い方について考えたいと思います。
AIを用いた開発環境における第一の特徴は、AIツールがもたらす予測不可能性(ボラティリティ)の劇的な増大です。適切なAIツールの選択と活用によって、従来であれば数時間かかるような作業が15分以内に完了する可能性がある一方で、プロンプトエンジニアリングに半日を費やすといった可能性も含んでいます。この振れ幅は、プログラミングに限らず、文章作成、データ分析など、他の知的作業においても今後同様となるでしょう。
たとえば成功例として、Spajam 2024での予選では、次のようなものをAIを使って迅速に作成しました。
https://gyazo.com/1ee7b7d4ee7568caf01f3671fe1ba5cd
開発の初期段階では、プロジェクトのコンセプトが明確で、基本的なプログラミングの難易度は低いと判断しました。他2名のチームメンバーとの詳細な話し合いを通じて、画面分割や機能要件の整理を行い、コア機能の実装に着手しました。開発において最も技術的な課題となったのは、ディスプレイのアニメーション制御のための設定画面の実装でした。この部分は自由なアニメーション制御を提供することが必要とされ、プロジェクト内で最も複雑な要素として特定されました。
https://gyazo.com/81e709b569a7908e44a6f60b4c98590d
この課題に対して、以下のような手順と組み合わせで AI を活用しました:
https://gyazo.com/7ee1fb864e8305398beff7895f851932
(プロンプトエンジニアリング)
1. まず、要件を音声入力で詳細に説明し、その書き起こしを作成
(生成と実験)
4. 生成されたコードを実機でコンパイル・動作確認
5. 必要に応じて AI に修正を依頼し、要件を満たす実装が得られるまで反復
成果物として、①画面のレイアウトおよびデザイン、②アニメーション設定のデータモデル、③適切なイベントトラッキング、をすべて満たすReact Native コンポーネントが作成され、ほぼ完璧な成果が得られました。
このアプローチにより、複雑な設定画面の実装を効率的に完了することができ、プロジェクト全体の成功につながりました。音声入力から AI による要件整理、コード生成、そして実機での動作確認という一連のプロセスにかかった負担は相当少なく、技術的にも少々難易度のあった部分を効果的に突破できました。実装にかかった負担が少ないことで、要件の試行錯誤やプレゼンへの準備などに時間を使うことができました。
上記の内容は成功例ですが、本選ではChatGPTツールの利用があまりうまくいかずデバッグに無際限に時間を使ってしまいました。そのことが本選で賞を逃す一因になったと分析しています。このように、AIツールの効果的な利用が勝負を分けるというような事態が、今後も頻発するようになるだろうと予感しています。
以下では、短納期省工数が必要である、または強く望まれるような状況をある程度前提にしつつ、「短納期省工数をAIツール群を用いて実現することがどれだけ負担が大きいことか」ということを慎重に確認していこうと思います。
リソースの豊富さがもたらす複雑性
https://gyazo.com/ddca3342cf39206535197a3c0b3e950a
第二の特徴は、利用可能なリソースの増加です。プログラミングで言えば、オープンソースのライブラリやフレームワーク、クラウドサービスは増加の一途です。その組み合わせは私たちに可能性を提供すると同時に、新たな種類の不確実性をもたらしています。「手元で地道に開発を行う」という従来型のアプローチがむしろリスクともなります。前述したように、適切なリソースを探索したり、AI出力を調整しながら活用する効率性は、問題への独自な対処による堅実性のメリットを大きく上回る可能性があるためです。
作業プロセスの本質的な変化
「理解」と「修正」の変質
table:左右にスクロールできます
従来の作業プロセス AIを活用する場合
既存のコードに対して細かく変更を加える AIが1ファイル単位でまるごと生成
変更差分に基づいて作業状態を認識 生成のたびにファイルを最初から理解し直す
AIを活用した作業における「理解」と「修正」のプロセスは、従来とは異なる性質を持ちます。例えば、AIが生成したコードを修正する際には、読み慣れたコードを破棄して毎度最初から理解し直すという、反復して行うにはかなり集中力を要する作業が必要になることがあります。これは、既存の作品を改善する際の、比較的細かい変更差分による作業状態の認識と対処という従来の作業プロセスが、AIの導入により負担の大きいプロセスとの選択を迫られるようになるということです。
ここで重要なのは、まず動作や自動テストを確認するからコードを理解し直す必要はないとかそういうことではありません。AIへの修正提案や再生成指示、時間をかけた手元でのデバッグなどの複数の手段がある中で、眼の前のコードをただ理解すればよいというわけではなくなったということです。
エラー時の複数の対応手段の例:
コンパイルによる動作確認
手元でのデバッグ
AIへの修正提案
コードの再生成
プロンプトの変更・スレッドの再作成
コンテキストの追加
etc.
各段階における不確実性の特徴
開発プロセスの各段階で、AIツールを利用する際の不確実性は異なる形で現れます。
構想段階でのAIツール利用では、一方では膨大な情報を即座かつ高品質に計画にまとめていく可能性が見込めるでしょう。その一方では、時間をかけて情報を投入しても表面的で浅い出力に終始するかもしれない、という振れ幅があります。
実装段階では、既存リソースの探索、AIツールの活用、手元での実装という難しい判断に直面します。
改善段階では、AIによる極端に効率的な改善の可能性と、出力の一貫性の無さによる終わりの見えないプロンプトエンジニアリングのリスクが存在します。
要求される判断力
このような不確実性は、難しい判断を絶えず我々に要求します。従来の「確実な実装力」から「不確実性下での判断力」への重心の転換を意味します。個々の作業における選択―例えば、AIに完全な書き直しを依頼するか、部分的な改善を依頼するか、既存のリソースの探索に切り替えるか、あるいは人手で対応するか―これらの判断は、それぞれ異なるリスクとリターンのバランスを持っています。
賭け
さらに重要なのは、この「判断力」が、単なる能力の問題を超えている点です。それは、プロジェクトの各フェーズにおける「賭け」の選択でもあります。特定のアプローチに時間を投資するか、新しいリソースの探索に時間を割くか、あるいは既存のソリューションの組み合わせに注力するか―これらの選択には、それぞれ異なる性質の不確実性が伴います。
これらの状況をまだ万人が理解し認識するに至っていないのは、ハッカソンのような競技性の高い、極端な短納期・省工数が求められる状況にまだ追い込まれていないからでもあると考えます。それはあくまで相対性の問題でしかなく、今後AIツールを駆使した方法が広まるにつれ、開発チームの生産性は(大局的には大きく加速する方向に振れつつも)前述のような予測不能性が出現するようになるのではないでしょうか。
このような環境は、まさにVUCA(Volatility:変動性、Uncertainty:不確実性、Complexity:複雑性、Ambiguity:曖昧性)の時代を体現しています。ここでの成功は、不確実性を排除することではなく、それを受け入れた上で、限られた時間と労力を最適に配分する能力に依存します。プログラミングの分野で現在起きつつあるこの変化は、今後、他の創造的作業においても同様に現れてくるでしょう。その意味で、現代のソフトウェア開発における経験は、AI時代における知的作業の本質的な変化を理解し、それに適応していくための重要な示唆を与えてくれていると思います。
このような事態にどのように向き合うべきでしょうか。特に厳しい条件で戦っているビジネスプレイヤーやクリエーターへ、あるいは、そういった事態に追い込まれた未来のホワイトワーカーに向けて、この込み入った状況を「オーケストレーション」から整理してみたいと思います。
不確実性への対処:オーケストレーション
オーケストレーションの本質
このような複雑な環境下では、私たちには「オーケストレーション」というフレームワーク、そして、「我々には高度なオーケストレーションが要求されている」という認識が必要です。オーケストレーションとは、あるAIモデルが他の複数のモデルを使役し、最終的に目的を達成させるようなセットアップも指すと思いますが、今回述べているのは人間によるAIツールのオーケストレーションです。これはたとえばプログラミングでいえば、複数のAIツール、既存リソース、そして従来の開発手法を適切なタイミングで組み合わせ、統合的に活用していく能力を指します。
オーケストレーションの要素
良いツールの目星がついている、という状態でなお、実際の実践場面で問われたのは次のような要素でした:
1. AIツールの特性理解
2. プロンプトエンジニアリング
3. リソース統合
4. 柔軟な方針転換
5. リスク管理
上記それぞれに技能と経験が必要です。
AIツールの特性理解
各ツールの強みと限界を理解し、適切な使用場面を見極める能力
様々なツールを知っていることが前提
それぞれのツールを用いてプロンプトエンジニアリングに取り組んだ経験が必要
プロンプトエンジニアリング
効果的な表現、および、十分な情報量を効率的にLLMに投入する能力
表現選択には一般的な傾向と対策がある
ツールごとに細かく特性が異なる
リソース統合
既存リソースとAIツール(とその生成物)の組み合わせと運用
ドメインの知識・技能が必要
ex: プログラミングならコーディング能力があればあるほど望ましい
方針転換
状況に応じた迅速な戦略の見直しと遂行
公開されているリソースやAIサービスの品質が向上すればするほど有力な手段
頭を切り替える能力
プロジェクトに区切りをつけて整理しながら賭けに出るタイミングを伺う態度
リーダーシップ
コミュニケーション能力
リスク管理
上記全ての選択肢に伴うリスクとリターンの適切な評価と、プロジェクト制約の考慮
とにかく総合的に判断できる能力
AIツールの利用と、地道な従来型作業への回帰判断
(チームの心理的安全性はリスク管理に影響するため、何気に重要です。)
Takeaways: 役に立ったと思うこと一覧
AIツールの特性
Claude 3.5 Sonnet:
プロンプトへの追従性が高く、工夫をしなくてもかなりの頻度で使えるコードやレポートを書いてくれる
他もそうだが、以前から書き起こしの誤認識に振り回されないことは確認済み
メイン。
ChatGPT o1:
箇条書きで要件を定義しておくと、相当な精度でコードを書いてくれる
Genspark Autopilot Agent:
検索規模が大きく、面倒な検索を代行してくれる。
知りたいことを命題として表現できれば基本的な調査は任せられる
プロンプトエンジニアリング
音声書き起こしを使うと大量の情報を伝えやすい
音声の書き起こしをAIに要件定義としてまとめさせ、それをGPT o1に任せるのが以前から有望視していた
方針転換・リスク管理
特に本選では、フレームワークの変更などの大きな賭けにでなかった。その点は反省
どのメンバーも方針転換の可能性を反省会で口にしていたので、少し手元の作業にこだわりすぎたと思う
VUCAへの対応としてのオーケストレーション
このようなオーケストレーションの視点は、VUCA(Volatility:変動性、Uncertainty:不確実性、Complexity:複雑性、Ambiguity:曖昧性)の時代における基本的な対応戦略となります。それは、個々のツールや手法の不確実性を、より大きな文脈の中で相対化し、対峙しようとする姿勢を誘導するからです。 オーケストレーションという言葉を用いたのは、単に複雑な現状を羅列するためではなく、細部や堅実さに囚われすぎず、VUCAと正面から対決し続けることの意義を強調したかったからです。
結論:新しい時代の知性に向けて
プログラミングの分野における現在の経験は、AI時代における知的作業の本質的な変化を理解する上で、重要な示唆を与えています。それは、従来の「確実・堅実な実装力」から「不確実性下での判断力」への転換と、それによって得られる(かもしれない)飛躍的な成果、それに伴う不確実性に取り組むオーケストレーションという枠組みの重要性を示唆しています。
重要なことは、(もはや万人が認識していることですが、)AIツールは万能ではないということです。しかし万能でないにせよ、人間側の工夫で飛躍的な成果も期待できます。このパラダイムシフトにおいて、オーケストレーションは単なる管理手法ではなく、不確実性を含む現代の作業環境の本質的な姿勢・枠組みとなります。プログラミングの分野での今回の体験は、今後、他の創造的作業領域においても重要な示唆となることでしょう。
私たちは今、知的作業の新しい時代の入り口に立っています。この時代において成功を収めるためには、不確実性を排除しようとするのではなく、それを受け入れた上で、オーケストレーションを通じてVUCAと対峙していく姿勢が求められるのです。
https://gyazo.com/2720193bf6d481590f28e9c3c9da1bc2
本選での試行錯誤の様子。コンセプトは「禅」だった。