hariport

haripo.com

desk: CUI 作業のワークスペース

Desk という最高にググラビリティの低い便利ソフトウェアの紹介です。 公式の謳い文句によると "Lightweight workspace manager for the shell."

GitHub - jamesob/desk: A lightweight workspace manager for the shell

ざっというと、プロジェクトごとに存在する複雑な操作を関数化/alias化して保存しておくワークスペースって感じ。 プロジェクトごとに存在する複雑な操作ってなんだというと、

  • ローカルに web アプリを起動するコマンド
  • テスト・Lint を走らせるコマンド
  • export ACCESS_KEY="~~" 的なコマンド

などです。 使いたいと思うたびに C-r してるようなコマンドではないでしょうか。 こういったコマンド群を綺麗にまとめるのが desk。

たとえば

# test.sh
#
# Description: test desk
#

cd ~/Projects/desk_test
rails s &

# migrate database
migrate() {
    bin/rake db:migrate RAILS_ENV=development
}

みたいなのを ~/.desk/desks/test.sh に作ると、

$ desk . test

で test というワークスペースにログインできます。 ログインするとカレントディレクトリが ~/Projects/desk_test に移動し rails が起動、 migrate など定義したコマンドが使えるようになります。 test.sh が実行されただけですね。

それ、だいたい .bashrc でできるじゃん、ってお思いの方もおられると思いますが、 まず 1 つはヘルプ機能などがあって綺麗に管理できるという点が優れています。 desk はコメントを解析しており、 ワークスペースにログイン中に desk コマンドをたたくことで 定義したコマンド群のヘルプを表示することができます。

もう 1 つとしては、ワークスペースの概念が強みです。 それなりのプロジェクトを扱っていれば、プロジェクト独自の自分用スクリプトを作ることもあるかと思いますが、 desk はこういったスクリプトをうまく捌きます。 ログインするまで定義したコマンドが使えないので(ログアウトしたらコマンドが使えなくなるので)、 コマンド群をプロジェクトごとに定義できます。

私自身あまりこういった作業効率化は積極的にしていませんでしたが、 desk を導入してみて便利さに気付きました。 というか、コマンドを雑に定義できる場所があるということが大きな意味を持っているように思います。 「とりあえずコマンドを書いてみる」が簡単にできるようになったので、効率化に向けての作業の敷居が低くなるのです。 記述するのは単なる shell script ですので学習コストが低いのもポイントでしょう。

さて、こういった CUI 環境の整理をして日々の作業の効率化を目指していきましょう。 怠慢は美徳だ。