2014-12-02

ChatWork for Emacs リリース

chatwork.el —— いわゆる ChatWork for Emacs —— を作った。ソースは github にある。今、サポートしている機能は、ルームを選択してメッセージを送信するだけ。

MELPA に登録したので、Emacs の package システムからインストールできる。

背景

過去記事にも書いたけど、2014 年 4 月、ChatWork 株式会社に入社した。同社の主力サービス チャットワーク は会社向けのチャット・サービス (もちろん、個人での利用しても問題ない)。チャット機能にタスク管理をひもづけているのが特徴。一人 5 GB のファイル・ストレージ機能やビデオ通話機能といった機能がある。

IT 企業で働く楽しみの一つに「ドッグフードを食べる」ことが挙げられる。これは、自社サービスを自分たち自身で日常的に使うことを指す。一つ反例を挙げるなら、ぼくはケンウッドという音響メーカーに入社したけれど、就業中に音楽を聴きながら作業することはできなかったし、ケンウッドのアンプやスピーカーを買って使うこともなかった。一方、ChatWork 社では、自社サービス・チャットワークを使って日常的に業務を行なっている。

さて、ぼくは Emacs エディター愛用者。当ブログのタグ・クラウドを見れば、5 番目に多く書いているのが Emacs 関連の記事なことが分かる。このブログ記事も Emacs で書いているし、多くのプログラムを Emacs でコーディングしている。昔は Android のソースコードも Emacs で書いていた。流石に iOS アプリは XCode で書いているけれども... ともかく Emacs から離れられない。

ぼくが会社でチャットワークを使う時は、Emacs でテキストを書いてから、それをチャットワークの入力フォームへコピーしている。なんで、Emacs から直接チャットワークにメッセージを送れないんだろう?

誰もやらないなら、自分でやるしかないじゃない!!

そんなわけで、週末を使って chatwork.el を書いた。ChatWork 社内で ChatWork Advent Calendar 2014 をやることが決まったので、そのネタにもなると思った... りはしないよ!?

Advent Calendar の記事では少し優しめに chatwork.el の説明を書いた。YouTube に 40 秒のデモ・ムービーもアップして、Advent Calendar 記事の中に貼り付けたりもした。初めて ChatWork という名前を聞いた方は、上記記事も併せて読んで頂ければ嬉しい。

インストールと使い方

インストール

インストールの手順を書いておく

  1. チャットワーク・アカウントを作成する
  2. ChatWork API トークンを発行する
  3. 発行した API トークンをコピーする
  4. Emacs の package システムで chatwork パッケージをインストールする
  5. .emacs.d/init.el に以下の一行を追加する
(setq chatwork-token "YOUR CHATWORK API TOKEN")

準備完了。

使い方

用意しているコマンドは 2 つだけ。

M-x chatwork-send-message はミニバッファーからメッセージを入力後、送信先たるルームを選択する。

M-x chatwork-send-message-in-region は予めリージョンで囲んだテキストをメッセージとしてルームに送信する。ルームの選択方法は chatwork-send-message と同じ。

あとがき

久しぶりに EmacsLisp でパッケージを作った。url.el で外部プログラムを呼び出さず HTTP メソッドを叩いたり、レスポンスの JSON コードを json.el を使って解析した。ネット系の組み込み EmacsLisp パッケージを使うのは初めてで、色々とまどった。

MELPA に自分で登録するのも今回初めて自分でやってみた (clmemoblgrep が MELPA に入っているけど、あれは他の方がやって下さった (感謝!))。

url.el, json.el, MELPA の登録については、後日記事を書きたい。自分の得た知識を定着させるために。

chatwork.el については、やりたいことが山積している。メッセージを作成するメジャー・モードを作りたい。タスクの登録を行ないたい。ファイルの送信をサポートしたい。少しずつ進化させていくつもりなので、温かい目で見守って頂ければありがたい。

No comments:

Post a Comment