Header image

クラッソーネの開発者がエンジニアリングに関することもそうでないことも綴っています!

ghqのルート設定を変えたらalfred-workflow-ghqが動かなくなった

ghqのルート設定を変えたらalfred-workflow-ghqが動かなくなった

こんにちは、バックエンドエンジニアの山口拓弥(@yamat47)です。

ようやくコロナ禍もちょっとずつ落ち着いてきましたね!
私は週末は Brandings というチームでアメフトをプレーしていますが、大会の開幕まで一ヶ月を切ってかなり緊張しています...。
主将としてのファーストシーズン、なんならコロナが再燃するまでの束の間の期間かもしれないので、雨にも日焼けにも負けず思いっきり取り組んでいます!

https://twitter.com/Brandings_team/status/1445237814581284865

(写真は一昨年のものですが、寝っ転がっているのが私です)

とっても便利な CLI ツール ghq

さて、みなさんは ghq という CLI ツールを知っているでしょうか?
clone してきたローカルのリポジトリをとってもいい感じに管理してくれるツールで、peco などのフィルターと組み合わせて使っている方も多いと思います。

https://github.com/x-motemen/ghq

Rubyist の皆さんなら gem-src と組み合わせて、bundle install するたびに Gem のソースコードを全部 ghq の管理下に置いていますかね。
ちょっとしたデバッグにとても強力なので、もしまだしていない方は gem-src の README や @koic さんのスライドを参考にぜひ一度試してみてください!

https://github.com/amatsuda/gem-src

ghq + Alfred = ∞

そんな ghq ですが、ランチャーアプリの Alfred と組み合わせて使うとさらに強力なツールになります。
Alfred の workflow 機能を使うと「Alfred 起動 → ghq xxx でリポジトリを選択する → すぐに Visual Studio Code で起動」という流れを滑らかに行うことができます。

workflow を自前で作ってもいいのですが、私は alfred-workflow-ghq を使っています。
最新リリースの ghq.alfredworkflow ファイルをダウンロードして開くだけで使える、とっても手軽なパッケージなのが好きな理由です。

https://github.com/jackchuka/alfred-workflow-ghq

今回の記事はこの alfred-workflow-ghq を使うときのちょっとした tips の紹介です!

前提知識:ghq は起点となるディレクトリを自由に設定できる

詳しくは README を読んでいただくのがよいですが、ghq には clone してきたリポジトリをどこに配置するかを指定する仕組みが備わっています。
デフォルトは ~/ghq ですが、さまざまな方法でこれを変えることができます。

私の場合は .gitconfig を使って ~/src をこの起点に設定しています。

┏╸~
┗╸❯❯❯ ghq root
/Users/takuya_yamaguchi/src

alfred-workflow-ghq はそのままだと ghq の起点の変更を適用してくれない

この辺りのコード を読むとわかりますが、alfred-workflow-ghq はとても素朴な shell script です。
また ghq を呼び出すための PATH 設定すら書かれていることから分かる通り、Alfred の workflow が呼び出すシェルはユーザー設定が全く読み込まれていません。

このままだと ghq コマンドはデフォルトの状態で呼び出されることになります。
すなわち ↑ で紹介した起点の変更は有効にならず、デフォルトの ~/ghq を起点としてコマンドが実行されてしまいます。
これでは検索結果が常に空になってしまい、なんとも悲しいコマンドになってしまいます...。

検索結果が空なデモ

(最後はもう諦めて Google 検索を勧めちゃってる... ググレカスってことかな...)

起点の位置は $GHQ_ROOT を使って指定しちゃおう

ghq の起点の指定は環境変数(その名もズバリ $GHQ_ROOT)を使って行うことができます。
起点の変更を適用するために、Alfred の workflow の設定をいじってこの環境変数も追加で読み込ませてしまいましょう。

Alfred の設定画面から「Workflows > alfred-workflow-ghq」を選ぶとこのような画面になります。

alfred-workflow-ghqの設定画面

右上の [χ] のボタンから環境変数の設定画面を開くことができます。
GHQ_ROOT を追加して、Value に指定したい ghq の起点の位置を指定しましょう。

環境変数の設定画面

これで ghq コマンドを呼び出すときに普段使っている起点の位置が使われるようになりました。
ghq on Alfred の仕組みの完成です!

検索に成功したデモ

(余談)プルリクも出しました

同じようにハマる人が少しでも減るように、この設定に気付きやすくするプルリクを作りました。

https://github.com/jackchuka/alfred-workflow-ghq/pull/2

このプルリクがマージされてリリースされると、ワークフローの初期設定画面で GHQ_ROOT の設定を書き換えられることに気付きやすくなります。
「alfred-workflow-ghq 動かない」とかでググる僕みたいな人が少しでも減るといいですね。

(2021年10月19日追記)
こちらのプルリクは無事にマージされて、リリースも追加されていました。
これで僕と同じようにハマる人が減るはず...!

開発環境の改善の旅はまだまだ続く...

今回はちょっとした tips として、ghq + Alfred な仕組みづくりで私がハマった問題とその解決策をお伝えしました。

クラッソーネでは、リポジトリへのアクセス方法に限らずさまざまな開発環境改善が大好きなエンジニアを大募集中です。
少しでも興味を持っていただけた方、ぜひ私とカジュアル面談でお話ししましょう!

https://www.crassone.co.jp/recruit/engineer/


クラッソーネで Ruby on Rails を使ってサービス開発をしています。週末はアメフトのコーチをしたり選手もしたり、たまに審判もしたりしてます。エビ中もすき。