Chatwork Creator's Note

ビジネスチャット「チャットワーク」のエンジニアとデザイナーのブログです。

ビジネスチャット「Chatwork」のエンジニアとデザイナーのブログです。

読者になる

2018年にbrew installできるようになったツールをふりかえる

こんにちは。サーバサイド開発部の火村(@eielh)です。 本題とはまったく関係ありませんが、最近はJuliaで遊んでいます。

さて、年の暮れといえば、ふりかえりです。来年、躍進するためにもふりかえりはとても重要です。

私はbrew updateした際に表示される new formula の項目を追うのを日課にしています。 気になったツールはTwitterや社内チャットで紹介しています。 というわけで、今年 brew installできるようになったコマンドをふりかえっていきます。 といっても、多すぎるので、日常で使えそうなコマンドに絞っています。

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 のリポジトリを確認ください。

github.com

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 ですが、長いファイルだとページャーも起動してくれます。

github.com

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"
}

github.com

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

github.com

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 を見るのがおすすめです。

github.com

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 なあたりが直感的で好きです。

godoc.org

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 トレンドでも見た気がするので、それなりにダウンロードされてますね。

github.com

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 でインストールしておくのもよいと思いました。

prettier.io

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 あたりも自動でアップグレードしてくれます。

github.com

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 を見てみるのがおすすめです。

github.com

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 のサンプルが欲しいですが、エントリーがありませんでした。

github.com

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.

https://tldr.sh/

要するに「man はとても重要なドキュメントだけど、長すぎる」ということです。 実用的な例が明示されたマニュアルが読めます。

github.com

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 に比べると使う絵文字が限定的になってます。

gitmoji.carloscuesta.me

まとめ

まとめました。自己責任でお使いください。

brew install mdcat bat tj bcal latexdiff kakoune lf mkcert python-yq prettier topgrade fx eg-examples tealdeer gitmoji

brew でインストールできる新しいツールをみていると、自分では着想すらしそうにないものもあったりして、楽しいですね。2019 年にはどんな新しいツールが登場するのか楽しみです。