はじめに
スマホでバイブコーディングできる時代!というのを以下の記事で見て、WindowsではなくMacで実装したので備忘録として残します。
目次
実現したことのイメージ図
ざっくりとですがこのようなイメージで実現しました。
手順
1. Gemini CLI(Claude Code)のインストール
ここではインストールの細かい手順は省かせていただきます。
Gemini CLIを入れる場合は、公式のREADMEを参考にインストールしてください。
英語でわかりづらい場合は、以下の記事が参考になります。
Claude Codeを使いたい場合は以下をご覧ください。
2. TailscaleでVPN接続(Mac側)
にてアカウントを作成すると、接続手順が表示されるので手順を進めていきます。
3. TailscaleでVPN接続(iPhone側)
iPhoneでも同様にTailscaleアプリをAppStoreからインストールし、同じアカウントでログインします。
Macに表示された手順を進めていくと、以下のように接続成功という画面が出てきます。
こちらが出てきたら接続完了です。
4. Mac側でSSHサーバーを立てる
4‑1. リモートログインをオンにする
システム設定 > 一般 > 共有 > リモートログイン をオンにします。
※スマホバイブコーディングをしないときは安全のためオフにしています。
CLI 派の方は以下でも可能です。
sudo systemsetup -setremotelogin on
4‑2. 鍵認証の準備
4-2‑1. Macで鍵ペアを作成する
以下のコマンドでMac秘密鍵と公開鍵を作成していきます。
ssh-keygen -t ed25519 -C "iphone" -f ~/.ssh/iphone_ed25519
~/.ssh/iphone_ed25519
は秘密鍵、~/.ssh/iphone_ed25519.pub
は公開鍵として作成されます。
4‑2‑2. 公開鍵をMacに登録する
以下のコマンドで、公開鍵をMacに登録していきます。
mkdir -p ~/.ssh
chmod 700 ~/.ssh
cat ~/.ssh/iphone_ed25519.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
4‑2‑3. 秘密鍵をiPhoneにコピーする
iphone_ed25519をエアドロなどでiPhoneのファイルに保存します。
この鍵は、後でTermiusにインポートするときに使用します。
4‑3. sshd_configを最小限ハードニング
/etc/ssh/sshd_config
に以下を追加します。
Port 22
AddressFamily inet
ListenAddress ***.**.**.** # MacのTailscaleのIPに合わせる
PasswordAuthentication no
PermitRootLogin prohibit-password
変更を反映します。
sudo launchctl kickstart -k system/com.openssh.sshd
今回は省きますが、Tailscale ACLで22番を絞るとさらに安心です。
5. iPhoneからTermiusでSSH接続を行う
5‑1. TermiusをAppStoreでインストールする
App Storeで、Termiusを検索してインストールします。(AndroidはGoogleStore)
5‑2. ホストを登録する
TermiusでHostsの+ボタンからNewHostを選択して以下の値を入れています。
フィールド | 値 | メモ |
---|---|---|
Label | 任意(例:Mac) | 一覧での表示名 |
Address | ***.**.**.** |
MacのTailscaleのIP |
Port | 22 | デフォルトのまま |
Username | macOSのユーザ名 | 例 hoshi7_n
|
Authentication | SSH Keyを選択 | エアドロで送った鍵をインポートして選択します |
今回鍵の名前は違っていますが、以下の画像のようになっていればOKです。
保存すると、Hostsの一覧にアイコンが追加されます。これで準備完了です!
5‑3. 接続&Gemini CLI実行
Hosts一覧で作成したホストをタップすると、数秒でシェルが開くので、あとはPCから実行するときと同様に、Geminiなら以下のコマンドを入力すると実行されます。
npx https://github.com/google-gemini/gemini-cli
もちろん以下を実行すれば、Claude Codeも動きます。
claude
おわりに
外で指示して家に帰ったらアプリが出来上がっている!ということが実現可能な時代なのか、、と試して思いました。まあ開発するときは基本家なので、試してはみたもののいつ使おうか悩んでいます。笑
最後までご覧いただきありがとうございました!
参考
補足
AmazonQもいけるかなと思ってq chat
を実行したのですが、ダメでした。権限周りかもしれないです。この辺は調べてみようと思います。