テキストファイルの中身をクリップボードにコピーするGolang製CLIツールを作った

もう1年近く前の話だが、Golangでテキストファイルの中身をクリップボードにコピーするコマンドラインツールを作っていたのだった。

golip

最終コミットが2015年末になっている。。。
作りっぱなしのまま放置していたけど、せっかく作ったことだし個人的には常用しているツールでもあるので制作物の記録として残しておく。

どんなツール?

任意のマークダウンファイルをテンプレートとして保存しておき、コマンドラインからクリップボードにファイルの中身をコピーできるツール。
よく使う定型文なんかを保存しておいて、コマンド一発でペーストできる、みたいな使い方をする。

例えば

1
2
3
## ベースとなるテンプレートファイル
マークダウン形式で用意しておく

こんな感じで、マークダウン形式のファイルを用意しておき、

1
golip add [path/to/template-file.md]

用意したファイルへのパスを引数にして、コマンドを実行しておくと

1
golip copy template-file

こんなコマンドで、テンプレートファイルの中身が、クリップボードにコピーされる。
という、ごく簡単なツール。

なぜ作ったのか

仕事で、定型文のテンプレートををベースにPRやコードレビューを書くことになっているのだが、毎度雛形をコピー&ペーストするのが面倒だったので。
制作当時、Githubのテンプレート機能(.github/以下に定型文のテンプレートを置いておくと、定型文の雛形として使えるやつ)は無かったので、自作してみた。

機能としてはありふれているので、探せばこの辺の機能を満たして余りあるようなツールが見つかっただろうと思う。
もう一つの理由として、当時Golangに入門したばかりで、習熟のための小さなツールを作りたかったというのもあった。

結果として、非常に小さな実装(150行くらい)ながらも、GolangでCLIを作る時の基礎を体得できたのでよかった。
冒頭でも少し触れたが、Githubにテンプレート機能ができた今でも常用している。
Githubのテンプレートはレポジトリ毎に共通だったり、特定のアクションに対して特定のテンプレートが必ず適用さたりと、若干使いでがよくないと感じてしまうシーンがあるので…
情が移っているだけという話でもあるが。

まとめ

実際に自分が使えるような、小さなツールを作ってみて言語の習熟度を上げるというのは、学習方法として結構良かったように思う。
小さくとも、定形の簡易アプリ(普段仕事で書いているフロントエンド界隈ではTODOアプリを作ってみるというのが定番になっている)を作るより、否応なく自分が認識していなかったその言語のイディオムに触れざるを得ないので、より実践的に習熟度を上げれるような気がする。
もっとも、適切なサイズのツールのアイディアがそういつも思いつくとは限らないが。。。

よかったら使ってみて下さい。