はじめに
名古屋スタジオでクライアントエンジニア兼開発プロジェクトマネージャーを担当しています朝日と申します。
今回はプロジェクト内のクライアントエンジニアで行っている共有会について紹介します。
共有会はトレーナー役のクライアントエンジニアが主導開催しているもので、目的について触れると、1つの開発に多数のメンバーが携わるとそれぞれの担当箇所については発生した問題や不具合、開発手順など把握しているが、担当外の箇所については意識が薄くなりがちです。そこをカバーする為に直近で起こった事象に対してクライアントエンジニア全員で共有することで、その後の開発に向けて良かった所は参考にして、改善が必要な所は繰り返さないように対策をするといった意図があります。
共有会で行っている具体的な取り組みを幾つか紹介します。
取り組み例
取り組み1:コードレビュー共有
普段クライアントエンジニア同士でコードレビューをしています。
レビューでは危険なコードの書き方だったり、処理が不足している箇所や例外チェックに関して、処理が分かり難いコードについてはコメントでフォローするなど指摘が入ります。
レビュー時に指摘をした箇所を共有会で紹介することで、他のエンジニアにも気をつけるポイントを浸透させて、プログラムの質を上げる事を目指しました。
最初の頃は、ポインタのNULLチェックやデータのアクセス違反など指摘するポイントは多かったですが、最近では目に見えて減ってきて効果を実感しています。
取り組み2:不具合共有
不具合は無いに越したことはありませんが、発生することがあります。
これまでは、不具合が発生して修正する際にも担当者しか把握していない事が多く、他のエンジニアがどこまで知っているか曖昧な状態でした。
極端な言い方をしてしまえば、自分とは関係ない所で不具合が発生して勝手に解決している状況になることもありました。
これが常態化してしまうと同じような原因の不具合が頻発する事態になり兼ねません。
そこで、危険度の高い不具合や他のエンジニアも起こし得る不具合が発生した際は、原因から修正方法まで含めてクライアントエンジニア全員で共有して再発防止に努めています。
取り組み3:属人化している開発共有
複数のメンバーで開発をしていると、業務によって固定のメンバーが暗黙的に実装をする担当になり結果的に属人化する事があります。
その担当者が常に動ける状態ならば問題ありませんが、開発が立て込んでいつもの担当者が実装できない場合も発生します。
極力属人化した業務は無くすに越したことはありません。
そこで、共有会の場を通じて少しづつ属人化しているであろう業務を紹介し手順を共有することで、属人化の解消に努めています。
取り組み4:効率化共有
クライアントエンジニアそれぞれに得意な分野や知見があります。
例えば、描画処理周りに詳しいエンジニア、データベースを効率的に扱うのに詳しいエンジニア、システム周りに詳しいエンジニアなど存在します。
それぞれの強みを活かした実装をしていきますが、他のエンジニアも同様の処理を実装する事はあります。
そこで、自身の強みのある処理や実装方法について共有会に持ち込んで紹介する事で、その分野に弱い人も知見を広げることができ、実装時はそれを参考にする事で処理だけでなく業務も効率化出来ます。
取り組み5:クイズ
あるお題に沿ってクイズ形式で紹介することで、クライアントエンジニアがその場で考え、意見を出し合う参加型の共有会も行っています。
最近実施したお題では、実際のクラッシュログを見せてそこからどんな情報が分かるか意見を出し合ったり、サンプルのソースコードに対してユニットテストのテストケースを考えて発表し合ったりしました。
クイズ形式にする事で楽しみながら考えや意見を出し合って、クライアントエンジニア全体の知識の底上げを狙っています。
取り組み6:その他開発における情報共有
その他に、開発する上でルールや気を付けるべき事柄の情報を共有することがあります。
例えば、Gitのブランチ運用ルールや、コードレビューのルールについて現行のものから改正する場合に共有会にて展開します。
また、アプリリリース後の開発振り返りを行った際に抽出した上手くいった点や改善が必要な点について紹介する事で、その開発を担当していないクライアントエンジニアに、以降の開発取り組みに対して参考にしてもらい質を上げられるよう努めています。
まとめ
幾つか具体的な取り組みを紹介しましたが、クライアントエンジニア共有会では毎回同じ事を行っている訳ではありません。
鮮度の高いうちに共有しておいた方が良いものだったり、時には参加型のお題で楽しみながら知見を共有したり、その後の開発の参考となる事象を紹介することで効率化や質の高い物創りに役立つ内容を適宜選定しながら開催しています。
この記事で少しでもワンダープラネットのクライアントエンジニアに興味を持ってもらえたら幸いです。