チーム間のコミュニケーション調査

はじめに

サービス分析課のチェリーです。

サービス分析課では分析基盤の構築とブックウォーカー社が運営する各サービスのデータ分析を行っています。そのため業務を円滑に進めるために各事業部とのコミュニケーションが重要となります。

そこでブックウォーカー社の各チームがどのようなコミュニケーション形態をとっているかネットワーク図を使い可視化してみました。

 

ネットワーク図

ネットワーク図

Slack APIを利用した投稿情報抽出

ブックウォーカー社は全社的にテレワークを採用しているので業務のやりとりは主にSlackで行っています。Slack APIを利用し各社員のメンション元とメンション先を集計します。

Events APIから取得できる情報は下記になります。

{
    "type": "app_mention",
    "user": "U061F7AUR",
    "text": "<@U0LAN0Z89> is it everything a river should be?",
    "ts": "1515449522.000016",
    "channel": "C123ABC456",
    "event_ts": "1515449522000016"
}

引用元: app_mention event | Slack

 

メンション元はuserを使えますが、メンション先は本文から抜き出す必要があります。
メンション先はかならずしも本文冒頭にあるわけではなく、文中や()内に書かれていたりするので正規表現で抽出します。例えばPythonの標準ライブラリを使うなら

re.findall('<@(.*)>', post_ts['text'])

のようになります。

参照:re --- 正規表現操作 — Python 3.12.2 ドキュメント

 

続いて社員情報はuser.infoから取得します。

 

{
    "ok": true,
    "user": {
        "id": "W012A3CDE",
        "team_id": "T012AB3C4",
        "name": "spengler",
        "deleted": false,
        "color": "9f69e7",
        "real_name": "Egon Spengler",
        "tz": "America/Los_Angeles",
        "tz_label": "Pacific Daylight Time",
        "tz_offset": -25200,
        "profile": {
            "avatar_hash": "ge3b51ca72de",
            "status_text": "Print is dead",
            "status_emoji": ":books:",
            "real_name": "Egon Spengler",
            "display_name": "spengler",
            "real_name_normalized": "Egon Spengler",
            "display_name_normalized": "spengler",
            "email": "spengler@ghostbusters.example.com",
            "image_original": "https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg",
            "image_24": "https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg",
            "image_32": "https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg",
            "image_48": "https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg",
            "image_72": "https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg",
            "image_192": "https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg",
            "image_512": "https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg",
            "team": "T012AB3C4"
        },
        "is_admin": true,
        "is_owner": false,
        "is_primary_owner": false,
        "is_restricted": false,
        "is_ultra_restricted": false,
        "is_bot": false,
        "updated": 1502138686,
        "is_app_user": false,
        "has_2fa": false
    }
}

引用元:users.info method | Slack

チーム間のネットワーク図を作りたいので各従業員が所属する部課情報が欲しいのですがslack上には存在しません😢

そこで社内で管理している従業員と所属部署のドキュメントを使うことにしました。

SlackのユーザーIDと所属部署を紐づけたいのですが、名前でJOINすると表記ゆれで上手くいきません。ブックウォーカー社ではハンドルネームで活動されている社員もいるのです。そこでemailで紐づけることにしました。emailはuser情報と取得権限が異なるのでやや注意が必要です。

参考:users.lookupByEmail method | Slack

 

こうして各チーム間メンションを集計できるようになりました。

Rによるネットワーク図の作成とネットワークの意味

ネットワーク図の作成にはRパッケージのvisNetworkを利用します。

datastorm-open.github.io

 

メンション情報とユーザー情報を組み合わせることで、チーム間のネットワーク図が生成されます。

チーム間のネットワーク図

チーム間のネットワーク図

実際には各ノードにチーム名が入っていますが公開情報ではないので空白にしています。

出力したネットワーク図を読み解く前にネットワーク図の一般的なとらえ方を紹介します。

参考:『ピープルアナリティクスで人事戦略が変わる』
DIAMOND ハーバード・ビジネス・レビュー論文
ポール・レオナルディ(著) ノシャー・コントラクター(著)

bookwalker.jp

 

発想力

優れたアイデアや解決策はあるチームの情報と別のチームの情報を統合して生まれることがしばしばあります。下記のネットワークではオレンジノードよりも紫ノードの方が複数のノード群(チームやより大規模な事業部)と結びついています。そのため紫ノードは情報が集まりやすく、より問題解決力が高い可能性があります。

 

影響力

下記の図では紫ノードはオレンジノードよりもコネクション数は少ないです。しかし紫ノードは大きなクラスタに対してのつながりが強く、より影響力が大きいと考えられます。

効率性

下記の図では紫ノードは密につながっており、共同作業に適していると考えられます。また各メンバー(あるいはチーム)がチーム外のノードと繋がっているため外部範囲が広く有益なリソースを獲得しやすい状況にあると言えます。

 

イノベーション

下記の図では紫ノードはあまり密接につながっていません。このことは各メンバー(チーム)が異なる見解を持ち、より生産的な議論が期待できることを示唆します。効率性とイノベーションはトレードオフと捉えることもできます。

一方、効率性組織とイノベーション組織の共通点としてどちらも外部ノードとのつながりが強く、有益な情報を得やすい状態にあることも重要です。

サイロ

どのクラスタも内部では密接につながっていますが、他部門と繋がっている個人ないしチームが1つか2つしかありません。下の例では右上の情報が右下に伝達されるまで複数のクラスタを経由しなければならず、つながりも弱いため必要な情報が行き届くか不明といえます。

脆弱性

脆弱性は社外とのつながりが特定の個人ないしチームに限られている状態で発生し、リスクを抱えます。もし接点となる人物がいなくなれば社外との関係が絶たれる可能性もあります。

 

社内コミュニケーションの現状と目指す方向

以上をふまえ、あらためてブックウォーカー社の社内ネットワーク図を見ていきます。

 

 

矢印が太いほどチーム間のメンション数が多いことを表します。

色がついた大きな丸枠が各チームが所属する部署になります。

こうしてみると各部署ごとにSlackコミュニケーションに違いがあることがわかります。

青枠の事業部はSlackによるテキストコミュニケーションが密であり前述の事例に従えばより効率的なコミュニケーションが行われている可能性が高いといえます。

一方で矢印が細いケースではテキストコミュニケーションは比較的少ないものの、活発にオンラインミーティングを行っていることがわかりました。
部署ごとにコミュニケーション方法が異なる興味深い結果となりました。

またコミュニケーション頻度に差があるものの、どの部署も他部署とのつながりが複数あり、ハブとなるノード(チーム)の存在も見て取れます。

しかし赤枠と緑枠は紫枠に直接つながっていないため、部門間によっては情報共有の度合いが弱い傾向があると考えらます。

 

今後のサービス分析課の役割としてはハブになるだけでなく、部署間のより直接的なコミュニケーションを促す必要があります。

最後に

ネットワーク図で可視化することで社内コミュニケーションの全体像がわかりやすくなりました。またチーム間だけでなく、異なる部署間でも情報共有が行われている状態がわかりました。

サービス分析課では社内の情報共有がより活発に行われ、各サービス運営に役立てるように努めています。そんなサービス分析課で働いてみたいという方はぜひ応募をご検討ください。

 

www.bookwalker.co.jp

 

が、募集項目にサービス分析課がありません😇

応募や面接の際に「サービス分析に興味がある」とお伝えください。

 

追記:2024-06-21

サービス分析課の求人が増えました! 株式会社ブックウォーカーはデータエンジニアを募集しています。

herp.careers