- 公開日
Syntax HighlightされるcatコマンドをGoで作った
Goの習作としてSyntax Highlight可能なcat
コマンドを作った。
夏休みの工作で作ったやつ。Go 製の Syntax Highlight な cat コマンド. | toshimaru/nyan: Colored `cat` command. https://t.co/lu1CL4YdDi
— toshimaru (@toshimaru_e) August 14, 2019
モチベーション
全く同じコンセプトのツールとしてccatがあるのだが、デフォルトのハイライト色が黒背景のターミナルだと見づらいという問題があった。
更に強力なcat
コマンドとしてRust製のbatがあるのだが、これをccat
とともに併用していて配色がとても美しい感じに仕上がっていたので「よし、じゃあGoで配色がいい感じのやつ作ってみるか」と思い立って作成開始したやつ。
ちなみにccat
との実装の違いでいうと、ccat
はsynatax highlightにsourcegraph/syntaxhighlightを使っていて、今回作ったnyan
はalecthomas/chromaを使っている。
使ったGoライブラリ・サービスなど
Goライブラリ
- パッケージ管理: go modules
- CLIライブラリ: cobra
- Syntax Highlightライブラリ: chroma
- リリース管理: goreleaser
- homebrew tapへのリリースも自動でやってくれている: homebrew-nyan
- テストライブラリ: testify/assert
サービス
- CI: TravisCI
- Code Coverage: Code Climate
今後の展望
- 今回CIはTravisで動かしたけど先日リリースされたGitHub Actons(v2)が使えるようになったら乗り換えたい
- 行番号表示などの機能拡張も今後やっていきたい
Goでツール書いてみた感想
- パッケージ管理の機能が言語としてサポートされたのは嬉しい(Go 1.11〜)
- プログラムのコンパイル、実行、テストなどすべてが早いので開発体験がとても良い
- 普段はRubyを使うことが多いが、書き味の良さではGoはRubyに負けるかもだけど、Goは堅牢で高速なアプリケーションを書くのに良い
- Goコミュニティは日本でもとても活発だし、ライブラリのエコシステムも整っているのが素晴らしい