アフィリエイト広告を利用しています

Mac miniからMacBook Proへ【Tailscale Taildrop】Claude Codeに「送って」と言うだけのファイル転送を作った

AI専用機にしているMac mini(M1 メモリ16GB / SSD 1TB)で作ったファイルを、離れた場所にあるMacBook Pro(M4 Pro)へ送る仕組みを、Claude Codeに作ってもらいました。

使い方は、Claude Codeに「これ、MBPに送って」と言うだけ。

すぐに、MacBook Proの「ダウンロード」フォルダに、ファイルが届きます。

これが、便利。

記事の最後に、同じ仕組みを作るためのプロンプトを載せています。Claude CodeでもCodexでも使えます。

Mac miniで作ったファイルを、手元で見たい

Mac miniでは、Claude Codeが24時間動いていて、資料やPDFや画像を作ってくれます。

が、作られたファイルは、当然、Mac miniの中にあります。

手元のMacBook Proで開きたいとき、どうやって持ってくるか。

なので、Claude Codeに一言。

「このMac miniで作ったファイルを、リモートのMacBook Proに転送する仕組みを作って」

Claude Codeが、まず調べてくれた

Claude Codeは、いきなり作り始めるのではなく、まず、2台がどうつながっているかを調べていました。

2台とも、Tailscale(自分の端末どうしを、暗号化したネットワークでつなぐサービス)に入っていて、つながっている。

ただ、MacBook Pro側は、SSH(リモートログイン)がオフ。

そこで、2つの方法を出してくれました。

ひとつは、Tailscaleのファイル送信機能「Taildrop」を使う方法。

MacBook Pro側の設定はいりません。

ただし、届く場所は「ダウンロード」フォルダに決まっています。

もうひとつは、MacBook ProのSSHをオンにして、rsyncで送る方法。

好きな場所に、フォルダの形のまま送れます。

ただし、MacBook Pro側での設定作業がいります。

僕の場合は、MacBook Proに触らずに済むほうがいいので、Taildropにしました。

送るタイミングも聞かれたので、「僕が指示したら送る」にしました。

フォルダに入れたら自動で送る、という方法もあったのですが、言ったときだけ送るほうが安心です。

数分で、届いた

Claude Codeが、試しにテキストファイルを1つ送ったところ、MacBook Proのダウンロードフォルダに、ちゃんと届いていました。

中でやっていることは、Tailscaleのこのコマンドです。

tailscale file cp ファイル名 送り先の端末名:

Macのアプリ版のTailscaleでは、ターミナルに tailscale コマンドが入っていないことがあります。

その場合は、/Applications/Tailscale.app/Contents/MacOS/Tailscale が、コマンドの本体です。

これを、Claude Codeが、小さなスクリプトにまとめてくれました。

フォルダを指定すると、zipにまとめて送る(Taildropは、フォルダのままでは送れないため)。

MacBook Proがスリープ中だと送れないので、送る前に、相手がオンラインかを確かめる。

送った記録を、ログに残す。

ついでに、iPhoneやiPadにも送れるようになっています。

ひとつ、つまずきポイントがありました。

Claude Codeのサンドボックス(安全のための囲い)の中では、Tailscaleのコマンドが「Failed to load preferences」で動きません。

なので、このスクリプトは、サンドボックスの外で動かしてもらっています。

で、これってセキュアなの?

便利なのはいいのですが、ファイルを外に出す仕組みです。

なので、以前作った「公開状態の点検」のスキル(自分のサイトやMacが、意図せず外から見えていないかを調べるもの)で、フルチェックしてもらいました。

結果は、仕組みそのものには、問題なし。

インターネットに向けては、何も公開していない。

通信は、Tailscaleの仕組み(WireGuard)で、端末から端末まで暗号化されている。

送れる相手は、自分のアカウントの端末だけ。

ただ、ひとつだけ、指摘がありました。

フォルダを送ると、「.env」のような、パスワードやAPIキーを書いたファイルまで、zipに入ってしまう。

送り先は自分のMacBook Proとはいえ、秘密のファイルが、あちこちの端末のダウンロードフォルダに散らばるのは、よくありません。

そこで、その場で直してもらいました。

フォルダを送るときは、.envや鍵のファイル、.gitフォルダなどを自動で外して、「秘密っぽいので除外」と表示する。

秘密っぽいファイルを1つだけ指定したときは、送らずに止まる。

送る前に、zipの中身を確認できるモードも付けてもらいました。

どのプロジェクトからでも送れるように

ここで、ひとつ気づいたことがあります。

最初は、この仕組みを作ったプロジェクトのフォルダで動いているClaude Codeしか、送り方を知りませんでした。

Claude Codeの覚え書き(メモリ)は、プロジェクトごとに分かれているからです。

僕は、どのプロジェクトからでも送れると思っていました。

なので、全部のプロジェクトで読まれる共通のルール(~/.claude/CLAUDE.md)に、「MBPに送って、と言われたら、このスクリプトで送る」と書き足してもらいました。

これで、どのプロジェクトの作業中でも、「これ、MBPに送って」が使えます。

注意すること

届く場所は、いつも「ダウンロード」フォルダです。

たまってくるので、ときどき掃除が必要です。

MacBook Proがスリープしていると、送れません。

それと、Tailscaleは、端末ごとに鍵の期限があります(初期設定では180日)。

期限が切れると送れなくなるので、その前にログインし直す必要があります。

Tailscaleの管理画面で、自分の端末を他の人に共有していないか、アクセスの許可が初期設定のままか、一度見ておくと安心です。

まとめ

Mac miniで作ったファイルが、Claude Codeに「送って」と言うだけで、MacBook Proに届くようになりました。

作ってもらうだけでなく、「これ、安全?」と聞けば、点検して、弱いところを直すところまでやってくれる。

ここが、ありがたいです。

同じ仕組みを作るプロンプト

送る側のMacで、Claude CodeかCodexに、下のプロンプトを貼ってください。

前提は、送る側と受け取る側の両方に、Tailscaleが入っていて、同じアカウントでログインしていること。

最初の【 】の中だけ、自分の環境に書き換えます。

送り先の端末名がわからなければ、空のままでも大丈夫です。AIが一覧を出して、聞いてくれます。

実際にファイルを送る操作なので、自己責任でお願いします。

このMacで作ったファイルを、Tailscale の Taildrop で別の端末(受け取る側の Mac など)へ送る仕組みを作ってください。

【送り先の端末名】(わからなければ空でよい。Tailscale の端末一覧から私に選ばせてください)
【スクリプトの置き場所】~/bin/sendfile(別の場所がよければ書き換える)

やること:
1. Tailscale の CLI を探す。PATH に tailscale が無ければ、Mac App Store 版・公式アプリ版は /Applications/Tailscale.app/Contents/MacOS/Tailscale を使う。tailscale status と tailscale file cp --targets で、送り先がオンラインで Taildrop の送り先に出ているか確かめる
2. 小さなテキストファイルを1つ試しに送り、受け取る側の「ダウンロード」フォルダに届いたかを私に確認してもらう
3. 次の機能を持つ zsh スクリプトを作る
   - 使い方: スクリプト名 ファイルやフォルダ...(複数可)/ --to 端末名 で送り先を変える / --targets で送れる端末の一覧
   - 送る前に送り先がオンラインか確かめ、オフラインならエラーで止める(待たされないように)
   - フォルダは zip にまとめて送る(Taildrop はフォルダを送れない)。zip は一時フォルダに作り、終わったら消す
   - 秘密っぽいファイルは送らない: フォルダからは .env と .env.*(.env.example などの見本は残す)、.dev.vars、*.pem、*.key、*.p12、id_rsa などの秘密鍵(*.pub は残す)、credentials.json、token.json、.git/、.ssh/、.aws/ を除いてから zip にし、除いたファイル名を表示する。秘密っぽいファイルを単体で指定されたら、送らずに止める。--force のときだけ除外しない
   - --dry-run で、送らずに zip の中身だけ表示する
   - 送った日時・送り先・元のパス・サイズを、スクリプトと同じフォルダのログに追記する
4. 秘密入りの試験フォルダを作って --dry-run で除外を確かめ、試験フォルダは消す
5. 使い方を README にまとめる
6. どのプロジェクト(フォルダ)で作業していても「〇〇に送って」で使えるように、全体の指示ファイルに使い方(スクリプトのパス・届く場所・秘密ファイルの除外・送るのは指示されたときだけ)を書き足す。Claude Code なら ~/.claude/CLAUDE.md、Codex なら ~/.codex/AGENTS.md

守ること:
- Tailscale の設定(Serve・Funnel・ACL・共有)は変えない。インターネットに何も公開しない
- ファイルを実際に送るのは、私が「送って」と言ったときだけ。--force は私が明示したときだけ使う
- AI エージェントのサンドボックス内で tailscale コマンドが失敗したら(Failed to load preferences など)、サンドボックス外で実行してよいか私に確認する

この記事を書いた人

大東 信仁

カンパチが好きです。

プロフィールはこちら

10月14日開催 参加者募集中
(画像をタップ→詳細へ)

ミッションナビゲート モニター
(画像をタップ→詳細へ)

広告