コネヒトアドベントカレンダー2024の4日目の記事です。
はじめに
コネヒトには、技術的な負債の解消や技術的にチャレンジングな取り組みを推進するための組織目標という目標制度があります。これに基づき、私たちのAndroidチームでは現在、Jetpack ComposeにおけるNavigation(以下Navigation Compose)のプロダクション導入を目指して活動しています。
Androidチームは2名体制の小さなチームですが、毎週1時間のペアプロを通じて、技術的な課題に取り組んでいます。このペアプロに加え、YWT形式を活用した取り組みを組み合わせることで、限られた時間で、継続的に改善と学びを進める仕組みを作っています。
この記事では、私たちの取り組みの具体的な進め方や得られた成果について紹介します。Navigation Composeの導入を通じて得た気づきや、ペアプロとYWT形式を組み合わせるメリットが、皆さんのチームの参考になれば幸いです。
導入までのマイルストーン
Navigation Composeをプロダクション環境で活用するため、安全策を取りながら段階的な導入を進めています。特に利用技術について詳しくない状況であったため、小さな成功体験を積み重ねることを意識し、以下のような3段階のマイルストーンを設定しました。
内部配布版用のデバッグ機能画面への導入
Navigation Composeをまずは内部利用のみに限定した画面で試験的に導入しました。具体的には、デバッグ用機能画面への適用です。この段階では、Navigationの基本的な利用方法や構造を理解することに集中しました。シンプルな構成で、利用頻度が少ない画面への試験導入
次のステップでは、ユーザー向けの画面でも利用頻度が少なく、構成がシンプルな画面に導入することを計画しています。この段階で得たフィードバックや課題をもとに、より複雑な画面への適用準備を進めます。複雑な画面遷移がある既存画面への導入
最終的には、複雑な画面遷移を含む既存画面にNavigation Composeを適用することで、本格的なプロダクション利用を目指します。
現在、私たちはマイルストーンの1段階目を完了し、次のステップに進む準備を進めています。こうした安全策を取りながら進めることで、リスクを最小限に抑えつつ、着実に技術習得とプロダクション導入の両立を図っています。
なぜペアプロとYWT形式を選んだのか
ペアプロを採用した理由の一つは、チームで新しい技術へのキャッチアップを効率的に進めるためです。特に、Navigation Composeの導入を進める中で、関わるエンジニアの双方がこの技術に詳しくない状況でした。ペアプロを通じてお互いの学びを共有しながら進めることで、技術の理解を深めると同時に、設計や実装の精度を高められると考えました。
また、ペアプロの効果を最大化するために、ペアプロのたびに進捗を振り返る仕組みとして、YWTでの記録を取り入れることにしました。 これにより、ただ一緒に作業するだけではなく、気づきを可視化し、次回につなげる具体的な改善点が見つけられるようになりました。
数ある中でYWT形式を選んだ理由は、そのシンプルさと実行のしやすさにあります。「やったこと(Y)」「わかったこと(W)」「次にやること(T)」という3つのステップだけで振り返りが完結するため、手軽に記録を残すことができ、短時間でも効果的な議論を進められます。
この形式を採用したことで、メンバー間で認識が揃いやすいという利点を感じています。同じ枠組みを使って話し合うことで、議論が整理され、次のアクションが明確になっています。YWT形式を取り入れることで、ペアプロで得た学びに対して共通認識を持つことにつなげることができるようになりました。
実際の取り組みと成果
毎週1時間のペアプロで、YWT形式を活用して作業内容や振り返りを記録しています。具体的には、毎回のペアプロ中にナビゲーターがYWTを埋めながら、最後にふたりで振り返りを行います:
やったこと(Y)
ペアプロの冒頭で取り組むタスクを具体的に整理します。例えば、「NavigationComposeを利用して下タブを実装した」といった内容です。ペアプロの冒頭に記入し、進捗によって修正を加えながら進めています。わかったこと(W)
作業中に得た知識や気づきを記録します。ペアプロのナビゲーターが学びや気づきをメモを取るようにしています。例えば、「NavHostを利用したBottomNavigationの実装方法」や、「NavigationSuiteScaffoldを利用すると画面サイズに応じて適したNavigationに切り替わる」ということを記入しています。次にやること(T)
最後に次回までのアクションを明確にします。例えば、「NavControllerとNavigationSuiteScaffoldを接続する」ことを次の目標として記録し、次回のやったこと(Y)の記入に利用します。
このプロセスを通じて、進捗状況を明確にしながら継続的に改善を進めることができています。たとえば、初期段階で不明点が多かったNavigation Composeについても、段階的に理解を深め、現在ではプロダクトコードへの導入も安心して進められるレベルに到達しました。このように、YWT形式が「学びを次のアクションにつなげる仕組み」として効果的に機能していると感じています。 またペアプロ中はNow in Android Appを開き、ナビゲーターがコードリーディングしながら、実装に反映するようにしています。
特に良かったポイント
ペアプロの時間が限られていため、議論が長引くと実装時間が不足する可能性がありましたが、セッションの冒頭で「今回やること」を明確に設定し、ゴールを共有することでスムーズに進められています。例えば、「NavigationComposeで下タブを実装する」といったように、シンプルな目標を決めています。これにより、議論が発散することを防ぎ、限られた時間内で効率的に進められるようになりました。
また、最初は25分ごとにドライバー(実装担当)とナビゲーター(サポート担当)を交代していましたが、調べながらの実装を伴う場面では、頻繁な交代が逆に作業を停滞させることが分かりました。このため、週ごとにドライバーとナビゲーターを交代する形に変更しました。これにより、集中力を維持しやすくなり、ペアプロ全体の流れもスムーズになりました。 これらの工夫を取り入れることで、ペアプロの効率が向上すると同時に、議論と実装のバランスを保ちながら取り組みを進めることができました。
他のチームでも試せるポイント
今回のペアプロとYWT形式の取り組みは、どんなチームでも応用しやすいシンプルな方法です。以下に、他のチームでも取り入れやすいポイントをまとめました。
短時間から始める
毎週1時間という短い時間でも、振り返りを続けることで着実に改善を進められます。「忙しいからできない」と思いがちですが、小さな一歩を踏み出すことが重要です。明確な目標を設定する
セッションの冒頭で「今回やること」を具体的に決めることで、議論が発散せず、効率的に進められます。目標は具体的かつ実行可能な内容に絞りましょう。役割交代の工夫
作業時間が短い場合において、ドライバーとナビゲーターの役割を週替わりで交代する方法は、慣れない技術を採用する際に効果的です。この方法を導入することで、作業のスムーズさと集中力を両立できます。YWT形式のシンプルさを活かす
振り返りの記録を「やったこと」「わかったこと」「次にやること」の3つに整理するだけで、進捗と次のアクションが明確になります。特に「次にやること」を記録しておくだけでも、次回の作業がスムーズになります。
小さな取り組みをコツコツ積み重ねることで、チーム全体で学びを得るにつながります。ぜひこの方法を試してみてください!
まとめ:振り返りの効果と継続の価値
今回ご紹介した、毎週1時間のペアプロとYWT形式を活用した改善プロセスは、シンプルでありながら効果的な方法です。やったことを振り返り、学びを次のアクションにつなげるサイクルを続けることで、チーム全体の知識が着実に積み上がっていきます。
特に、短い時間であっても定期的に振り返ることで、課題を早期に発見し、スムーズに解決へとつなげられる点が大きなメリットです。また、チーム全員が同じフォーマットを使うことで、コミュニケーションがより円滑になり、効率的に議論を進められるようになります。
今後の改善ポイント
この取り組みをさらに発展させるために、以下の改善ポイントを考えています:
時間の使い方を見直す
毎週1時間のペアプロは知識をつける上では効率的ですが、改善できる物量が限られています。そのため、具体的には、1時間のペアプロに加え、別途作業用の時間を確保して、より多くの作業を進めるようにすることを検討しています。学んだことを整理し、設計やドキュメントに反映する
これまでのペアプロで得た知識や気づきを整理し、設計を見直す予定です。YWTの内容をもとに、リファクタリングを行い、ドキュメントを更新するなどの取り組みを進めていきます。
改善プロセスにおいて大切なのは、「小さく始めて継続し、必要に応じてスケールアップすること」です。この取り組みが、あなたのチームにとって新たな発見や成長のきっかけになれば嬉しいです。ぜひこの方法を試し、楽しみながらチームの成長を実現してください!