アクトインディ開発者ブログ

子供とお出かけ情報「いこーよ」を運営する、アクトインディ株式会社の開発者ブログです

EmacsからYammerに投稿する

はじめまして、こんにちは。oishiです。

昨年11月に第二新卒として入社しましたが、入社1週間ほどで社内トップレベルにデスクが散らかってるエンジニアとなりました。ありがとうございます。

さて、このように少し横着者な私なので、毎日のTODOである「Yammerへ日報の投稿」を忘れてしまうことが多々ありました。
※弊社は社内SNSとしてYammerを使っており、私は日報をYammer上に投稿しています。

なぜ忘れてしまうのかを考えてみたところ、以下の手順が非常に億劫だからではないかと考えました。
1.Yammerを開く
2.昨日の日報を探し当てる
3.それをフォーマットとしてコピーする
4.入力フォームにフォーカスする
5.入力フォームに昨日の日報貼り付ける
6.昨日の内容を一部削除する
7.今日の内容に書きなおす
8.投稿

こんなにやることが多くては、面倒くさがり屋さんなら忘れてしまうのも頷けますね。

しかし、幸いなことにYammerにはAPIが公開されているので、それを使ってEmacsから日報を投稿することを思いつきました。

以下手順です。
ちなみに環境はEmacs + Common Lisp + SLIME + Quicklispを前提としています。

1.自社のYammerにYammer Appを登録
登録の仕方は公式を見てください。
https://developer.yammer.com/create-an-application/

2.以下のコードを、各Common Lisp処理系の起動時に読み込ませる

(ql:quickload :drakma)
(defvar *yammer-token* "my-yammer-token")

(defun send-nippo (body)
  (drakma:http-request "https://www.yammer.com/api/v1/messages.json"
                       :method :post
                       :additional-headers '(("Authorization" . "my-authorization"))
                       :external-format-in :utf-8
                       :external-format-out :utf-8
                       :parameters `(("body" . ,body)
                                     ("group_id" . "000000"))))


3.Emacsyasnippetで以下のテンプレを作る

# -*- mode: snippet -*-
# name: nippo
# key: nippo
# binding: direct-keybinding
# --

(send-nippo
"
おつかれさまです。oishiです。
本日の日報を提出します。

【やったこと】
$1

【次回の予定】
$2

【所感】
$3
")$4


Common LispじゃなくてEmacs Lispで書いてもいいのですが、私のEmacsscratchバッファがデフォルトでLisp modeなので、切り替えるのが面倒なのと、SLIMEが常時立ち上がってるのでCommon Lispで書いてます。

以上が手順です。

これで冒頭の長い手順が以下のように短縮されました。
1.EmacsLisp-modeのバッファ上で”nippo”と打つ
2.TABを押す
3.日報を書く
4.評価

私はこれで日報を書く時間が3分→1分未満に短縮されましたし、面倒くささも感じないせいか日報を忘れることもなくなりました。

これでさらに面倒くさがり屋さんに磨きがかかった気がします。


ちなみにこのブログもEmacsから投稿したいです。