Microsoft Teams | リモート ワークのためのコラボレーション ツール
チームワークを実現する安全なコラボレーション プラットフォーム、Teams に無料でサインアップして、リモート ワーク、テレビ会議、インスタント メッセージング、グループ チャットのためのツールを入手できます。
https://www.microsoft.com/ja-jp/microsoft-teams/group-chat-software
Photo by Chris Montgomery on Unsplash
こんにちは。
セラク・みどりクラウド事業部のエキスパートエンジニア・スクラムマスターの原田です。
東京のコロナ新規感染者は段々と減ってきてはいますが、みどりクラウド事業部では通勤・オフィスでの感染リスク低減を考慮して、引き続きテレワークを推奨しています。
また、セラクでは社外のインターネットから社内のネットワークに接続するためのVPNを設けており、社員は自宅等からVPN経由で社内のシステムや情報にアクセスして業務を進められる体制を2020年前半から整備してあります。
今回はそのようなテレワーク体制下でみどりクラウド事業部はいかに開発スピードを落とさずに価値あるサービスを開発・提供しているのかを、採用しているツールやコミュニケーションの仕組みの視点でご紹介します。
みどりクラウド事業部のWeb会議ツールはMicrosoft Teamsを使用しています。
朝会などのミーティングだけでなく、後ほど紹介するペアプロやモブプロでもTeamsを使用しており、お互いの顔を見ながら通話をすることで、リアルの対面で会話するに近いコミュニケーションを実現させています。
また、Teams以外でもMicrosoft Office365の機能としてメールやスケジュール共有機能を使用しており、これらの機能は自宅等からでも接続できるので、どこからでもWeb会議への参加・メールの確認・スケジュールの確認ができるようになっています。
会話でやり取りをしたほうが良い場合はTeamsのWeb会議を使用しますが、簡易な連絡などにはSlackでの文字コミュニケーションで行っています。
プロダクト毎・プロジェクト毎にチャンネルを作成し、それ以外にも技術やプロダクトに関する雑談・発信をするチャンネルも用意されており、Slack上でも部内で活発なやり取りがされています。
また、必要であればプロダクト開発の社外関係者様をゲストとしてSlackへ招待し、社外の方も巻き込んでSlack上でコミュニケーションを取りながら開発を進めることもあります。
もちろん、Slackもテレワーク中に社外から接続可能です。
タスクのステータス管理・見える化のために、Redmineによるチケット管理と併用して、タスクかんばんという手法も採用しています。
詳しくは以下のWikipediaを見てもらいたいのですが、タスクかんばんとはタスクの分解・ステータスの可視化・完了までのプロセスを可視化して、ジャスト・イン・タイムでやるべきタイミングでタスクを着手して確実に終わらせていく手法です。
タスクかんばんを実現するツールとしてはTrelloというWebサービスが有名なのですが、みどりクラウド事業部ではソース管理にGitHubを使用しているのでGitHub Projectsというサービスでタスクかんばんを運用しています。
GitHub Projectsの素晴らしい点は、GitHub Projects上で作成したタスクをそのままissueにすることができ、issue上でタスクの進捗を書き込んだり、プルリクを作成してマージされたらタスク完了とするといったように、ソースのGit管理とタスクかんばんを連動させることができる点です。
Trelloでステータス管理をして、実際のソースはGit管理というやり方だと二重管理になってズレが発生することはまぁまぁあることなのですが、GitHub Projectsなら一括管理できるのでおすすめです。
GitHub Projectsは素晴らしいツールなのですが、どちらかというと開発者寄りのツールで操作性などでエンジニア以外の方にはとっつきにくいところがあります。
そのため、プロダクト開発の社外関係者様ともタスクの内容を共有したい場合は、nulabのBacklogを使ってタスク管理をする場合もあります。
社外の方ともできるだけメールだけではなくSlackやBacklogといったコミュニケーションツールを使わせていただき、タイムリーかつ開発チームとの距離感が近いコミュニケーションを実現させて認識齟齬が発生しないようにしています。
後ほど「コミュニケーションの仕組み」で紹介しますが、ペアプロ・モブプロで同じソースを複数人の開発者で同時に見ながら開発を行う取り組みを進めています。
当初はTeamsの画面共有機能を使って、一人の開発者のVisual Studio Codeの画面を他の開発者と共有するという方法でペアプロ・モブプロを行っていたのですが、この方法だと以下のような不満がありました。
そんな折に、Visual Studio CodeのMicrosoft公式エクステンションとして、同じソースを複数人でそれぞれのローカルのVisual Studio Codeで表示して、なおかつ同時編集もできるVisual Studio Live Shareの存在を知りました。
このツールを使用することで上記の不満はほとんど解消できました。
ソースの同時編集だけでなく、ターミナルの共有など便利な機能が組み込まれており、テレワークに限らず例えば新人さんなどIDEの操作に慣れていない人とのペアプロにも活用できそうな感じです。
みどりクラウド事業部では、アジャイル・スクラム勉強会を行ったりしていることからも分かるとおり、柔軟な開発プロセスを実現するためにアジャイルのTips適用やスクラムフレームワークの導入を進めています。
スクラムフレームワークは一定の短い期間(タイムボックスと言います)で開発期間を区切って、それを繰り返して優先度の高い・価値の高い機能から実現させて、フィードバックを得ながら順次開発&ブラッシュアップしていくフレームワークです。
ウォーターフォール開発と比べると実際に触れるアプリがかなり早い段階で手に入るので、仮説検証を早い段階でできる・進行方向の調整がしやすいのがメリットです。そのため、不確実性が高く、未知の部分が多いプロジェクトで有効な手法と言えます。
みどりクラウド事業部では、テレワーク体制下でもスクラムフレームワークで定義されたミーティングをTeams・GitHub Project・Redmine・Trello等のツールを柔軟に使いながら実施しており、リアルで出社して対面でコミュニケーションをとるのと遜色のないレベルで意思疎通を取りながら開発を進めています。
具体的には、以下のようなミーティングを行っています。
・スプリントプランニング
週の初めに、開発チーム全員がTeamsのWeb会議で集まり、画面共有でGitHub ProjectのタスクかんばんやRedmineチケットを全員同じ画面で見ながらタスク分解・タスクの内容理解・概算見積を行っています。
・デイリースクラム
毎朝、開発チーム全員がTeamsのWeb会議で集まり、各開発者が昨日までやったこと・今日の予定・今困っていることを発言してチーム内で共有しています。困っていることに対して他の人の助けが必要な場合、デイリースクラム後にペアプロを行ったりして解決していきます。
・スプリントレビュー
週の終わりに、開発チーム全員とみどりクラウドのプロダクト責任者がTeamsのWeb会議で集まり、画面共有などを使って1週間で完成させたプロダクトの機能をプロダクト責任者にお披露目します。また、この場で来週はどの機能を開発していくかも開発チーム・プロダクト責任者間で摺合せを行っています。
ただしみどりクラウドの場合、プロダクト責任者とのコミュニケーションはスプリントレビューに限らず、聞きたいことがあればSlackなどですぐに相談できる体制にしています。そのため、スプリントレビューは1週間の仕切りとして完成したかどうかを確認する定例イベントという位置づけと言えます。
・スプリントレトロスペクティブ
週の終わりに締めくくりとして、開発チーム全員でTeamsのWeb会議で集まり、TrelloなどのWebサービスを使ってふりかえりという取り組みを行い、開発チームや開発プロセスの改善を進めていきます。
ふりかえりについては、以下のソニックガーデンさんのブログ記事がわかりやすいと思います。
ここまでの紹介でおわかり頂けたかと思うのですが、すべてのスクラムフレームワークのミーティングをTeamsのWeb会議で行っています。
私はこれまでリアル対面でも5年程度のスクラムマスター経験があるのですが、現状のWeb会議でのミーティングでもリアル対面とそれほど変わらないレベルのコミュニケーション密度を実現できていると感じています。
コロナ以前のような大多数の開発メンバーがオフィスに居る・一部の人が遠隔地のようなケースでは全員同じコミュニケーション密度を維持するのは難しかったのですが、コロナ禍で全員テレワーク・全員Web会議でコミュニケーションという状態になったことで、全員同じコミュニケーション密度に揃えるのがやりやすくなったところはあるのかと思っています。
「スプリントプランニング」の項でも書きましたが、週の初めにチームメンバー全員でタスク分解・タスクの内容理解・概算見積を行っています。
このチームメンバー全員で行うところがポイントで、一部のリーダー格がタスクを取りまとめて担当者にアサインするようなやり方ではなく、チームメンバー全員がプランニングの時点でできるだけ理解度を揃えながら、いろいろな意見を取り入れて概算見積を行います。
このような取り組みによって、「私はメンバーだから、全体的なことはよく知らない」といった考え方や「リーダー格が決めたことなんだから、私はそれに従っているだけ」といった考え方ではなく、開発メンバーが主体的・自律的に「チームとして価値あるプロダクトを実現していくにはどのように行動していけばよいか」という考え方にシフトしていくことを狙っています。
タスク洗い出しと見積も、TeamsによるWeb会議を使って集まり、GitHub ProjectsやRedmineといったWebアプリを使用して進めているため、テレワーク体制下でも問題なく進めることができています。
開発を進めていく中で、一人では技術的・理解度的に難しいタスクにぶつかって手が止まることはよくあることです。そのようなときに一人で頑張って調べるという手もあるのですが、私はペアプロ・モブプロを実施することを推奨しています。
・ペアプロ
ペアプログラミングの略です。開発者の二人一組でペアを組み、1台の開発マシン・キーボード・マウスを二人で共有して1つのタスクに取組みます。当然、二人で同時にタイピングはできないので、開発マシンの操作はペアの一人が担当し(この人のことをドライバーと言います)、もうひとりは横に張り付いて設計や実装の考え方について助言します(この人のことはナビゲーターと言います)。
基本的に、ナビゲーターは経験豊富な人に担当してもらい、ドライバー役の人に技術や知識を伝えてもらいます。ドライバー役の人は、横で経験豊富な人から直接指導をしてもらいながら、さらに手も動かすので身につくのが早いという点がメリットです。
コロナ禍かつテレワーク体制下では開発者二人が横並びで張り付くことは不可能なので、上でも紹介したVisual Studio Live Shareなどの共同作業ツールを使って同じソースを見て、Web会議で会話をしながらペアプロを実施しています。
・モブプロ
モブプログラミングの略です。ペアプロは2名で1つのタスクを進めましたが、モブプロは開発チーム全員で1つのタスクに取組みます。こちらの場合も、使える開発マシン・キーボード・マウスは1つずつだけで、ドライバー役の人が一定時間ごとにナビゲーター役の人と入れ替わるのがペアプロとの大きな違いです。
ペアプロは経験豊富な人からまだ慣れていない人に向けてスキル継承を行うことが主な目的でしたが、モブプロでは経験豊富な人も含めてドライバー役を担当し、開発チーム全員でわいわい喋りながら実装を進めていきます。
開発チーム全員が1つのタスクに取り掛かるなんてなんて非効率!と思うかもしれませんが、チームメンバーそれぞれで分担した場合と比べると早く終わることも多いのです。ここでは説明しませんが、なんで!?と気になった方はぜひ以下の書籍を読んでみてください。
モブプロの場合も、ペアプロと同様にコロナ禍かつテレワーク体制下で一箇所にリアルで集まるということは現実的ではないため、Web会議を用いて実施しています。
これまで説明してきたとおり、テレワーク体制下でもチームで開発できる体制を整えてリアル対面と遜色のないコミュニケーションを実現させていますが、まったく問題が無いわけではありません。
テレワーク体制下だと以下のような課題があると思っています。
お仕事については各種ツールや仕組みを駆使してテレワーク体制下でも問題なく進められるようにできていますが、流石に一緒に食事をする・一緒にお酒を飲むという体験まではリアル対面と同等レベルまでは至っていません。
リモート飲みなどの取り組みも行っていますが、やはり画面越しでお酒を飲むのはこれまでとは勝手が違うのでまだまだ改善の余地ありという感じです。当面続きそうなテレワーク体制下で、仕事以外でも部内の一体感や相互理解を育んでいけるようにするにはどうすればよいか、試行錯誤している最中です。
このように、セラク・みどりクラウド事業部ではテレワーク体制下でも開発スピードを落とさずに価値あるサービスを開発・提供し続ける体制を考え続けており、柔軟に取り入れています。
みどりクラウド事業部のテレワークに対する取り組みに興味を持っていただけたら、ここでは紹介しきれていない取り組みやツールの活用などもご紹介できますので是非お話をしましょう。お待ちしています。