今回は「社内向けデスクトップアプリ開発」について話しました。
安全なMCPサーバーを社内配布したい/デスクトップアプリ “Shepherd”/Notion公式MCPのトークン地獄/10秒に1回スクリーンショットしてOCR/ローカル完結/日報生成プロンプト/スケジュール(定期実行)/HEARTBEATでAmbientAgent的な体験を実現/サイレントリリース
▼ 名言ステッカーやアクリルキーホルダーなどのグッズが増えました🙌
https://suzuri.jp/magicalfm
▼ マヂカル.fmとは
関西人のプロダクトマネージャー@michiru_daと関西人(?)のソフトウェアエンジニアの@upamuneが週2で配信する雑談Podcast。
▼ お便りや感想はこちらからおまちしています。
X(旧Twitter): #magicalfm
おたよりフォーム: https://magical.fm/hello
マシュマロ:https://marshmallow-qa.com/xno94s1ortkw63w?t=e1P9wQ
サマリー
このエピソードでは、社内でのMCPサーバーの実装とクロードボットというAIエージェントに関する議論が行われています。また、タイムライン機能やハートビート機能についても説明され、それらの活用方法が紹介されています。エピソード220では、MCPサーバーの開発や機能について語られており、特にデスクトップアプリとしての利便性や新機能の追加、社内での活用事例に焦点が当てられています。
MCPサーバーの実装
マヂカル.fmは関西人のプロダクトマネージャーみちるだと関西人のソフトウェアエンジニアのオパミオンが週2で配信する雑談ポッドキャストです。お願いします。
お願いします。
今日のテーマは、オパミオンはなぜムズッとになったのか。
わけわかんない。
前回ね、クロードボットっていう最近出たAIエージェントをボットみたいに使えてめちゃ流行ってるやつの話をしましたと。
で、オパさんもそれについて調べてて、そのリスコードとかに入って、いろんな人のユースケースとか見てたらしいんですけど、
それは、その使われ方を盗むため。
それはなぜなのか。何を意味しているのか。
そうですね。私たちが所属している会社で、私が、みんながMacとかで使えるアプリケーションを開発してるんですね。
これは、GUIアプリって伝わるのかな。普通の。
Macで起動するデスクトップアプリ。
そうそうデスクトップアプリ。それ何するやつなのかというと、これのポッドキャスト何回か言ったMCPってあるじゃないですか。
例えば、AIからSlackにアクセスしたいとか、AIからGoogleカレンダーにアクセスしたいって時に、
まあいろんな人が書いてるやつがあるんですけど、その野良の人がね。それをなんか好き勝手に入れてたら危ないから、
それをまるっと会社の人が欲しそうな、例えばGoogleカレンダーとかGmailとかNotionとかそこら辺の
MCPサーバーを私が実装して、このデスクトップアプリをインストールしてもらって、あなたの認証してもらえれば、こいつがMCPサーバーになりますよってやつを
まず作りましたと。
すごいね。
これがね去年の7月ぐらいなんですよ。
そんな前なんだ。
タイムライン機能の追加
そうなんです。
でか、MCPサーバーって公式は出してないの? Googleカレンダーそのものとか。
Googleは出してないんじゃないですか。
なんで出さないの?
メリットないんじゃないですかね。
例えば、GeminiのGemini Webとかだけが使える。
ああ、そういうこと。
なるほどです。
でも他の人が実装はできちゃうんだ。
普通にAPIはあるんで、今までの。
なるほど。
で、まあNotionとかも公式のMCPがあるんですけど、これは公式のやつを使うと、そのこのページを読みたいってなったらもうとんでもない量のトークンが返ってきて、なんかうわーってなるんで、それをやらない。
あんま作りがいけてないかったんですね。
なんでもうマークダウンにしちゃうみたいな感じのやつとか、ちょっと便利系の読み上げとかを、いろんなやつを今までやってましたと。
パミューン監修MCPが使えるデスクトップアプリ。
はい。で、時は流れ、まあ今年の1月ぐらい。
それまでこれの開発といえば、そのMCPのサーバーの種類を増やすみたいな、例えば、
Google、Slack、Notionがあったから、その例えば、
確かになんか増えてるな。私その3つぐらいしか知らないや。
あとそのNanobanana。
へー。
画像生成したいという時に画像生成できるようにしたり、
あとはそのCADGBTのO3のSearchMCPが、やっぱりO3はちょっと違って、なんか大量の情報化してくれるんで、
それをやるやつとか、あと読み上げとか、
やるやつがありましたというか、そういう風に新しいのを追加してきましたと。
本当にね、このデスクトップアプリを起動した状態で、クロードコードにNotionからこれして、みたいに言うと勝手に
MCPサーバーをつないでくれて、勝手に情報を取ってくれるので、とても便利です。
あら、ユーザーですか。
はい。
これね、その、シェパードっていう名前なんですけど、なんかその聞き慣れない、
くないですか。
まあ普段、
スペル難しいよね。
だから私、まず彼女のC、その後はC、SをPに変えてPHE、RDって覚えてます。
これは犬のシェパードですね。
で、あの、
羊あるじゃないですか。いっぱい、あの羊の何や、なんていう、羊なんとか城?
あー、はいはい、羊飼い。
羊飼いがいっぱいいて、それを犬が追っ立てるじゃないですか、お前らそっち行けみたいな。
で、そんな感じで、この羊が、まあAIエージェントみたいな感じで、まあそれを管理する、その犬として、シェパードっていう。
そういう意図があったんだ。
そう、名付けたんですけど、私何をとち狂ったのか、シェパードのアプリのアイコン、羊なんですよ。いや犬だろって。
今、まさに、だからアイコンも犬ですよねって言おうとしたけど、羊なんだ。
そう、めっちゃ羊ですよ。めっちゃ可愛い羊です。
ほんまやね。
はい、っていうなんかね、ひわもあって、で、時は流れ、今年の1月、
まあ1月かまあ12月か忘れましたけど、 全然違う機能を実装したんですよ、これに。
それがその、タイムラインっていう風に呼んでるんですけど、これはもう、
まあ人によって設定できるんですけど、例えば10秒に1回スクリーンショット撮りますみたいな、デスクトップの。
でもモニターも複数接続してたら、まあ全部のスクリーンショット撮ります。それをMacって、ローカルでOCRできるんですね。
で、何のアプリケーションかっていうのもわかるんですよ。このSlackとか、あとブラウザ開いてたら、そのブラウザが見ているURLも取れるんですね。
それと一緒にOCRしたテキストも保存するみたいなのを、もう1日中ひたすらやり続ける。
その開いてるアプリケーションごとにOCRできるんですか。
はい。
すごいね。
なんで例えば、
6時台を開いてみると、こんな感じで何分何秒これこれこれこれみたいなのがあって、
例えばSlackとか開くと、画像の横にOCRされているテキストが、タメラとか開くと、OCRされているテキストがありますと。
これ画像どこに保存されているんですか。
全部ローカルです。
自分のローカルに。
画像もOCRも何にもインターネットというか外部には一切送信せずに、ローカルだけで完結します。
だから自分が手元で頑張っていっぱいスクリーンショットを撮ってるのと何にも変わらないですと。
で、このOCRした内容を、後は自分で何か見るなり役なり好きにできるっていう感じで。
用途はその振り返り用とか。
そうですね。例えば、こんな感じで自分のその日の予定と、自分のその日のfrom.meで検索したSlackの今までのやり取りと、一緒にその画像は投げずにOCRだけを投げて密報生成してくださいみたいな。
人によって自分の好きなプロンプトにできるんですけど。
変数も使えるんですか、プロンプトに。
その日報生成としたら、GeminiだったらGeminiでAPIが使えて、そこにそのさっきのプロンプトの内容をもとに日報を作ってもらうっていう感じですね。
で、そのAPIとか発行するのがめんどくさい人向けに、このプロンプトを生成するっていうのもあって、
それをやったら、さっきの変数とかあったじゃないですか。
あれが埋まった状態で、プロンプトだけが出てくるんで、それをコピーしてもらってWebのGeminiとかにコピーしてもらえればいけるっていう感じになってます。
ハートビート機能の実装
で、今はAPIでやったんですけど、これ結構あってるんですよね。
うーん。
なんで、こういうやつをやったら、ここの上にこの日の要約が完結に出てきたりします。
で、一つ、全然MCPSサーバーとは違うやつが増えましたと。
で、そしたら、前にも言ったんですけど、アンビエントエージェントっていう話。
で、その会社の社内の人から、こんなリッチになってきたら、何かをトリガーにして、何かAIを走らせるっていう、トリガー的な機能欲しいなみたいな。
まあ確かに。って思って、その時考えたら、だいぶ難しかったですね。その時一回考えたのは、
例えば、Gmailのメール受信だったら、コンパスでイベントを開催して、人が増えたりしたら、コンパスのイベント、機体をみたいな、それぞれを実装しなきゃいけないかなと思ってたんですよね。
そのフックとトリガーとなる部分の実装。
そのイベント種別ごとに。そしたら結構、
なんか新しくこれもやりたいなーってなったら大変。
毎回機能増やしなきゃいけない。
そうそうそうそう。
で、思ってて、うーんって感じだったんですけど、それも、まだクロードボット出てきてないですよ。
で、そう考えてて、あれ?これってつまりスケジュール機能なのでは?って思って、で、スケジュールっていう機能を作ったんですね。
で、それは、何分ごととか、毎日何時とかに、ある好きなディレクトリとかで、クロードコードをこのプロンプトで動かしてください、みたいな感じでやるっていうのが1個目に作ったやつ。
欲しいこれ。
で、これをやると、完全にリアクティブというか、イベントが発生した瞬間におしゃれにポンってこいつに飛んできて、それはできないけど、その時間を例えば5分とか10分とかめっちゃ短くしたら、結果そうなるよねっていうやつで、
で、そういう難しい部分、コンパスのこれを取ってくるみたいなやつは、動かすディレクトリのスキルとかで吸収してあげれば、
別に何か、私は何もすることなく、予定された時間に予定されたディレクトリでクロードコードを起動するだけみたいな、めっちゃシンプルな感じになってるんで、これでいいじゃんっていう感じだったんで、まずスケジュールっていうのを実装したっていうのが、前段です。
これね、その、
いつの間にこんなのできてたの。
で、これ作ったら今すぐ実行もできるし、30分ごとって、次、30分だったら余裕だけど、何日ごととかにしたら次の実行いつやねんみたいなのもちゃんと見れるようになってるし、過去の実行も見れるようになってるし、実行したら通知くるようになってるって感じですね。
じゃあいいじゃん。
です。で、この後に私クロードボットに出会いました。クロードボットの詳細は前のエピソードを参照してほしいんですけど。
すごい今、この後に出会いましたっていうのがすごいキリッとした顔でこっちを見てました。
そしたら、クロードボットもクールオンっていうその全く同じ仕組みが入ってて、あ、間違ってなかったなと思って。で、その中でも面白かったのが、前ちょっと話したハートビートっていう機能ですね。
これは言うてスケジュールなんですけど、それをちょっと特化させたみたいなやつで、実行間隔が大体30分とか、短い方がいい人は5分とか感じにやって、そのハートビート機能を私たちのシェパードっていうやつに移植したんですけど。
で、これは例えば、例えば、今日の天気を調査してください。雨になりそうだったら教えてくださいとか、あとSlackの未読通知の中に今必要、今即時で対応必要そうなやつがあったら教えてとか、あとXで返信した方がいい、メンションとかDMがあったらエージェントブラウザ作って通知してくださいみたいなのを書いておくんですね。
そして保存したら、それを30分だったら30分後に実行してくれるわけです。で、実行して、これ何もやらなくていいわみたいなときはハートビートOKみたいな、何もしなくていいよっていうのが返ってくるんですね。そしたら何も通知されない。
で、これやった方がいいぞみたいなときはハートビートOKじゃなくてちゃんとしたAIテントのプロンプトっていうかレスポンスが返ってきて、Twitterでこういうやつがあった方があるから対応した方がいいですよみたいな。返ってきてMacのプッシュ通知で来るみたいな感じになってます。
なんでこのハートビート機能を盗みましたって感じですね。これって別にスケジュール機能を何か30分ごととかにして、まあなんかみんな頑張ってやってもらえればできるんですけど、まあめんどくさいんで、
ハートビートOKが来たら通知しないようにしてとか、アクティブな時間帯も設定できるんですね。9時から8時の間にずっと30分ごとにやってみたいな。
同じ作業ディレクトリでずっとやってるんで、前のをずっと覚えたままやるみたいな。毎回スケジュール設定するのめんどくさいんで、それぞれ独自の機能として生やしたっていう感じですね。
なんでこのアンビエントエージェントにするために、楽にアンビエントエージェントにコスパ良くするためにハートビートを盗んだって感じですね。
やるや。
これもね、何分ごとにある一定のマークダウンを読み込んで、それに書かれてる通りだけにするっていうすごいシンプルな仕組みで、
なんか使ってる方からしたらめっちゃお、なんかちょっと未来のエージェントっぽいなみたいな挙動が体験できるっていう、すごくコスパがいい。
いっぱい使っていいんだったら、それができるって感じ。
そうですね。これの裏もクロードコードなんで。
これっていっぱい動かすとお金がかかっちゃうとか大丈夫なんですか?
クロードコードとかのプランによりますけど、物によりますね。
MCPサーバーの設計と利便性
定額プランとかだったら、どんだけ動かしても大丈夫っていう感じです。
別にこれクロードコードに限ってないんで、コーデックスとかもいけますよっていう感じですね。
すごい、いつの間にやってたんだ。
っていう感じです。
結構自分の中では、アンビエントエージェントって結構トリガーとなる部分を設計するのが、普通のプロジェクトではちゃんとやらなきゃいけないですけど、
自分用のある程度雑というか、でも許せるなっていうやつは、逆に定期実行にすることでそこの複雑性を全部カバーして、
賢さをAI人類は押し付けることができるっていう。
早く出せる感じがします。
その分決定的な要素とかを犠牲にしてるんですけど、結構個人用とだったらいい感じだなっていう感じです。
これってデスクトップアプリだからできるみたいなのはあるんですか?
別にたまたまみんなが使うメインデシパードがあるからそこに作ったっていう感じなんですか?
あーそうですね。それも結構ありますね。
どれ?
みんながそもそも、これもともとはエンジニアじゃない人が使えるために作ったやつなんですよ。
mcpサーバーとか。
もしエンジニア向けなんだったら、このサーバー起動してくれたらいいからみたいな感じでやったと思うんですけど、
ターミナル開いてこのシェパードって打ってくださいみたいな絶対やらないじゃないですか。
やらない。
やれないじゃないですか。エンジニアじゃない人。
だからいつも使ってるSlackとかのアプリみたいに羊さんのアイコンをクリックしたら、
mcpサーバー立ち上がりますよみたいな感じのが一番みんなの参入障壁が低くなる感じだったんで、
まずデスクトップアプリで作りましたと。
で、さっきのやつはみんなって言うほど使ってないけど、使ってる人の中が使いたいなと思ったら、
ずっと立ち上げてるアプリケーションってこれだからスケジュールとかウォッチとかの機能もここに入れたら、
分散するよりいいかなって感じでここに乗っけたって感じです。
別に興味ないわって人はオフにしておけばいいだけの話なんで、特に悪影響はない。
なので普通のやつでもできる感じですね。
機能の拡張とアップデート
でもマックアップにしてるアプリにしてるんで、ちょっとアイコンがちゃんとついて通知が来るとかそういうところは羊さんのアイコンがついてる。
なんか自分なんでアップデートに気づかなかったんだろうと思ったけど、
普通にデスクトップアプリだから新しいバージョンをダウンロードしないといけないのか。
普通は自動アップデートの仕組みができるんですけど、これって会社の社内であるやつじゃないですか。
それの自動アップデートが鬼ほど難しくて、めっちゃ面倒くさいんですよ。
なんで今はSlackでアップデートを知らせる。
そんなチャンネルがあるのか。
はい、感じになってます。
私はもう初期バージョンのMCPサーバー管理の機能しかないバージョン。
確かにだいぶUI違うくないですか。
だいぶ違いますね。
だいぶこなれてる。
ちょっとかっこいいアプリになってるなってなった。
自分が使ってるやつは、
The LLM AI実装の紫色のアクセントカラーのやつなんですけど、
いい感じですね。
でしょ。
Questionって何ですか。
Questionは、
これも絶対ビデオポッドキャストでやった方がいいですよ。
Questionって何とか言ってる。みんなQuestionって何の話してるんだよって。
Questionってタブはね。
さっき言ったみたいに、4つ大きな機能がある。
1つ、MCPサーバーは裏で動いてるんで、
別に裏で隠れてるかカウントしないとすると、
めっちゃスクショトルマン、それがタイムラインと呼ばれてるやつ。
で、クローンっていう定期実行するやつがスケジュール。
ハートビートっていう、
短い間隔で何回もやるやつが、
ウォッチって呼んでるんですけど、3つあります。
最後にQuestionsっていう、
こいつは実は元からあったやつなんですけど、
こいつもMCPツールになってて、
Askっていう聞くっていうツールなんですけど、
AIアジェントはこれを利用したら、
人間に聞けますと、質問できますと。
それがここに、
1つのデスクトップアプリケーションに集約されるみたいな感じですね。
例えば10個クロードコードとかコーデックスとかカーソルとか別々のところで開いてても、
人間に聞くときは、
MCPツールのAskってやつを使ってくださいって言ったら、
このシェパードのデスクトップアプリに集約されてくるんで、
自分がいろんなアプリケーションに行かなくていいっていう。
LLMからの質問をこのシェパードに集約できるクールなんだ。
ですね。
そんなことできるんですね。
できますね。
すごい。
って感じですね。
いつ作ってたの?
これはもう去年の7月からです。
機能拡張が、新機能がいっぱいリリースされてる。
デザインリニューアルもされてます。
ちょっと競合調査をしたらもうちょっと、
これはやりたくなっちゃう。
多分、私が実際あんまりいい例を思いついてないんですよ、正直。
さっきの短い時間での定期事項みたいな、
多分めっちゃいいやつはあるんだけど、
思いつかないから、多分みんなに使ってもらうのが一番いいんだろうなっていう。
社内での活用と今後の展望
そうですね。ニュースケース集まりそう。
これは?
お知らせしてます?これ。
してないです。
なんでしてないの?なんでだよ。
チャンネルでやってます、この。
知らない。みんな知らないんだよ。
私、宣伝しないことで有名なんです。
なんで知らないの?
恥ずかしいじゃん、宣伝するって。
確かに自分で。
そう。
あー。
いやー。
私の作ったツールって、電文で広がっていく。
なんか便利らしいよ、みんな。
私が、じゃあ電動紙。
一番古いの使ってたのに。
でも、この放送会と一緒に使ってくださいって言ったらみんな使いますよ、すぐ。
でもこれも私、エレクトロンのデスクトップアプリとか全く作ったことなかったんで。
エレクトロンで動いてるんです。
95%くらいクラウドコードに書いてもらったやつなんで。
で、これを外に公開してない理由は、その会社、
というかその時点で社内で欲しくなったものをすぐ実装したいみたいな感じかつ、
私もクラウドコードでバーって作ったんで、
皆さんも社内で似たようなの作りたいってなったら、言ったら作ってくれる世界なんで。
皆さん好きなものを作ったらいいと思いますって感じですね。
みんな使えないツールの話をされてもさあみたいな。
たまに勉強会とかね、組織のAI活用で、
MCPサーバー危険だからどうしようかねみたいなやつも、
これだったら行って解決するし、スキルとかもこいつが配ることもできるんで、
シェパードにあるスキルだけ使ってくださいみたいなのができるんで。
全部これでいいな。
結構知らない間に、エンジニアの人はあんま使ってないですけど、
別の方とかは結構Slackとかを検索したり。
めっちゃ便利。自分もSlack検索でめっちゃ使ってます。
月報書くときとかめっちゃ便利なんで。
この1ヶ月何かあったっけみたいな。
ありがたいですね。
また新機能のアップデート予定もあるんですか。
ちょっとこのWatchのHeartbeatのショーケースがね、知りたい。
それがあったら、それにはこれがあった方がいいねみたいなのもあると思うんで。
じゃあ社内に伝聞させていただいて、広げましょう。
私も最近もう1日1個アプリケーション作ってぐらいの感じになってました。
Viveコーディングのうぱ。
仕事してたら、この仕事めんどくさいな。
これをいい感じに処理できるツールあったら楽なのになみたいなのってめっちゃあるんですけど、
今までって薬シェービングするコストがそれの何倍もあったんですけど、
今は薬シェービングした方が早いんですよ。
今は詳細に指示しなくても、本当にViveにこれを解決したいんだよみたいなのをやったら、
オーパス4.5とかもびっくりするくらいいいものを作ってくれるから、これでいいじゃんとか。
逆にViveで作ったものが、このUI意外と見やすいねみたいな感じで、
それをプロダクトに取り組もうみたいなのが最近あったりしたんで、
みんなどんどんやったらいいと思います。何より楽しい。
いい話だった。
外に開放しないものならね、割と自分の…
そうですね、好きにアップデートできる。
はい、おすすめです。その日捨てるソフトウェアでも今は作れる時代だから、
どんどん作っていかねばなっていうのが最近の反省。
確かに、つぶやいてたね。
1日1アプリケーション。
じゃあちょっと今後のアップデートも楽しみですね。
はい、頑張ってサイレントアップデートしていきます。
なんで教えてくれないの?
じゃあそんな感じか。
感想・質問・フィードバックは、
Xのハッシュタグ、マヂカル.fm、全部小文字、または概要欄のお便りフォームまでお寄せください。
Spotifyのベルマークを押すと更新通知が届きますので、そちらもお願いします。
ありがとうございます。
ありがとうございました。
25:28
コメント
スクロール