Hazelがうまくいかないとき|確かめる順番
ルールを書いたのに何も起きない。この状態でまずやってしまいがちなのが、ルールの条件を何度も書き直すことです。ところが原因の多くはルールの外側、つまり権限や起動状態にあります。原因の候補は上流から下流へ並んでいて、上流が塞がっていると下流をいくら直しても結果は変わりません。確かめる順番を決めておけば、原因にたどり着くまでの時間は大きく縮みます。Hazel fuguaiで詰まったときに上から順に潰していく手順を、公式資料に沿って整理します。
順番を間違えると、直っていないのに直したつもりになる
切り分けの順番は6段階です。上から順に、動作の許可、アプリの起動状態、ルールの有効状態、条件の一致、実行時のエラー、そして結果の確認です。
この順番には理由があります。たとえば、フルディスクアクセスが外れている状態でルールの条件を直しても、処理そのものが走らないため結果は変わりません。ところが人は、条件を直した直後にファイルを置き直して「まだ駄目だ」と判断し、また条件を直します。この繰り返しが起きると、元は正しかったルールが、直すたびに壊れていきます。
もう1つ厄介なのは、途中で偶然動いてしまう場合です。条件を10回直すうちにたまたま処理が走ると、最後に触った条件が正解だったと記憶されます。実際には、その間にアプリを再起動したことが効いていたのかもしれません。順番を決めて上から潰すのは、こうした誤った学習を防ぐためでもあります。
以下では上流から順に見ていきます。1つ確かめるごとに、ファイルを置き直して結果を見るのではなく、次に説明する状態の画面で確認してください。そのほうが速く、確実です。
動作の許可が外れていないかを最初に見る
Hazelはファイルを読み書きするため、macOSの保護された領域に触る許可が要ります。導入手順では、ゴミ箱関連の機能を使う場合にフルディスクアクセスの付与が必要だと案内され、システム設定のプライバシー欄にアプリを追加したうえで、いったん終了して開き直す操作が求められます。この「終了して開き直す」を飛ばすと、一覧には載っているのに許可が効いていない状態になります。
さらに見落としやすいのが、アプリ本体とは別に、内部の補助プログラムに対して許可を求められる場合です。開発元は2022年10月のブログで、この問題を次のように説明しています。
One of the main permissions that Hazel may require is Full Disk Access. If you go to that section in System Preferences/Settings, you'll see a list of apps. You think adding and enabling your app there is all that is needed; that it should handle permissions for that app and all its subsidiary executables in its bundle. 出典: noodlesoft.com
同じ記事によれば、状況によってはアプリ本体とは別に補助プログラムの許可が必要になり、その項目が見慣れない名前で一覧に並ぶことがあります。名前の正体は、開発元の識別子に続けてプログラムの識別子をつないだ文字列です。利用者から見ると意味の分からない英数字の羅列に見えるため、一覧の中にあっても自分が使っているアプリの一部だと気づけません。
確認する手順はこうです。システム設定のプライバシーとセキュリティからフルディスクアクセスを開き、Hazelの項目が有効になっているかを見ます。次に、同じ一覧の中に英数字だけの見慣れない項目がないかを確かめます。あれば、それが補助プログラムです。有効にしたあとはアプリを終了して開き直してください。ここまでで動き出す例は少なくありません。
アプリとルールが止まっていないかを見る
許可の次は、そもそも動く状態にあるかどうかです。Hazelには処理を止める操作が3階層あります。
- アプリ全体の停止。メニューまたはメニューバーの項目から停止でき、停止中はルールもゴミ箱の処理も一切走りません。アイコンの色が薄くなることで区別します
- フォルダ単位の一時停止。特定のフォルダについてだけ、ルールの適用を止められます
- ルール単位の無効化。1本ずつ有効と無効を切り替えられます
この3つは、公式ガイドが試作中のルールを安全に試すための仕組みとして案内しているものです。裏を返すと、動作確認のために止めたまま戻し忘れる事故が起きやすい場所でもあります。ルールを1本も疑う前に、この3つがすべて動作状態になっているかを確かめてください。
止めた覚えがなくても確認する価値があります。実験のためにフォルダを一時停止したのが数週間前で、その記憶が残っていないという状況は普通に起こります。
当たっているかどうかは、状態の画面で判定する
ここからがルールの話です。ファイルを置き直して結果を待つ方法は、時間がかかるうえに何が起きたのかが分かりません。公式ガイドが案内している確認手段は2つあります。
1つはルールの試し実行です。ルールを編集している画面からプレビューでき、保存する前に一致するかどうかを確かめられます。
もう1つが状態の画面です。フォルダを選んでルールの状態を開くと、そのフォルダの全項目と、それぞれがどのルールに一致したかが一覧で出ます。ここで見るべき点は次のとおりです。
- 一致した日時の欄が空。そのファイルはまだ処理されていません。条件以前に、処理の対象になっていない可能性があります
- 日時の代わりにエラーが出ている。処理は走ったが失敗しています。条件ではなく実行内容の側に原因があります
- 情報の表示で条件ごとの判定が見える。一致した項目は青、一致しなかった項目は赤で示されます。どの条件で落ちたのかがその場で分かります
3つ目が最も効きます。条件を勘で直す作業が、落ちた条件を1つ直す作業に変わるためです。なお、この画面を開いたままルールを編集した場合は、更新の操作をしないと表示が古いままになります。直したのに変わらない、という誤解はここからも生まれます。
直した直後に動かないのは、待ち時間と一度きりの仕様
ルールを直したのに反応がない、という訴えには、不具合ではない原因が2つあります。
1つ目は待ち時間です。公式ガイドは、ルールを編集したあとHazelが再実行するまでに短い間隔を置くと説明しています。直した直後にファイルを置いて数秒で判断すると、まだ実行されていないだけの状態を「動かない」と読み違えます。
2つ目は、同じファイルに同じ処理を繰り返さない仕組みです。既定では、一度あるルールに一致したファイルに対して、その処理はもう一度は走りません。動作確認のために同じファイルを戻して置き直しても反応がないのは、この仕様によるものです。
どちらも、フォルダを選んで手動でルールを実行すれば回避できます。公式ガイドは、この手動実行が過去に一致したファイルにも処理を適用すると明記していて、ルールが動くはずなのに動かないときの切り分け手段としても案内しています。フォルダを選んで実行の項目を選ぶか、フォルダを副ボタンでクリックして同じ項目を選びます。一時停止中のフォルダに対して、一時停止を解除せずに1回だけ実行したい場合にも使えます。
手動で実行すると動くのに自動では動かない、という結果が出た場合、原因はルールの中身ではなく監視の側にあると判断できます。ここまで来れば、見るべき場所は許可と監視対象のパスに絞られます。
それでも分からなければ、記録を読む
状態の画面で異常が見えない場合、次は記録です。ヘルプのメニューから記録の表示を選ぶか、メニューバーの項目から開きます。検索欄があるので、問題のファイル名で絞り込めます。
記録の情報量が足りないときは、詳細な記録を残す設定に切り替えられます。公式のトラブルシュートの案内では、この設定を有効にするとはるかに詳しい記録が残ると説明されています。普段から有効にしておくものではありませんが、原因が見えない1件を追うときには有効です。
ここまでやっても解決しない場合、公式は問い合わせを案内しています。その際、ここまでの過程で得た情報を添付するよう求められています。逆に言えば、状態の画面と記録を見ないまま問い合わせても、同じ確認を求められて往復が増えるということです。
当たらない原因として多いもの
条件の書き方以外に、当たらない理由の定番があります。
1つ目はサブフォルダです。既定では監視フォルダの直下しか処理されません。中のフォルダに直接置かれたファイルは、どれだけ条件が正しくても一致しません。中まで広げるには、フォルダに一致してフォルダ内容にルールを適用する専用のルールを置きます。
2つ目は、書き込みが終わっていないファイルです。公式ガイドはダウンロード用アプリの設定について、未完了のファイルと完了したファイルの保存先を分けるよう明記しています。分けていない場合、まだ落ちきっていないファイルにルールが当たり、中途半端な状態で移動されます。この症状は「たまに失敗する」という形で現れるのが特徴です。小さいファイルは間に合い、大きいファイルだけ壊れるためです。再現しない不具合を追っているときは、失敗した回のファイルサイズを見比べてください。
3つ目は、監視している場所が思っている場所と違う場合です。ブラウザやメールの保存先は設定で変更できるため、既定のダウンロードフォルダを監視していても、実際のファイルは別の場所に置かれていることがあります。監視対象のパスと、アプリ側の保存先の設定を並べて確認してください。
4つ目は、動作要件です。要件の表記は公式サイトの中で2通りあり、Hazel 6のFAQ側がmacOS 13.0(Ventura)以降、導入手順のページ側がmacOS 12(Monterey)以降となっています。古いOSのまま使っていて挙動が安定しない場合は、ルールを疑う前にこの食い違いを思い出してください。どちらが正しいにせよ、要件を下回っていれば直す手段はOSを上げることしかありません。
動いた結果が違ったときの戻し方
原因を追うのとは別に、すでに動いてしまった処理への対処が要ります。Hazel 6では、移動されたファイルをFinderで副ボタンからクリックしてRevertを選ぶと、元の位置と名前に戻ります。タグやコメントのような属性も戻ります。
ここで公式ガイドが添えている注意が重要です。戻しただけではルールは変わっていないため、同じ条件に一致すればまた同じ処理が走ります。順番としては、先にルールを直すか、アプリを停止してから戻すのが安全です。この順番を守らないと、戻しては処理されるという状態を繰り返すことになります。
切り分けの時間そのものを減らす
ここまでの手順を1回通すと、見る場所は権限の設定、アプリの画面、状態の一覧、記録、そして実際のフォルダと、5箇所に分かれます。原因が上流にあるほど、下流で見ていた情報は無駄になります。
この行き来は、道具の出来とは別の問題です。設定を直すたびに、フォルダの中身を見て、コマンドで確かめて、記録を読み直す。この繰り返しが切り分けの時間の大半を占めます。フォルダとターミナルとAIが同じ窓にある形であれば、少なくとも見る場所の移動は減らせます。どの作業が1つの窓で完結するのかはできることに機能単位で並んでいます。
手が離せないときに状況だけでも確認したい場合の選択肢はiPhone・iPadから続きをに整理があります。ほかの道具と担当範囲を並べて、どこまでを自動化に任せ、どこからを手元で確かめるのかを決めたい場合は他のファイル管理との比較が判断材料になります。
よくある質問
ルールを書いたのに何も起きないとき、最初に見るべきはどこですか?
条件ではなくアプリの状態です。まずフルディスクアクセスが有効か、追加後にアプリを終了して開き直したかを確認します。次にアプリ自体が停止していないか、フォルダが一時停止になっていないか、そのルールが無効になっていないかを見ます。ここまで問題がなければ、ルールの状態画面で一致の有無を確かめます。
フルディスクアクセスの一覧に、英数字だけの見慣れない項目があります。これは何ですか?
アプリ本体ではなく、その中に含まれる補助プログラムです。開発元のブログによれば、名前は開発元の識別子とプログラムの識別子をつないだ文字列になります。本体の許可とは別に求められることがあり、これが無効のままだと本体を許可していても正しく動きません。有効にしたあとはアプリを開き直してください。
サブフォルダの中のファイルにルールが当たりません。
既定の動作です。監視フォルダの直下にある項目だけが対象になります。中まで処理させるには、フォルダに一致する条件と、フォルダ内容にルールを適用する実行内容を持つルールを1本追加します。このルール自体は何もしないように見えますが、ほかのルールの適用範囲を広げる役目を持ちます。
間違った場所に移動されたファイルを元に戻せますか?
Hazel 6であれば戻せます。対象のファイルをFinderで副ボタンからクリックしてRevertを選ぶと、元の位置と名前、タグやコメントまで復元されます。ただし戻しただけでは原因のルールは残っているため、同じ条件に一致すればまた処理されます。先にルールを直すか、アプリを停止してから戻してください。