コマンドラインからの Gist 編集をかんたん便利にする

  • 17
    いいね
  • 0
    コメント

背景

Just a note で for me な内容のつもりだったが、思った以上に便利だったのでパブリックにした。

個人的にかんたんに複数端末間でメモを編集できるようにするというのはとても大事だと思っている。
しかし、意外とこれが難しくて Dropbox とか Google Drive みたいなものはあるのだけど、プログラマ的にはターミナルからいじれるというのは意外と重要なファクターだったりする。
これらの CLI (Command-line interface) クライアントもあったりするが、使いづらかったりインストールが面倒だったり、そもそもそのサービス自体使いたくなかったり、なかなかうまいことはいかない。

また、git に慣らされたエンジニアとしては、ちょっとのメモやコードに対してもかんたんなバージョン管理でいいからできたら嬉しかったりする。
じゃあ、Gist が一択といっていいくらいの候補なんだけど、「ターミナルからいじれるように」っていうのが思いの外煩わしい。

たぶん Gist の CLI クライアントは以下のものが有名だと思う。

https://github.com/defunkt/gist

Ruby 製でライブラリとしても使えるのが売りのようで、
インストール方法としては Mac 向けに brew がある (Good!)。

標準入力から食わせたり、引数にファイルを与えて Gist にアップロードできるようになっている (詳しくは README で)。
しかしちょっと使ってみると、不便に思う部分も多い。

  • 作成はまあかんたんだし直感的な感じするけど編集どうするんだ?
    • > You can update existing gists with -u: gist -u GIST_ID FILE_NAME
    • いや、そもそもこの id ブラウザから持ってくるならそのままブラウザで編集するやん...
  • ちょいちょい GIST_ID 要求してくる
  • 全体的に使い勝手がビミョウ...

なんだかいまいち convenience に欠ける...

ここで最初の思惑とはずれるけど、Vim plugin があることを思い出す。
というより使っていたので、これで代替できないのかを考えた。

まあ普通に便利。Vim の UI で操作できるから Vim に引きこもってる人にはいいかもしれない。
しかし、自分は Emacser のように初動がエディタということはなく、
ファイルを編集するときとか (vim . とか) にしか Vim を起動しないタイプなので、
Gist を編集するときも Vim よりもコマンドラインからいじりたかった。

Vim plugin のほうは Vim からいじるときのためにも使い続けるとも思う。

解決方法

いいものがないので自分好みのものをつくる。

https://github.com/b4b4r07/gist

peco/fzf が流行っている今、peco で自分の Gist 一覧から編集したいファイル選んで
そのまま Vim なりで編集して更新できたら便利じゃん?となって作り出した。
最近で言うと mattn/memo の Gist 版みたいなやつ (config のあたりはもろに参考にしている。というかこの config の仕組み最高便利...)。

ざっくり以下のことができる。

  • edit
  • new
  • delete

まあたぶんここらへんあれば普段の編集には困らない。
Gist API に基づいた他のサブコマンドも実装するかもしれないけれど、極力シンプルにしたい。
詳しい使い方は README にて。

ちなみに Go なのでインストールもかんたん。

まとめ

  • Gist なので共有・バージョン管理がかんたん
  • 既存のクライアントとは違って、peco を使ってよりシンプルに直感的に編集・更新ができる

本当はこれの Crowi 版を作りたい (この記事は何だったんだ)。

2017-05-11 追記

https://github.com/b4b4r07/crowi

できた。これを作るために Crowi に /_api/page.list というエンドポイントを追加して、Crowi API の Go client 書いた

ロジック自体は gist と同じなんだけどこっちのコードのほうが圧倒的にきれい