そんな今日この頃でして、、、

コード書いたり映画みたり。努力は苦手だから「楽しいこと」を探していきたい。

Chatworkにコマンドラインから投稿するchwkコマンド作った

IT界隈じゃもはやSlackがデファクトスタンダードになりつつあるけど、 残念ながらうちの会社が使っているのはChatwork。

多機能なのは良いんだけどMarkdownには対応してないし、 APIはいつまで経ってもプレビュー版のままだし、 そのAPIもイマイチ機能が足りない感じ。

developer.chatwork.com

なんというか全体的にエンジニアフレンドリーじゃない感じがするんだけれど、 これって日本の企業では決済権を握ってるのが事務方が多いことに最適化した結果なんだろうなーなんて 競合Slackとの差異に思いを馳せたりする。


そんな愚痴はさておき、今回はGo言語の勉強がてら作ってみたchwkコマンドについての紹介。

github.com


導入

githubのリリースページからzipで環境にあったのをダウンロード。

Releases · blue1st/chwk · GitHub

解凍して~/binにでも収め、実行権限を付ける。

$ wget https://github.com/blue1st/chwk/releases/download/v_0.1.1/chwk_linux_x86_64.zip -O chwk.zip
$ unzip chwk.zip
$ mv chwk ~/bin/
$ chmod +x ~/bin/chwk


環境変数CHATWORK_TOKENにWebUIから発行したトークンをセットすれば準備完了。

$ export CHATWORK_TOKEN=xxxxxxxxxx


使い方

引数からメッセージを記述すると、デフォルトでは自身のマイチャットに投稿。

$ chwk MESSAGE


オプションとしてrもしくはroomとして投稿するチャンネルのroom_id(URLの末尾のrid~の数字部分)を与えると、 該当のチャンネルに投稿。

また、tもしくはtoオプションで宛先を設定することができる。

$ chwk --room ROOM_ID --to ACCOUNT_ID MESSAGE


メッセージは標準入力からも取ることができる。

$ echo MESSAGE | chwk


単に投稿するだけの単純なコマンドではあるが、 ちょっとした思いつきをコマンドライン上からサクッとマイチャットにメモ書きしたり、 コマンドの実行結果をそのままチャットに流したり、 あるいは実行時間の長いバッチの処理完了を通知したりと、 何かと使い所はあるんじゃないかと思う。


ほんとはボットからチャット上にスクショ貼ったりしたかったんだけど、 APIにファイルアップロード機能は用意されてないし、 それじゃあとCasperJSで色々試してみたけどそれも厳しそう・・・


Go言語は型まわりでちょっと悩まされることもあるし、 エラーハンドリングはまだ慣れないけど、 それでもLLばっかり触ってた身には新鮮で面白いですな。

シングルバイナリだからこの手の思いつきツールもサクッと配布できるのが良い。

積極的に使う機会を作っていきたい所存。

みんなのGo言語【現場で使える実践テクニック】

みんなのGo言語【現場で使える実践テクニック】