プログラムのネーミングに迷ったとき Alfred Workflows を使って、もっと手軽に GitHub でコード検索する

素晴らしい記事を見つけました。

プログラムのネーミングに迷ったら GitHub でコード検索すると参考になる説 - Qiita

みなさん、コードを書いていて変数やメソッド名のネーミングって迷いますね。

こんな時に自分たちはチームを横断して「こういう名前考えたんだけど、これってどうかな?」という確認を Slack 上で行っています。先日、この Slack チャンネルを見ていて考えました。

「GitHub で検索すれば世の中のコードでどのぐらい使われているかざっくり分かるので参考になるのでは?説」

というアイデアを実現するため、CLIでサクッとキーワードの件数を検索できるツール ghkw を作られたとのこと。

% ghkw ninja samurai bushi sensei senpai kohai
| RANK | KEYWORD |   TOTAL   |
|------|---------|-----------|
|    1 | ninja   | 3,374,938 |
|    2 | samurai |   730,748 |
|    3 | sensei  |   213,917 |
|    4 | senpai  |    26,786 |
|    5 | bushi   |    25,493 |
|    6 | kohai   |     2,195 |

うん。良いですね。
ただ…ターミナル立ち上げるのも時々億劫なんだよなあ…。

Alfredと連携させてみよう

さて、Macのランチャーアプリ Alfred には、強力なコマンド呼び出し機能「Workflows」があります。(有料)
Alfred Workflows - Extend Alfred and Boost Your Productivity
これを使って、ランチャー内で結果を確認できたら最高なのでは?

ということで、ターミナルを使わなくてもいいようにしてみました。

手順

簡単です。

1. Alfred の Preference で、①Workflowsを表示し、②新規作成し、③を配置して開く

image.png

2. スクリプトを書く

image.png

zsh の知識もあまりないですが、ほかの Workflow や参考サイト123を見ながら、見よう見まねでなんとかなりました。

PATH=$PATH:/usr/local/bin  # 環境変数を設定しないと brew でインストールしたコマンドが使えない
zmodload zsh/regex  # zsh で正規表現を使うために必要

result=$(ghkw {query})  # {query} でユーザー入力値が取得できる
arr=( ${(@f)result} )  # ghkw の出力結果を行ごとの配列へと変換

cat<<EOB
<?xml version="1.0"?>
<items>
EOB

for i in $arr; do
    cols=("${(@s/|/)i}")  # 結果が `|` で区切られているので分割。ちなみに index は 1 始まり
    keyword=$(echo $cols[3] | tr -d '[:space:]')
    population=$(echo $cols[4] | tr -d '[:space:]')

    if [[ $cols[2] -regex-match "[0-9]" ]]; then  # 結果(= cols[2] が数字) 以外の行を雑にフィルタ
        cat<<EOB
        <item uid="$population" arg="$keyword">  # item は uid の順にソートされる
        <title>$keyword</title>
        <subtitle> hits: $population</subtitle>
        <icon>icon.png</icon>
        </item>
EOB
    fi
done

cat<<EOB
</items>
EOB

3. (Optional) 選択時に GitHub の検索結果を開くようにする

image.png

ブロックをつなげて…

image.png

https://github.com/search?utf8=%E2%9C%93&q={query}&type= と設定。

できた!

image.png

いいでしょー。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.