Notionとtandemで作る相談しやすいリモートワーク開発のすすめ

この記事は [Wano Group Advent Calendar 2022](https://qiita.com/advent-calendar/2022/wano-group)の25日目の記事となります。
4日目に[Product-Led Growthまとめ](https://ktat.hatenadiary.jp/entry/2022/12/04/171031)、24日目に([STREAM DECK互換の仮想デバイスの紹介](https://qiita.com/ktat/items/74ae84dd385565dd2557))も書いているので、そちらもどうぞ。
また、グループ会社の[EDOCODE](https://www.edocode.co.jp/)(メインで仕事してます)の[Advent Calendar](https://adventar.org/calendars/7645) もありますので、よろしければそちらもどうぞ。

## この記事に書いていること

この記事では僕がメインで仕事をしているEDOCODEでのリモートワークでの開発で、**どうやって相談しやすい(=問題が放置されない)ようにしているか**に関して書いています。

EDOCODEでは新型コロナ流行の割と最初の方からリモートワークを始めています。最初からうまく行っていたわけではありませんが、今は普段の開発であまり問題を感じていません。
リモートワークでの開発では誰が困っているかとかわからないとか、気軽に話しかけにくいとかの課題がよくありますが、これに関してはあまり問題ない状態になっていると思っています。

**相談しやすいリモートワークでの開発をどうやって実現しているのか**について紹介したいと思います。

## 課題と解決の方針

よく言われる課題として、以下の2つがあるかなと思います。

1. 誰かが何かに困っていることがわからない
1. ちょっとした質問や相談をしたいけど、相手の状態がわからない(離席中、ランチ中、MTG中...)

### 1. 誰かが何かに困っていることがわからない

正直なところ、これは出社したら解決する問題でも無いと思っています。
ミーティング中でしたら、他のメンバーが何かに困っていても気づけませんし、席が離れていても気付きにくいです。
困っている相手が気軽に話しかけてくれれば良いですが、そうでなければ、問題を抱え続けているかも知れません。

**相談しやすい仕組みや問題に気付ける仕組みが必要**ですね。

### 2. ちょっとした質問や相談をしたいけど、相手の状態がわからない

これは、出社していれば、わかりやすいかも知れません。離席中とかはひと目でわかりますからね。
席にいれば、気軽に話しかけることができます。
ただ、ミーティング中とかだと、いつ終わるんだろ？カレンダー確認するか...みたいなことも発生しますね。

なので、これは**相手の状態がわかれば問題ない**わけですし、**気軽に話しかけられるツールがあれば問題ない**です。

### 解決の方針

というわけで、以下のように解決の方針がたてられそうです。

| 課題 | 解決の方針 |
|-----|-------|
| 誰かがなにかに困っていることがわからない | 相談しやすい仕組みや問題に気付ける仕組みを作る |
| ちょっとした質問や相談をしたいけど、相手の状態がわからない | メンバーの状態がわかるようにする。簡単に話しかけられるツールを使う |

## ツールや仕組みで解決する

EDOCODEでは、下記のような対策をしています。

| 解決の方針 | 解決策 |
|-----|-------|
| 相談しやすい仕組みや問題に気付ける仕組みを作る | 朝・夕のミーティング、Slack/Slackのtimes-channel、週一の1 on 1 |
| メンバーの状態がわかるようにする。簡単に話しかけられるツールを使う | tandem |

## 1. 朝・夕のミーティング

朝(全員参加のStandup Meetingの後)と夕方(16時)に開発者のミーティングを行っています。
速ければ、朝は10分弱、夕方は5分弱と非常に短いミーティングです。
夕方のミーティングは任意参加(忙しかったり予定があったりする場合はスキップでもよい)としていますが、だいたい参加してるんじゃないかと思います。

現時点では、参加人数は7人です。

### 朝やっていること

1. 監視の確認(リソースモニタリング) - 1-3分
1. **今日やることの確認 - 30秒弱 x 人数分くらい**
1. 直近PMから振られたタスクの確認 - 0 〜 2分
1. 本日前後の締切タスクの確認 - 0 〜 1分
1. コードレビュー予定確認 - 1分
1. **相談・共有 - 0 - 10分**
1. トラブルの報告 - 0 - 5分

10分から長くても20分弱くらいです。たいてい10分以内に終わります。

### 夕方やっていること

1. **今日やったことの確認 - 30秒弱 x 人数分くらい**
1. 前日、当日にPMから振られたタスクの確認 - 0 〜 2分
1. **相談・共有 - 0 - 10分**
1. トラブルの報告 - 0 - 5分

朝の内容のコンパクト版です。長くても10分強くらい。何もなければ5分くらいで終わります。

### 詳しい内容

朝は割と色々盛りだくさんですが、太字のところが重要なので、太字のところだけ説明します。

#### 今日やることの確認

Notionに、下記のようなボードを作っています。タスク管理は別であるのですが、本日やることを「TDDO」に入れておくという感じです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11040/6ff4661f-bbcd-5ec7-199a-a7e51d8ffb73.png)
タスクと二重管理になってしまっているところがあるのですが、タスクよりも粒度が細かい、1-2時間ですむものを書きます。
つまり、TODOに入れたものは、基本的に今日終わらせるものです。

もともと、各TODOに対して見積もり時間も入れるようにしていたのですが、最近さぼりがちです。
見積もり時間を入れていると、金曜時点で、Doneに入っているものの合計時間を数えれば、だいたいどれくらいのタスク量だったか見える化できます(あくまで見積もりなので目安ですが)。

ちょっと話がそれましたが、**`TODO`は、本日やることなので、本来夕方のミーティングでは、`DOING`か`DONE`に移っているべきもの**です。**何日も`TODO`や`DOING`にとどまっているようなら何か問題がある**可能性があります。


#### 相談・共有

困っていることや、何か気になっていること、お知らせなどをボードに書いておきます。
就業時間中に聞ければそれで良いですが、聞けないまま放置してしまうといったことがないように、このボードを置いています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11040/b0bd378a-a0e1-995a-b680-549af52275f9.png)
対面で聞きたいけど、ミーティング中とかで捕まえられなかった...後で聞けたら良いや、くらいの内容をここに残しておくのが良いのかなと思います。
あと、Slackで返事もらってないんだけど...みたいなのも、書かれたりします。

**すぐに聞けなくてもいいけど、対面で聞きたいことを残しておくことで、相談漏れを防げます。**

### 2. tandem
コミュニケーションツールとして、[tandem](https://tandem.chat/)を使っています。
![logo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11040/e64268c7-798e-0042-936a-3d0b01743199.png)
tandem については、以前、EDOCODEのCEOの田村が、[リモートワークでもチームを感じるツール「tandem」](https://note.com/takamasa_tamura/n/naa726118493e)という記事を書いていますので、良かったらそちらも参照してみてください。
そちらの記事にも書かれていることと重複するところがありますが、tandem の下記のような機能が非常に良いと思っています。

- Wave
- みんなの状態がわかる
- ミーティング中かわかる

この3つに絞って紹介します。

#### Wave

`Wave`は、相手に対して、「手を振る」ことができます。
ちょっと用事があるときに、**「ちょっといい？」とよびかける感じが実現できます**。

Waveをした相手に下記のような通知がいき、通知をクリックするとビデオチャットが始まります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11040/a3f87f15-7dd9-40b7-5837-d7cac4f0c9df.png)
上のように、NさんからのWaveがあった通知が来て、アプリ上では下記のようにNさんからWaveがあったことがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11040/90082387-4b09-68ea-a9cc-fb417da36945.png)
すぐに応じることができなくても、誰にWaveされたかがアプリ上でわかるので、相手にWaveし返すことで **「今、話せるよ」と合図を送ることができます**。そうすると相手に同様に通知が行きますので、そこから会話ができますね。

なお、別にWaveせずに直接話す(`Talk`)こともできます。相手がactiveな状態なら、急いでるときはそうすることもあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11040/e85b149b-84e3-be28-39a3-a250a0dd9a0d.png)

#### 相手の状態がわかる

ユーザーが`active`/`idle`/`online`/`offline`がひと目でわかります。
相手の状態を気にせずWaveすることもできますが、「今idle/offlineだから、Slackに残しておこう」と判断できますし、idle/offlineということがわかっているので、すぐに返事はこないなということも推測できます。

また、ランチにでてるとか、ちょっと外に出てるとか、集中したいときとかに、自分のステータスを変更できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11040/aa91f507-0b84-5a8b-0b4d-af1164775338.png)
これだけなら普通ですが、**ステータスに対して時間を設定できるのがポイント**です。
その**設定時間がすぎると自動的にステータスがリセットされます。なので、ステータスを戻すという作業が不要**になります。

なお、`Do Not Disturb`中にWaveされた場合、アプリ上でWaveされたことはわかりますが、通知は来ません。

ちなみに、Slackと連携させておくと、SlackのStatusと同期されます(Do Not Disturbは同期されないですが)。
![Screenshot from 2022-12-22 09-37-57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11040/eed986e6-c870-a33b-d25f-65c6bbd9aa31.png)

#### ミーティング中かわかる(誰とミーティング中かもわかる)

Google Calendarと連携してるので、ミーティング中の場合、ミーティング用の場所にミーティングのメンバーが集まります。話しかけたいけど、ミーティング中だからあとにしよう...とか判断が付きますね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11040/91b09c58-0a94-a5b3-a3d0-4df1973d7b52.png)
この画像の「MY MEETINGS」となっているのが自分のミーティングです。「TEAM MEETINGS」となっているのは、他のメンバーのミーティングです。
アドホックな会議の場合は、ここの画像にはないですが「CONVERSATIONS」というところに入ります。

カレンダーに登録されているミーティングであれば、話したい相手にカーソルを合わせると、終了時間もわかります。**いちいちカレンダーを確認する必要がありません**。
![Screenshot from 2022-12-24 14-26-29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11040/e03e3240-5162-3db4-a709-d4bb537ded3e.png)
なお、ミーティング中の人がミーティングが終わったときに通知を受け取るようなこともできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11040/7fb56e20-54f5-ed47-8d6c-89718f25bc85.png)
上の画像の時計のアイコンをクリックすると、話したい相手がミーティングが終わったタイミングで、自分宛てに通知が来ます。
通知が来たら、相手に対してWaveしたら良いですね。

ちなみに、これは余談ですが、ミーティングの数分前に、「Auto-Join」するかどうかの通知が来ます。これをクリックしておけば、会議の開始に遅れるということもないです。
![Screenshot from 2022-12-23 10-02-38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11040/65e6c8fe-0a5f-3392-9d13-e844d6085cca.png)
ちなみに、始まってると下記のように「Start」になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11040/e0a5807b-1ba3-5c8e-f176-28e800d7c606.png)
上の画像をみてわかるように、tandemからZoomやMeetでビデオ会議することもできます。カレンダーにURLが設定されていれば、どちらかを選択するようになります。

また、tandem上で常設のミーティングルームも設定できます。ランチ用や緊急対応用みたいな部屋を設定しています。
緊急対応用の部屋に入ってる人がいたら、そこに参加して詳しい話を聞くとかができますね。
![Screenshot from 2022-12-23 10-07-20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11040/374c6555-f36b-046f-e06b-c1c3f2c52a15.png)

#### つまり、tandemを使うと何が良いか？

ちょっと話がそれてしまいましたが、まとめると...

- 話しかけたい相手に気軽にWaveで話しかけられる/急いでるなら直接話しかけることもできる
- 話しかけたい相手が、今、話せる状態なのかわかる
- 自分の状態を皆に知らせることができる

**話しかけたいときに話しかけやすくなり、相手のレスポンスが必要なとき(Slackの返事待ち、会議に参加してほしい)に、相手の状態がわかることで、それが可能かどうかわかる**ようになります。

- Slackに書いたけど返事ないなー
- 急な会議に参加してほしいから、Slackで呼んだけど、レスポンスないな...

みたいな状況が発生しにくくなります。意外とこういうマイクロなストレスと時間ロスがありませんか？

### 3. Slack の times-channel

よくあるやつですが、みんながみんな使ってるわけでもないです。
ただ、使っている人は、今考えていることや、ちょっと困っていることなどを書いてくれているので、それを知ることができたり、解決策を提案したりすることができています。たんに雑談してるときもありますね。

### 4. 1 on 1

週一で1 on 1 をしています。基本的にはタスク確認が目的なので、予め下記のようなフォーマットに入力してもらった上で、何もなければSkipしても良いことにしています(下記の内容はダミーです)。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11040/3cbe0a2a-5a1a-49bc-d50f-677af2d1642b.png)
実装の相談や雑談とかで30分くらい使ってるときもありますが、5-10分くらいで済むことが多いです。

## まとめ

問題を抱えている人が相談するフローは下記のようになります。1 on 1 は、下記に対して、補完的に働くと思っておけば良いかなと思います。

```plantuml

(*) --> "対面で話したい?"
(*) --> "TODO/DOINGが溜まっている"
"TODO/DOINGが溜まっている"-->"朝・夕のミーティングで聞く"
"対面で話したい?" --> [Yes]"相手が話しかけられる\n状態かtandemで確認"
"対面で話したい?" --> [No]"Slackに書く"
"相手が話しかけられる\n状態かtandemで確認" --> [idle/offline\n/Meeting中]"相談・共有ボードに書く"
"相手が話しかけられる\n状態かtandemで確認" --> [話せる(idle/offline\n/Meeting中でも可)]"tandemでWaveする\n(か、直接Talk)"
"tandemでWaveする\n(か、直接Talk)" --> [話せた]相談できた
"tandemでWaveする\n(か、直接Talk)" --> [話せなかった]相手からのWaveを待つ
相手からのWaveを待つ --> [Waveが来て\n話せた]相談できた
相手からのWaveを待つ --> [返事なし]"相談・共有ボードに書く"
相手からのWaveを待つ --> [返事なし]"Slackに書く"
相手からのWaveを待つ --> [返事なし]"朝・夕のミーティングで聞く"
"相談・共有ボードに書く" --> "朝・夕のミーティングで聞く"
"朝・夕のミーティングで聞く"-->相談できた
"Slackに書く"-->[返答あり]相談できた
"Slackに書く"-->[返答なし]"朝・夕のミーティングで聞く"
"Slackに書く"-->[返答なし]"相談・共有ボードに書く"
相談できた-->(*)
```

### おしまい

以上、ご参考になれば幸いです。別にオフィスで対面で仕事することを否定するわけではありませんが、リモートワークでも割とスムーズに開発するためにこういうことをやってますよ、という紹介でした。

さて、2022年のAdvent Calendarはこれでおしまいです。例年、空きが出たり、当日に間に合わなかったり...ということが多いのですが、今年はみんなが協力してくれたおかげで、ほとんど遅れることもなく完走できました。
グループ会社も含め、協力してくれたみなさん、ありがとうございました！
もちろん、読んでくださった皆様もありがとうございました!

それでは、皆様、よいお年を〜。

### 人材募集

現在、Wanoグループでは人材募集をしています。興味のある方は下記を参照してください。
[JOBS | Wano Group](https://group.wano.co.jp/jobs/)

EDOCODEについては、以下をご参照ください。
[Jobs at EDOCODE](https://go.edocode.co.jp/jobs)