スマホからAI駆動iOS開発したい #kanagawa_swift

1K Views

November 02, 25

スライド概要

2025.11.2に鎌倉で開催された [Kanagawa.swift #2](https://japan-region-swift.connpass.com/event/365671/) での発表資料です。

profile-image

フリーランスiOSエンジニア 「エンジニアと人生」コミュニティ主宰

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

スマホからAI駆動iOS開発したい Kanagawa.swift #2

2.

自己紹介: 堤 修一 • フリーランスiOSエンジニア • ID: shu223(GitHub, Docswell, X, Zenn, Qiita, note, blog, YouTube, Podcast) • 著書: 商業出版4冊、個人出版多数 • 鎌倉在住 • 元カヤック(2010.2〜2012.12)

3.

鎌倉に家を買いました • 2025年6月より新居 • 材木座の海寄り → 駅寄りに • 駅まで徒歩13分(鎌倉で は駅近) • 海まで自転車で2分 !

4.

鎌倉FAQ: 観光で行くイメージしかない けど住むってどうなの?

5.

A: むしろ生活してこそ最高

6.

• 海と山が近く、古都の空気感もありつつ、都内まで通える 稀有な環境 • 生活に困るほど田舎でもなく、店やインフラは一通り揃っている • 複雑な路地や個性的な家、隠れ家的な店も多く、どこを歩いても楽しい • 観光客多いのは小町・由比ヶ浜・長谷など一部 • 都心よりは全然安い

7.

これまで住んだ鎌倉のエリアの所感 • 雪ノ下2丁目 • 店や学校がたくさんあり住みやすい • 駅方面へは八幡宮の境内 → 段葛 or 小 町通り商店街を抜けるというコース • 小町2丁目 • 鎌倉の中心地に近く便利でありつつ も、一本裏に入れば閑静 • 材木座 • 海も山も近い • 海近でも雰囲気は落ち着いていて40代 後半の子育て世代にはちょうどいい

8.

ぜひ鎌倉へ!

9.

本題

10.

スマホからAI駆動iOS開発したい

11.

「スマホでバイブコーディング」する方法 1 クラウド上のAI × GitHub • GitHub上にあるコードをAIが編集し、PRを出させる • GitHubのスマホアプリから差分の確認やPRのマージ・クローズを操作

12.

「スマホでバイブコーディング」する方法 1 クラウド上のAI × GitHub • GitHub上にあるコードをAIが編集し、PRを出させる • GitHubのスマホアプリから差分の確認やPRのマージ・クローズを操作 → (フリーランスとしては)お客さんのリポジトリでガチャガチャやりた くない

13.

「スマホでバイブコーディング」する方法 2 ローカルマシン上のAI × GitHub • 常時起動のローカルマシンで自動でAIを走らせつつ、PRを出させる • GitHubのスマホアプリから差分の確認やPRのマージ・クローズを操作 e.g. 「Mac miniとcodexで自動リファクタリングPRを量産する仕組み」 by noppeさん

14.

「スマホでバイブコーディング」する方法 2 ローカルマシン上のAI × GitHub • 常時起動のローカルマシンで自動でAIを走らせつつ、PRを出させる • GitHubのスマホアプリから差分の確認やPRのマージ・クローズを操作 e.g. 「Mac miniとcodexで自動リファクタリングPRを量産する仕組み」 by noppeさん → やっぱり最終成果物はGitHubのPR(自分の要件には合わない)

15.

個人的に抱えている課題感 • 17時ぐらいから食事の用意 → 家族で食事 → お風呂 → 20時ぐら いから子供といっしょに布団に入って寝かしつけ • 子供は21時〜22時には寝る • そこから起きあがって作業しにいく気力はもうない (ベッドでダラダラスマホ見てる) → スマホでポチポチ作業したい

16.

要件(やりたいこと)の整理 • 対象はiOSアプリ開発 • Web上にデプロイしたりするわけではない • ローカルマシンはXcodeの入ったMac • GitHub上ではなくローカルマシン上での作業にとどめたい • 同一ネットワークを前提とするのはOK

17.

スマホ ↔ ローカルマシンでバイブコーディングする方法 • Termiusを使う • CLIベースのAIコーディングエージェントなら何でもOK • VibeTunnelを使う • 同じくCLIベースのAIなら汎用的に使えるが、Claude Codeで特 に便利 • SSH等の面倒なセットアップも不要

18.

スマホ ↔ ローカルマシンでバイブコーディングする方法 • Termiusを使う • CLIベースのAIコーディングエージェントなら何でもOK • VibeTunnelを使う ← 今回はこっち • 同じくCLIベースのAIなら汎用的に使えるが、Claude Codeで特 に便利 • SSH等の面倒なセットアップも不要

19.

VibeTunnel • Mac側で vt claude を実行するだけでスマホから接続できる • オープンソース / MITライセンス • Tailscale等を使えば外出先から も接続可能

20.

接続までの手順 1. Mac側でVibeTunnelアプリを起動 → URLが 表示される 2. Mac側ターミナルで vt claude → Claude Codeが起動(VibeTunnelアプリ に "Active Sessions" として検知される) 3. iPhone側でブラウザから1のURLにアクセス → Active Sessions一覧から選んで操作

21.

iOSネイティブアプリも • リポジトリ内の ios フォルダ配下に プロジェクトがあるので自分でビル ドして使用する(App Storeにはな い) • サーバー設定を記憶しておける → 同じネットワーク環境化であれば 起動してワンタップで利用可能

22.

めちゃくちゃ便利そう!

23.

しかし色々と問題が...

24.

ブラウザ版の問題点 (ブラウザ版)

25.

ブラウザ版の問題点 どこをタップしてもキーボード が出てこない つまり一切の入力ができない ! (ここから何もできない...)

26.

iOSネイティブアプリ版の問題点

27.

iOSネイティブアプリ版の問題点 • 日本語入力できない

28.

iOSネイティブアプリ版の問題点 • 日本語入力できない • 日本語出力の表示がバグっている

29.

iOSネイティブアプリ版の問題点 • 日本語入力できない • 日本語出力の表示がバグっている • Shift+Tab できない(=plan mode切り替え手段がない) カスタムキーボードに esc や ctrl や tab はあるが、shift が ない

30.

iOSネイティブアプリ版の問題点 • 日本語入力できない • 日本語出力の表示がバグっている • Shift+Tab できない(=plan mode切り替え手段がない) • 上にスクロールできない(=出力 内容を確認できない)

31.

実用はなかなか厳しい...?

32.

問題なし! やりようは色々ある • OSSなので使い方わからない部分はコードを読む/バグって る部分は自分で直す • プロンプトは音声入力 or コピー&ペーストで貼り付け • カスタムスラッシュコマンドを整備して /+ カーソル操作だ けで色々作業できるようにする

33.

Shift+Tab できない問題の修正 Shift+Tab(BackTab)の定義を追加 struct TerminalInput: Codable { ... enum SpecialKey: String { ... case backTab = "\u{1B}[Z" BackTab用のボタンを追加 struct TerminalToolbar: View { ... var body: some View { ... ToolbarButton(label: "⇤") { ... onSpecialKey(.backTab) }

34.

上にスクロールできない問題の修正 (割愛、シンプルにバグなので本家にPR出します)

35.

日本語入力、出力の問題 • VibeTunnelが内部で利用している SwiftTerm 側の問題っぽい • 設定からターミナルレンダラを xterm.js に切り替えることでと りあえず日本語入力/出力の問題どちらも解決する しかしこっちはこっちで挙動が怪しい...

36.

ひととおり解決 ✅ 日本語入力できない 日本語出力の表示がバグっている Shift+Tab できない(=plan mode切り替え手段がない) 上にスクロールできない(=出力内容を確認できない)

37.

まとめ • 鎌倉生活最高なのでみんな住もう! • スマホで(ローカルマシンと繋いで)AI駆動iOS開発するに はVibeTunnelが便利そう • Mac側で vt claude してiOSアプリから接続するだけ! • 色々問題はあるが問題ない

38.

ご清聴ありがとうございました!