<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
  <id>https://kusumoto.app/</id>
  <title>楠本 真大 Portfolio</title>
  <subtitle>技術ブログ。AI 開発、開発ツール、自動化に関する記事を公開しています。</subtitle>
  <link rel="self" type="application/atom+xml" href="https://kusumoto.app/feed.xml"/>
  <link rel="alternate" type="text/html" href="https://kusumoto.app/blogs"/>
  <updated>2026-04-19T00:00:00.000Z</updated>
  <author>
    <name>楠本 真大</name>
    <email>masahiro@kusumoto.app</email>
    <uri>https://kusumoto.app</uri>
  </author>
  <entry>
    <id>https://kusumoto.app/blogs/floci-local-aws</id>
    <title>Floci でローカル AWS を動かしてみた - LocalStack 代替ツール</title>
    <link rel="alternate" type="text/html" href="https://kusumoto.app/blogs/floci-local-aws"/>
    <published>2026-04-19T00:00:00.000Z</published>
    <updated>2026-04-19T00:00:00.000Z</updated>
    <summary>LocalStack のコミュニティ版がアカウント必須化したため、代替を探していたら Floci が良さそうでした。SQS + Lambda のバッチ処理をローカル検証した記録です。</summary>
    <author>
      <name>楠本 真大</name>
      <email>masahiro@kusumoto.app</email>
    </author>
    <category term="testing"/>
    <category term="macos"/>
    <category term="aws"/>
  </entry>
  <entry>
    <id>https://kusumoto.app/blogs/apm-team-package</id>
    <title>APM でチーム共有パッケージを作ってみた</title>
    <link rel="alternate" type="text/html" href="https://kusumoto.app/blogs/apm-team-package"/>
    <published>2026-04-18T00:00:00.000Z</published>
    <updated>2026-04-18T00:00:00.000Z</updated>
    <summary>Claude Code の skills や agents を APM でパッケージ化し、apm install 一発でチーム全員の環境を揃える仕組みを整える</summary>
    <author>
      <name>楠本 真大</name>
      <email>masahiro@kusumoto.app</email>
    </author>
    <category term="claude-code"/>
    <category term="automation"/>
    <category term="apm"/>
  </entry>
  <entry>
    <id>https://kusumoto.app/blogs/claude-code-context-epub-book</id>
    <title>Claude Code の余ったコンテキストで EPUB 本を作らせてみた</title>
    <link rel="alternate" type="text/html" href="https://kusumoto.app/blogs/claude-code-context-epub-book"/>
    <published>2026-04-11T00:00:00.000Z</published>
    <updated>2026-04-11T00:00:00.000Z</updated>
    <summary>Claude Code MAX プランで余った週次トークンを活用し、サブエージェントで調査・執筆した 40 章の技術書を Pandoc で EPUB に変換して Apple Books で読むまでの流れをまとめました。</summary>
    <author>
      <name>楠本 真大</name>
      <email>masahiro@kusumoto.app</email>
    </author>
    <category term="claude-code"/>
    <category term="pandoc"/>
  </entry>
  <entry>
    <id>https://kusumoto.app/blogs/remotion-mimicry-intro-video</id>
    <title>Remotion で自作ツールの紹介動画を React コンポーネントで作った</title>
    <link rel="alternate" type="text/html" href="https://kusumoto.app/blogs/remotion-mimicry-intro-video"/>
    <published>2026-04-06T00:00:00.000Z</published>
    <updated>2026-04-06T00:00:00.000Z</updated>
    <summary>React コンポーネントで動画を生成できる Remotion を使って、HTTP プロキシツール Mimicry の紹介動画を作りました。</summary>
    <author>
      <name>楠本 真大</name>
      <email>masahiro@kusumoto.app</email>
    </author>
    <category term="mimicry"/>
    <category term="remotion"/>
  </entry>
  <entry>
    <id>https://kusumoto.app/blogs/replay-api-stub-testing</id>
    <title>Replay で Swift Testing の API スタブをスマートに書く</title>
    <link rel="alternate" type="text/html" href="https://kusumoto.app/blogs/replay-api-stub-testing"/>
    <published>2026-04-05T00:00:00.000Z</published>
    <updated>2026-04-05T00:00:00.000Z</updated>
    <summary>Replay ライブラリを使い、Swift Testing で API レスポンスのスタブを宣言的に定義する方法を紹介します。</summary>
    <author>
      <name>楠本 真大</name>
      <email>masahiro@kusumoto.app</email>
    </author>
    <category term="ios"/>
    <category term="swift"/>
    <category term="testing"/>
  </entry>
  <entry>
    <id>https://kusumoto.app/blogs/supabase-docs-over-ssh</id>
    <title>Supabase Docs over SSH で AI エージェントにドキュメントを渡す</title>
    <link rel="alternate" type="text/html" href="https://kusumoto.app/blogs/supabase-docs-over-ssh"/>
    <published>2026-04-04T00:00:00.000Z</published>
    <updated>2026-04-04T00:00:00.000Z</updated>
    <summary>ssh supabase.sh でターミナルから Supabase ドキュメントを検索・閲覧できる機能を試してみました。CLAUDE.md に追記するだけで AI エージェントがドキュメントを自動参照できるようになります。</summary>
    <author>
      <name>楠本 真大</name>
      <email>masahiro@kusumoto.app</email>
    </author>
    <category term="automation"/>
    <category term="claude-code"/>
    <category term="supabase"/>
  </entry>
  <entry>
    <id>https://kusumoto.app/blogs/swift-63-new-features</id>
    <title>Swift 6.3 の新機能まとめ - weak let と Module Selectors</title>
    <link rel="alternate" type="text/html" href="https://kusumoto.app/blogs/swift-63-new-features"/>
    <published>2026-04-04T00:00:00.000Z</published>
    <updated>2026-04-04T00:00:00.000Z</updated>
    <summary>Swift 6.3 で追加された weak let、Swift Testing 強化などの新機能を、サンプルコードとあわせて iOS 開発者視点で整理しました。</summary>
    <author>
      <name>楠本 真大</name>
      <email>masahiro@kusumoto.app</email>
    </author>
    <category term="swift"/>
    <category term="ios"/>
  </entry>
  <entry>
    <id>https://kusumoto.app/blogs/firebase-local-emulator-suite</id>
    <title>Firebase Local Emulator Suite で iOS メモアプリを作ってみた</title>
    <link rel="alternate" type="text/html" href="https://kusumoto.app/blogs/firebase-local-emulator-suite"/>
    <published>2026-04-03T00:00:00.000Z</published>
    <updated>2026-04-03T00:00:00.000Z</updated>
    <summary>Firebase Local Emulator Suite で Auth・Firestore・Cloud Functions をローカル起動し、実際の Firebase プロジェクトを作らずに iOS メモアプリを開発・検証した手順をまとめました。</summary>
    <author>
      <name>楠本 真大</name>
      <email>masahiro@kusumoto.app</email>
    </author>
    <category term="ios"/>
    <category term="swift"/>
    <category term="testing"/>
    <category term="firebase"/>
  </entry>
  <entry>
    <id>https://kusumoto.app/blogs/emdash-cms-trial</id>
    <title>Cloudflare の Emdash CMS を試してみた</title>
    <link rel="alternate" type="text/html" href="https://kusumoto.app/blogs/emdash-cms-trial"/>
    <published>2026-04-02T00:00:00.000Z</published>
    <updated>2026-04-02T00:00:00.000Z</updated>
    <summary>Cloudflare が開発した CMS「Emdash」を実際にセットアップして既存サイトのデザインを移植してみました。</summary>
    <author>
      <name>楠本 真大</name>
      <email>masahiro@kusumoto.app</email>
    </author>
    <category term="cloudflare"/>
    <category term="cms"/>
  </entry>
  <entry>
    <id>https://kusumoto.app/blogs/fluffdrop-macos-app</id>
    <title>iOS/Android から Mac へ、ブラウザ経由でファイルを転送できる macOS アプリを作った</title>
    <link rel="alternate" type="text/html" href="https://kusumoto.app/blogs/fluffdrop-macos-app"/>
    <published>2026-03-12T00:00:00.000Z</published>
    <updated>2026-03-12T00:00:00.000Z</updated>
    <summary>iPhone や Android のブラウザから Mac にファイルを送れる macOS メニューバーアプリを SwiftUI で作りました。</summary>
    <author>
      <name>楠本 真大</name>
      <email>masahiro@kusumoto.app</email>
    </author>
    <category term="macos"/>
    <category term="swift"/>
  </entry>
  <entry>
    <id>https://kusumoto.app/blogs/xcstrings-translator-gke</id>
    <title>GKE で iOS アプリ用の .xcstrings を自動翻訳</title>
    <link rel="alternate" type="text/html" href="https://kusumoto.app/blogs/xcstrings-translator-gke"/>
    <published>2026-03-09T00:00:00.000Z</published>
    <updated>2026-03-09T00:00:00.000Z</updated>
    <summary>.xcstrings の多言語対応を自動化する API サーバーを FastAPI で実装し、GKE にデプロイ</summary>
    <author>
      <name>楠本 真大</name>
      <email>masahiro@kusumoto.app</email>
    </author>
    <category term="ios"/>
    <category term="automation"/>
    <category term="gcp"/>
  </entry>
  <entry>
    <id>https://kusumoto.app/blogs/tart-vm-ios-dev</id>
    <title>Tart VM で今より安全な Claude Code の環境を整える</title>
    <link rel="alternate" type="text/html" href="https://kusumoto.app/blogs/tart-vm-ios-dev"/>
    <published>2026-03-02T00:00:00.000Z</published>
    <updated>2026-03-02T00:00:00.000Z</updated>
    <summary>Tart macOS VM に Xcode + Simulator を含め、DNS フィルタリングを実装することで、Claude Code が生成したコードによる意図しない外部通信を防ぎます</summary>
    <author>
      <name>楠本 真大</name>
      <email>masahiro@kusumoto.app</email>
    </author>
    <category term="ios"/>
    <category term="macos"/>
    <category term="claude-code"/>
    <category term="tartvm"/>
  </entry>
  <entry>
    <id>https://kusumoto.app/blogs/slack-issue-creator-chatbot</id>
    <title>Slack のやりとりから GitHub Issue を自動作成する Bot を作った</title>
    <link rel="alternate" type="text/html" href="https://kusumoto.app/blogs/slack-issue-creator-chatbot"/>
    <published>2026-03-01T00:00:00.000Z</published>
    <updated>2026-03-01T00:00:00.000Z</updated>
    <summary>Slack で会話しながら GitHub Issue を作れる Bot を Cloudflare Workers で作った話。Chat SDK と Workers AI を組み合わせて実装しました。</summary>
    <author>
      <name>楠本 真大</name>
      <email>masahiro@kusumoto.app</email>
    </author>
    <category term="cloudflare"/>
    <category term="automation"/>
    <category term="slack"/>
  </entry>
  <entry>
    <id>https://kusumoto.app/blogs/launchd-manager-morning-automation</id>
    <title>launchd Manager で朝のルーティンを自動化する</title>
    <link rel="alternate" type="text/html" href="https://kusumoto.app/blogs/launchd-manager-morning-automation"/>
    <published>2026-02-28T00:00:00.000Z</published>
    <updated>2026-02-28T00:00:00.000Z</updated>
    <summary>launchd Manager を使って Claude 設定の Git 同期・App Store レビュー収集・GitHub Actions runner 自動起動を設定し、朝の情報収集を自動化した話。</summary>
    <author>
      <name>楠本 真大</name>
      <email>masahiro@kusumoto.app</email>
    </author>
    <category term="macos"/>
    <category term="automation"/>
    <category term="launchd"/>
  </entry>
  <entry>
    <id>https://kusumoto.app/blogs/apple-container-xcode-mcp</id>
    <title>Apple Container + Xcode MCP で Claude Code を隔離環境で動かす</title>
    <link rel="alternate" type="text/html" href="https://kusumoto.app/blogs/apple-container-xcode-mcp"/>
    <published>2026-02-14T00:00:00.000Z</published>
    <updated>2026-02-14T00:00:00.000Z</updated>
    <summary>Apple Container 内の Claude Code から SSH ディスパッチャ経由で Xcode MCP に接続し、隔離された環境で iOS アプリ開発できる仕組みを構築しました。</summary>
    <author>
      <name>楠本 真大</name>
      <email>masahiro@kusumoto.app</email>
    </author>
    <category term="claude-code"/>
    <category term="xcode"/>
    <category term="mcp"/>
    <category term="macos"/>
    <category term="apple-container"/>
  </entry>
  <entry>
    <id>https://kusumoto.app/blogs/xcode-cloud-screenshot-testing</id>
    <title>Xcode Cloud でスクリーンショットテスティング</title>
    <link rel="alternate" type="text/html" href="https://kusumoto.app/blogs/xcode-cloud-screenshot-testing"/>
    <published>2026-02-12T00:00:00.000Z</published>
    <updated>2026-02-12T00:00:00.000Z</updated>
    <summary>swift-snapshot-testing による VRT を Xcode Cloud で実行し、失敗時に Before/After/Difference の三列比較画像を PR にコメントする仕組みを構築しました。&quot;</summary>
    <author>
      <name>楠本 真大</name>
      <email>masahiro@kusumoto.app</email>
    </author>
    <category term="ios"/>
    <category term="xcode"/>
    <category term="testing"/>
    <category term="xcode-cloud"/>
    <category term="cloudflare"/>
  </entry>
  <entry>
    <id>https://kusumoto.app/blogs/drawio-mcp-architecture-diagram</id>
    <title>draw.io の MCP サーバーを Claude Code から使ってみた</title>
    <link rel="alternate" type="text/html" href="https://kusumoto.app/blogs/drawio-mcp-architecture-diagram"/>
    <published>2026-02-11T00:00:00.000Z</published>
    <updated>2026-02-11T00:00:00.000Z</updated>
    <summary>draw.io 公式の MCP サーバーが公開されていたので、Claude Code から iOS プロジェクトのアーキテクチャ図を生成してみました。</summary>
    <author>
      <name>楠本 真大</name>
      <email>masahiro@kusumoto.app</email>
    </author>
    <category term="claude-code"/>
    <category term="mcp"/>
  </entry>
  <entry>
    <id>https://kusumoto.app/blogs/prefire-snapshot-testing</id>
    <title>Prefire を使って SwiftUI の #Preview からスナップショットテストを自動生成する</title>
    <link rel="alternate" type="text/html" href="https://kusumoto.app/blogs/prefire-snapshot-testing"/>
    <published>2026-02-10T00:00:00.000Z</published>
    <updated>2026-02-10T00:00:00.000Z</updated>
    <summary>SwiftUI の #Preview マクロをテキストマッチで検知してスナップショットテストを生成する Prefire の導入方法を紹介します。</summary>
    <author>
      <name>楠本 真大</name>
      <email>masahiro@kusumoto.app</email>
    </author>
    <category term="ios"/>
    <category term="swift"/>
    <category term="testing"/>
    <category term="xcode"/>
  </entry>
  <entry>
    <id>https://kusumoto.app/blogs/xcode-claude-custom-endpoint</id>
    <title>Xcode 26.3 で ANTHROPIC_BASE_URL をカスタム設定して Claude Agent を使う</title>
    <link rel="alternate" type="text/html" href="https://kusumoto.app/blogs/xcode-claude-custom-endpoint"/>
    <published>2026-02-08T00:00:00.000Z</published>
    <updated>2026-02-08T00:00:00.000Z</updated>
    <summary>Xcode 26.3 の Claude Agent を社内プロキシや API ゲートウェイなどのカスタムエンドポイント経由で利用する方法を紹介します。</summary>
    <author>
      <name>楠本 真大</name>
      <email>masahiro@kusumoto.app</email>
    </author>
    <category term="xcode"/>
    <category term="claude-code"/>
  </entry>
  <entry>
    <id>https://kusumoto.app/blogs/mimicry-client-port-app-icon</id>
    <title>Mimicry で TCP ポートから通信元アプリを特定してアイコン表示</title>
    <link rel="alternate" type="text/html" href="https://kusumoto.app/blogs/mimicry-client-port-app-icon"/>
    <published>2026-02-02T00:00:00.000Z</published>
    <updated>2026-02-02T00:00:00.000Z</updated>
    <summary>Mimicry の通信ログに発信元アプリ名とアイコンを表示するため、macOS の lsof と ps でポートから PID を逆引きし、.app バンドルのアイコンを取得する実装を解説します。</summary>
    <author>
      <name>楠本 真大</name>
      <email>masahiro@kusumoto.app</email>
    </author>
    <category term="mimicry"/>
    <category term="macos"/>
  </entry>
</feed>
