生成AIの最近の記事

  1. 1. はじめに
  2. 2. Difyとは
  3. 3. Difyの基本操作
  4.  3-1. Difyの種類
  5.  3-2. アカウント作成
  6.  3-3. シンプルなワークフローを作ってみる
  7. 4. Dify実践: LLMとの連携
  8.  4-1. 初期設定(LLM設定)
  9.  4-2. ワークフローでLLMを使ってみる
  10. 5. まとめ

1. はじめに

山根さん「小川くん、Difyディフィって知ってる?」
ボク「海賊王になるやつですかね」
山根さん「じゃあ調べてブログ書いてね。」
ボク「はい。」

そんなやり取りがあったとか無かったとか



ブログをご覧の皆さまこんにちは。エンジニアの小川です。

今回はAIツール「Dify」について、入門編として基本的な使い方を解説します。

2. Difyとは

Dify公式サイト
https://www.dify.ai/

Difyとは、プログラミング知識がなくてもAIアプリケーションを開発できるオープンソースのプラットフォームです。
大規模言語モデル(LLM)を利用し、チャットボットやコンテンツ生成ツールなどを直感的な操作(ノーコード/ローコード)で開発できます。
(Google 要約より引用)

まとめるとDifyはAIアプリケーションを簡単に作成できるプラットフォームです。
GUIで操作できるため、プログラミングの知識がなくてもAIツールを作成できます。

ええそうです。ごくごく簡単なものであれば。

実際はコードを書かないといけない場面が多々ありますし、そもそもやりたいことのワークフローの設計自体が難しいケースもあります。

つまりは謳われている程には「プログラミング知識がなくても良い」ことはなく、あった方が断然良いかと思われます。まぁ「ノーコード」を名乗るサービスの多くは大体そんな感じかと思いますが。

一方で経験がある方からすると、DifyはLLMを使ったアプリケーションをとても手軽に作成できる便利なツールと言えます。

そこで本記事では、Difyの基本的な使い方と、LLMやMCPサーバーとの連携方法について、2部構成で紹介します。

・はじめてのDify - エージェント&ワークフロー実践: 第1部 入門編
・はじめてのDify - エージェント&ワークフロー実践: 第2部 応用編


本記事は主に

 ・初級〜中級エンジニアの方
 ・Difyを初めて使う方
 ・DifyでLLMを使ったアプリケーションを作成したい方
 ・DifyとMCPサーバーの連携に興味がある方

を対象としています。

3. Difyの基本操作

3-1. Difyの種類

Difyには大きく分けて2つの提供形態があります。

Dify Cloud:Dify社が提供するクラウドサービス
Dify Self-Hosted:Difyのオープンソースコードを自分で構築・ホスティングする

今回はCloud版を使用します。Self-Hosted版はGitHubでコードが公開されていますので、興味がある方はそちらも試してみてください。実際に使ってみましたが、Docker経験者であればとても簡単に構築できるかと思います。

またEnterprise版もありますが、こちらは大規模組織向けの有料プランとなっており、今回は割愛します。

3-2. アカウント作成

まずはDifyのアカウントを作成します。
特に難しい点はありません。

Dify公式サイト(https://www.dify.ai/)にアクセスし、画面右上の「Get Started」ボタンをクリックします。

dify login

GitHubアカウント、Googleアカウント、またはメールアドレスで登録/ログインできます。

dify top

ログイン後、Difyのダッシュボード画面が表示されます。

3-3. シンプルなワークフローを作ってみる

それでは実際にワークフローを作成してみましょう。
画面内のメニューにある「最初から作成」リンクを押下します。

dify top menu

作成内容の選択画面が表示されます。
ここでは「ワークフロー」を選択し、アプリ名とアプリ説明を入力して「作成する」ボタンを押下します。

dify new menu

現在(2025/11/26)の最新バージョン(v1.10.0)では、開始ノードを選択する機能が追加されていました。
今回は「ユーザー入力」を選択します。

dify select start

開始ノードが作成され、ワークフロー編集画面が表示されます。

dify start

次にワークフローのキャンバス上で右クリックし、表示されるメニューから「ブロックを追加」を選択します。
次に「HTTPリクエスト」を選択します。

dify right clieck menu

次にワークフローのキャンバス上で右クリックし、表示されるメニューから「ブロックを追加」を選択します。
次に「HTTPリクエスト」を選択すると、マウスにHTTPリクエストブロックが追従しますので、それをキャンバス内に配置します。

http request menu.

この中に通信したい先を設定していきます。
今回は例として「livedoor 天気予報API(https://weather.tsukumijima.net/)」を使用しましょう。

API欄でメソッドを「GET」に設定し、URL欄にはAPIのエンドポイントを入力します。
次にこのAPIでは「city」というクエリパラメータが必要となりますが、折角なのでこちらは実行時にユーザが入力できる様にしていきます。

まず「ユーザー入力」ブロックを選択し、「入力フィールド」横の「+」ボタンを押下します。

dify user input block

押下すると入力フィールドが追加されますので、以下に設定します。

 ・フィールドタイプ: 短文
 ・変数名:input_city
 ・ラベル名: input_city
 ・最大長: 48(デフォルト)
 ・初期値: 130010(東京)
 ・必須: チェック有り

input menu

入力できたら次は入力ブロックとHTTPリクエストブロックを接続します。
ユーザー入力ブロックにマウスオーバーすると、右側に小さな丸が表示されますので、それをドラッグしてHTTPリクエストブロックに接続します。
これでユーザが入力した値をHTTPリクエストブロックで使用できる様になります。

次にHTTPリクエストブロックを選択し、「パラメータ」フィールドに以下を設定します。
入力欄で「/」を最初に入力すると、変数を指定できる様になります。

 ・キー: city (文字列を入力)
 ・値: input_city (変数から設定)


これでユーザが入力した都市IDがHTTPリクエストのクエリパラメータとして設定されます。

dify http request block setting

最後に結果を出力するための「出力」ブロックを追加します。
先程と同様にキャンバス上で右クリックし、表示されるメニューから「ブロックを追加」から「出力」を選択して配置します。
配置したら先程と同様にHTTPリクエストブロックと出力を接続します。
接続したら、出力ブロックを選択し、「出力内容」フィールドに以下を設定します。

 ・result: {{HTTPリクエスト.body}}

これでHTTPリクエストのレスポンスボディが出力される様になります。

dify output block

それでは最後に「テスト実行」ボタンを押下して動作確認をしてみましょう。 入力欄は初期値か、または
全国の地点定義表から都市IDを参照して入力してください。

test run input

実行すると実行結果が表示されます。
正常に動作していれば指定した都市の天気予報データがJSON形式で表示されます。

dify result output

以上でシンプルなワークフローの作成と実行が完了です。

4. Dify実践: LLMとの連携

ワークフローの基本操作が理解できたところで、次はDifyのコア機能と言えるLLMとの連携を試してみましょう。

4-1. 初期設定(LLM設定)

まずは使用するLLMの設定を行います。

ヘッダーのアカウントメニューから「設定」を選択します。

dify-1-image15.webp

次に設定メニューから「モデルプロバイダー」を選択します。
すると使用できるLLMを提供するサービス一覧が表示されます。

今回は「Gemini」を使用しますので、「Gemini」カードにマウスオーバーし、「インストール」ボタンを押下します。

ここで注意してほしいのが、インストールしたモデルプロバイダーはアンインストールできません(謎仕様)。
その為無駄にインストールしない様に注意してください。「消させろー!」ってなります(なりました)。

model list

インストールが完了したら、次にAPIキーを設定します。
「Gemini」カードの「セットアップ」ボタンを押下し、表示されたモーダル内にGeminiのAPIキーを入力します。
APIキーが正しければ使用できるモデル一覧が表示される様になります。
※GeminiのAPIキーの取得方法については本記事では割愛します。公式ドキュメント等を参照してください。

install complete インストール完了時の表示

setup complete Geminiセットアップ画面

setup gemini セットアップ完了時のGeminiサービス内モデル一覧

以上でLLMを使う準備ができました!

4-2. ワークフローでLLMを使ってみる

それでは実際にLLMを使ったワークフローを作成してみましょう。
先程作成したワークフロー編集画面に戻り、キャンバス上で右クリックし、表示されるメニューから「ブロックを追加」を選択します。
次に「LLM」を選択してLLMブロックをワークフロー内に配置します。

dify-1-image20.webp

配置したら先程と同様にLLMブロックを編集します。
「AIモデル」欄に先程セットアップしたGeminiモデルを選択します。
今回は一定量まで無料枠で使用できる「Gemini 2.5 Flash」を選択します。

また今回やりたいこととして、現在のワークフローでは1次細分区定義表内の都市IDを入力させていますが、ここからいちいちIDを調べるのは面倒です。
そこでLLMに都市名から都市IDを調べてもらい、そのIDを使用して天気予報APIに問い合わせる様にしてみましょう。

SYSTEMプロンプト欄には以下を設定します。

https://weather.tsukumijima.net/primary_area.xml に定義されている、入力された地名に一番近い1次細分区域の都市IDを取得してください

USERプロンプト欄には先頭に「/」を入力し、変数選択モードに切り替えた上で、「input_city」変数を選択して設定します。

最後にこのLLMブロックの実行結果を見る為、出力ブロックにLLMブロックを接続し、出力変数にLLMブロックの出力「text」を設定します。
全ての設定ができましたら、「テスト実行」ボタンを押下して動作確認をしてみましょう。

dify test

実行すると実行結果が表示されます。
正常に動作していれば指定した都市名に対応する都市IDが表示されますが、余計なテキストが大量に含まれてしまっていますね。

dify test result 1

この結果を天気予報のAPIにそのまま渡してもエラーになってしまいます。
そこでLLMブロックのSYSTEMプロンプトを以下の様に修正してみましょう。
「出力形式を明示的に指定する」ことで、LLMの出力をコントロールします。

https://weather.tsukumijima.net/primary_area.xml に定義されている、入力された地名に一番近い一次細分区域の都市IDを取得してください。
出力は都市IDのみとし、他のテキストは一切含めないでください。

そして再度「テスト実行」ボタンを押下して動作確認をしてみます。

dify test result 2

しっかりIDのみが取得できていますね!
あとはLLMブロックの出力をHTTPリクエストブロックのパラメータに設定すれば、都市名から天気予報を取得できるワークフローが完成します。

dify work flow compete 完成したワークフロー

dify result complete 最終実行結果

ばっちり東京の天気情報が取得できましたね!
以上でLLMを使ったワークフローの作成と実行が完了です!

5. まとめ

本記事ではDifyの基本的な使い方と、LLMとの連携方法について紹介しました。

Difyはノーコード/ローコードでAIアプリケーションを作成できる便利なツールですが、ご覧の通りある程度のプログラミング知識が必要となるかと思います。
更に複雑なことをやろうとすると、通常のブロックだけでは実現できず、コードブロックを使用してJavaScriptやPythonで処理を書く必要が出てきます。

また今回は触れていませんでしたが、今回のワークフローの場合、LLMが返す都市IDが不正確な場合があり、その場合は天気予報APIからエラーが返ってしまいます。
こういったケースに対応するには、エラーハンドリングやリトライ処理を実装するなどの工夫が必要となってきます。AIによる不確実性を考慮した設計が求められる点は、他のLLM連携ツールと同様です。
ちなみに今回は数回の試行の内、1回謎のIDを出力していました。

しかしプログラムを理解している人が、複数サービスのAPIを組み合わせてAIアプリケーションを手軽に作成するツールとしては非常に有用であるとは感じます。
以前も「Yahoo Pipes」の様な複数のAPIを組み合わせることができるマッシュアップサービスが数多くありましたが、そのAI対応版でしょうか。
※残念ながらYahoo Pipesは2015年にサービス終了しました。当時は「マッシュアップ」という言葉と共に流行ったんですけど一緒に廃れましたね。

また冒頭に出てきましたが、少し前までスケジュールトリガ機能がありませんでしたが、現在では実装された模様ですので、より多様なユースケースに対応できる様になっているかと思います。
今後もDifyの機能追加や改善が進むことが期待されますので、興味がある方は是非試してみてください。

次回は「DifyとMCPサーバーの連携」について紹介します。

     
  1. 1. はじめに
  2. 2. OSS MCPサーバーを使ってみよう
  3.  2-1. 準備フェーズ
  4.   ①OSS MCPサーバーをGitHubからダウンロード
  5.   ②OSS MCPサーバーを構築
  6.   ③VS CodeにMCPサーバー情報を設定
  7.   ④動きませんでした。そしてその対策。
  8.  2-2. 実行フェーズ
  9.   ①Agentを実行しよう
  10.   ②実行ログを見て、通信の動きを確認しよう
  11. 3. まとめ
  12. 4. MCPサーバーのそれは極めて個人的な考察

1. はじめに

ブログをご覧の皆さまこんにちは。エンジニアの小川です。

前回の記事ではZapier社が提供するSaaS型のMCPサーバーのVS Codeでの使用方法をご紹介しました。
本記事ではOSSとして公開されているMCPサーバを使用するケースをご紹介します。

以前の記事で紹介しましたが、OSSのMCPサーバーは以下で公開されています。

AI Base : https://mcp.aibase.com/ja/explore

mcp-use3-image1.webp (※他にもあるかもしれませんが、今のところここしか見つけられていません)

今回はこちらで公開されているGoogle スプレッドシート連携のMCPサーバーを使用してみます。

2. OSS MCPサーバーを使ってみよう

この項では以下の流れを行っていきます。

[準備フェーズ]
①OSS MCPサーバーをGitHubからダウンロード
②OSS MCPサーバーを構築
③VS CodeにMCPサーバー情報を設定

[実行フェーズ]
①Agentを実行しよう
②実行ログを見て、通信の動きを確認しよう

2-1. 準備フェーズ

①OSS MCPサーバーをGitHubからダウンロード

まずは使用したいMCPサーバーをGitHubからダウンロードします。今回はこちらを使用したいと思います。

Googlesheet MCP

Google Sheets MCP Page

画面右上にあるGitHubアイコンをクリックするとGitHubリポジトリに移動しますので、ローカルにプロジェクトをダウンロードします。

ちなみにこちらが良い物かどうかはこの時点では分かりません。この時点でできることは、評価とDL数、それと説明文内に使いたい機能がありそうなのを選ぶしかできません。
できればDocker上で動作するものを選ぶと比較的楽ですが、対応しているものはあまり多くないようです。ただDockerFile/compose.yamlが入っていても動かないものもあります。落とし穴ばかりですね...。


今回紹介しているMCPサーバーは、このブログ用に構築してみた3番目に試した物になります。先に試した2つはREADMEが滅茶苦茶で止めました。(※ファイル構成/起動方法がREADMEの内容と全く違うという...。)
ちなみにこちらのプロジェクトも元のままではVS Codeで動きませんでしたので、少し手を加えています。READMEにはCursorの説明が記載されていてるので、もしかしたらCursorならそのまま動くのかもしれません。

また念の為、使用前にはコードをチェックしておきましょう。悪意のあるコードが混入している可能性もゼロではありません。

copilot check! 良かった

②OSS MCPサーバーを構築

それではプロジェクトに添付のマニュアルに従ってMCPサーバーを構築していきます。
Pythonの実行環境は整っている前提で進めます。

1. 使用するPythonライブラリをインストールします。

pip install google-auth-oauthlib google-auth-httplib2 google-api-python-client curl -LsSf https://astral.sh/uv/install.sh | sh ※ ← 書いていませんが実行にはuvのインストールが必要です

2. Google Cloud Platformでプロジェクトとサービスアカウントを作成し、「APIとサービス」からGoogle スプレッドシートAPIの権限設定を行った後、「IAMと管理」からcredentials.jsonをダウンロードします。

gcp top
GCPの詳細説明は割愛していますが、ここが一番大変かも。

3. credentials.jsonをプロジェクトのルートに配置します。

vs code directory

4. Googleスプレッドシートを開き、共有設定でサービスアカウントのメールアドレスを追加します。

google spread sheet sharing setting

5. 以下のコマンドを実行してMCPサーバーをインストール

uv run mcp install main.py

ここまでで一旦MCPサーバーの構築は完了です。
早速ドキュメントに記載していない手順もありましたが、恐らくこれで良い・・・ハズです。

③VS CodeにMCPサーバー情報を設定

前々回の記事で作成した .vscode/mcp.jsonファイルに記載します。記載の内容はREADMEに書いてある通りです。

{ "mcpServers": { "GoogleSheets": { "command": "python", "args": [ "main.py" ] } } }

今までと書き方が変わっていますね。今まではHTTPで接続していましたが、今回は直接Pythonのコマンドで実行する形になっています。
これでVS CodeからMCPサーバーに接続できるようになります。なっているはずです...!

④動きませんでした。そしてその対策。

結論がタイトルになってしまいましたが、残念ながら動きませんでした。ほんとこんなのばっかり

ここでログに出ているエラーをGitHub Copilotと相談しながら行った対応を以下に記載します。
このMCPサーバーは使う予定がない方はスキップしてください。

1.vscode/mcp.jsonを修正します

{ "servers": { "GoogleSheets": { "command": "/Users/xxxxx/.local/bin/uv", # ← ここをuvコマンドのパスに変更 "args": [ # ← ここを以下に変更 "--directory", "/Users/xxxxx/project/mcp-sever-google-sheets", "run", "main.py" ] } } }

2.main.pyを修正します

# main.pyの末尾に以下を追加 if __name__ == "__main__": mcp.run()

3. 起動はREADMEの起動コマンドでなく、IDEのMCPサーバー起動ボタン、またはAgentが実行時に自動で起動して使用します

mcp-use3-image9.webp

以上でMCPサーバーの修正が完了です。
これでVS CodeからMCPサーバーに接続できるようになります。

ちなみにこの修正はあくまで私の環境で動かすためのものであり、他の環境で動作する保証はありません。もしかしたらCursor環境では動くのかもしれません。

そういうの止めて欲しいですけど...。

2-2. 実行フェーズ

①Agentを実行しよう

それでは実際にAgentを実行してみましょう。
まずは試験的に、Googleスプレッドシートにデータを追加する依頼を実行します。

agent start

実行した所、どのスプレッドシートにデータを追加するかの指示が不足している旨のエラーが発生しました。
そこで対象のスプレッドシートのURLを渡して再度実行します。

agent execution result

登録に成功しました!

ログを見ると途中思っていたより手間取っていますが、無事にMCPサーバーを使用してGoogleスプレッドシートにデータを追加することができました。

実際にスプレッドシートを確認してみます。

spread sheet view

登録されているのを確認できました!次はシート内のデータを読み込んでみます

mcp-use3-image13.webp

正しく読み込みが確認できましたね!

それでは次は少し複雑なことをやらしてみましょう。
こちらのサイトで配布されている日次セールス レポート フォームを使用して、対象のデータを取得させてみます

report view

mcp-use3-image15.webp
全体読み込みはOK

mcp-use3-image16.webp
細かな内容の指定もOK

レポートの表の内容も正しく認識できていますね!

以上でMCPサーバーを使用したGoogleスプレッドシートの読み書きができることが確認できました。

ただ途中で発生した問題として、実は何度かAgent内の学習データを消してスクリーンショット撮影用にと最初からやり直しをしていたのですが、

 ・スプレッドシートへの書き込みに失敗する様になってしまい、何度も繰り返した結果、「送信するパラメータが分かりません」とAgentが途中で処理を諦めた
 ・書き込んだデータの前後に変な記号が入っていた。

等と、同じ命令文でも挙動が安定しませんでした。
これらはもしかしたらMCPサーバー側の問題かもしれませんし、Agent側の問題かもしれません。
このあたりやはりAIによる不確実性が否めず、信用性の面で課題がありそうです。

②実行ログを見て、通信の動きを確認しよう

最後に実行時のログを見てみましょう。
元のプロジェクトではログの出力が全く行われていなかったため、main.pyにログ出力のコードを追加してみます。
以下が実行時のログになります。

「シートのデータを読み込んでください」:初回実行時のログ

2025-11-21 14:24:09,137 - INFO - MCP Server starting... 2025-11-21 14:24:09,148 - INFO - Processing request of type ListPromptsRequest 2025-11-21 14:24:09,148 - INFO - Processing request of type ListToolsRequest 2025-11-21 14:24:09,149 - INFO - Processing request of type CallToolRequest 2025-11-21 14:24:09,149 - INFO - Tool called: list_spreadsheets ... 2025-11-21 14:24:18,226 - INFO - Retrieved 23 rows from シート1 2025-11-21 14:24:18,226 - INFO - Response data: Response: 25 lines, 1324 characters 2025-11-21 14:24:18,226 - INFO - === MCP Response: get_sheet_content - Success - Response: 25 lines, 1324 characters ===

連続して2回目実行時のログ

2025-11-21 14:25:18,285 - INFO - Processing request of type CallToolRequest 2025-11-21 14:25:18,285 - INFO - === MCP Request: get_sheet_content - spreadsheet_id: 14EJcg_Bb54kkgVm67FHM94eqM7IQoSQrDBsJUvSPSxc, sheet_title: シート1 === ...

VS Codeの「New Chat」を押下し、チャット欄を初期の状態にして再度データ読み込みを実行

2025-11-21 14:38:54,588 - INFO - Processing request of type CallToolRequest 2025-11-21 14:38:54,588 - INFO - === MCP Request: list_spreadsheets === 2025-11-21 14:38:54,588 - INFO - Tool called: list_spreadsheets ...

ログを見ると、MCPサーバーがどのように動いているかが分かります。
1回目の実行時にはMCPサーバーが起動し、

・ListPromptsRequest
・ListToolsRequest

を行ってMCPサーバー内のpromptやツールの一覧を取得し、

・CallToolRequest

でツールの呼び出しを行っていることが分かります。

2回目の実行時にはList情報を保持している為か、CallToolRequestのみが処理されており、その後get_sheet_contentを実行してシート情報を取得しています。
3回目、今度はチャット履歴を消して再度実行した際には、CallToolRequestのみが処理されていますが、その後はlist_spreadsheetsでスプレッドシート一覧を取得しようとしています。list_spreadsheetsは1回目と同じ挙動です。

ここから分かることは、AgentとMCPサーバーは状態を保持しますが、チャット履歴を消すと一部消えるデータと消えないデータがあることが分かります。

・MCPツールListやPrompt List - 消えていない
・取得対象のスプレッドシートID - 消えている

これはVS Code内のチャット別に保持しているデータ、LLMとの会話セッションで保持しているデータによるものかと思われます。
またこれらはMCPクライアント(Agent)の設計によるものかと思われますので、詳細に探るのは難しいです。また使用するMCPクライアントによって挙動が変わる可能性があります。

3. まとめ

以上、OSSのMCPサーバーを使用してGoogleスプレッドシートにデータを読み書きする方法をご紹介しました。

OSSのMCPサーバーはSaaS型のMCPサーバーと比べて、
・使いたいサービス別にMCPサーバーが必要になる。
・自分でサーバーを構築する必要がある。
・動作が不安定な場合/そもそも動かないケースがあり、信頼性に乏しい。
・開発言語がC#/Go/Java/TypeScript(JavaScript)/Python/Rustなど多岐に渡る為、環境構築の為には各言語別の知識が求められる。

といったデメリットがありますが、

・自分でサーバーを構築するため、セキュリティ面で安心できる。
・自分でサーバーを構築するため、カスタマイズが可能。 (とはいえ今回の様な強制カスタマイズ必須はメリットではないけれど)

といったメリットもあります。

どちらを使用するかは、使用する用途や環境によって異なりますが、
セキュリティ面で不安がある場合や、外にデータを極力出したくない場合(基本外部のLLMサービス使っておいて何をという話ですけど)には
カスタマイズが必要な場合はOSSのMCPサーバーを使用する、または参考に自作するというのはありかと思います。
3つのパターンの比較を表にすると以下になります。

項目 公式 SaaS(Zapier) OSS
導入難易度
コスト 無料 有料 無料(※但しサーバー料金除く)
カスタマイズ性/拡張性
対応サービス サービス提供企業特化 多数のSaaS 実装次第
保守・運用 提供企業が管理 提供企業が管理 自己管理
信頼度

4. MCPサーバーのそれは極めて個人的な考察

MCPサーバーの導入方法3部作、いかがでしたでしょうか?

正直な所、現時点でのOSSのMCPサーバーはあまりお勧めできません。
今回の流れを見て頂いた通り、ドキュメントは滅茶苦茶、動かそうとしてもコードに手を加えなければいけない等、ヒッジョーに扱いづらいです。ダウンロードするプロジェクトが次から次へとこんな感じで、何度PCの前で雄叫びをあげたか分かりません。こんなハズじゃなかった。歴史がボクに問いかける。

趣味や個人利用の範囲であればよいですが、そのままの使用は業務利用には向かないかと思います。あくまでソースの参考程度に留めておくのが良いかと思います。

ただしこれが今後apache foundationのような大きな組織,コミュニティがベースのMCPサーバーをOSSとして公開し、継続的にメンテナンスされるようになれば話は変わってくるかと思いますので今後に期待したい所です。

しかし今回3種のMCPサーバーをガッツリと触ってみて思ったのは、MCP自体は非常に面白い技術であり、LLMと外部サービスを繋ぐ上で非常に有用であるとは感じました。
例えば今後開発するシステム内に、APIだけでなくMCP機能も合わせて組み込むことで、LLMを使用した柔軟な操作が可能になる等、応用範囲は広いかと思います。

今後もっと使いやすくなり、エンジニアぐらいしか使わないVS Code等のIDE以外からも簡単に使用できるようになれば、一般利用がもっと進むと思います。

最後までお読みいただきありがとうございました。


  • はじめに
  • 基本の確認:MCPサーバーとは何か?
  • AWS MCP Serverの核心機能
  • AWS MCP Server:何が嬉しい?!

  • はじめに

    Amazon Web Services(AWS)が2025年11月30日に「AWS MCP Server」をプレビュー版として公開しました!

    参照:AWS announces a preview of the AWS MCP Server

    「本番VPC作っておいて。」とAIエージェントに指示を出せば、AWSコンソールやCLIを触ることなく適切な設定で本番VPCがデプロイされる・・・ころころと変わる画面仕様やAPI仕様にエンジニアが右往左往する時代はもう終わり!!そんな未来が近づいているのかもしれません。

    「AWS MCP Server」は、自然言語を通じてAIアシスタントやエージェントに対し指示を出すと、安全にベストプラクティスに従った形に整形された状態でAWS APIを呼び出すことを可能にした、リモートMCPサーバーです。

    この記事では、AWSを利用する開発者、インフラエンジニア、そして技術的な意思決定者の皆様向けにAWS MCP Serverの機能と利点をざっくり解説していきます。

    基本の確認:MCPサーバーとは何か?

    AWS MCP Serverを理解するためには、まずその基盤技術である「MCP(Model Context Protocol)」および「MCPサーバー」の基本概念を整理する必要があります。

    MCPとは、「AIモデルが外部のツールやサービスと連携するための共通規格(プロトコル)」です。

    MCPの仕組みや導入メリット・デメリットに関して確認したい、という方は当社のこちらのブログ記事をぜひご覧ください。

    参照:実体験でわかったMCPサーバー・クライアントの役割と導入メリット

    AWS MCP Serverの核心機能

    「はじめに」で触れた通り、「AWS MCP Server」は、自然言語を通じてAIアシスタントやエージェントに対し指示を出すと、安全にベストプラクティスに従った形に整形された状態でAWS APIを呼び出すことを可能にした、リモートMCPサーバーです。

    実は元々「AWS Knowledge MCP」(知識を呼び出すためのMCPサーバー) および AWS API MCP(機能を呼び出すためのMCPサーバー)が存在していましたが、今回の「AWS MCP Server」により、ひとつの窓口(リモートMCPサーバー)で「知識の呼び出し」と「機能の呼び出し」を行えるようになります。

    AWS MCP Serverでは、以下の3つの機能が提供されています。


    • エージェントSOP(Agent SOPs)

    AIエージェント用の「標準作業手順書」の意味です。

    エージェントSOPが用意されていることで、AIアシスタントがAWSのベストプラクティスとセキュリティガイドラインに従って、複雑な複数ステップのタスクを完了できるようになります。

    ただ「AIエージェントがAWSのAPIを呼び出せる」だけでは「安全」とは言えません。自然言語の指示に従って無限の可能性の中からAIアシスタントがどのAPIを使うか勝手に判断するのではなく、エージェントSOPという、十分に検証された、信頼できる選択肢の中から最適なものを選択することで、セキュアでベストプラクティスに沿ったAWS上のリソース構築・運用を行うことができます。

    用意されているエージェントSOPの例としては本番環境対応VPN(マルチAZサブネットとNATゲートウェイを備えた構成)作成ワークフローやモニタリング(CloudWatchアラームとSNS)設定、Amplifyを利用したWebアプリケーションの構築・デプロイなどの例があげられていました。

    詳しくは公式ドキュメントをご参照ください。

    具体的にこうしたい、という指示ができない場合、エージェントに現在利用可能なツール(ワークフロー)を使って計画を立てて、と依頼して対話型で設計を検討することもできるそうです。心強い!

    また、どんなSOPが用意されているのかもエージェントに聞いて確認することができます。


    • ナレッジツール(Knowledge Tools)

    本番環境におけるAIの「ハルシネーション(誤った情報をそれっぽく回答してくるやつのこと)」リスクを低減させるための重要な機能です。

    最新のAWS公式ドキュメント、APIリファレンス、リージョン別のサービス提供状況などをリアルタイムで検索・参照することで、AIの応答の正確性を向上させます。参照元が確実であることから、安心度がアップしますね。


    • APIツール(API Tools)

    自然言語による指示を、適切なAWS APIコールへと変換し実行する機能です。セキュリティ・ガバナンスの点で最も重要なのが、AWS APIコールは対象のAWSアカウントのIAM認証情報を用いて実行される点です。AWS APIコールは当然CloudTrailに記録され証跡が残りますし、実行できる権限を最小権限の原則に従い制限しておくことで、安全にAIエージェントを利用することができます。


    AWS MCP Server:何が嬉しい?!

    AWSサービスは、増えたり統合されたり廃止になったりと目まぐるしく変化しています。毎日のように新情報がリリースされ、ベストプラクティスもどんどん更新されます。開発者は大量のブラウザタブを開きながらドキュメントを読み漁り、「この構成で本当に安全?」「最新のガイドラインと合ってる?」と不安を抱えつつ設計を進めなくてはいけませんでした。調べる、比べる、検証する......その繰り返しで、実装より調査に時間が吸い取られることも多いのではないでしょうか。(私はそうです・・・)

    そんな長年の悩みに対して、AWS MCP Serverはとても心強い存在になりそうです。「こういう仕組みを作りたいんだけど」と自然言語で相談すると、AIアシスタントが最新のAWSドキュメントを横断検索し、関連サービスを整理し、適切な設計方針までまとめてくれます。必要であれば具体的なAPI操作も実行してくれて、作業が一つの画面の中で完結します。人間側は適宜承認するだけでよく、迷いながら進めていたAWS設計が一気にクリアになります。

    すべてが完全自動になるわけではないかもしれませんが、「とにかく情報を追うのが大変」「正解がどれか自信が持てない」といったこれまでの大きな悩みが、かなり軽くなる未来は感じられると思います。まだPreview版のためか、re:Inventのキーノートでは触れられませんでしたが、今後のAWS管理を大きく変える可能性のある機能と感じます。ぜひ活用していきたいですね!

    最後の最後に・・・怠惰な私の願望としては、もはやMCPサーバーを呼び出すためのセットアップすら面倒なので、マネジメントコンソール上でCloudFormationあたりにチャットウィンドウが用意されていて、そこから相談や作成指示ができたりしたらもっと嬉しいです!!



    はじめに

    今年もラスベガスにて、世界最大級のクラウドカンファレンス「AWS re:Invent 2025」が開催されました。
    今年のre:InventではAIに関するサービスのアップデートが中心となっており、「AWS AI Factories」という新サービスが発表されました。
    生成AIがビジネスのあらゆる領域に浸透する一方で、企業が直面している課題は「どのように安全かつ継続的に AI を運用していくか」という点に移っています。
    この課題を解決するための新しいコンセプトが、AWS AI Factories です。

    AWS AI Factories は、AIモデルの開発・運用・継続改善を、まるで工場の生産ラインのように統合的に管理できる"AI ライフサイクル基盤"と位置づけられています。従来の AI/ML パイプラインを置き換えるものではなく、それらをさらに高度化・運用最適化した仕組みと捉えると理解しやすいかと思います。


    1. AWS AI Factories とは:AI 運用の課題をまとめて解決する新モデル

    多くの企業が PoC では成功しながら、本番運用に移せない理由がいくつかあります。
    代表的な例として、

    • モデルの更新が属人化し、継続改善できない
    • データの扱いにガバナンスが追いつかない
    • セキュリティ・監査要件に対応できない
    • 複数部門での AI 利活用が標準化されていない
    • ツールやプロセスが分断し、効率が悪い

    この"AI運用の壁"を取り払うために設計されているのがAWS AI Factories です。


    2. AWS AI Factories を構成する要素

    AWS AI Factories は、以下のような要素で構成されます。

    ● データ管理(Data Factory)
    データの収集、前処理、品質管理を自動化し、モデル改善につながるデータ基盤を整備。

    ● モデル運用(Model Factory)
    モデル学習、評価、デプロイ、ドリフト検知を自動化し、継続的な高品質運用を実現。

    ● ガバナンス & セキュリティ(Guard Factory)
    アクセス管理、監査ログ、コンプライアンスチェックなど、企業が求める統制を一元化。

    ● 利活用フロント(App Factory)
    開発者・業務ユーザーが AI/アプリを安全に利用できる環境を整え、現場でのスピード活用を後押し。


    これらの要素が連携することで、AIの価値を継続的に引き出せる"循環型AI基盤"が構築されます。


    3. AWS AI Factories がもたらす企業メリット

    ① AIの運用を標準化し、スケール可能にする
    企業全体で同じ基盤を使うことで、部門ごとにバラバラだった AI 活用を統合できる。

    ② 安全性・コンプライアンスを担保
    生成AI導入の最大の懸念であるデータ漏えい・アクセス管理・監査要求に対応しやすい。

    ③ 継続的改善(Continuous Learning)が自動化
    データ流入 → モデル改善 → 再デプロイまでのサイクルが回り続け、AIが常に最新状態を保つ。

    ④ 業務部門でも AI 活用が可能に
    ローコード化/プロンプト管理/アプリ統合により、エンジニア不足でもAI活用が進む。


    さいごに

    生成AIが進化を続ける一方で、企業が求められるのは単なる技術導入ではなく「どうAIを安全かつ継続的に運用し、価値を最大化するか」です。AWS AI Factories はまさにその解答となるアーキテクチャです。
    AIは一度導入して終わりではなく、改善を続けることで真価を発揮します。AWS AI Factories は、AIを企業の"当たり前の基盤"として育てるための仕組みであり、今後のAI戦略を考える上で重要な役割を担うことが予測されます。

    1. 1. はじめに
    2. 2. Zapier MCPサーバーを使ってみよう
    3.  2-1. 準備フェーズ
    4.   ①Zapierでアカウントを作成
    5.   ②ZapierでMCPサーバーを構築
    6.   ③VS CodeにMCPサーバー情報を設定
    7.  2-2. 実行フェーズ
    8.   ①Agentを実行しよう
    9.   ②Zapierの実行履歴(History)を確認しよう
    10. 3. まとめ

    1. はじめに

    ブログをご覧の皆さまこんにちは。エンジニアの小川です。

    前回の記事ではGitHubが提供する公式のMCPサーバーを使用したMCPサーバーのVS Codeでの使用方法をご紹介しました。

    本記事ではZapier社が提供するSaaS型のMCPサーバを使用するケースをご紹介します。

    Zapier MCPサーバーは、GitHub MCPとは異なり「コード不要」で外部サービスのAPIを扱えるのが最大の特徴です。利用者はトークン等の接続情報を設定するだけでMCPサーバーとして扱える点が大きなメリットです。

    本記事は主にVS Code、またGitHub Copilot、Claude Code等のAIエージェントの使用経験があるエンジニアの方を対象としています。

    2. Zapier MCPサーバーを使ってみよう

    この項では以下の流れを行っていきます。

    [準備フェーズ]
    ①Zapierでアカウント作成
    ②ZapierでMCPサーバーを構築
    ③VS CodeにMCPサーバー情報を設定

    [実行フェーズ]
    ①Agentを実行しよう
    ②Zapierの実行履歴(History)を確認しよう

    2-1. 準備フェーズ

    ①Zapierでアカウント作成

    まずはZapierのアカウントを作成します。https://zapier.com/mcpにアクセスしてSign upからアカウント作成画面に遷移しますので、サイト内の記載の通りに作成します。

    Zapier top

    アカウントが作成できたら早速ログインします。
    ここで注意していただきたいのが、ヘッダーのLoginボタンからログインを行うと別のサービス画面に遷移しますので、https://zapier.com/mcpのTOP画面の「Start Building」からログインしてください。いやほんと謎仕様...。

    zapier login

    zapier mcp top 「Start Building」から入った場合のMCPサーバー画面

    zapier main service top ヘッダーからログインした場合のZapierのメインサービス画面
    ちなみにこの画面からはMCP画面に遷移できないので、入ってしまったらやり直し。

    ②ZapierでMCPサーバーを構築

    まずは画面内にある「+ NEW MCP Server」ボタンを押下します

    NEW MCP Server Button

    モーダルが表示されるので、「MCP Client」のセレクトボックスで、MCPサーバーに接続するクライアントツールを選択し、Nameには適当な識別名を付けます。

    view mcp modal

    サイドバーに追加されたMCPサーバーを選択すると、現在のMCPサーバーの設定情報が表示されますので、こちらで「+ Add tool」ボタンを押下します。

    server settings

    追加できるWebサービス一覧が表示されます。先頭には恐らくよく使われるサービスが表示されておりますので、一覧に無い場合は検索ボックスから検索します。
    今回は「Slack」を選択します。

    web services

    Slackで使用できるTool(API)一覧画面が表示されます。この中から使いたいSlackの機能を選択します。

    zapier tool list

    Toolの選択が完了すると、サービスへの接続設定が求められます。今回はSlackを選択している為、Slackへの接続設定を行うボタンが表示されます。

    mcp slack connect

    mcp slack connect setting

    今回は合わせてGoogle Calendarも追加しました。

    mcp settings

    ③VS CodeにMCPサーバー情報を設定

    最後にVS Codeとの接続設定を行います。
    接続設定はヘッダにある「Connect」リンクを押下します。すると選択したMCP Clientへの接続設定と、接続用に発行されたURLが一部隠された状態で表示されます。

    server connect guide

    「Server URL」の右にある「Copy URL」ボタンを押下すると、クリップボードにMCPサーバーのURLがコピーされます。

    そして今度は取得したサーバーのURLを、前回の記事で作成した .vscode/mcp.jsonファイルに記載します。記載の内容は以下です。

    mcp-use2-image15.webp

    { "servers": { "zapier": { "url": "https://mcp.zapier.com/api/mcp/s/xxxx==/mcp" } } }

    以上でMCPサーバーへの接続が完了です!今回もとても簡単でしたね!

    2-2. 実行フェーズ

    ①Agentを実行しよう

    それでは早速使ってみましょう!今回GitHub Copilot Agentが連携している対象は「Slack」と「Google Calendar」の2つのサービスと連携できているハズ!です!

    今回テスト用に、Slackに「#notify」チャンネルを作成し、Googleカレンダーには「お茶を買いに行く」という日程を追加しました。

    go to buy the tea

    Slack notify Channel preview

    さて、それではCopilot Agentにお茶を買いに行く日付を調べさせて、分かったらSlackの#notifyチャンネルに通知させる動作確認を実用性はさておき行ってみたいと思います。

    vs code agent log 1 途中でSlackにメッセージを投稿して良いのか?という確認が入りますのでOKします。

    mcp-use2-image19.webp

    完了したみたいですので、Slackチャンネルを見てみます。

    view slack channel

    問題なく投稿できていますね!

    以上、とても簡単に Google Calendarから検索→Slack通知という、複数のサービスと連携した動作が実現できました!

    ②Zapierの実行履歴(History)を確認しよう

    最後にZapier側で実際にMCPサーバーがどのように動作したかを確認してみます。
    Zapier MCPサーバーの画面に戻り、ヘッダーの「History」リンクを押下します。

    header history button

    history screen

    History画面ではMCPサーバーが受け取ったリクエストが一覧で表示されています。
    ここで先程のSlack通知の際に送信されたリクエストを選択してみます。

    mcp-use2-image23.webp

    アコーディオンを展開すると、MCPサーバーが受け取ったリクエストの詳細情報が確認できます。
    ここではMCPサーバーが受け取った指示内容や、Slackに投稿するために解決したパラメータ情報、最終的な出力結果などを確認することができます。
    これにより、MCPサーバーがどのように動作したかを把握できます。

    3. まとめ

    以上、SaaS提供MCPサーバーであるZapier MCPサーバーを使って複数のサービスと連携した動作がとても簡単に実現できることを紹介しました。

    前回の公式GitHub MCPサーバーと比べ、今回のSaaS型 MCPサーバーは

    ・アプリやアプリ内のToolsの追加が画面上で簡単に行える。
    ・どういうToolが使えるかが一覧で把握できる。
    ・外部サービスの認証設定も画面上で簡単に行える。

    といったメリットがあることがわかりました。
    また今回紹介はしておりませんが、WebhookやカスタムAPIを使用して独自のサービスと連携することも可能です。

    一方でZapier MCPサーバーでは

    ・日本のサービスはあまり対応していない。
    ・社内システムなどの外部に公開されていないAPIとは連携できない。
    ・使用の都度コストがかかる(無料プランもありますが、利用制限が厳しい)。

    といった点にも注意が必要です。

    次回はOSS MCPサーバーを構築して使用する例を紹介します。

    1. 1. はじめに
    2. 2. 公式GitHub MCPサーバーを使ってみよう
    3.  2-1. 準備フェーズ
    4.   ①GitHubでPersonal Access Tokenを作成
    5.   ②VS CodeにMCPサーバ情報を設定
    6.   ③作業対象のサンプルプロジェクトを作成
    7.  2-2. 実行フェーズ
    8. 3. まとめ

    1. はじめに

    ブログをご覧の皆さまこんにちは。エンジニアの小川です。

    前回の記事ではMCPサーバーの概要と導入時の注意点について書きましたが、 今回はVS CodeやClaudeCodeから実際にMCPサーバーを使用して外部サービスと連携する方法を実践形式で解説します。

    MCPサーバーには現在、大きく分けて3つの提供形態があります。

    公式MCPサーバー:Anthropic社など、サービス提供会社が提供,公開しているMCPサーバー
    SaaS型MCPサーバー:Zapier社等が提供するクラウドサービス
    OSS MCPサーバー:GitHub等で公開されているオープンソースのコードを自分で構築・ホスティングする

    これら3つの方法を実際に試してみて、それぞれの特徴と使い方を比較していきます。

    本記事は第1部としてGitHub公式のMCPサーバーを使用した例を紹介します。
    また本記事は主にVS CodeやClaude Codeの使用経験があるエンジニアの方を対象としています。

    2. 公式GitHub MCPサーバーを使ってみよう

    この項では以下の流れを行っていきます。

    [準備フェーズ]
    ①GitHubでPersonal Access Tokenを作成
    ②VS CodeにMCPサーバ情報を設定
    ③作業対象のサンプルプロジェクトを作成

    [実行フェーズ]
    ・GitHub Copilot Agentを使用してIssue情報を取得し、対応作業を実行して完了後にPRを出す。

    2-1. 準備フェーズ

    ①Personal Access Tokenの作成
    まずはGitHubでPersonal Access Token(PAT)を作成します。
    今回は「Fine-grained personal access tokens」を使用しています。

    github pat 作成

    GitHub MCPサーバーを使用するにあたり、PATに以下の権限を付与します。

    ・Repository permissions
      └ Contents: Read and write
      └ Issues: Read and write
      └ Pull requests: Read and write
      └ Metadata: Read-only

    ②MCPサーバーの接続情報ファイルをVS Codeに設定
    VS Codeのワークスペースに.vscode/mcp.jsonファイルを作成し、以下の内容を記述します。

    VSCode MCP設定

    { "servers": { "github": { "type": "http", "url": "https://api.githubcopilot.com/mcp/", "headers": { "Authorization": "Bearer <Enter your GitHub personal access token here>" } } } }

    これでGitHub CopilotからGitHub MCPサーバを使用する準備は完了です。とても簡単ですね!

    ③作業対象のサンプルプロジェクトを作成
    実際に操作する対象のサンプルプロジェクトを作成します。
    今回は以下のような簡単なWEBページを(GitHub Copilotが)作成しました。

    ・GitHubリポジトリ: index.htmlのみ作成
    GitHub Project

    ・作成したWEBページ: ユニバース不動産 トップページ
    sample webページ

    2-2. 実行フェーズ

    実行フェーズでは以下の操作を行っていきます。

     ① GitHubにIssueを登録
     ② VS CodeのGitHub Copilot AgentでIssue情報を取得
     ③ Issueの対応作業を実行し、PRを作成する
     ④ PRの確認

    ①GitHubにIssueを登録

    GitHubに行わせたい作業のIssueを登録します。
    ここではデザインを青から赤に変更し、TOP画面のメッセージを変更する内容のIssueを登録しました。

    GitHub Issue

    ② VS CodeのGitHub Copilot AgentでIssue情報を取得

    それではGitHub Copilot Agentを起動し、MCPサーバー経由でIssue情報を取得させてみます。

    VS Code GitHub Copilot Agent

    正しくIssue情報が取得できました。出力からMCPサーバーを経由していることがわかります。

    ③ Issueの対応作業を実行し、PRを作成する

    それでは実際にIssueの対応作業を実行させ、完了後にPRを作成させてみます。

    copilot chat

    出力されたメッセージは以下の通りです。

    Issue #4の対応を開始します。まず現在のファイルを確認して、変更を適用します。 ToDo 項目が 5 件作成されました index.html の読み取り 開始 (デザインを青から赤に変更/2) 5 index.html+7-7 開始 (スナップショットを撮影/4) 5 ページをブラウザで開いてスナップショットを撮影してください。変更が完了しましたので、次にブランチを作成してPRを作成します。 git checkout -b feature/change-design-to-red cd /Users/takahisaogawa/Downloads/ブログ記事用/McpBlogSample && git add index.html && git commit -m "デザインを青基調から赤基調に変更し、メインキャッチコピーを変更 - ヘッダーの背景色を青系から赤系に変更 - ヒーローセクションの背景色を青系から赤系に変更 - セクションタイトルの色を青から赤に変更 - 特徴カードの見出し色を青から赤に変更 - コンタクトセクションの背景色を青から赤に変更 - メインキャッチコピーを「あなたの理想の住まいを見つけよう」から「あなただけのユニバースを見つけよう」に変更 Fixes #4" git push -u origin feature/change-design-to-red 変更をプッシュしました。次に、スナップショットを準備してからPRを作成します。 ブラウザで index.html を開いて、変更後のページのスクリーンショットを撮影し、画像ファイルとして保存してください。保存が完了したら、ファイル名を教えてください。PRにその画像を添付します。
    >> [入力]画像はなしで 了解しました。画像なしでPRを作成します。 開始 (PRを作成/5) 5 完了 (PRを作成/5) 5 完了しました! PR #5 を作成しました: https://github.com/t-ogawa-dev/McpBlogSample/pull/5 実施した変更内容: デザインを青基調から赤基調に変更(ヘッダー、ヒーローセクション、タイトル、コンタクトセクションなど) メインキャッチコピーを「あなたの理想の住まいを見つけよう」から「あなただけのユニバースを見つけよう」に変更 PRには Fixes #4 を含めているため、マージすると自動的にIssue #4がクローズされます。

    以上の出力からGitHub Copilot AgentがIssueの内容を理解し、対応作業を実行してPRを作成したことがわかります。

    またGitHub Copilot Agentの処理途中に何度か操作確認のメッセージが表示されました。
    データの読み取りには確認がありませんが、追加/変更系の処理、またターミナルの実行時には確認が入る仕様となっている様です。

    ④ PRの確認

    最後にGitHub上でPRが作成されていることを確認します。

    GitHub PR

    fix after

    PRと修正後の画面を確認すると、Issueで指定した内容が正しく反映されているようです。

    ただし画面のスクリーンショットは正しく作成・アップロードできませんでした。
    今回はチャットの途中で画像URLの入力を求められましたが、別のケースではPR内に存在しないURLを指定することもあり、このあたりはまだ正確さに欠けるようです。
    これはGitHub Copilot Agentの現時点での制限事項と思われます。

    3. まとめ

    以上、GitHub CopilotのMCPサーバーを経由してIssue情報を取得し、作業を実行してPRを作成する例を紹介しました。

    実は今回の内容に関しては、MCPサーバーを使用しなくてもGitHub CLIやgitコマンドで実現可能です。
    実際MCPサーバーが利用できない場合、GitHub Copilot Agentは自動で処理方法を切り替えて動作します。

    しかし、それでもMCPサーバーを使用することで以下のようなメリットがあります。

    ・統一されたインターフェースで複数のサービスと連携できる
    ・手元にGitHub CLIなどのツールをインストールする必要がない
    ・認証情報を一元管理できる
    ・今後のアップデートにより、MCPサーバーでしか実現できない機能が追加される可能性がある

    特に複数の外部サービスを統合して利用する場合、MCPサーバーの真価が発揮されると考えられます。

    今回はGitHub MCPサーバーを使って、MCPサーバーの基本的な使い方とGitHub Copilot Agentでどのように活用されるかを紹介しました。
    次回はSaaS型MCPサーバーのZapier MCPを使用した例を紹介します。

    1. 1. はじめに
    2. 2. MCPとは(一般論)
    3. 3. 実際に触ってわかったこと: よくある誤解
    4.  3-1. MCPサーバーの誤解
    5.  3-2. MCPクライアントの存在
    6. 4. MCPを導入する前に知っておくべきこと
    7.  4-1. 実現できること
    8.  4-2. リスクと注意点
    9. 5. まとめ
    10. 6. おまけ:現状と今後の展望についての極めて個人的な考察
    11. 7. 参考資料

    1. はじめに

    山根さん「小川くん、MCPって知ってる?」
    ボク「あー、アレですよね。最近よく聞くアレ、AIの、あのー・・・アレです。」
    山根さん「じゃあ調べてブログ書いてね。」
    ボク「はい。」

    ブログをご覧の皆さまこんにちは。エンジニアの小川です。

    昨今目覚ましい進展を見せているAIに合わせ、「MCP」なるものを随所で目にする機会が増えました。
    ボクも普段は目にするばかりで強く調べたりはしていなかったのですが、最近業務でMCPについて関わることになりました。 その中で調査したこと、実際に利用していった中で分かったこと、何となく認識していたもので誤解していたこと等をブログをご覧の皆さまと共有できればと思います。

    本記事は入門説明+実体験レポート の2部構成で進めていきます。
    また今回の記事は主にMCPの導入を考えている非エンジニア、ならびにMCPの海に漕ぎだそうとしているエンジニアの方を対象としています。

    2. MCPとは(一般論)

    MCPとは?

    MCPは「Model Context Protocol(モデル・コンテキスト・プロトコル)」の略で、AIモデル(LLM)が外部のツールやデータベースと連携するための共通規格(通信プロトコル)です。
    Anthropic社によって提唱され、様々なAIサービス間で情報をやり取りする際の「連携コスト」を削減し、開発を容易にすることを目指しています。これは「AIのUSBポート」とも呼ばれ、AIの活用をさらに広げるための重要な基盤技術として注目されています。
    (Google 要約より引用)

    ここまでの説明だと少し抽象的ですが、次にMCPに関する記事や図を見ると、多くの人がこの規格をどのようにイメージしているのかが分かります。 以下の図は、MCPの仕組みを説明する際に、多くの記事で引用されている図の一例です。

    mcp-image

    よく見るMCP説明図① (引用: https://zhuanlan.zhihu.com/p/29301066811)

    このイラストはとてもわかり易いですね。

    ふんふんなるほど、MCPというのはAIを異なる複数のサービスと連携できる様にするハブ的なものなのかな。
    で、MCPサーバーは名前通りだとそのMCPが動いているサーバーなのかなと。




    ...でも「Protocol」って言っているのになんでUSBハブになるの?
    何かおかしい気がする...と思いながらも、他の記事を見てみても大体以下の様な図が出てきます。

    mcp-image.jpg

    よく見るMCP説明図②(作:ChatGPT)

    これらの説明から、とりあえず「MCPを使えばAIと各システムを繋ぐことができるんだな」と、 そしてそれはきっと「MCPサーバーを立てれば実現できるんだね」と。

    当初はその様にかなりざっくりと理解していたのですが、実際に触ってみたら概ねその通りではありましたが、認識が色々と違っていました。
    こちら周囲に聞いてみた所、結構な人が同じ誤った認識をしていました

    3. 実際に触ってわかったこと: よくある誤解

    3-1. MCPサーバーの誤解

    MCPは実体のない「通信仕様」であり、USBポートやハブではありません。 またMCPサーバーは「MCPルールに従ってリクエスト/レスポンスを各サービス用に変換する中継サーバー」になります。

    そして「MCPサーバー」を例えるならば、"基本的には"「USBの変換アダプタ」です。
    (変換アダプタ以外の使い方もできますが、ここでは割愛します)

    サーバーがMCPルールに則ったリクエストを受信した際、リクエスト構造を各連携先のサービス/アプリケーションのリクエスト構造に変換してAPIを実行し、レスポンスを再度MCPルールに則ったレスポンス構造に変換して送信元へ返却する中継サーバーになります。

    MCP通信イメージ

    あれ、なんだ「間違ってました」とか言っておいて大して元々と変わんないじゃないか。
    いやいやむしろ「AIと各サービスを接続する」というイメージそのものなんじゃないのと言っていい内容ですね。

    それではMCPサーバーを用いて複数のサービスに接続してみましょう

    大量のMCPサーバー

    !?

    Q.「1台MCPサーバーを立てればそこから全てのサービスに接続にいけるんじゃないの?」

    A. できません (※現状は)

    現在のところ、世の中では"基本的な"MCPサーバーは1サービスにつき1つ必要になっており、AIから複数サービスに接続したければサービス分のMCPサーバーが必要になります。

    この点が恐らく「よく見るMCP説明図①」と大きな違いになっており、また多くの認識違いを起こしてしまっている点ではないでしょうか。

    ちなみに「基本的な」としたのは一部のSaaSで簡単に複数サービスに接続する設定が行えるサービスが存在しています。また現在配布されているOSSのMCPサーバーでも、もしかしたら探せばどこかで誰かが作っているのかもしれませんが、基本的にはサービス単位でMCPサーバーが存在しているのが現状になっています。 (「7. 参考資料」に記載)

    ※ただし、これは既存サービスの多くがRestAPIなどMCP以外のインターフェースで提供されているためです。
     将来的にサービス側が直接MCPプロトコルに対応すれば、中継用のMCPサーバーは不要になります。
     現状ではほとんどのサービスがMCPに対応していないため、変換用のMCPサーバーが必要という状況です。

    3-2. MCPクライアントの存在

    前項でAIから直接MCPに通信を行っている図を載せておきながらアレなんですが、実際はAIがMCPサーバーと直接通信するわけではありません。(※現状は)

    MCPサーバーを使用する際には以下の様な通信が行われています。

    MCPクライアント

    MCPサーバーへの通信を担当するのは「MCPクライアント」です。例としてClaudeCode のようなツールでは、AI(エージェント)が意思決定し、その指示をエージェント内部のMCPクライアントが受けてMCPサーバーに通信します。

    ただしこのMCPクライアント部分は説明の図では省かれることが多い様に思います。この点を誤解していると「AIにどうやってMCP情報を渡すの?」と悩むことになります。(※なりました)

    4. MCPを導入する前に知っておくべきこと

    ここまでしてMCP/MCPサーバーを導入するメリットって何かあるのでしょうか。

    ChatGPTは登場当初、学習済みの情報から返答を作成していましたが、 現在では質問によってWeb上を検索し、そこで得た情報から回答を作成することができる様になっています。

    その様にAIを閉じた状態から外へ出られる状態にすることでできることの可能性は大きく広がりますが、 しかしその一方で、デメリットや注意点をしっかりと認識した上で使わないと大変なことになりえます。

    ここでAIにMCPを導入することで実現できること、そして起こりうる問題の可能性について考えてみます。

    4-1. 実現できること

    ・今まで:新しく社員が入社した際、社内システムのアカウントを個別で登録する
     → AIと各システムのAPIとMCPでつなげることで「新しくアカウント作って」とAIに依頼を投げるだけで作成させる。

    ・今まで:毎月の売上レポートを管理画面からデータを出力してまとめる
     → AIに「◯月の売上レポート作って」と依頼することで売上管理システムにアクセスしてデータを取得してレポートを作成させる。

    ・今まで:EC サイトの売上が急に下がった際、どのページが原因か毎回調査していた
     → MCP でアクセスログ・CVR・検索ワード API を取得し、
       「カートページのエラー率が前週比 40% 上昇しています」
       「検索ワード '在庫' が急増しており、欠品が原因の可能性があります」
      といった "傾向分析+原因推定"をAIが実施。

    ・今まで:セキュリティ確認を人手でやっていた
     → MCP で勤怠・入退室ログ・監視カメラ(サマリデータ)にアクセスし、
       「通常勤務しないはずの深夜帯に A さんの入室が連続しています」
       「直前に退勤しているため、カードの貸し出しの可能性があります」
      など異常なパターンを AI が発見。

    このように、従来は担当者が個別に対応していたルーチンワークから、ログデータを横断的に分析して原因を推測するような高度な判断まで、AIがMCPを介して調査・分析を行い、その結果を提示できるようになります。

    4-2. リスクと注意点

    ・AIの不確実性による問題
     与えた指示に対して指示者が想定していた動作を必ず行うかどうかは実行してから出ないと分からない。
     DBやシステムへの登録,更新,削除などの権限を与えていた場合、指示を出していなくても実行される可能性がある。

    ・AI使用料金問題
     MCP通信では、AIに渡す情報量(トークン数)が増えるため、通常より課金が高くなります。
     最近ではトークンを減らすテクニックがAnthropic社から提供されましたが、まだこの仕様が標準では
     ない為、個別に努力する必要があります。
     (参考資料:Anthropic公式のMCPサーバー設計術!98.7%のトークン削減を実現)

    ボクはこの不確実性にやや危険を感じています。

    例としてボクは普段Amazon Echoを家で使用しているのですが、 「朝9時にアラーム」と告げると翌朝9時にアラームがセットされます。
    しかし1度だけ何故か翌々日の朝9時にセットされたことがありました。 原因は未だ不明ですが、以降はセットした後に必ずセットされた日時の表示を見る様にしています。

    その他にも例えば「新入社員情報を登録して」と伝えても、AIが無関係な情報を削除することも起こり得ます。
    データ取得系のAPIであれば問題ありませんが、登録/更新系のAPIの操作権限をどこまで渡すものか?
    AIによる間違った対応が起こった時はどう対応すべきか、などは考慮して使用する必要がある様に思います。

    5. まとめ

    ◯MCPとは
    ・AIが外部と連携する為の通信仕様のこと。
    ・実体はない。

    ◯MCPサーバーとは
    ・AIと外部サービス(主にAPI)を連携させる為の中継サーバーのこと。
    ・基本的に1サービス毎に1サーバー必要になる。

    ◯ MCPクライアントとは
    ・AI(エージェント)が外部機能を利用する際に、MCPサーバーとの通信を担当するコンポーネント。
    ・Claude Code などのツールに内蔵されていることが多い。
    ・AIの指示を受けて、MCPサーバーにリクエストを送る仲介役。

    ◯ MCP導入のメリット
    ・作業の自動化:アカウント登録やレポート生成など、人が行う業務をAI経由で一括処理できる。
    ・拡張性の高さ:同じプロトコル上で新しいツールやサービスを簡単に追加できる。

    ◯ MCP導入時の注意点
    ・AIの不確実性:誤ったAPI呼び出しでデータ破壊のリスクがある。
    ・コスト増加:MCP通信に必要なトークン量が多く、課金額が跳ね上がる可能性。
    ・セキュリティリスク:第三者製MCPサーバ利用時にはコードレビューが必須。

    次回は「実際にMCPを使ってみた」という記事を投稿する予定です。それではまた!

    6. おまけ:現状と今後の展望についての極めて個人的な考察

    MCPは2024年11月にClaudeを開発したAnthropic社が提唱したAIとサービスを連携させるための標準ルールで、今もどんどんMCPサービスを提供している会社が増えてはいますが、MCPに関してボクはまだ発展途上感が否めません。

    特に現在の主な用途はエンジニア向けなのか、ローカル上でMCPサーバーを動作させて同じくローカルのVsCodeやClaudeCodeから接続して使用する様な例ばかりを多く見ます。

    MCP対応しているワークフローツールの「Dify」を見てみますと、あえてそうしているのか、こちらMCPに対応はしているものの「これMCPの使い方として正しい?」と疑問に思う機能となっています。

    また各種WEBサービスと連携する為のOSSのMCPサーバーを公開しているサイトがありますが、こちらで公開されていたMCPサーバーを利用してみた所、起動はしますがMCPサーバーとのリクエスト/レスポンスの構造が違っていて、正しく連携できなかった事がありました。

    これは元のアプリが間違った作りをしたままリリースしているのか、または途中でMCPの仕様が変わってしまい動かなくなったのか。

    こうした規格は今後もアップデートしていくのでしょうが、過渡期の現在それがどれほどの頻度で発生するのか、開発としては悩ましい所です。

    7. 参考資料: 公開されているMCPサーバ

    ◯Zapier MCP (https://zapier.com/mcp)
     ・有料
     ・約8000のWebAppに接続できるMCPサーバーを提供するSaaS

    ◯CData MCP(https://jp.cdata.com/solutions/mcp/)
     ・2025年末まで無料
     ・APIキーを取得して使用する
     ・Windows Installerが配布されている
     ・機能制限版のコードはGithubで公開されている
      https://github.com/CDataSoftware/cdata-jdbc-mcp-server
     ・主にローカル環境のClaude Code等から接続して使用を目的としていると思われる

    ◯AI Base (https://mcp.aibase.com/ja/explore)
     ・OSSで公開されている個人開発のMCPサーバーをリストアップしているサイト
     ・各画面からGithubへの遷移リンクがある
     ・そのままではろくに使えないものも存在する
     ・セキュリティ面は自分でコードを見て安全か確認する必要がある

    ◯AI Base (https://mcp.aibase.com/ja/explore)
     ・OSSで公開されている個人開発のMCPサーバーをリストアップしているサイト
     ・各画面からGithubへの遷移リンクがある
     ・そのままではろくに使えないものも存在する
     ・セキュリティ面は自分でコードを見て安全か確認する必要がある

    ◯MCP Hub (https://hub.docker.com/mcp/explore)
     ・docker社が管理するMCPサーバーのDockerイメージ配布サイト
     ・主にサービス提供企業が作成した公式Imageが配布されている

    ◯Github MCP Registry (https://github.com/mcp)
     ・企業が開発した自社サービスのMCPサーバーがリストアップされている


    目次

    1. はじめに
    2. 環境構築
    3. AI に実装を依頼する
    4. 所感
    5. まとめ





    1. はじめに

    こんにちは。エンジニアの齋藤です。

    昨今のSNSでは、ChatGPTやClaudeを使ってアプリを作ったという報告を目にすることがあります。一方で、「どんな手順で進めればいいのか」「どこまでAIに任せて、どこから自分で考えるべきか」 といった具体的なプロセスについては、まだ体系的な情報が少ないように感じます。

    本記事では、Apple が Xcode 26 で導入した Claude統合機能 を活用し、実際にTODO管理アプリを作る過程を通じて、AIを使った開発の実態を具体的に解説 します。非エンジニアの方でも実践できるよう、環境構築から完成まで、すべてのステップを詳細に記載しました。

    AI開発の可能性を体感していただくことで、チームの生産性向上や新規事業の迅速な検証といった、新しいアプローチのヒントを得ていただければ幸いです。


    1-1. この記事で分かること

    • Claude統合機能を利用したiOSアプリ開発環境の構築手順
    • 非エンジニアでも理解できる開発フロー
    • 実際に使えるTIPS

    1-2. この記事では割愛すること

    • Swift/SwiftUIの詳細な文法説明
    • UIデザインの詳細
    • App Storeへの公開手順
    • CLAUDE.mdなどを利用したチーム開発での運用

    1-3. 対象読者

    • 非エンジニア: 自分でもアプリ開発してみたい方
    • iOS開発初心者: AI支援機能を利用してiOS開発を学習したい方
    • iOSエンジニア: 最新のAI支援開発を体験したい方
    • プロジェクトマネージャー: AI開発の実態を把握したい方

    1-4. 今回作成するアプリ

    シンプルなTODO管理アプリを作成します。

    主な機能

    • TODO の作成・編集・削除
    • 完了/未完了の切り替え
    • 期日設定と期限アラート(色分け表示)
    • ステータス管理(未着手/処理中/作業完了/完了)
    • ドラッグ&ドロップでの並び替え
    • データの永続化(アプリを閉じても保存)

    所要時間
    約 2〜3 時間(環境構築含む)





    2. 環境構築

    今回の検証に利用したMac、およびツールのスペックは以下の通りです。

    macOS Tahoe 26.1
    チップ Apple M1 Pro
    メモリ 32GB
    Xcode 26.1

    2-1. Xcode のインストール

    1. App Storeアプリ を開く
    2. 検索で「Xcode」を入力
    3. 「入手」をクリック
    4. ダウンロード完了まで待つ (10GBほどあるため、回線速度によっては30分ほどかかる場合があります)


    2-2. Claude統合機能 の設定

    Xcodeを起動して、設定画面を開く

    1. メニューバーから Xcode > Settings... をクリック(⌘,)
    2. 設定ウィンドウが開きます
    3. 左メニューのIntelligenceを選択

    Claudeアカウントでログイン

    1. 「Sign In...」をクリックして、お手持ちのClaudeアカウントで認証してください
    2. 接続要求の画面が表示されたら、「承認する」をクリック


    2-3. プロジェクトの作成

    新規プロジェクトを作成

    1. Xcode を起動
    2. "Create New Project" をクリック
    3. テンプレート選択画面で:
      • iOS を選択
      • App を選択
      • Next をクリック

    プロジェクト設定

    以下の項目を入力します:

    項目 設定内容 説明
    Product Name SampleTodoApp アプリの名前
    Team (自分の Apple ID) 開発者アカウント
    Organization Identifier com.yourname 任意の識別子
    Interface SwiftUI UI構築用のフレームワークを選択します。
    SwiftUIかStoryboardを選択可能。
    Language Swift そのまま
    Testing System None 今回は不要
    Storage None 今回は不要

    ※ Organization Identifier は逆ドメイン形式(com.会社名.アプリ名)が一般的ですが、個人開発なら jp.yourname.SampleTodoApp のような形式で問題ありません。

    プロジェクトの保存先を選択

    1. 任意のフォルダを選択
    2. "Create Git repository" にチェック(バージョン管理用、推奨)
    3. Create をクリック

    これでプロジェクトが作成され、Xcode のメイン画面が開きます。





    3. AI に実装を依頼する

    ここから実際に実装していきます。直接コードを書かずに アプリを完成させます。


    3-1. 開発フロー

    下記の開発フローで進めます。
    肝は、要件定義をもとに全体を一括実装したあとに、個別に細かい部分を修正していくというところになります。

    1. 要件定義(必要に応じて設計レベルまで)を作成する
    2. 前段で作成した要件定義をXcodeのCoding Assistantに読み込ませる
    3. Coding Assistantがコードを自動生成
    4. シミュレータで実行
    5. エラーや想定と異なる箇所があれば、個別にCoding Assistant経由でコードを修正


    3-2. 要件定義の作成

    まずは、作りたいアプリの要件を整理します。これが最も重要なステップです。

    ※ 重要: 要件定義の作成自体も、生成AI(ClaudeやChatGPT)を積極的に活用しましょう。アイデアを箇条書きで伝えるだけで、AIが構造化された要件定義を作成してくれます。

    要件定義の作り方

    アイデアを簡単に箇条書きする

    まず、作りたいアプリのイメージを箇条書きで整理します:

    作りたいアプリ: TODO管理アプリ
    
    基本的な機能:
    - TODOの追加・編集・削除
    - 完了/未完了の管理
    - 期限の設定
    - 並び替え
    
    欲しい機能:
    - ステータス管理(未着手、処理中など)
    - 期限が近いTODOを色分け表示
    - データはアプリを閉じても保存される
    

    AIに要件定義の作成を依頼

    上記の箇条書きを Claude に渡して、要件定義書を作ってもらいます:

    以下のアイデアをもとに、iOSアプリ開発用の詳細な要件定義書を作成してください。
    
    【要件定義書に含めてほしい項目】
    - アプリ概要
    - 機能要件(画面ごとに整理)
    - UI/UX仕様
    - データ管理(データモデル、永続化方法)
    - 技術仕様
    - 画面フロー
    - ファイル構成
    
    【アイデア】
    [上記の箇条書きを貼り付け]
    
    SwiftUIを使用したネイティブiOSアプリとして実装したいです。
    

    生成された要件定義を確認・修正

    AIが生成した要件定義を確認し、必要に応じて修正を依頼します:

    要件定義ありがとうございます。
    以下の点を修正してください:
    
    - ステータスは4段階(未着手/処理中/作業完了/完了)にしたい
    - 期限が過ぎたTODOは赤、3日以内は橙色で表示したい
    - ドラッグ&ドロップで並び替えできるようにしたい
    

    このように、対話しながら要件定義を磨き上げることで、非エンジニアでも実装可能なレベルの詳細な仕様書が完成します。

    完成した要件定義のサンプル

    上記のプロセスで作成された要件定義の例を以下に示します:

    # SampleTodoApp 要件定義書
    
    ## 1. 概要
    
    ### 1.1 アプリケーション名
    SampleTodoApp
    
    ### 1.2 目的
    日々のタスクを効率的に管理するためのTODO管理アプリケーション。作成、編集、削除、ステータス管理などの基本機能を備えたiOSネイティブアプリケーション。
    
    ### 1.3 対象プラットフォーム
    - iOS(SwiftUI使用)
    
    ---
    
    ## 2. 機能要件
    
    ### 2.1 TODO一覧表示機能
    
    #### 2.1.1 基本表示
    - TODOアイテムをリスト形式で表示
    - 各アイテムに以下の情報を表示:
      - タイトル
      - 完了/未完了チェックボックス
      - ステータスバッジ(カラー付き)
      - 作成日
      - 期日(設定されている場合)
    
    #### 2.1.2 空状態
    - TODOが0件の場合、空状態画面を表示
    - メッセージ:「TODOがありません」
    - システムアイコン:checklist
    - 説明文:「右上の + ボタンで新しいTODOを追加してください」
    
    #### 2.1.3 期日表示の色分け
    - **赤色**:期日超過
    - **オレンジ色**:期日まで3日以内
    - **グレー色**:通常(4日以上先)
    
    #### 2.1.4 完了済みアイテムの表示
    - タイトルに取り消し線を表示
    - チェックマークアイコンを緑色で表示
    - テキストカラーをセカンダリカラーに変更
    
    ### 2.2 TODO追加機能
    
    #### 2.2.1 入力項目
    **基本情報セクション:**
    - タイトル(必須):テキストフィールド
    - ステータス:ピッカー(デフォルト:未着手)
    
    **日付セクション:**
    - 作成日:日付ピッカー(デフォルト:現在日時)
    - 期日設定トグル
    - 期日:日付ピッカー(トグルON時のみ表示、作成日以降の日付のみ選択可能)
    
    **説明セクション:**
    - 説明:テキストエディター(複数行入力可能、高さ150〜200pt)
    
    #### 2.2.2 バリデーション
    - タイトルが空の場合、保存ボタンを無効化
    - 保存ボタンの背景色を変更(無効時:グレー、有効時:ブルー)
    
    #### 2.2.3 UI構成
    - ナビゲーションタイトル:「新規TODO」
    - キャンセルボタン(左上)
    - 保存ボタン(画面下部固定、フルワイド)
    - スクロール可能なフォーム部分
    
    ### 2.3 TODO編集機能
    
    #### 2.3.1 編集可能項目
    - タイトル
    - ステータス
    - 期日(設定/解除/変更)
    - 説明
    
    #### 2.3.2 編集不可項目
    - 作成日(表示のみ、グレーアウト)
    
    #### 2.3.3 UI構成
    - ナビゲーションタイトル:「TODOを編集」
    - キャンセルボタン(左上)
    - 削除ボタン(右上、赤色のゴミ箱アイコン)
    - 保存ボタン(画面下部固定)
    
    #### 2.3.4 削除機能
    - 削除ボタンタップ時、確認アラートを表示
    - アラートメッセージ:「『[タイトル]』を削除しますか?この操作は取り消せません。」
    - ボタン:「キャンセル」「削除」(破壊的アクション)
    
    ### 2.4 TODO操作機能
    
    #### 2.4.1 完了/未完了切り替え
    - チェックボックスタップで即座に状態を切り替え
    - アニメーション付きで表示を更新
    
    #### 2.4.2 並び替え
    - 編集モード時にドラッグ&ドロップで順序変更可能
    - 変更内容は自動保存
    
    #### 2.4.3 削除
    - スワイプ削除に対応
    - 編集モード時の削除ボタンにも対応
    
    #### 2.4.4 詳細表示
    - リストアイテムタップで編集画面へ遷移
    
    ### 2.5 データ管理機能
    
    #### 2.5.1 データ永続化
    - UserDefaultsを使用してデータを保存
    - JSON形式でエンコード/デコード
    
    #### 2.5.2 自動保存タイミング
    - TODO追加時
    - TODO更新時
    - TODO削除時
    - TODO並び替え時
    - 完了状態変更時
    
    ---
    
    ## 3. データモデル
    
    ### 3.1 TodoItem構造体
    
    ```swift
    struct TodoItem: Identifiable, Codable {
        let id: UUID                // 一意識別子
        var title: String           // タイトル(必須)
        var isCompleted: Bool       // 完了フラグ
        let createdAt: Date         // 作成日時
        var dueDate: Date?          // 期日(オプショナル)
        var description: String     // 説明
        var status: TodoStatus      // ステータス
    }
    ```
    
    ### 3.2 TodoStatus列挙型
    
    4つのステータスを定義:
    
    | ステータス | 表示名 | カラー | 
    |-----------|--------|--------|
    | notStarted | 未着手 | グレー |
    | inProgress | 処理中 | ブルー |
    | workCompleted | 作業完了 | オレンジ |
    | completed | 完了 | グリーン |
    
    ---
    
    ## 4. UI/UX要件
    
    ### 4.1 画面構成
    
    #### 4.1.1 一覧画面(ContentView)
    - NavigationView構造
    - ツールバー:
      - 左側:編集ボタン(日本語表示)
      - 右側:追加ボタン(+アイコン)
    - リスト表示エリア
    - 上部セーフエリアに16ptのスペーシング
    
    #### 4.1.2 追加/編集画面
    - NavigationStack内でシート表示
    - ScrollView + Form構造
    - 固定された下部ボタンエリア
    - フォーム最小高さ:700pt
    
    ### 4.2 カラースキーム
    - システムカラーを使用(ダークモード対応)
    - ステータスバッジの背景:対応カラーの10%透明度
    - 保存ボタン有効時:ブルー
    - 保存ボタン無効時:グレー
    - 削除ボタン:レッド
    
    ### 4.3 アクセシビリティ
    - EditButtonにロケール設定(ja_JP)を適用
    - 日付フォーマットは日本語形式(yyyy/MM/dd)
    
    ---
    
    ## 5. 技術要件
    
    ### 5.1 開発環境
    - 言語:Swift
    - フレームワーク:SwiftUI
    - アーキテクチャ:MVVM
    - 非同期処理:Swift Concurrency(MainActor使用)
    
    ### 5.2 使用技術
    - **データバインディング**:@Published, @StateObject, @ObservedObject
    - **ナビゲーション**:NavigationView, NavigationStack
    - **モーダル表示**:Sheet
    - **状態管理**:@State, @Environment
    - **データ永続化**:UserDefaults + Codable
    
    ### 5.3 ViewModel(TodoViewModel)
    - @MainActorで宣言(UIスレッドで実行)
    - ObservableObjectプロトコル準拠
    - 提供メソッド:
      - `addTodo()` - TODO追加
      - `updateTodo()` - TODO更新
      - `deleteTodo()` - TODO削除
      - `moveTodo()` - TODO並び替え
      - `toggleCompletion()` - 完了状態切り替え
    
    ---
    
    ## 6. 制約事項
    
    ### 6.1 データ保存
    - UserDefaultsを使用するため、大量データには不向き
    - データ容量制限に注意
    
    ### 6.2 日付選択
    - 期日は作成日以降の日付のみ選択可能
    - 作成日は編集不可
    
    ### 6.3 バリデーション
    - タイトルが空の場合は保存不可
    
    ---
    
    ## 7. 今後の拡張可能性
    
    ### 7.1 検討される機能
    - カテゴリー/タグ機能
    - 検索・フィルター機能
    - 優先度設定
    - 通知機能(期日アラート)
    - iCloudによるデータ同期
    - SwiftDataへの移行(より高度なデータ管理)
    - ウィジェット対応
    - 添付ファイル機能
    
    ### 7.2 改善案
    - オフライン対応の強化
    - パフォーマンス最適化(大量データ対応)
    - アニメーション強化
    - アクセシビリティの向上(VoiceOver対応など)
    
    ---
    
    ## 8. 非機能要件
    
    ### 8.1 パフォーマンス
    - リスト表示:スムーズなスクロール
    - データ保存:同期的に実行(データ量が少ないため許容)
    
    ### 8.2 ユーザビリティ
    - 直感的な操作性
    - 即座のフィードバック
    - エラー時の適切なメッセージ表示
    
    ### 8.3 保守性
    - MVVMアーキテクチャによる責務分離
    - Codableプロトコルによるシリアライズ処理
    - プレビュー機能による開発効率化
    
    ---
    
    ## 9. ファイル構成
    
    ```
    SampleTodoApp/
    ├── SampleTodoAppApp.swift      # アプリケーションエントリーポイント
    ├── Models/
    │   └── TodoItem.swift           # データモデル定義(TodoItem, TodoStatus)
    ├── ViewModels/
    │   └── TodoViewModel.swift      # ビジネスロジックと状態管理
    └── Views/
        ├── ContentView.swift        # TODO一覧画面
        ├── AddTodoView.swift        # TODO追加画面
        └── EditTodoView.swift       # TODO編集画面
    ```
    
    

    3-3. Claudeへの実装依頼

    XcodeのCoding Assistantを表示する

    左ペインのCoding Assistantをクリックします

    プロンプトを入力

    以下のプロンプトをCoding Assistant経由で Claude に送信すると、必要なファイルが自動生成されます。

    以下の要件定義に基づいて、SwiftUIでiOS TODO管理アプリを実装してください。
    
    【重要な指示】
    1. すべてのファイルを完全な形で出力してください
    2. 各ファイルのパス(例: Models/TodoItem.swift)を明示してください
    3. 実装の際、適切なフォルダ構成を提案してください
    4. すべてのコードにコメントを付けてください(日本語で)
    5. エラーハンドリングを適切に実装してください
    
    【要件定義】
    
    [上記の要件定義をそのまま貼り付け]
    
    

    3-4. ビルドと動作確認

    ファイルが生成されたら、いよいよ実行しましょう。

    ビルド

    ⌘ + B (Command + B) を押してビルドします。

    エラーが出た場合:

    1. Coding Assistantで、Claude に以下のように伝える:
    発生しているビルドエラーを解消して。
    
    1. 該当ファイルが修正される
    2. 再度ビルドを実行する

    ※ Coding AssistantがXcode上のエラー情報などを直接読み取るため、エラー内容の添付は不要です


    シミュレータで実行

    1. Xcode ツールバーでデバイスを選択(例: iPhone 16e)
    2. ⌘ + R (Command + R) を押す
    3. シミュレータが起動

    動作確認

    シミュレータが起動すると、自動的にアプリが立ち上がります。
    要件定義の仕様をもとに、動作確認を行いましょう。


    TODO一覧
    (ブランク)
    TODO一覧 TODO一覧
    (編集)
    TODO一覧画面(ブランク) TODO一覧画面 TODO一覧画面(編集)
    TODO新規作成画面 TODO編集画面
    TODO新規作成画面 TODO編集画面


    3-5. 細かい調整

    動作確認後、気になる点があれば、Coding AssistantからClaudeに伝えます。

    調整例:

    現在のアプリでは、期日が表示される位置が少し窮屈です。
    TODORowのレイアウトを調整して、期日を右端に表示するように変更してください。
    

    指摘をClaudeへ送信 → Coding Assistantが自動修正 → 確認

    このサイクルを繰り返すことで、理想のアプリに近づけます。





    4. 所感

    今回の開発を通しての所感をまとめます。

    4-1. 要件定義が8割

    曖昧な要件だと、AIは「推測」で埋めます。後から「これも欲しい」と追加すると、既存コードとの整合性が取れず大幅な修正が必要になる場合もあります。

    本記事でも言及しているように、要件定義の作成自体もAIに任せることができます。ぜひ有効活用してください。

    悪い例:

    TODO管理アプリを作ってください

    良い例:

    [詳細な要件定義を提示]
    - 画面構成(一覧、追加、編集)
    - 各画面の具体的な機能
    - データ構造(どんな情報を持つか)
    - UI/UXの仕様(色分け、アニメーションなど)
    

    4-2. 開発方針と実装規模

    今回実装したアプリは比較的小さい規模だったため、「一括実装→修正」の方針を採用しました。
    それでは、実装規模が大きくなったときは、どのような開発方針を採るべきでしょうか。
    規模に応じて、適切な粒度で実装スコープを分割することが重要そうです。

    アプリ規模 画面数 推奨アプローチ
    小規模 1〜5画面 一括実装
    中規模 6〜14画面 機能単位で分割
    大規模 15画面以上 機能単位分割 / 段階的実装(MVP→拡張)


    4-3. スクリーンショットの活用

    Claudeは画像解析も可能です。
    言葉で説明しづらいUIの改善も、スクリーンショットで伝えることができます。

    [アプリのスクリーンショットを添付]
    
    このUIをもっと洗練させてください。
    具体的には、余白を増やし、フォントサイズを調整したいです。
    





    5. まとめ

    本記事では、非エンジニアでもClaudeを活用すれば、わずか2〜3時間でiOSアプリを開発できることを実証しました。
    ここで重要なのは「詳細な要件定義の作成」と「AIへの適切な指示」でした。
    非エンジニアにとっても、自らアイデアを形にできる新しい可能性が開かれました。
    この機会に、ぜひ他の生成AIサービスも含めて、色々お試しいただけますと幸いです。

    1. Gartner社による生成AIのレポート
    2. 生成AI導入の進め方
    3. まとめ


    Gartner社による生成AIのレポート

    Gartner社は、データ品質の低さ、リスク管理の不十分さ、コストの増大、ビジネス価値の不明確さなどの理由で、2025年末までに生成AIプロジェクトの30%がPoC以降に中止されるだろうと発表しました。

    2024/07/29に発表されたGartner社によるレポート


    2024/7/29にシドニーで開催されたGartner Data & Analytics Summit

    Gartner Data & Analytics Summitで講演した、Gartner社のRita Sallam氏は、「今までされてきた誇大宣伝の後、各社の経営者は生成AIに実施した投資回収を待ちきれず、生成AIの価値を表明することに苦労しています。生成AIプロジェクトの範囲が広がるにつれて、システム開発・利用に必要な金銭的負担がますます大きくなっています。」と話しました。

    Gartner社によると、生成AIは生産性向上・業務効率化のために使用されることが多いですが、会社の利益に結びつけることが難しく、投資判断をしにくい背景があると述べられています。


    生成AI導入にかかる費用例

    下記はGartner社が発表した生成AI導入にかかる費用例です。プロジェクトの規模に応じてかかる費用は大幅に変動するため、参考値としてお受け取りいただきたいですが、投資に見合うためのシステム導入をするためには、新たなビジネスチャンス(コスト削減ではなく、売上増加)を目指して生成AIを導入する必要がありそうです。

    生成AI導入にかかる費用例

    「残念ながら、生成AIには万能なソリューションはなく、コストは今までのシステム開発や導入に比べて不確実性が大きいです。」とRita Sallam氏は言います。「コストは、支出額、投資するユースケース、採用する導入アプローチによって決まります。市場を大きく変えるために生成AIをあらゆるところに導入したいと考えている場合や、生産性向上や既存プロセスの拡張に重点を置く堅実な場合など、費用、リスク、変動性、戦略的影響のレベルはそれぞれ異なります。」

    生成AI導入に後ろ向きなことを書いてしまいましたが、導入の効果・成功例は多分にあります。Gartner社のレポートWhat Mature Organizations Do Differently for AI Successでは、ユース ケース、職種、従業員のスキル レベルに応じて異なるさまざまなビジネス改善を報告しています。最近の822名を対象とした調査では、回答者の平均では15.8%の収益増加、15.2%のコスト削減、22.6%の生産性向上が報告されており、使い所を適切に見極めることで、効果を得られることが分かっています。

    次の章から生成AIプロジェクトの進め方を紹介します。


    生成AI導入の進め方

    生成AI導入の進め方


    1. 生成AIの得意不得意を知る

    まず生成AIがどのようにビジネスに貢献できるかを理解することが大切です。生成AIとは、テキスト、画像、音声など、様々な形式のコンテンツを自動的に生成する技術です。下記に代表的な得意分野を記載します。

    代表的な活用分野

    • カスタマーサポートの自動化
    • 商品説明やコンテンツの自動生成
    • デザインや広告素材の生成
    • 自動テキスト要約やレポート作成


    2. プロジェクトの目的と目標を決める

    まずビジネス課題を明確にするところから始まります。どのような問題を解決したいのか、あるいはどのプロセスを効率化したいのかを具体的に定義します。

    • 目的の設定: 生成AIを導入することで達成したいゴールは何か?
    • KPIの設定: 生成AIの効果を測るための指標(例:生成されたコンテンツの量、品質、時間の短縮など)を設定します。


    3. データの収集と準備

    自社のナレッジを学習させるためには、大量のデータが必要です。データの品質が精度に大きく影響します。以下のステップを踏んで、データの質を確保します。

    • データの収集: 自社のデータや公開されているデータセットを活用します。
    • データの前処理: データのクリーニングや正規化を行い、ノイズを除去します。
    • データのアノテーション: 必要に応じて、データにラベル付けを行い、モデルが効果的に学習できるようにします。


    4. モデル選定とカスタマイズ

    生成AIモデルには、既存のオープンソースモデルやクラウドサービスで提供されているモデルを利用する方法があります。たとえば、OpenAIのGPTシリーズやDALL-Eなどの大規模言語モデルが有名です。

    • 既存モデルの活用: 既存の生成AIモデルを使用すれば、導入がスムーズで費用対効果が高いです。
    • カスタムモデルの構築: 自社のビジネスニーズに合わせてモデルをカスタマイズする場合、ファインチューニングが必要です。


    5. インフラの選定と構築

    生成AIは計算リソースを大量に使用するため、適切なインフラが必要です。クラウドサービス(AWS、GCP、Azureなど)を活用すると、スケーラビリティやコスト面で柔軟に対応できます。

    • クラウドインフラの構築: 生成AIモデルのトレーニングや推論に最適化されたインフラを用意します。
    • コストの最適化: 必要に応じてオンデマンドリソースを活用し、コストを管理します。


    6. テストとパイロット運用

    AIモデルの導入前には、十分なテストとパイロット運用を行う必要があります。生成AIの出力品質を確認し、ビジネス要件に合致しているかどうかを評価します。

    • 生成結果の検証: 出力されたコンテンツが期待通りか、ユーザーが満足できる品質かを確認します。
    • パイロット運用: 小規模なプロジェクトでまず運用を開始し、実際の運用に耐えられるかテストします。


    7. 生成AIの運用と改善

    生成AIは、導入した後も継続的な改善が可能です。運用中に得られたフィードバックをもとに、微調整を行います。

    • パフォーマンスモニタリング: モデルの出力やパフォーマンスを監視し、問題があれば対応します。
    • 継続的な改善: 新しいデータや技術を取り入れて、AIモデルを進化させ続けます。

    • まとめ

      生成AIが「既存のデータを活用し、新たなコンテンツ(文章・画像・音声など)などまだ得られていないものを作る技術」であるため、その技術を作ることも正解のないプロジェクトです。

      正解のない、つまり生成AIプロジェクトは場当たり的になってしまうのか?とご質問いただくことが多いのですが、それは違います。ここは他のシステム開発プロジェクトと同じで、適切な準備と計画が成功の鍵を握ります。目標を明確にし、データを整備し、生成AIを段階的に導入することで、途中で頓挫してしまう・システム構築したけれど使えない・想定より費用がかかる、などの失敗へのリスクを低減します。

      当社では、生成AIの活用にむけて無料相談会を実施しています。みなさんが考えていることを具体化させる、次のタスク・ステップを明確にする、生成AIでできるか回答する、などのようなご相談も大歓迎です。ぜひお気軽にお問い合わせください。




      X(旧Twitter)・Facebookで定期的に情報発信しています!

    このアーカイブについて

    このページには、過去に書かれた記事のうち生成AIカテゴリに属しているものが含まれています。

    次のカテゴリはデータ分析です。

    最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。