こんにちは。サーバサイド開発部の火村(@eielh)です。 本題とはまったく関係ありませんが、最近はJuliaで遊んでいます。
さて、年の暮れといえば、ふりかえりです。来年、躍進するためにもふりかえりはとても重要です。
私はbrew update
した際に表示される new formula の項目を追うのを日課にしています。
気になったツールはTwitterや社内チャットで紹介しています。
というわけで、今年 brew install
できるようになったコマンドをふりかえっていきます。
といっても、多すぎるので、日常で使えそうなコマンドに絞っています。
- Formulaの紹介
- mdcat / ターミナルで Markdown をもっと読みやすく
- bat / Git の差分もみえる cat クローン
- tj / さくっと出力にタイムスタンプを付与できる
- bcal / ストレージの容量計算はおまかせ
- latexdiff / LaTeX だって diff がとりたい
- kakoune / vim に似てるけど別の思想のテキストエディタ
- lf / vim ライクターミナルファイルマネージャ
- mkcert / ローカル開発用の証明書をつくります
- python-yq / YAML や XML を jq できます
- prettier / JavaScript や Markdown を整形します
- topgrade / ぜんぶアップグレードしてやんよ
- fx / ターミナルで JSON が確認しやすい
- eg-examples / man のお供にコマンド例
- tealdeer / man は長すぎる
- gitmoji / 絵文字の入ったコミット作成を支援
- まとめ
Formulaの紹介
mdcat / ターミナルで Markdown をもっと読みやすく
$ brew info mdcat mdcat: stable 0.12.1 Show markdown documents on text terminals https://github.com/lunaryorn/mdcat ==> Analytics install: 184 (30 days), 660 (90 days), 1,321 (365 days) install_on_request: 183 (30 days), 661 (90 days), 1,322 (365 days) build_error: 0 (30 days)
Markdown cat ということで、Markdown をターミナル上にレンダリングしてくれます。 端末によっては画像も表示できます。
具体例は GitHub のリポジトリを確認ください。
bat / Git の差分もみえる cat クローン
$ brew info bat bat: stable 0.9.0 Clone of cat(1) with syntax highlighting and Git integration https://github.com/sharkdp/bat ==> Analytics install: 4,703 (30 days), 28,338 (90 days), 61,788 (365 days) install_on_request: 4,687 (30 days), 28,285 (90 days), 61,710 (365 days) build_error: 0 (30 days)
結構話題に上がったのでインストール数が多いですね。 行番号やシンタックスハイライトができて、Git の差分まで表示してくれる cat ですが、長いファイルだとページャーも起動してくれます。
tj / さくっと出力にタイムスタンプを付与できる
$ brew info tj tj: stable 7.0.0 Line timestamping tool https://github.com/sgreben/tj ==> Analytics install: 3 (30 days), 6 (90 days), 88 (365 days) install_on_request: 3 (30 days), 6 (90 days), 88 (365 days) build_error: 0 (30 days)
ほとんどインストールされてないですね。 時刻がでない標準出力に時間を付与したいときに便利です。
出力が json なので、jq と組み合わせてつかっても面白いですが、go template でも出力がカスタマイズできます。
$ (echo Hello; sleep 1; echo World) | tj | jq . { "timeSecs": 1545875636, "timeNanos": 1545875636451663000, "time": "2018-12-27T01:53:56Z", "deltaSecs": 1.3061e-05, "deltaNanos": 13061, "delta": "13.061µs", "totalSecs": 1.3061e-05, "totalNanos": 13061, "total": "13.061µs", "text": "Hello" } { "timeSecs": 1545875637, "timeNanos": 1545875637455548000, "time": "2018-12-27T01:53:57Z", "deltaSecs": 1.003884681, "deltaNanos": 1003884681, "delta": "1.003884681s", "totalSecs": 1.003897742, "totalNanos": 1003897742, "total": "1.003897742s", "text": "World" }
$ (echo Hello; sleep 1; echo World) | tj | jq '{(.time): .text}' { "2018-12-27T01:54:16Z": "Hello" } { "2018-12-27T01:54:17Z": "World" }
$ (echo Hello; sleep 1; echo World) | tj | jq '{(.total): .text}' { "13.651µs": "Hello" } { "999.367682ms": "World" }
bcal / ストレージの容量計算はおまかせ
$ brew info bcal bcal: stable 2.1 Storage conversion and expression calculator https://github.com/jarun/bcal ==> Analytics install: 71 (30 days), 144 (90 days), 251 (365 days) install_on_request: 71 (30 days), 144 (90 days), 251 (365 days) build_error: 0 (30 days)
byte 単位の計算ができるbc
コマンドみたいなものでしょうか。
私はこれといって使い所をもってなく良さげな活用例を持っていません。
$ bcal "16gb / 4" RESULT 4000000000 B IEC standard (base 2) 3906250 KiB 3.8146972656e+03 MiB 3.7252902985e+00 GiB 3.6379788071e-03 TiB SI standard (base 10) 4000000 kB 4000 MB 4 GB 4.0000000000e-03 TB ADDRESS (d) 4000000000 (h) 0xee6b2800
latexdiff / LaTeX だって diff がとりたい
latexdiff: stable 1.3.0 Compare and mark up LaTeX file differences https://www.ctan.org/pkg/latexdiff ==> Analytics install: 82 (30 days), 315 (90 days), 796 (365 days) install_on_request: 71 (30 days), 244 (90 days), 601 (365 days) build_error: 0 (30 days)
面白いところは、diff 結果も LaTeX なところでしょうか。 サンプル用意するのが面倒なので、参考になりそうなページを貼っておきます。
https://www.ctan.org/pkg/latexdiffwww.ctan.org
kakoune / vim に似てるけど別の思想のテキストエディタ
$ brew info kakoune kakoune: stable 2018.10.27 Selection-based modal text editor https://github.com/mawww/kakoune ==> Analytics install: 166 (30 days), 861 (90 days), 2,948 (365 days) install_on_request: 166 (30 days), 861 (90 days), 2,913 (365 days) build_error: 0 (30 days)
基本操作は vim に似ているテキストエディタ。
起動する際のコマンドはkak
。
編集したい範囲を指定して、命令を指定するというスタイルの編集ができます。
たとえば単語削除は vim ではdw
ですが、kak ではwd
になります。
単語を選択して削除という寸法です。
選択範囲を調整して操作するという使い方ができます。
行選択x
と行選択を 1 行追加X
ぐらい覚えておいても損はないかもしれません。
ざくっとwikiの Onboarding を見るのがおすすめです。
lf / vim ライクターミナルファイルマネージャ
$ brew info lf lf: stable 8 Terminal file manager https://godoc.org/github.com/gokcehan/lf ==> Analytics install: 20 (30 days), 61 (90 days), 319 (365 days) install_on_request: 20 (30 days), 61 (90 days), 319 (365 days) build_error: 0 (30 days)
ターミナルで動作するファイルマネージャです。
vim のような操作体系です。
h
が updir でl
が open なあたりが直感的で好きです。
mkcert / ローカル開発用の証明書をつくります
$ brew info mkcert mkcert: stable 1.1.2 Simple tool to make locally trusted development certificates https://github.com/FiloSottile/mkcert ==> Analytics install: 880 (30 days), 2,668 (90 days), 8,165 (365 days) install_on_request: 880 (30 days), 2,662 (90 days), 8,140 (365 days) build_error: 0 (30 days)
開発用の証明書がさくっとつくれます。 OAuth の動作確認に手でつくってたりしたので便利になったと思いました。 ngrok のようなトンネルを使う場合は不要なので、出番は正直なところ浮かびません。
GitHub トレンドでも見た気がするので、それなりにダウンロードされてますね。
python-yq / YAML や XML を jq できます
$ brew info python-yq python-yq: stable 2.6.0 Command-line YAML and XML processor that wraps jq https://yq.readthedocs.io/ ==> Analytics install: 316 (30 days), 918 (90 days), 1,443 (365 days) install_on_request: 317 (30 days), 914 (90 days), 1,439 (365 days) build_error: 0 (30 days)
YAML や XML を処理して jq に渡してくれます。
https://yq.readthedocs.io/yq.readthedocs.io
prettier / JavaScript や Markdown を整形します
$ brew info prettier prettier: stable 1.15.3 Code formatter for JavaScript, CSS, JSON, GraphQL, Markdown, YAML https://prettier.io/ ==> Analytics install: 403 (30 days), 1,027 (90 days), 1,619 (365 days) install_on_request: 403 (30 days), 1,028 (90 days), 1,621 (365 days) build_error: 0 (30 days)
JavaScript ユーザなら一般的なコードフォーマッタです。 JavaScript 以外にも対応してて、最近 HTML にも対応した記憶があります。 JavaScript プロジェクトなら devDependencies に追加して使うことが多いですが、 Markdown の整形に使えるので、brew でインストールしておくのもよいと思いました。
topgrade / ぜんぶアップグレードしてやんよ
$ brew info topgrade topgrade: stable 1.3.0 Upgrade all the things https://github.com/r-darwish/topgrade ==> Analytics install: 319 (30 days), 1,010 (90 days), 1,157 (365 days) install_on_request: 319 (30 days), 1,007 (90 days), 1,154 (365 days) build_error: 0 (30 days)
アップグレードするコマンド全部まとめて実行してくれる便利コマンドです。 毎日つかってます。 自動検知してくれるので、Brew はもちろん Atom Editor、Spacemacs、rustup、fisherman あたりも自動でアップグレードしてくれます。
fx / ターミナルで JSON が確認しやすい
brew info fx fx: stable 10.0.0 Command-line JSON processing tool https://github.com/antonmedv/fx ==> Analytics install: 1,056 (30 days), 1,391 (90 days), 1,391 (365 days) install_on_request: 1,057 (30 days), 1,392 (90 days), 1,392 (365 days) build_error: 0 (30 days)
ターミナルで JSON を見るのが捗るやつです。 今、話題なやつなので語ることがありません。 とりあえず、demo を見てみるのがおすすめです。
eg-examples / man のお供にコマンド例
$ eg-examples eg-examples: stable 1.1.1 Useful examples at the command-line https://github.com/srsudar/eg ==> Analytics install: 20 (30 days), 60 (90 days), 67 (365 days) install_on_request: 20 (30 days), 60 (90 days), 67 (365 days) build_error: 0 (30 days)
コマンドの利用例がみれます。 man を読むより理解しやすいので、man を引く前にひいてみるのもいいかもしれません。 ただし、対応コマンドは少ないです。
ドキュメントの情報源はこのあたりにあります。 sed の置換以外の使い方をすぐ忘れるので sed のサンプルが欲しいですが、エントリーがありませんでした。
tealdeer / man は長すぎる
$ brew info tealdeer tealdeer: stable 1.1.0 Very fast implementation of tldr in Rust https://github.com/dbrgn/tealdeer ==> Analytics install: 17 (30 days), 105 (90 days), 105 (365 days) install_on_request: 17 (30 days), 105 (90 days), 105 (365 days) build_error: 0 (30 days)
正確には Rust で実装された tldr リーダー。
The TLDR pages are a community effort to simplify the beloved man pages with practical examples.
要するに「man はとても重要なドキュメントだけど、長すぎる」ということです。 実用的な例が明示されたマニュアルが読めます。
gitmoji / 絵文字の入ったコミット作成を支援
$ brew info gitmoji gitmoji: stable 1.9.2 (bottled) Emoji guide for your commit messages https://gitmoji.carloscuesta.me ==> Analytics install: 33 (30 days), 102 (90 days), 102 (365 days) install_on_request: 33 (30 days), 102 (90 days), 102 (365 days) build_error: 0 (30 days)
絵文字をつかったコミットメッセージを書くのを手伝ってくれるツールです。 サイトをみると絵文字にもたせている意味の一覧が載っています。
gitmoji | An emoji guide for your commit messages
使い方はgitmoji-cliを見てください。
試しにgitmoji -c
で commit してみるとよいでしょう。
commitizenの仲間(git cz
)かと思いましたが、そうでもないようです。
こちらにはcz-emojiがありますが、gitmoji に比べると使う絵文字が限定的になってます。
まとめ
まとめました。自己責任でお使いください。
brew install mdcat bat tj bcal latexdiff kakoune lf mkcert python-yq prettier topgrade fx eg-examples tealdeer gitmoji
brew でインストールできる新しいツールをみていると、自分では着想すらしそうにないものもあったりして、楽しいですね。2019 年にはどんな新しいツールが登場するのか楽しみです。