こんにちは。コロプラのサーバーエンジニアの山田です。
先日、ゲームの運用をしているプロジェクトで Fixit を行いました。
この記事では、私が所属するチームで行ったFixitについて、やり方や結果・反省点などを交えながら紹介します。
Fixit について
Fixit(フィックスイット)は、コロプラで度々実施されているイベントで、プロジェクト内のチーム単位で1日や2日など期間を決めて「後回しになっている問題」に集中して取り組むイベントです。この期間中、チーム内の各メンバーが優先したい課題をまとめ、解決に向けた取り組みを行うことで、業務効率を高めたり開発体験の向上が期待できます。
各プロジェクトでサーバー・クライアント問わず度々実施されていますが、私自身は今回がFixit初参加となります。
FixitはGoogleでも実施されているらしく、Google SRE のポストモーテム で言及されているように、Google SRE チームでは年に2回Fixitウィークとして実施されているようです。また、ブログ記事 でも定期的に行われていると記載されています。
実施されるチームによって内容は変わりますが、私たちのチームでは具体的には以下のようなタスクに取り組みました。
- 後回しになっているタスク
- ツールなどへの要望
- 業務効率化・開発体験の向上
- リファクタ
実施した背景
Fixitを開催することになったのは、緊急度の低いタスクや要望対応が後回しにされ少しずつ蓄積していたためです。
読者の方々にも共感いただけるかと思いますが、緊急度の高いタスクは日々差し込みで増えていくので、緊急度の低いタスクは長期間に渡り放置されることがしばしばあります。ただ決して優先順位は低くはないので、時間を見つけて対応しなければなりません。
個々で時間を見つけて対応することもありますが、開発の忙しさや人に依存してしまうので、それだけではこういったタスクの消化がうまく回りません。
Fixitを通じてこのような問題を解決し、業務効率の改善を目指すことになりました。
私たちのFixitのやり方
あくまで一例ですが私たちのチームは以下のように進めました。
1. Fixitの日時を決め、プロジェクト全員に周知しておく
まずはチームでFixitをやる合意を取り、Fixitに専念する期間を2日間確保しました。
Fixit中はチームメンバーがメインの業務をできないためプロジェクトメンバー全員に「チームでFixitを実施する旨」を周知しておきましょう。プロジェクトと合意を得るためにチームリーダーが率先してこのあたりをやるのが良いと思います。
2. 事前に Google Sheets などに各自でやりたいことをまとめる
Fixit 用のシートを用意し以下を元にタスクを記入しました。
- Slackにメモとして投稿していたもの
- Backlogにチケットとして残っていたもの
- 日頃相談される細かい要望
- その他思いついた改善案
このタスクシートを使って当日のタスク管理や後日の振り返りを行います。
3. 2日間のうちメンバーはどちらか片方でやる日を決める
2日間のうち各メンバーが参加可能な日付に参加する形で、ざっくりチームを半分に分けました。メンバーで集まって作業に集中するために会議室も確保しておきます。
また、基本はFixit のために他の業務は区切りをつけて集中できるようにしておきます。完全に身を捧げる覚悟を持つことが重要です。
4. 当日
当日は他の業務は一旦忘れ Fixit のタスクに集中します。
始める前にチームやプロジェクト全体にアナウンスし、業務のチャットは当日Fixitに参加していないメンバーが対応するように上手く連携していました。
Fixit中は会議室に籠もり、その場にいるFixit担当者内で相談しつつ作業を進め、コードレビューなどもすべて担当者内で回します。
また、担当者間で連絡しやすいような工夫をしておくと良いです。例えば、Slackを使っているなら当日専用のユーザーグループを作ったり、チャットのチャンネルを作っても良いと思います。
作業中のコミュニケーションに関しては会議室を取っていれば基本は直接話せるのですが、私たちのチームは在宅のメンバーもいたので、会話しやすいように Google Meet を常に繋げて話せるようにしていました。
5. 後日
Fixit のタスクシートを元に「やってよかったタスク」「反省点」などをまとめて、次回の Fixit に備えます。
また、本来のやり方からは外れますが、コードレビューやQAが終わっていないものについては順次対応していきます。
結果・反省点
私たちのチームでは、ほとんどのメンバーがFixitに参加でき、大小様々なタスクはありますが合計26件のタスクを消化することができました。
やってよかったこと
リファクタの一つとして「処理や負荷的に問題のあるコードの最適化」が行われたのですが、思いがけずゲームの次のイベントで使用する機能だったので、負荷がかなり軽減でき大変助かりました。Fixit の結果がすぐに成果として現れたのはとても良かったと思います。
また、各種要望の対応やツールの細かいUXの改善が行われたことで、開発や運用の作業する上での一手間が減ったりと生産性が地味に上がっているのを感じます。こういった細かな改善はいつも対応が先延ばしになってしまいますが、長期的にプロジェクトを運用していく上では蔑ろにできません。
そしてFixitの進め方の点だと、会議室を確保しつつ在宅とコミュニケーションが取りやすいように Google Meet に常に繋げていたのは、相談・レビューなどが円滑にできて雑談なども弾んだので良かったなと感じます。
反省
メインの業務の連絡が度々飛んで来て気を取られる状況だったので、もう少しプロジェクト全体の理解を得たりSlack上での何かしらの工夫などが必要だったと感じます。
また、1日で終わらないタスクがいくつかあり私含め不完全燃焼で終わったメンバーがいたので、タスクの見積もりの時点でレビューやQAなども含めた工数を考慮するべきでした。
まとめ
緊急度が低いとはいえ長い間残っているタスクがあり、Fixit を行ってそれらを一部消化することができました。
いつもはメインの業務とマルチタスクでやっていたりとプロジェクトの忙しさや人に左右される面があります。メインの業務から離れて集中的に作業することで効率的にタスクを処理できて、結果一定の効果も見られました。Fixitは初めて参加しましたがとても良い経験になりました。
ただ反省点もいくつか挙がっているので、今後も定期的なFixitを行い効果的な方法を模索していきたいと考えています。
もし、読者の中で同様の取り組みを行っている方は、是非「うちはこうやってるよ」などを教えていただけると嬉しいです。
ColoplTechについて
コロプラでは、勉強会やブログを通じてエンジニアの方々に役立つ技術や取り組みを幅広く発信していきます。
connpassおよびTwitterで情報発信していますので、是非メンバー登録とフォローをよろしくお願いいたします。
また、コロプラではゲームや基盤開発のバックエンド・インフラエンジニアを積極採用中です!
興味を持っていただいた方はぜひお気軽にご連絡ください。