ハッピーバレンタイン! さぞかし素敵なバレンタインをお過ごしの事と思います。
アメーバピグでサーバサイドを担当している下山です。

突然ですが、エンジニアの9割が仕事する上で意識している事は、何だかわかりますでしょうか。

そう、効率化ですね。私も自他共に認める効率厨で、日頃からサプリメントや食で、集中力を管理したり、ポモドーロを試したり、秘伝のタレを仕込んだりしています。

さて今回は、私のような効率厨の皆様へ朗報です。業務外で定例MTGの自動化(≒効率化)を図り、その成果をOSSとして公開しました。

背景

私のチームでは、毎週1回30分、定例MTGというものを開き、会議室にチームメンバーが集まり、毎回決まった議題について話し合っていました。それに伴って、以下のコストが発生していました。

  • 定例MTGの準備にかかるコスト(会議室、時間など)
  • 定例MTG中に掛かるのコスト(準備時間など)
  • 会議室への移動で掛かるコスト(移動時間、体力、精神力など)

など、大袈裟かもしれませんが、よくよく考えてみると、当然発生するコストです。今まで人類が目を背けてきたコストと言っても過言ではありません。時間だけでなく、肉体的、精神的な消耗は計り知れません。

定例MTGの自動化にあたって、上記のようなコストを削減しつつ、無駄な消耗を抑え、業務のパフォーマンスを上げることを目的としました。

アプローチ

私の部署ではコミュニケーションにSlackを使っているため、SlackBotによるMTGの自動化を図りました。また、使い回しができるよう、ライブラリ化しました。

ライブラリ名は、emilia-bot(以下Emilia)です。この名前にすると、なんとなくモチベーションが上がりそう、という理由でつけました。意味はなく、なんとなくです。

Emiliaには、以下のような特徴があり、Slack上でのMTGを快適にすることを重視して開発しています。

  • 出欠確認による出席者の管理
  • 対話形式による進行
  • 出席者の一定数のリアクションによる進行

以下の図は、EmiliaによるMTGのフローです。

emilia1

文言等は自由に変更でき、SlackAPIの設定で、名前や画像なども変更できます。

以下の図は、実際に動作させた図です。

emilia2

議題の管理

Emiliaは、議題1つをmoduleという単位で管理していて、JavaScriptのObjectで表現します。処理して欲しい順に並び替えたmoduleの配列を渡すことで、その順通りに議題を進めることができます。以下はmoduleの例です。

{
  agenda: '対応当番',
  execute: function (success, failure) {
    // apiを叩いたり...
    let name = '@shimotai5'
    if (!name) {
      // エラーメッセージの投稿
      // モジュールのエラーになるだけで会議は終了しない
      failure('名前の取得に失敗しました.')
    }
    // 議題の投稿
    // 引数はSlackAPIのattachmentsに対応している
    success(
      {
        text: '今週の対応当番は, ' + name + 'です.'
      }
    )
  }
}

1つのmoduleは、agendaとexecute関数で構成されます。agendaは議題で、execute関数は、読み込まれるときに、実行される関数です。その引数のsuccess、failure関数は、Promiseのresolve、rejectと対応していて、Emiliaでmoduleを読み込み際に, Promise化されます。

execute関数は、successかfailureさえ呼べば、自由に書けるため、どのような議題でも柔軟に対応できます。

細かい仕様や設定方法などは、EmiliaのRepositoryをご覧ください。もちろん、ご意見やご感想、PR、issueも大歓迎です。お待ちしております!

※仕様は記事執筆当時のものになります。

運用してみて

結論から言うと、移動含め30分ほどかかっていた定例を、15分ほどに短縮し、肉体的、精神的消耗から解放されました。

メリット

  • 時間短縮
  • 場所を選ばない
  • 会話ログがそのまま議事録になる

デメリット

  • Emiliaの設定
  • 発言のタイミングがつかみにくい
  • 集中力が分散する

初期設定に時間がかかったり、SlackでのMTGに慣れが必要なものの、時間を短縮できるだけでなく、在宅作業中や取り込み中に、MTGに参加したり、内容をリアルタイムで追うことができるメリットは大きいです。

チームメンバーからは、以下の感想をもらえました。内容の脚色はしていません。

  • 集中できました
  • おーかなり時間が短縮されていいですね!
  • 定例という退屈なMTGにおいて空間的・時間的制約からときはなたれました

あなたもEmiliaで、肉体的、精神的消耗から解放されませんか??? 空間的、時間的制約からときはなたれませんか???

おわりに

というわけで、定期開催されるMTGは、Emiliaによって自動化することができ、そのメリットを受けることができます。この記事を読んだ皆様も、導入を検討してみてはいかがでしょうか。重ねてになりますが、Emiliaへのご意見やご感想、PR、issueをお待ちしております。

最後に、自らを効率厨と言いつつ、らしからぬ記事を書いてしまった事をお詫び申し上げます。

最後まで、お読みいただき、ありがとうございました。
引き続き、素敵なバレンタインデーをお過ごしください。

2015年入社のサーバサイドエンジニアです。現在はアメーバピグを担当しています。マイブームはサプリ等を用いて作業効率を上げることです。