画像やデザインの参考資料を集めるなら、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は、それらを裏側でつなぐ母艦。
一つのツールですべてをやろうとするのではなく、それぞれに仕事を一つずつ任せる。
今回作った小さな「画像の入口」も、その考え方の延長にあります。
これでまた一つ、「あとでやろう」が発生しにくい仕事環境になりました。

