3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【社内発表】AI駆動開発を意識した開発についてやってみた:MCPサーバーとiOSアプリの連携

Last updated at Posted at 2025-11-12

こんにちは。
今回、社内の発表イベントで生成AIについて調査したり、試しに開発してみたりなどしてみた結果を社内で発表しました。
折角なので、Qiitaにも投稿します。

今回実施したこと

生成AIを使うことが今まであまりなかったので、一体どういう感触で、どういうことができるものなのかが知りたいと感じていました。
そこで、Claudeという生成AIモデルを使って、開発作業を楽にしてくれる機能があるのかどうか、検証をしてみることにしました。
取り組んだ内容は下記です。

  • AI主体の開発プロセスの挑戦: どのようなアプリケーションを作るかという企画から、実際の実装まで、基本的にAIに全て聞くような形を主体として行ってみました。
     
  • 未経験技術への挑戦: 今までに触ったことのない知見のない技術であっても、AIの助けを借りてひとまずの完成までこぎつけられるのか、最低限動くものを作って検証します。そのため、容易にアーキテクチャが想像できるようなものは作成しないという縛りプレイを課しました。
     
  • Claudeの検索機能の向上に貢献するものを作る: Claudeはすごく性能のいいAIですが、いまいち検索機能が弱いと感じました。そこで、何か検索機能を向上させるようなものを作りたいというテーマを設定しました。
    (現在では検索機能がデフォルトでつくようになったので、正直実装しなくても...といった感じになってしまいました。)
     
  • MCPサーバーの検証も同時に行う: Model Context Protocolというプロトコルが、Claudeの提供元であるAnthropic社から提出されています。仕様を見ると非常に将来性のある技術だったので、こちらの機能を実装するということにも挑戦してみました。
     
  • かかった期間: 約一か月半

アーキテクチャ図&技術要素

さて、何はなくともアーキテクチャです。
Claude Desktop上でカスタムコネクタとして、作成した機能のURLを指定し、
AWSとスマホを経由してPerplexityに到達したら検索結果を返すものになっています。
発表用PowerPointから抜き出したので汚

キャプチャ.PNG

使用した技術

技術名 提供元・主導 概要 補足・特徴
Claude Anthropic社 生成AI 個人的には現状最も使っていて楽しいAI。デスクトップ版(Claude Desktop)がある。MCP用のコネクタを使用してMCPサーバーの接続拡張が可能。
Perplexity Perplexity社 生成AI Web検索に特化し、関連情報をまとめて結果を出す。開発者曰く「WikipediaとChatGPTの子供」。
MCP (Model Context Protocol) Anthropic社 (主導) プロトコル AIモデルに対し、外部データへのアクセスを拡張する仕組み。json-rpc 2.0をベースに策定。USB-Cのように、AIアプリが外部システムと接続するための共通化された仕組みを提供する。
AWS (API Gateway, Lambda) AWS HTTPS用API実装の仕組み Node.jsランタイムを使用し、MCPサーバーを実装。
AWS (IoT Core) AWS 通信サービス Lambdaからの通信を受けて、MQTTによりスマホにクエリを流すために使用。iPhoneをIoTデバイスとして取り扱うことが可能。
スマホ (iPhone 16 Pro) Apple (iOS 18) デバイス iPhone 16 Pro (iOS 18)を使用。Perplexityへの通信は、Swiftアプリ上でヘッドレスブラウザを使用して実施。

Claudeの機能で良かったところ

プロジェクト管理機能が優れている
チャットを通してClaudeと対話するのですが、そのチャットをプロジェクトという単位でフォルダ分けすることができます。これのおかげで、ある事柄に関連のあるチャットをまとめておくことができるのですこぶる便利です。
自分がどう考えたかというのがチャットで残るので、コードとコメントを残すGithubよりも、プロジェクトの管理という面では中々よさそうではと感じました。
(現在ではChatGPTにも同じような機能がついていますね。)

アーティファクト機能がすごい
チャットの中で生成したファイルなどを、アーティファクトとしてためて置ける仕組みがあり、これもまたすこぶる便利でした。
そのチャットで会話した内容のまとめをMDファイルにしてもらったり、作ってもらったコードを保存してもらったりできるので、これもプロジェクトの管理にぴったりです。
バージョン管理もしてくれるので、至れり尽くせり。

実行結果 – アプリの実行結果画面

左側のClaudeで歌手の名前と概要を入力していますが、右側に表示されているiOSシミュレーターを経由し、Perplexityまで検索をかけて結果を取得しています。
(スクショの取り方が悪いので右側ほとんど見えてないですね...)

キャプチャ.PNG

感想 & 得たもの

やっていて、単純に楽しかったです。久しぶりに何かを作っていて楽しいと感じられる期間でした。
Claudeは他のAIと比べると文脈の理解力が高い印象で、対話を重ねて作り上げていく能力が高いと感じました。プロジェクト管理を行いつつプロダクトを作るのには利点があります。特に、プロトタイプをとりあえず作りたいときには向いていると思いました。
 
一方、AIは万人をスーパーエンジニアにするものではなく、やる気のある人、努力する人をより高みに引き上げてくれるものだと感じました。とりあえず機械的に使ってみてもあまり動いてくれず、入力が大きく変わらない限りは出力も大して変わない印象です。エラーメッセージだけ入力しても適切な答えは返ってこないし、AIが出してくる結果が必ずしも合っているわけではないので、AIと共同作業をしているという認識を忘れてはいけないと感じました。

課題

MCP

  • AIモデルに拡張機能を持たせる仕組みであって、他のAIモデルと共同させるための仕組みではなさそうに思いました。あくまで特定のサイトへの参照を提供したり、そのサイトが提供する機能をAIモデルに組み込みたいという用途に強いと思うので、今回のような、他モデルとの共同を行わせる場合は、LangChainのような技術が欲しいと思いました。
  • 実際のところ、Perplexityにクエリを投げるのは全然成功しているのに、受け取った値のパースなどでエラーが発生することはよくありました。
    おそらく、返り値が表形式だったりすることに起因するのではと思うので、やはりMCP使うよりは何か別の仕組みで協調させるのがいい感じですね。

Claude

  • 主に夜22時ぐらいから、アクセスエラーが発生することがままありました。欧米圏ではちょうど午前中にあたるので、多分アクセスが増えるためだと思われます。障害もそこそこ多そうなので、この辺の制約を解消するにはAWS Bedrockなどを使った方がいいかもしれません。
  • 意外と頑固というか、そこはもう修正したと言っている箇所をかたくなに元に戻してくることがままありました。もし直せるなら直したいですね。

iOSアプリ

  • ちょっとMCPサーバーを作りたい用途でiOSアプリを使うのはやりすぎでした。今回1ヶ月半もかかった面倒くささの9割がここに起因します。
  • アーキテクチャ図を見てもらえればわかりますが、単純にAWS Lambdaから直接Perplexityにクエリを投げるのが10000倍楽です。 ヘッドレスブラウザが特に工夫しなくても動かせるという点を考慮してiOSアプリにしましたが、Lambdaカスタムレイヤーでヘッドレスブラウザが動くらしいので今回のアイデアを活かしたいならそっちのほうが良いかもしれません。
  • また、最近iOS26にバージョンアップしたのでシミュレーターの設定もiOS26にしたのですが、アプリが動かなくなるという事例が発生しました。iOS 18に戻せば動いたので、やはりモバイルアプリの開発は茨の道っぽいなぁ、と思いました。
  • MQTT (IoT Core) の取り扱えるデータサイズがかなり小さいので、文字列とはいえ大量の検索結果が返されるとパンクする可能性もありますね。
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?