Generative Chapter 2: How to Build Apps with Generative AI
一般的に、生成AI搭載アプリを開発する場合、プログラミング言語、フレームワーク、データサイエンスなどが必要だと考えられています。しかし、実はそのすべてにローコードで対応できるのです。
ローコードでは、開発者が視覚的なソフトウェア開発手法でアプリケーションを作成でき、従来の複雑な手作業でのコーディングは最小限ですみます。ユーザーフレンドリーなドラッグ&ドロップ形式の開発環境により、コーディング経験の多寡にかかわらず気軽にアプリを開発できます。このセクションでは、従来の手法で生成AI搭載アプリを開発する際に必要なツールやスキルと、ローコードプラットフォームでの開発方法について説明します。
結論から言うと、従来のコードによる生成AIアプリの開発は複雑で、AI/機械学習エンジニアリング、データサイエンス、データベース管理、人間行動といった幅広い領域にわたるスキルが必要になります。ローコードがどのようにして生成AI開発を大幅に簡素化するかについては、ローコードによる生成AIアプリ開発の加速に関する章をご覧ください。
従来の手法を使用した生成AI搭載アプリの開発
生成AIアプリケーションは、クラウドテクノロジー、ソフトウェア開発言語、データサイエンス、データ分析、DevOps、処理、AIモデルが組み合わさったもので、大規模言語モデル(LLM)という特殊な機械学習も用いられています。従来の機械学習は相当のモデルトレーニングを必要としましたが、LLMはすぐに複数のユースケースを解決できます。LLMを利用すると、AIの専門家がいなくてもAIを活用してモデルを構築したり機能を作成したりすることができるのです。LLMを使用しない場合、開発者はサーバーレス、Infrastructure as Code、機械学習のコンセプト、アルゴリズムなど、高度な手法に精通しておく必要があります。たとえば、教師あり機械学習と教師なし機械学習、生成AIフレームワーク、ディープラーニングアーキテクチャ、最適化といったものです。
生成AIアプリケーションの開発プロセスでは、どのモデルを使用するかを理解したうえで、独自のモデルを構築するか、公開されているモデルを使用するかを決定する必要があります。また、生成AI用に使用できるソフトウェア開発フレームワークについても熟知しておく必要があります。
従来の生成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の知識、クリエイティブライティング、倫理観、イテレーションテストへの注力のほか、人間の認識や心理、社会学に関する基本的な知識が求められます。
その他の言語
開発者コミュニティやフォーラムを見ていると、一般的に生成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アプリについても、一般的なアプリケーションと同じくローコードが選択肢となります。生成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生成やMLの基礎知識がない開発者でも生成AIアプリケーションを開発できるものの、基本的にこれはあまり望ましくないということです。確かに、ローコードを使用した場合、特に従来の開発と比べると大幅に複雑さが減りますが、それでも開発者には知識が必要です。
ローコードで生成AIアプリを開発する際に必要な知識
開発者がローコードを使用して生成AIアプリを開発する際に必要な知識は、従来の開発に比べればかなり少なく、コーディングやフレームワークに関する深い知識というよりは概念の理解が求められます。以下に例を示します。
- AIと機械学習のコンセプトに関する基本的な理解。具体的には、教師あり学習と教師なし学習、ニューラルネットワーク、自然言語処理などです。
- 生成AIモデルのトレーニングや評価を効果的に行うためのデータの収集、クリーニング、前処理の方法についての詳しい知識。データ連携、データ品質評価、特徴量エンジニアリングの仕組みに関する知識も必要です。
- ユーザーエクスペリエンス(UX)デザインの原則: ユーザーフレンドリーなインターフェイスと直感的なワークフローの作成は、生成AIアプリケーションを導入し、成功させるうえで不可欠です。開発者には、デザイン性が高く使いやすいアプリケーションを作成する力も求められます。
これらは生成AIアプリ開発にあたりローコードを検討すべき理由のほんの一部です。ただ、これらより注目すべきなのが、従来のコーディングは生成AIの勢いに押されて将来的に淘汰される可能性があるのに対し、ローコードと生成AIは共存できるという点です。
Useful Resources
Related Resources
11Andre Tost, Making the case for Java in Generative AI, 2023 (plus comments). LinkedIn, 24 November.
12 C++ Generative AI Inference: Production Ready Speed and Control, 2024. ChemicalQDevice, 13 June.
12 Chris Pietschmann, Build a Generative AI App in C# with Phi-3 SLM and ONNX, 2024. Build Five Nines, 18 May.
14 Sarfraz Nawaz, Langchain vs Haystack: Which is Best for AI development?, 2024. LinkedIn, 1 April.


