社内チャットの Skype + IRC という環境を撤廃して HipChat 一本にした話

こんにちは。久しぶりです。@sotarok です。 久しぶりにもほどがありますが、そしてエンジニアブログでこのネタというかんじですが、まあ良いとして、今日はそんな話をします。

弊社では、これまで

  • Skype (非エンジニア・全社的やりとり)
  • IRC (エンジニア)

でやっていたのですが、ココ最近これを HipChat に移行し、一本化しました。 HipChat は Confluence などで知られる Atlassian 社の運営するチャットツールです (2012年に買収したらしい)。以前は月額 $2/user から始められる小規模な人数の会社等ではコスト的にもバランス感の調度良いツールでしたが、最近無料になりましたので、ますます薦めやすくなりました。(ちなみに弊社では検索ログ保持のため $2 で使っております。

昨年末くらいからテスト導入を始め、1月末に本格移行、それから半年ほどが経過し、運用もこなれてきました。 実は2月くらいに「それから1ヶ月ほど経過し」と書き、4月頃に「それから3ヶ月ほど経過し」と書き、ずっと下書き状態だったブログですが、ようやく公開しますw

ということで、今日は、移行の際に検討した内容などを元にチャットツールとは本質的になにが満たされるべきかを考えたいと思います。

Skype と IRC、そしてそれらを併用することの問題点

そもそもなぜ Skype と IRC を使っていたのか、統合・移行しようと思ったかというと、エンジニア・非エンジニアどちらもそれなりに人数が増えてきて (それぞれ15人くらい…半々程度)、ツールの分断があることが、結構面倒になってきたところが主な理由です。 Skype、IRC にそれぞれ部屋が増えてきて、どこのツールのどこの部屋でしていた会話だかわからなくなることが多々ありました。

そもそも Skype と IRC を使っていたワケ

  • Skype には、
    • 1on1 チャットがある
    • グループ会話ができる
    • だいたいみんなアカウントを持っていて導入が簡単だった
    • また、過去の経緯で、クロコスは設立当初リモートで Skype 通話で会議したりしていた
  • IRC は開発者全員もともと使っており、
    • 色んな物を通知してくれて、
    • bot も簡単に導入できて、
    • 使い慣れていた

そんなこんなで創業当初から、開発IRC、それ以外Skype という構成でやっていました。

IRC、Skype それぞれの、問題

…という、導入しやすさがそもそもあったのは事実ですが、皆さんご存知の通り、この2ツールにはそれぞれ色々面倒な問題がありますよね?ありますよね?

  • Skype
    • P2P には限界がある
      • メッセージ送ったのに届かないことがある
      • 複数マシンでログインしっぱなしだと時々メッセージが消失する
      • モバイルアプリがダメすぎる
    • 個人アカウントの問題
    • なんかイケてない (えっ
  • IRC
    • 正直開発者以外には微妙
    • プロクシ立てたり
    • アカウント管理が曖昧 (社内アカウント管理とプロクシのために znc 使っていました)
    • 複数行とか … まあ細かいことはいいや

ま、それぞれ、挙げたらキリがないんですが。

チャットツールとしての本質的要件

そんなわけで、乗り換えを検討していたのですが、僕がどんな視点でツールを選んでいたかちょっと書き出してみます。 まず、チャットツールとしての本質的な要件は何か、を考えます。

本質的には、

  • 普段は非同期コミュニケーションとして流れる
    • 見たいときに見る
    • 返信できるときに返信する
    • 見て欲しいものは流しておく
  • 同期的コミュニケーションをとりたいときには同期的なコミュニケーションが取れる
    • 呼び出したい人を簡単なUIで呼び出すことができる
    • 呼び出された人はオンライン・オフラインにかかわらず気づくことができる

すごく抽象的になりますが、必達要件はこの2点で、これを実現するためにいかにバランスのよいUIや通知系統を兼ね揃えているか、が重要なポイントになります。

それをブレイクダウンした必須要件

以上の問題点、要件から出された必須要件としては、

  • 専用クライアントがあること (ブラウザベースではない)
    • ブラウザは他の仕事でも利用しタブも埋もれる、通知系統が未成熟、ブラウザ内におけるキーバインドの限界などからNG
    • 通知系統のOSとの統合が必須
  • OSの通知機能などと統合された通知ができ、人または任意のキーワードで通知ができること
    • Mac であれば Notification Center
    • Windows ではOS標準の機能ではないものの、たいてい右下からポコンと出てくるタイプのやつ
    • 非同期かつ、必要に応じて同期的コミュニケーションができることとして、呼び出しができることは必須
  • 不在時でもメッセージが到達し、通知ができ、ログがさかのぼれること
    • 到達されないのは論外
  • botによる通知ができること、各種ツール (社内ツール、GitHub、Jenkinsなど) との連携が可能なこと
    • 開発者が使うには絶対に必要
    • 各種ツールと統合できるには必須

の4点です。 これ以外の要件は “必須ではない” ものとし、しかしできればの要件としては以下のようなものをあげておきました。

  • 過去ログの検索
  • モバイルアプリの有無
  • 使い慣れたデータモデル (部屋を作成 → その中でその話題をする)

HipChat

上記要件を満たせるものとして検討したものを挙げます。評価軸は上記必達要件がどの程度満たせるか、です。(昨年末時点での検討なので、サービスの状況はこの半年で変わっているので今評価すると色々違うかもしれません。)

  • ChatWork
  • HipChat
  • Slack

ま、その他いくつかも検討しましたが、要件を満たすものとして HipChat を試してみることに決めました。

HipChat の良いところ

要件を満たしている、ということは最低条件として、特筆すべきところは、こんなかんじです。

  • 通知系統が優秀 (これが決め手)
    • 名前のコールでポップアップ通知 (Mac なら Dock ではねてくれる)
    • オフラインのときに名前通知が来るとメールでも通知くれる (さらに、前後の会話がメールに含まれるので文脈もわかりやすい)
  • iPhone アプリも使いやすかった (まあ、というか普通?)
  • 海外ですでにある程度名前が売れていたおかげで、各種ツールからの連携がしやすかった (GitHub の Hook 設定でもデフォルト準備されている、など)
  • bot も作りやすかった!

ま、ざっくり言うとこんなもんでしょうか。

導入試験〜導入

まず、実際の使い勝手を知らないと全社に展開しづらいので、主にリーダー陣の使うチャットで、ひと通りの機能や使い勝手を試す期間を2週間ほど置きました。 (ちなみに導入試験中は、リーダー陣は、Skype IRC HipChat の3つを使う必要があり、完全にカオスでした …)

リーダー陣を先にこういう試みに巻き込むことは、その後のメンバーへの展開で各リーダーが自分の言葉で語れるようになるので良い方法かと思います。

実際導入にあたっては、ドキュメントの整備と、説明会を開催しました。

全社でコミュニケーションツールが一本化された

ツールが分断していることは、組織に想像以上に大きな悪影響を与えます。

それは「コミュニケーションが分断される」ということです。

コミュニケーションが分断されて良いことは何も起こりません。ツールは所詮ツールなので、円滑なコミュニケーション促進には、ツールの統一だけで「十分」にはなりませんが「必要」である、とは思います。 「誰々に連絡をとりたいけどあの人XX使ってないから連絡とれないんですよね」によって損なわれるコミュニケーション機会は非常にもったいないんですよね。

導入前後では、エンジニア 非エンジニア のコミュニケーションが以前に比べて自然とできるようになったと感じます。

通知系統が一本化された

これは特に開発者向けのメリットですが、IRC で bot からの通知を受けたり、Skype で人から呼ばれたり、というわけのわからなさw がなくなり、常に HipChat からの通知が来るようになりました。

今は、GitHub のレビュー状態や、デプロイの情報を bot に通知させているので、基本的に HipChat の通知を気にすれば重要な情報は通知される、という状況を作っています。

たとえば、うちだと PR に +1 で出るとマージして良いのですが、こんなかんじで通知してくれます。

あとは、デプロイ時に、関係ある人 (そのデプロイに含まれる人) にも通知してくれたり

逆に HipChat のイケてないところ

ま、それもそれなりにあるわけで、一応書いておきます。

  • 任意の通知キーワードを設定できない (名前 here all のみ)
  • アバター表示がない、Nickname 表示がない (本名表示のみ)
  • 組織によっては、英語ツール、というのが気になることはあるかも
  • Windows Client がだいぶイケてない …。
    • リンクがクリッカブルじゃない (これが致命的すぎて一部の人は Chrome の切り出す機能を使ってアプリっぽく使ったりしている)
    • Mac 版ではあるのに (そして便利なのに) …
      • 名前クリックで mention とか できない
      • Show divider for unread message の設定がない

そういうわけで

ツールとして何を採用するかは、その組織やチームの状況、ステージによって違うと思うのですが、なんでもいいけど大部分の要望を満たせるツールの導入のために本質的要件を考えるのは非常に重要だよ、というお話でした。

今や当たり前のようにオンライン上でコミュニケーションを取りながら仕事をしていきますが、日々環境や組織の状況は移り変わるので、不便が積み重なる前にツールの整理をしておくクセはつけたいな、と思います。

これをお読みの皆様も何かのヒントにしてみてくださいね!

Let’s Happy Chatting!