chroju.dev/blog

the world as code

Alfred は「黒い窓」を使わなくなってからが本番

前回のエントリー Terraform Cloud を Alfred や CLI から操作する | the world as code の中で、 Alfred Workflow の話に触れたので、改めて書いてみる。

Alfred Workflow とは何か

Alfred というと黒い小さな入力フィールドがスッと出てきて、そこで色んなものをインクリメンタルサーチできるもの、というイメージが強いけれど、実際のところそれだけにはとどまらない。 Alfred Workflow をざっくり言えば、あるアクションを trigger し、 input を行い、それを受けて何らかの action を実行し、 output を出す、という4段階の流れを組み合わせることで、様々なツールを実現するもの、ということになる。

trigger は読んで字のごとくトリガーで、 workflow を起動する契機になる。「黒い窓」から実行するのであれば、 trigger は設定しなくてもかまわない。 input は入力値で、あのよくある「黒い窓」での検索も input にあたる。正確に言えば、あの検索で選んだ候補が input になる。では input は何に対しての入力なのかと言えば、 action だ。 action が input から要は引数を取って、 URL を開いたり、ファイルを開いたりといったアクションを行う。 output は aciton の結果をどこかへ出力したい場合に使うもの、ということになる。そしてこれら4つは、どれも必須ではない。 actioninput 無しに実行することだってできる。

例えば trigger には Hotkey というものがある。読んで字のごとく、任意のキーバインドで workflow を起動する場合に使う。そして action には Launch Apps/Files というアプリやファイルを起動できるものがある。この2つを組み合わせてみる。

Image from Gyazo

これで Command + Shift + g を押すと Gyazo が起動する workflow が出来た。 OS 標準のスクリーンショットを撮るのと似た感覚で、3つのキーを押すだけで簡単に Gyazo が起動できる。

このように、 Alfred で出来ることは「黒い窓」でやることだけに縛られないし、何かを検索してフィルタリングすることも必須ではない。組み合わせ次第で非常に多くの効率化が実現できる。

Hotkey の有効活用

Hotkey を使った例をもう1つ挙げる。

Alfred Workflow は export が可能になっていて、ウェブ上で広く公開されている Workflow がいくつもある。そのうちのひとつ、 Div を重宝している。

Image from Gyazo

同種のツールだと有償の Magnet が有名かもしれない。ウィンドウを画面の右半分、左下4分の1などにスナップさせてくれるツールで、 Magnet と異なるのは Alfred からのコマンド操作になるという点。

使い方は Alfred に div 800 600 とウィンドウサイズを絶対的に指定してもいいし、右半分であれば div right といったコマンドも用意されている。そしてこの Workflow 、コマンドに対して Hotkey を割り振れるよう、あらかじめ blank の領域が用意されている。

Image from Gyazo

僕は Command + Shift と矢印キーの組み合わせで、最大化したり左右半分に寄せたりできるように組んでいる。この Hotkey はグローバルなキーバインドになるので、他のアプリケーションと重複しないよう、3キー程度の組み合わせにするのが無難だと思う。

webhook を飛ばす

最後にもう1つ、 Hotkey 以外での使い方も紹介する。

僕はタスクやメモに Dynalist というアウトライナー、要はツリー構造のエディタを使っている。

この Dynalist に inbox という機能がある。ツリーのある階層を inbox に指定すると、特定の webhook に投げた文字列がすべてその階層直下に保存されるというもので、例えば fav した Tweet を投げ込むフローを組んだりだとか、いろいろ応用ができる。

日頃仕事や勉強中に、わざわざ Dynalist を開いてメモするのは面倒なので、これも Alfred から投げられるようにしている。

Image from Gyazo

Hotkey を trigger にしているが、その次の Keyword と書かれているのは input に当たり、要するところ、これがあの「黒い窓」を使った入力ということになる。この設定では Hotkey でもこの Workflow は起動するし、 input の上部に書かれた di というキーワードを Alfred に打つことでも起動する。

「黒い窓」の入力を受けて、次の Run Script が action に当たる。自由に bash コマンドを実行できる。

Image from Gyazo

ここで入力を {query} として受けて、 webhook を飛ばしている。

最後の Post Notification と書かれているのが output に当たり、 macOS の通知に curl の実行結果を表示させている。これはあっても無くてもいい、保険のようなものではある。

これは「黒い窓」を使う Workflow ではあるが、しかし検索は行っていない。単なる入力用のフィールドとして、あの窓を使うこともできる。

Conclusion

ということで、結構いろんなことができる。ここで挙げた以外にも trigger , input , action , output には様々な種類があるし、それらを組み合わせることのできる utilities というものも存在する。まぁ、スクリプトが実行できる時点で何でもありではある。

ちなみにいわゆるよくある「黒い窓」で検索をするやつ、あれは Script Filter という input に該当する。 Script Filter の中で bash や python などのスクリプトを書き、決まった形式の JSON を出力するようにすると、あの検索が発動する。なので前回エントリーのように、動的に検索対象を引っ張ってくることもできるし、固定的な値から検索したいのであれば、 JSON を cat するだけでも OK だ。 HTTP status code の一覧を検索できるようにしたら便利かな、とか今は考えている。