きょこみのーと

元六本木でGo書いてました。今はVRでGo書いてます。

esaのAlfred WorkflowをGoで作りました

作ったもの

https://cloud.githubusercontent.com/assets/1456047/22448591/cdbc9f68-e79d-11e6-8853-9a032cc1b6c1.png

github.com

とりあえずtokenとチーム名を登録して記事を検索できるだけです。

注意点

ちなみに、esaAPIは利用制限があるので検索しすぎにご注意ください

https://docs.esa.io/posts/102#2-3-0

現時点では、ユーザ毎に15分間に75リクエストまで受け付けます。 とのこと

参考にしたもの

使ったライブラリ

github.com

filterで一覧表示するのがこんなに楽に実装できて感謝

github.com

esaのClientすでに作っている方がいてesaAPI仕様はあまり見ないでもサクッと作れました! 感謝

github.com

最初、直接 Open in Finder したフォルダ内にバイナリを放り込んで開発してたんですが、 普通に xxx.alfredworkflow をダブルクリックしてInstallして動作確認したかったので、 alfred-workflow-packager を使うようにしました。(まあ、色々replaceしてzipに固めるだけっぽいですが)

ただ、これはMacでAlfred3がインストールされている前提のコードがあるので、ちょっと書き直してCIで動くようにしようかなと思ってます。

GoでAlfredWorkflowを作る手順(雑メモ)

AlfredWorkflowつくるぞ〜と思ってから最初どうすればいいかわからない具合いが結構すごかったです。

とりあえず自分は、似てるworkflowをinstallして Alfred上で Open in Finder して中身を漁ってつくりを把握してつくってみました。 思ったより単純な構造で、基本的には以下の流れでつくればいいのかなという理解。

  • 普通にCLIツールをGoで作る
    • Script filter での出力は go-alfred 等を使ってxmlをPrintする
    • Run Script して Post Notification に表示する出力は普通に fmt.PrintでOK
  • Alfred上でkeywordsとかをとりあえず作成して ./<バイナリ名> search "{query}" みたいな感じでCLIツールの呼び出しする
  • Open URLとか適当なActionを紐付けて、とりあえず動くところまでいく
  • Open in Finder して icon.pnginfo.plist だけコピーしてGoのProjectにコピーする
  • あとは alfred-workflow-packager を使って xxx.alfredworkflowを作成して、ダブルクリックしてインストールして動作確認していく感じ

まとめ

Alfred便利なのでどんどん作っていくぞ!!!!!!