SMARTCAMP Engineer Blog

スマートキャンプ株式会社(SMARTCAMP Co., Ltd.)のエンジニアブログです。業務で取り入れた新しい技術や試行錯誤を知見として共有していきます。

ZoomやDiscordではなくGatherをリモートワークのコミュニケーションツールに選んだ理由

こんにちは!スマートキャンプ ソフトウェアエンジニアの中川です。 リモートワーク全盛の昨今ですが、みなさんはチームのコミュニケーションをどうされていますか?

弊社のBOXIL開発チームはこのたびメインのコミュニケーションツールをDiscordからGatherに移しましたので、今回の記事ではそのなかで得られた知見やコツなどをご紹介できればと思います!

前提・リモートワークにおけるコミュニケーションの二大方針について

いきなり細かい話で恐縮ですが、そもそもリモートワークにおけるコミュニケーションの方針は大きく2つに分かれると思っています。

1つは同期的なコミュニケーションをメインとするやり方で、これはZoomやDiscordなどのWeb通話ツールを(ほぼ)常時つなぎっぱなしにして、お互いの"そこにいる感"を重視する方法です。
もちろんSlackのような非同期的なコミュニケーションを一切取らないわけではないですが、要件が同じ部屋につないでいる人同士で完結する場合はその場で話してしまうので口頭でのやり取りがメインになります。
同期的なコミュニケーションの"最強"は当然レイテンシの低いオフラインの直接対話なので、ツール選定の焦点はオフィスにおけるコミュニケーションをどれだけ再現できるか、というところになります。
私の観測範囲ではスタートアップなどとにかくリーンに仕事を進めていく必要のあるチームであったり、メンバーのオンボーディングを手厚く行っている組織においてこの方針が採用される傾向があります。
弊開発チームでもこちらの方針で日々仕事をしています。

対してもう一方の方針は非同期的なコミュニケーションをメインとするやり方です。
これはMTGなどの同期的なコミュニケーションを極力廃して、Slackやその他メッセージツールを使用した"非"同期的なやり取りで置き換える方法です。メンバーが各自の作業に集中できる環境を作り上げることを目的とします。
また、フルフレックスや時差によって勤務時間を合わせることが難しいチームでは必然的にこちらの方針を取ることが多いかと思います。
弊社でもBALES CLOUD開発チームがこの方針で仕事をしていた時期があります。

tech.smartcamp.co.jp

Discordによる同期的なコミュニケーションで起きた課題

さて、見出しの通りですが、弊社がリモートワークに全面移行してから開発チームは同期的なコミュニケーションをメインとしてDiscordをそのツールに据えていました。
これはDiscord上にボイスチャンネルを作り、そこを定常的なたまり場として定めて特に用事が無いときはこのチャンネルに入っておくといった運用です。

f:id:smartcamp:20211007104923p:plain
実際のDiscordサーバーの様子

以前は開発チームのメンバーが4,5人だったこともあり、この運用でも特に問題は起きていなかったのですが、直近で続々と新規メンバーが加入したことによって徐々に以下のような不満の声があがってくる ようになりました。

  • マイクをミュートにして作業していても少なくない人数が通話に入っているのでなんとなく緊張する
  • 特定の人に話しかけたいときに全員の耳を専有するので気が引ける
  • オフィス(≒オフライン)だと距離に応じて他人同士の会話の声量が逓減するので心地いい"そこにいる感"があるが、Discordで同じ通話部屋に入っていると全員の声がハッキリと聞こえてしまうので違う体験になっている

私個人の意見としても、10人規模の定常的な通話部屋というのはもはや会議的な属性を孕んできてしまう気がしていました。
具体的には、「問いかけに対して誰かが喋るかもしれないから一旦待つ」であったり、「会話が発生しても3人ぐらいが話していて他の人はミュート(内職)している」ようなことが発生していて、大きな問題は無いけど気持ちよいコミュニケーションができているかと言われると...のような状態でした。

そこで、いくつかの点を解決できそうな期待感から、以前からチーム内で試してみたいと話していたGatherを試験的に使ってみることに決めました。

Gatherとは

GatherはGather Presence社が提供しているWebサービスで、ドット絵RPG風のマップと一通りのWeb通話システムを組み合わせたものです。

www.gather.town

f:id:smartcamp:20211007105425p:plain
Gatherでの日常的な業務風景

それぞれのユーザーは登録時に作成したアバターで同一マップ上を歩き回ることができ、マップ自体もカスタマイズが可能です。
また、通話はマップ上の距離が近い者同士で自動的につながる仕組みになっていて、マップ上の距離に応じて相手側の声量が逓減されていく仕様になっています。
(Private Spaceという範囲を設定することで、その範囲内の声量は逓減されないようにする仕組みも存在するので、会議室などはそれを活用する形になります)

料金プランに関しては無料からはじめることができ、ユーザー一人あたりの利用する時間に対して一定の金額を支払うことで参加人数の上限解放などのオプションが利用できます。

Gather Pricing

無料枠でも25人までは参加できるので、弊チームは現在無料プランで運用しています。

公式サイトが分かりやすいので説明はこのぐらいにして、ここからはGatherを導入したことによって起きた効果についてお話します。

Gatherによって起きたポジティブな効果

大まかに分けて3点のポジティブな効果を得られました。

カジュアルな雑談の創出

1点目は業務中にカジュアルな雑談が頻繁に生まれるようになったことです。
Discordでは一箇所の通話部屋にみんなが参加しておく方式でしたが、Gatherでは特にそういったルールは設けず、マップ上の好きな場所で過ごす運用にしています。
集中したい人はそういったエリア(後述します)に行き、逆に話しかけられてもOKなタイミングでは広場的なエリアに顔を出したりすることで、現状のお気持ちを居場所によってなんとなく表現できます。

話しかけたい側にとっても、Discordにおける部屋にいるorいないといった二値よりも詳細なステータスをマップ上の居場所から汲み取ることができ、それを参考に話しかけるか否かを考えることができます。

これは「呼び出すほどでもないけどちょっと話したいな...」というときにその人の元へ行き声をかけるというオフラインの体験をかなり再現しているなと感じました。

また、そうやって発生した雑談から、さらにその様子を見ていた他のメンバーが会話に加わってきて突如ワイワイが発生する、といったことも多く、こういった偶発的なコミュニケーションを発生させられるツールはなかなか貴重なのではないかという所感です。

f:id:smartcamp:20211007110220p:plain
突発的なワイワイが発生した様子

ほどよいプライベート空間の確保

距離に応じて声量が小さくなる仕組みは先にあげたとおりですが、Gatherには他にもプライベート空間を確保できる仕組みがいくつかあります。

まずはPrivate Area機能です。
GatherのマップはMapmakerという機能でユーザーが自由にカスタマイズできるようになっており、椅子や机などのオブジェクトを置いたり、壁やタイルなどを配置することなどができます。
また、マスそのものに対して効果を付与できるTile Effectsという機能も備えており、Private Areaはそのひとつとして範囲を設定することで通話圏をその範囲に制限できます。

f:id:smartcamp:20211007143317p:plain
Tile Effectsは他にも便利な効果を備えたものが数種類用意されている

このPrivate Area機能を使って、ある程度広い範囲は会議室、デスクを模した2x3マスほどの空間は集中スペース、1x1の空間はフォンブースといった区分けを実現でき、これが各人のプライベート空間の棲み分けに大きく寄与しました。

また、Gatherはシチュエーションによってマイクやカメラが自動的にミュートになる仕組みが実装されており、こういった常時接続系ツールならではの問題に関しても一歩先ん出ている印象です。

たとえば、誰とも通話していない状態でウィンドウのフォーカスがGatherから外れると、その瞬間マイクがミュートされカメラがオフにされます。
勝手にオフされるのかと当初は困惑しましたが、よくよく考えると誰とも繋がっていないのであればマイクやカメラがオンになっている必要はなく、むしろこういったツールはオンにしていることを忘れて事故ってしまいがちなので今では理に適っていると思うようになりました。もちろんこの状態でGatherを再度アクティブにすれば自動的にマイクやカメラはオンに戻ります。

また、同じようにウィンドウのフォーカスをGatherから外して作業していると、他ユーザーはそのユーザーに対して呼び出しベルが利用できるようになります。
呼び出された側にメロディが鳴る単純な仕組みですが、呼び出す側は「あの、いますか・・・。いないか」のような少し恥ずかしい体験をしなくて済みますし、呼び出される側にしても作業に集中していたら突然人間に声をかけられておののく体験が少なくなるので意外と効能が大きかったです。

f:id:smartcamp:20211007143133p:plain
本来はWebカメラが投影されるスペースが呼び出しベルに変化する

オフィスの視覚的な再現

これは完全に個人の功績なのですが、あるメンバーが前述のMapmaker機能を使って弊社のオフィスを再現したマップを作成してくれました。
再現度が高いのはそうなのですが、それでいてPrivate AreaなどGatherの機能もふんだんに使われており、非常に完成度の高いマップになっています。

リモートワーク移行前からいるメンバーは「そういえばオフィスってこんな感じだったなー」と懐かしんだり、逆に移行後に入社したメンバーのなかにはむしろこれでオフィスのレイアウトを覚えたメンバーもいて、思い思いに楽しむことができています。

全体

f:id:smartcamp:20211007110601p:plain

執務室エリア

f:id:smartcamp:20211007110656p:plain

キャンプスペース(広間的なエリアやなんとなく集まる場)

f:id:smartcamp:20211007142740p:plain

会議室エリア

f:id:smartcamp:20211007142549p:plain

1on1エリア

※これはGatherに用意されているデフォルトマップです f:id:smartcamp:20211007142840p:plain

Gatherに足りてないこと・期待したいこと

次にいくつか2021/10時点のGatherでは難しいこと・できないことを挙げます。
これらのデメリットを差し置いてもは弊チームとしては継続利用する判断をしていますが、もしかするとマストでできて欲しいよねという判断になるチームもあるかもしれません。

提供されていない機能は補完できない

発端としてはタイマー機能がない、ランダマイザー(メンバーをいくつかのチームにランダムで分ける機能)がないといった不満からでした。
Discordではサードパーティのbotが利用できるので、こういったなにかが足りない場合は都度botを導入することで解決してきました。
翻ってGatherにおいてはそういったサードパーティ的なアドオンを載せることはできず、公開されているWeb APIもオブジェクトの配置系に終始しており、ラインナップに乏しいです。

Gather HTTP API

それぞれの不満は他のツールで代替できる小さいものですが、これらをGather上で解決したいとなったときにその手段がないことはエンジニアにとってフラストレーションが溜まる一因になるかもしれません。

音声に関する機能・品質があまり高くない

これはDiscordやZoomと比べて、といった話なのでNice to have的なニュアンスなのですが、どうしても一線級のWeb通話ツールと比べてしまうと見劣りする部分がありました。

具体的には以下のようなことです。

  • 受け手側の音量調整手段がない
    • Discordでは他の参加者の音量を自由に調整出来る機能が実装されており、たとえばAさんの音量が小さいときはもっと大きく設定したり、突然の来客対応でミュートを忘れたBさんをミュートしたりすることができました
  • 発話側のノイズキャンセリングがないので環境音が乗ってしまう
    • DiscordやZoomでは備え付けで出来ていた部分だったので
    • これに関してはたとえばKrispのアカウントを全員に付与することで解決出来る部分だとは思っています

まとめ

今回の記事ではなぜGatherに移行したか、また弊チームがGatherをどういう使い方をしているか紹介しました。
私見ですが、リモートワークにおける同期的なコミュニケーションでは今後鉄板になる可能性のあるツールだと感じたので、興味のある方はぜひ一度使ってみてください。
それではまた!

宣伝

スマートキャンプ株式会社では現在Webアプリケーションエンジニアを積極採用中です!
興味を持たれた方は以下のリンクをご覧ください!

smartcamp.co.jp