一般的に、生成AI搭載アプリを開発する場合、プログラミング言語、フレームワーク、データサイエンスなどが必要だと考えられています。しかし、実はそのすべてにローコードで対応できるのです。
ローコードでは、開発者が視覚的なソフトウェア開発手法でアプリケーションを作成でき、従来の複雑な手作業でのコーディングは最小限ですみます。ユーザーフレンドリーなドラッグ&ドロップ形式の開発環境により、コーディング経験の多寡にかかわらず気軽にアプリを開発できます。このセクションでは、従来の手法で生成AI搭載アプリを開発する際に必要なツールやスキルと、ローコードプラットフォームでの開発方法について説明します。
結論から言うと、従来のコードによる生成AIアプリの開発は複雑で、AI/機械学習エンジニアリング、データサイエンス、データベース管理、人間行動といった幅広い領域にわたるスキルが必要になります。ローコードがどのようにして生成AI開発を大幅に簡素化するかについては、ローコードによる生成AIアプリ開発の加速に関する章をご覧ください。
従来の手法を使用した生成AI搭載アプリの開発
生成AIアプリケーションは、クラウドテクノロジー、ソフトウェア開発言語、データサイエンス、データ分析、DevOps、処理、AIモデルが組み合わさったもので、大規模言語モデル(LLM)という特殊な機械学習も用いられています。従来の機械学習は相当のモデルトレーニングを必要としましたが、LLMはすぐに複数のユースケースを解決できます。LLMを利用すると、AIの専門家がいなくてもAIを活用してモデルを構築したり機能を作成したりすることができるのです。LLMを使用しない場合、開発者はサーバーレス、Infrastructure as Code、機械学習のコンセプト、アルゴリズムなど、高度な手法に精通しておく必要があります。たとえば、教師あり機械学習と教師なし機械学習、生成AIフレームワーク、ディープラーニングアーキテクチャ、最適化といったものです。
生成AIアプリケーションの開発プロセスでは、どのモデルを使用するかを理解したうえで、独自のモデルを構築するか、公開されているモデルを使用するかを決定する必要があります。また、生成AI用に使用できるソフトウェア開発フレームワークについても熟知しておく必要があります。
生成AIの用語の説明
生成AIの使用にあたっては、新しい用語を覚える必要があります。理解を深めるうえで重要な概念をいくつか紹介します。
- 基盤モデル - 生成AIが使用するモデルは「基盤モデル」と呼ばれます。大規模で汎用性が高く、テキストの記述や画像の分析といった作業に適用できる広範なデータでトレーニングされています。その数は、AIエキスパートの実験的な取り組みにより増加し続けています。
- 大規模言語モデル(LLM)は基盤モデルの一種です。大規模な記述コンテンツを生成し、完成させます。たとえば、ChatGPTやClaudeはLLMを利用してまとまったテキストを生成します。
- ベクトル検索は検索機能の一種です。ドキュメントやクエリをベクトルとして表現することで、テキストデータの検索性能を高めることができます。テキストドキュメントの大規模なナレッジベースからコンテンツを取得する際の新標準となっており、生成AIユースケースではこれをLLMに渡します。
- 検索拡張生成(RAG)は、LLMとコンテンツ検索の併用により、独自のデータソースをベースにしたユースケースを実現するAIの手法です。RAGでは、ナレッジベースから(ベクトル検索などを使用して)テキストを検索し、インストラクションとともにLLMに渡して回答を生成します。カスタマーサポートナレッジからデータを取得し、そのコンテンツをLLMに渡して、ユーザーからの質問に対して情報に基づいた回答を生成するチャットボットがその一例です。
- 拡散モデルは、画像を生成したり、動画や画像を合成したりする際に使用されます。DALL-E 2やMidJourneyなどがよく利用されています。
- Few-shotプロンプティングでは、プロンプトに例を含めて、どのような出力構造、トーン、スタイルを求めているかを正確にモデルに示すことで、LLMの出力を改善します。
従来の生成AI開発の言語
生成AIアプリ開発にどのプログラミング言語が最適かについては、多くの意見があります。こうした中でも、OpenAI、Anthropic、Meta、Cohere、Googleの開発チームのエキスパートが、生成AIアプリ開発においてよく使用されていると一様に認める言語が5つあります。AIサービスやバックエンドを提供しつつ、ユーザーインターフェイスの作成には従来のコーディング言語を利用するというケースもあります。
Python
PythonはAIや生成AIの開発においておそらく最も広く使用されている言語です。優れた汎用性、シンプルさ、読みやすさ、データ視覚化、分析機能を備え、コミュニティで幅広いサポートを受けることができることがその理由です。自然言語処理(NLP)、予測モデリング、画像認識、顔検出、チャットボットなどで使用できます。ただし、コンピュータへの負荷が大きいタスクを扱う生成AIで、プロジェクト要件を慎重に検討する必要がある場合は、Pythonが最適解にならないこともあります。
JavaScript
Pythonと同様、JavaScriptは入手しやすく汎用性も高いため、生成AI向けによく使用される言語です。JavaScriptはWebブラウザで直接実行されるため、インターネットに接続するあらゆるデバイス上で実行できるインタラクティブな生成AIアプリケーションの作成に使用することができます。また、幅広く導入されていて大規模なコミュニティがあるため、AIタスク向けに設計された多くのライブラリやフレームワークを利用できます。
R
統計計算やデータ分析においてよく利用されるRには、生成モデリング用のパッケージが用意されています。これらのパッケージを利用することで、特にジェネレーティブアートのような生成AI開発用データの処理や視覚化を行うことができます。Rはデータサイエンス言語であるため、開発者が習得するまでに時間がかかります。
英語プロンプト
英語プロンプトはそれ自体がプログラミング言語というわけではありません。しかし、人間の言語で効率的なプロンプトを作成することで、生成AIアプリケーションが適切な「回答」を出せるようにすることができます。プロンプトエンジニアが生成AIツールの他の入力をうまく操作できる入力を作成することで、モデルがマーケティングメールの作成、コードの生成、顧客とのやりとり、デジタルアートの作成などを行えるようになります。プロンプトエンジニアリングにおいては、言語力、問題解決スキル、AIフレームワークやNLPの知識、クリエイティブライティング、倫理観、イテレーションテストへの注力のほか、人間の認識や心理、社会学に関する基本的な知識が求められます。
プロンプティングの例: Chain-of-ThoughtとTree-of-Thought
Chain-of-Thought(CoT: 思考の連鎖)プロンプティングは、LLMの機能を強化して複雑な問題を解決できるようにするために使用される手法です。プロンプトを小さくて管理しやすいステップに整理し、テップを明示的に表現してから結論を出します。CoTプロセスの概要を以下に示します。
- 問題を分割する: モデルが問題を論理的なステップに分割できるようにプロンプトを構成します。
- ステップごとに判断する: モデルがステップを個別に処理し、判断プロセスを明確にしながらステップを1つずつ進めます。
- 結論を出す: モデルが各ステップのインサイトを統合し、最終的な解決策にたどり着きます。
Tree-of-Thought(ToT: 思考の木)は、CoTのコンセプトをベースに考案されたものです。この手法では、アイデアをツリー構造のように作成します。ツリー内の各アイデアが問題解決のステップとなり、LLMが各ステップを評価して妥当かどうかを判断します。このアプローチは、人間が試行錯誤しながら問題を解決する方法を参考にしています。LLMでは、この手法を使用して次のようなことを実行できます。
- 様々なアイデアの検討。
- 必要に応じた再評価。
- 検討段階の案の自己評価。
- プロセスを継続するか変更するかの判断。
- エラーの自動修正。
- 知識の蓄積。
その他の言語
開発者コミュニティやフォーラムを見ていると、一般的に生成AIと関連付けられない他の言語も使用されていることがわかります。たとえば、IBMのエンジニアリングコミュニティでは生成AIアプリケーションにおけるJavaの利用が増えています11。代表的な生成AI環境の中には、Java SDKに対応しているものもあります。この言語は、ビジネスソフトウェアに組み込むAIエージェントや分析機能を作成する場合や、レコメンデーションエンジンを強化する場合に適しています。
コンピュータへの負荷が大きいタスクを生成AIで扱う場合に、C++を選択する開発者もいます12。C++を使用すると簡単なハードウェアリソースの制御を行うこともでき、大規模な生成モデルのトレーニングを効率よく行うことができます。生成AIにおけるC#スキルの利用に関心がある方向けに、利用方法を示したチュートリアルもあります13。
1つの言語だけでは不十分
生成AIが搭載されたアプリケーションの開発や既存のアプリケーションへの生成AIの組み込みを行う際は、ほとんどの場合、1つの言語だけでは不十分であると認識しておくことが大切です。開発者は少なくとも2つの言語の使用を想定しておくべきです。
従来の手法での生成AIアプリケーション開発に必要なスキル
開発者には、従来の生成AI言語のほかに、AIフレームワーク、ライブラリ、手法などを使用する手腕と知識が求められます。
AIフレームワーク
AIフレームワークは、AIモデルをすばやく簡単に構築・実装するための基本的なAPIやツールを提供します。生成AI開発においてよく使用されるフレームワークには、LangChain、Haystack、LlamaIndexといったものがあります。
LangChain
LangChainは、生成AI向けに作成されたオープンソースフレームワークです。PythonベースとJavascriptベースのライブラリで利用でき、ソフトウェア開発者が大規模言語モデル(LLM)を使用してアプリケーションを作成する際に役立ちます。LLMをプロジェクトに統合する作業を単純化するツールやAPIが用意されています。
チェーンという自動化されたアクションによってユーザーのクエリをモデルのアウトプットに関連付けるというのが、LangChainの基本コンセプトです。チェーンを使用することで、複数のコンポーネントを組み合わせて一貫性のあるアプリケーションを作成し、複数のデータソースを接続して、独自性のあるコンテンツを作成することができます。また、様々なAIコンポーネントをまとめて、コンテキストに沿った応答を提供することも可能です。
Haystack
Haystackは、大規模なドキュメントコレクションに対してインテリジェントに動作する本番用のLLMアプリケーション、検索拡張生成パイプライン、最先端の検索システムを構築するためのオープンソースのPythonフレームワークです。大規模な検索システムや対話型AIを開発する場合、LangchainよりもHaystackのほうが便利だという意見がHaystackユーザーから上がっています14。
LlamaIndex
LlamaIndexは、GPT-4などLLMの機能を拡張できるように設計されたオーケストレーションフレームワークです。プライベートデータやドメイン固有のデータをインデックス化してLLM用に最適化された形式にし、RAGをサポートします。ユーザーが生成AIに対して質問を行うと、生成AIが大規模なデータコレクションから関連する情報を検索し、正確かつ詳細な回答が提示されます。このように、特に最新の知識や特定の知識を必要とするトピックに関して、適切な応答を行えるのです。
Hugging Face
Hugging Faceは一般的なAIオーケストレーションフレームワークではありませんが、生成AIアプリケーションの構築に利用されています。トレーニング済みモデルの大規模リポジトリとコミュニティ主導のアプローチを提供し、共有や開発をモデル化します。Hugging Faceモデルは特定のタスクに合わせた微調整が可能であるため、開発者の貴重な時間やコンピューティングリソースを節約できます。Model Hubは、NLPモデルの共有、検索、コラボレーションを行う際の一元的なハブとなります。Hugging Faceの「Transformers」ライブラリには、トレーニング済みモデルを操作するための使いやすいAPIが用意されており、開発者が最小限の労力で強力な言語機能をアプリケーションに組み込むことができます。
ディープラーニングフレームワーク
Pytorch、TensorFlow、Kerasなどのディープラーニングフレームワークで開発された生成AIアプリケーションもあります。たとえば、PytorchはChatGPT-4を搭載しており、TensorFlowやKerasは敵対的生成ネットワークの開発に使用されています。敵対的生成ネットワークとは、異常検出、データ拡張、画像合成、テキスト/画像変換において使用される基盤モデルです。ただし、これらのフレームワークは生成AIに重点が置かれたものではなく、現在の生成AIプロジェクトで使用されることはそれほど多くありません。
自然言語処理手法
自然言語処理(NLP)では、コンピュータが人間の言語を理解、解釈、生成できるようにトレーニングし、人間の言語と機械言語のギャップを解消します。NLPには多くの手法(14種類)があり、現在も増加しています。たとえば以下のようなものがあります。
- トークナイゼーション: テキストを分割して単語やサブワードなどの小さい単位(トークン)にします。
- 品詞タグ付け: センテンス中の各単語に、名詞、動詞、形容詞などのタグを付け、それぞれの役割やコンテキストがわかるようにします。
- 固有表現抽出: テキスト中の人物、組織、場所、日付などの名前を識別して分類します。
- センチメント分析: テキストで表現されている肯定、否定、中立といった感情を判定します。
- 言語モデリング: 統計モデルを構築し、テキスト生成などのNLPタスクにおいて使用される特定の言語の単語の配列を予測します。
大規模データの処理と保存
生成AIのモダンデータスタックは、様々なツールやテクノロジーが組み合わせられています。これらが、生成モデルのトレーニングやデプロイで使用するデータの収集、処理、保存、分析、利用を可能にします。主な要素には次のようなものがあります。
| リアルタイムデータストリーミングプラットフォーム | データレイク、データウェアハウス | 分散データ処理フレームワーク | データプレパレーション、特徴量エンジニアリング |
|---|---|---|---|
|
ユーザーインタラクション、センサー、関連する入力など様々なソースからのデータの収集・取り込みを容易にします。
|
構造化データと非構造化データ用の集中型リポジトリを提供します。
|
データの変換やクリーニングを行い、大規模バッチ処理やリアルタイムストリーム処理ができるようにします。
|
生データからの特徴量のクリーニング、準備、エンジニアリングを行います。特徴量エンジニアリングはトレーニング効果の高い生成モデルを実現するうえで重要です。
|
生成AIモデル/ アプリをデプロイするためのプラットフォーム
KubernetesとDockerは、生成AIを本番に移行して大規模な予測を提供できるようにするうえで不可欠なツールです。Dockerは、AIモデルと環境をコンテナにパッケージ化して、様々なコンピューティング環境で確実に実行できるようにします。Kubernetesはこうしたコンテナを管理し、デプロイ、拡張、運用を効率よく行えるようにします。これらのプラットフォームを使用すると生成AIアプリケーションのデプロイ・管理プロセスを効率化できますが、習得は容易ではありません。
従来の手法による生成アプリ開発の複雑さと難しさ
生成AI搭載アプリの開発に必要な言語やスキルは膨大であり、圧倒されてしまうかもしれません。しかし、根気と決意を持った開発者であれば、こうした言語やスキルを習得してすばらしいキャリアを築くことが可能です。ただし、習得に長い年月を費やすよりもよい方法があります。それがローコードの活用です。
生成AIスキルの習得方法
開発者が生成AIに関するスキルを身につけるための手段をいくつか紹介します。
- 大学の講座やオンラインプログラムなどの正式な教育
- プロジェクトやオープンソースへの貢献による実践経験
- 論文の参照、ブログの閲覧、専門知識を持つ他の開発者との交流、会議への参加による最新情報の把握
- 予測分析エキスパート、社会科学者、エンジニア、倫理学者とのコラボレーションによるデータ的、倫理的、社会的課題への対応
- StackOverflow、GitHubなどのコミュニティやSubredditでのサポートや助言の依頼
ローコードによる生成AIアプリ開発の加速と期待の高まり
ローコードプラットフォームは、従来のコーディングよりすばやくエンタープライズアプリケーションを開発しながらコストを削減できるという点で高く評価されています。生成AIアプリについても、一般的なアプリケーションと同じくローコードが選択肢となります。生成AIチーム、トレーニング、ツールに重点的に投資して開発を一から行うことも、ローコードプラットフォームを導入してすぐに着手することもできます。ローコードプラットフォームは、視覚的なインターフェイス、使いやすいコネクタ、ビルド済みのコンポーネント、ドラッグ&ドロップ機能を備えており、生成AIアプリの開発を行いたい(または行うよう依頼された)開発者に様々な可能性を提供します。
実行ではなく戦略への集中
ローコードを利用することで、開発者は生成AIアプリケーションをどう動かすかではなく、どのような機能を持たせたいかに意識を向けることができます。最小限の労力と最大限のスピード、簡潔さ、満足度で基盤モデルに接続できます。また、独自モデルを使用してアプリケーションを開発したいと考えているデータサイエンティストにとっても、ローコードは最高の選択肢のひとつとなります。
ローコードプラットフォームを使用すると、アプリやワークフローに簡単に生成AIを組み込むことができます。数回クリックするだけで最適なLLMやRAGを統合できるのです。また、Amazon Web Services(AWS)、Microsoft Azure、Google Cloud PlatformのGPT、LLM、生成AI機能向けのコネクタも提供されています。こうした接続が用意されているため、モデルの構築やフレームワークの選択を誰でも簡単に行うことができます。
さらに、ローコードでは開発者が独自のAIエージェントを、JavaやPythonのコードを記述したりLangChainライブラリを利用したりせずに作成できます。ローコードプラットフォームは、生成AIエージェントを作成して新しいアプリケーションや既存のアプリケーションに組み込むために必要な機能を提供します。顧客の質問に正確に回答できるサポートチケットアプリケーションやサポートの通話を要約できるセールスインテリジェンスアプリケーションといった生成AIアプリのクイックスタートライブラリを備え、エージェントの作成をさらに高速化するプラットフォームもあります。
ローコードで構築した生成AIアプリ
- あるメーカーは、ローコードのOpenAIコネクタを使用してChatGPTと従業員向けアプリケーションを連携させました。
- あるソフトウェア企業は、生成AI生成を利用してカスタマーサポートを提供し、チケットの解決を迅速化して、カスタマーエクスペリエンスを向上させました。
- あるeコマースアプリケーションでは、ローコードで開発された生成AIチャットボットで、ユーザーに注文のサポート、パーソナライズされたおすすめ、よくある質問への回答を提供しています。
- ローコードプラットフォームで開発した生成AI搭載のバーチャルアシスタントで、従業員が情報にアクセスし、タスクを効率よく完了させることを可能にしました。
- 営業用の生成AIアプリケーションで、Slackでの通話の要約、メールで最適な次のアクションの提案、Salesforceでの実行可能なインサイトの生成を行うことができます。
- ある開発コミュニティでは、複数のLLMに接続してフォーラムの翻訳を生成するユーザーエクスペリエンスが作成されました。
知っておくべきなのが、ローコードプラットフォームを使用するとAI生成やMLの基礎知識がない開発者でも生成AIアプリケーションを開発できるものの、基本的にこれはあまり望ましくないということです。確かに、ローコードを使用した場合、特に従来の開発と比べると大幅に複雑さが減りますが、それでも開発者には知識が必要です。
ローコードで生成AIアプリを開発する際に必要な知識
開発者がローコードを使用して生成AIアプリを開発する際に必要な知識は、従来の開発に比べればかなり少なく、コーディングやフレームワークに関する深い知識というよりは概念の理解が求められます。以下に例を示します。
- AIと機械学習のコンセプトに関する基本的な理解。具体的には、教師あり学習と教師なし学習、ニューラルネットワーク、自然言語処理などです。
- 生成AIモデルのトレーニングや評価を効果的に行うためのデータの収集、クリーニング、前処理の方法についての詳しい知識。データ連携、データ品質評価、特徴量エンジニアリングの仕組みに関する知識も必要です。
- ユーザーエクスペリエンス(UX)デザインの原則: ユーザーフレンドリーなインターフェイスと直感的なワークフローの作成は、生成AIアプリケーションを導入し、成功させるうえで不可欠です。開発者には、デザイン性が高く使いやすいアプリケーションを作成する力も求められます。
これらは生成AIアプリ開発にあたりローコードを検討すべき理由のほんの一部です。ただ、これらより注目すべきなのが、従来のコーディングは生成AIの勢いに押されて将来的に淘汰される可能性があるのに対し、ローコードと生成AIは共存できるという点です。
11Andre Tost 「Making the case for Java in Generative AI」(およびコメント) LinkedIn、2023年11月24日
12 「C++ Generative AI Inference: Production Ready Speed and Control」 ChemicalQDevice、2024年6月13日
12 Chris Pietschmann 「Build a Generative AI App in C# with Phi-3 SLM and ONNX」 Build Five Nines、2024年5月18日
14 Sarfraz Nawaz 「Langchain vs Haystack: Which is Best for AI development?」 LinkedIn、2024年4月1日