画像やデザインの参考資料を集めるなら、Eagleはかなり便利です。

ただ、実際に使い始めると一つ困ることがありました。

「iPhoneで見つけた画像を、どうやって自然にEagleまで持っていくか?」

毎回AirDropするのも面倒。Macで改めてダウンロードし直すのも面倒。

理想は、

iPhoneで画像を保存する
↓
あとは勝手にMac miniへ届く
↓
Eagleにも入る

という流れです。

今回は、常時稼働させているMac miniとSyncthing、iPhoneのSynctrain、そしてEagleのAuto Importを組み合わせて、この「画像を放り込むだけ」の仕組みを作ってみました。

途中、思ったよりハマりました。

でも、そのおかげでSyncthingとEagleを組み合わせるときのポイントもかなり見えてきました。


やりたかったこと

僕の環境では、Mac miniを仕事の「母艦」にしています。

EagleのライブラリもMac mini側に置いていて、MacBook Proなど他のMacとはSyncthingで同期しています。

今回追加したかったのが、iPhoneからの入口です。

最終的に作りたかったのは、こんな流れ。

iPhone
写真・Webで見つけた画像
        ↓
「ファイルに保存」
        ↓
このiPhone内 / Eagle Upload
        ↓
Synctrain
        ↓
Syncthing
        ↓
Mac mini
Eagle Inbox / SynQ Creative
        ↓
Eagle Auto Import
        ↓
SynQ Creative.library
        ↓
Syncthing
        ↓
他のMacBook

つまり、iPhoneを「素材収集端末」にするということです。

iPhoneではEagleのライブラリ構造なんて考えない。

気になるものを見つけたら、とりあえずEagle Uploadへ放り込む。

整理するのは後です。


iPhoneではSynctrainを使う

Mac同士の同期にはSyncthingを使っています。

そこでiPhone側には、Syncthingクライアントの「Synctrain」を導入しました。

まずは、iPhone ↔ Mac miniを接続。

ここ自体は比較的すんなりいきました。

Mac mini側には最初、

/Users/yuya/Syncthing/Eagle Inbox

というフォルダを作成。これをSyncthingでiPhoneと共有します。

ところが、ここから少しハマります。


最初の失敗。「フォルダは見えているのに同期されない」

iPhoneのSynctrainで共有フォルダを受け取ったところ、

folder path missing

というエラーが出ました。

iPhoneの「ファイル」アプリを見るとEagle Inboxらしきフォルダは見えています。

だから最初は、「フォルダあるじゃん」と思ったんです。

でも、Synctrainからすると、ファイルアプリ上で見えていることと、実際に同期先として使えるローカルフォルダが設定されていることは別でした。

ここが一つ目のポイントでした。


「このiPhone内」に専用フォルダを作る

そこで方針を変更。iPhoneの「このiPhone内」に、

Eagle Upload

というフォルダを新しく作りました。

そしてSynctrain側では「レギュラーフォルダ」ではなく、既存のフォルダを指定する方法を使います。

ただし、ここでも一度失敗。Synctrainアプリ自身の管理領域にあるフォルダを指定しようとすると、

選択したフォルダはアプリフォルダ内にあります。
アプリフォルダ外のフォルダのみ選択可能です。

というエラーが出ました。

そこで、Synctrainのアプリ領域とは別に作ったEagle Uploadを指定。これでようやく、

iPhone
Eagle Upload
   ↕
Mac mini
Eagle Inbox

の同期が動きました。

iPhoneの写真アプリから、

共有 → ファイルに保存 → このiPhone内 → Eagle Upload

と保存すると、Mac mini側に同じ画像が現れます。

ここまで来たときは、「よし、完成」と思いました。

でも、まだ終わりではありませんでした。


EagleのAuto Importには独自のルールがあった

次に、Mac miniのEagleでAuto Importを設定します。監視対象として、

/Users/yuya/Syncthing/Eagle Inbox

を指定。するとEagleがその中に、

SynQ Creative

というサブフォルダを作りました。つまり実際にEagleが取り込む入口は、

Eagle Inbox/
└── SynQ Creative/

だったわけです。

ここでまた一つ勘違いしました。

「じゃあEagleのAuto Import先をEagle Inbox/SynQ Creativeにすればいいのでは?」と設定してみると、

Eagle Inbox/
└── SynQ Creative/
    └── SynQ Creative/

となりました。

SynQ Creativeが二重になった(笑)

どうやらEagle側が、Auto Importのルート配下に自分で必要なサブフォルダを作る仕組みになっています。なのでAuto Import側は、

Eagle Inbox

を指定しておくのが正解でした。


じゃあSyncthingで「SynQ Creative」だけ共有すればいい

ここで構造が見えてきました。Eagleが実際に監視している入口は、

/Users/yuya/Syncthing/Eagle Inbox/SynQ Creative

です。だったらiPhoneからの画像も、最初からここへ同期すればいい。

そこでSyncthingに新しく、Eagle Auto Importという共有フォルダを作ることにしました。

ところが、またエラー。

理由は単純で、すでに親フォルダのEagle InboxをSyncthingに登録していたからです。

Syncthingからすると、Eagle Inboxを同期しているのに、その中のEagle Inbox/SynQ Creativeを別の同期フォルダとして登録しようとしている。

つまり同期フォルダが入れ子になってしまうわけです。これはダメ。


旧「Eagle Inbox」の共有をやめる

そこで一度整理しました。旧構成は、

Syncthing
└── Eagle Inbox

を丸ごとiPhoneと共有していました。これをやめます。

ただし、ここで重要なのは、Mac mini上のEagle Inboxフォルダそのものを消すわけではないということ。

Eagleは引き続きこのフォルダをAuto Importのルートとして使います。削除するのは、あくまでSyncthing側の旧共有設定。

そのうえで、

/Users/yuya/Syncthing/Eagle Inbox/SynQ Creative

だけを新しくSyncthingへ登録。名前はEagle Auto Importとしました。

これをiPhoneのEagle Uploadと接続します。


そして、ついに動いた

改めてiPhoneから画像を保存します。

写真
↓
共有
↓
ファイルに保存
↓
このiPhone内
↓
Eagle Upload

すると、

iPhone / Eagle Upload
↓
Synctrain
↓
Mac mini / Eagle Inbox / SynQ Creative
↓
Eagle Auto Import
↓
Eagle

と流れていきました。

iPhoneからMac miniへ入り、そのままEagleにも反映。

ようやく完成です。これはかなり気持ちいい。


最後に出てきた「昔の共有設定」

動作確認後、Mac miniのSyncthingを見ると、

taisanがフォルダー「wtfrx-qd6ua」を共有するよう求めています。
新しいフォルダーとして追加しますか?

という通知が出ていました。

これは不具合ではなく、以前使っていたEagle Inboxの共有設定がiPhone側に残っていたためでした。

新しいEagle Auto Importはすでに動いているので、旧共有を再追加する必要はありません。

Mac mini側では旧共有の要求を無視。iPhoneのSynctrain側でも、旧Eagle Inboxの設定を整理していきます。

ここでも大事なのは、「同期設定を削除すること」と「実際のファイルを削除すること」を分けて考えることでした。


完成した構成

最終的には、かなりシンプルになりました。

【iPhone】

写真 / Safari / SNSなど
        ↓
ファイルに保存
        ↓
このiPhone内
└── Eagle Upload
        ↓
     Synctrain


【Mac mini】

Syncthing
        ↓
/Users/yuya/Syncthing/
└── Eagle Inbox/
    └── SynQ Creative/
        ↑
   Eagle Auto Import
        ↓
Eagle
└── SynQ Creative.library


【他のMac】

Syncthing
        ↓
Eagleライブラリを同期

役割も明確です。

Eagle Uploadは保管庫ではなく「投入口」。

ここが結構重要だと思っています。


なぜここまでして自動化するのか

今回やったことだけを見ると、「AirDropすればよくない?」とも思います。

確かに1枚なら、それでいい。

でも僕が作りたかったのは、画像を1枚転送する方法ではありません。

「気になったものを、とりあえず投げておける入口」です。

参考になるWebデザイン。犬服の撮影イメージ。広告。パッケージ。タイポグラフィ。Instagramで見つけた表現。街で見つけたデザイン。

こういうものを見つけるたびに、

「これはどこに保存しよう」
「Macに送っておこう」
「あとでEagleに入れよう」

と考えていたら、たぶん続きません。だから、

収集するときは整理しない。

iPhoneでは、とにかくEagle Uploadへ入れる。Mac miniが受け取る。Eagleが取り込む。

整理やタグ付けは、必要になったときにやる。

このくらい雑な入口のほうが、自分には合っています。


今回いちばん学んだこと

今回の設定で何度かハマりましたが、振り返ると原因はほとんど同じでした。

それぞれのツールが「どのフォルダを自分の責任範囲としているのか」を曖昧にしていたこと。

SynctrainにはSynctrainの管理領域がある。Syncthingには同期ルートという考え方がある。Eagle Auto ImportにはEagle側が作るフォルダ構造がある。Eagleのライブラリ本体は、また別物。

全部を一つのフォルダとして雑に扱おうとすると、どこかで衝突します。逆に、

iPhoneの入口
↓
同期する場所
↓
Eagleが拾う場所
↓
Eagleのライブラリ本体

と役割を分けてしまえば、かなり分かりやすくなりました。

これはファイル管理だけではなく、最近作っている仕事環境全体にも共通している気がします。

NotionにはNotionの役割。GitHubにはGitHubの役割。ObsidianにはObsidianの役割。EagleにはEagleの役割。

そしてMac miniは、それらを裏側でつなぐ母艦。

一つのツールですべてをやろうとするのではなく、それぞれに仕事を一つずつ任せる。

今回作った小さな「画像の入口」も、その考え方の延長にあります。

これでまた一つ、「あとでやろう」が発生しにくい仕事環境になりました。