ブログ公開のフラストレーション

このブログ、実は面白い仕組みで書いています。
私が写真と記事の内容を渡すと、AIが記事を書いてウェブに公開してくれるんです。Claude Codeがゴーストライターみたいな感じですね。

でもずっと不便だったことがありました。
パソコンからしか動かなかったんです。

いろんなスクリプトを実行しないといけなくて、iPhoneでは動かない。外出先で思いついたことをサッと記事にできない。これがもどかしくて仕方ありませんでした。

まあClaudeCodeにはリモコン機能があるんですが、あんまり使わないというか、ちょっと信用できないなと思っていたんです。
それで、自分で作ることにしました。

開発の様子

ブログシステムの技術ドキュメント画面

iPhoneで開発ドキュメントを確認しながら作業を進めました。
アーキテクチャ構造、プロジェクト構成、ビルドコマンド群が整理されているのを見て、これなら作れそうだと思いました。

Claude Codeに手伝ってもらったおかげで、コアな機能が動くところまでは本当に20分くらいでできちゃったんです。
ほんとにすごいです。

そこから3時間位かけてブラッシュアップして、実用レベルまで持っていきました。
思ったより早く完成して、自分でも驚きました。

AgentNestの仕組み

AgentNestというこのアプリは、自宅のパソコンにVPNで接続することを前提にしています。
指定したポートで待ち受けて、Claude Codeを呼び出してブログエントリーを作るという仕組みです。

実際にこのエントリ自体も、iPhoneから投稿しています。

手順はシンプルです:
1. iPhoneでスクショを撮る
2. Google フォトにアップロード
3. リンクを取得
4. 文章をある程度書く
5. AgentNestで送信

その後はブログシステムが整形してブログにしてくれます。

自分専用リモコンの価値

カスタマイズできる自分で作ったリモコンがあるっていうのは、想像以上に便利ですね。

市販のツールと違って、いろんな機能をつけたいと思ったらすぐ作れます。
使いにくい部分があればすぐ修正。
必要な機能だけに絞って軽量化。

自分の作業スタイルに完全に合わせられるのが、何より快適です。

技術的な詳細

使用技術スタック

  • フロントエンド: React 19 + Vite + Material-UI
  • バックエンド: Express.js + TypeScript
  • AIエンジン: Claude Code SDK (@anthropic-ai/claude-code)
  • リアルタイム通信: Server-Sent Events (SSE)
  • デスクトップアプリ: Tauri(Rust + WebView)
  • テスト: Playwright(E2Eテスト)

アーキテクチャ

  • サーバー: Express.jsがポート3000で待ち受け
  • Claude Code統合: SDKラッパーで操作を抽象化
  • 権限管理: ファイル操作前に承認ダイアログ表示
  • セッション管理: 会話履歴の保存・復元機能

システム要件

  • Node.js 18以上
  • Claude Code Maxサブスクリプション
  • VPN環境(Tailscale推奨)

20分でコア機能が動いたというのは本当です。
基本的なAPI通信とコマンド実行だけなら、そんなに複雑じゃないんですね。

残りの3時間は主にエラーハンドリングやUI周りの改善に使いました。
使い勝手って大事です。

オープンソース公開

AgentNestはMITライセンスでオープンソース公開しています。

GitHub: Junpeiwada/AgentNest

DMGファイルでのmacOS用アプリケーションも提供しているので、開発者の方はぜひ試してみてください。
iPhone最適化も済んでいるので、スマホからでも快適に操作できます。
README.mdに詳しいセットアップ方法も書いています。

これからの展望

次はもっと機能を追加したいと思っています。

画像の前処理とか、記事のプレビュー機能とか。
音声入力で記事の下書きができたら面白いかもしれません。

自分で作ったツールだから、思いついたらすぐ実装できるのがいいですね。
これが既製品との大きな違いです。バグってるけどねw