課題解決のためチームで設計思想を統一
伊藤氏とともにこのリファクタリング作業を担当した穴久保氏は、プロジェクトの過程で遭遇したさまざまな困難について次のように振り返る。
「設計思想や原理原則に対する各メンバーの理解や意識に差があると、成果物の品質に差が生まれてしまいますし、チーム内の議論も活発化しません。とは言えメンバーはそれぞれ異なるバックグラウンドを持っているため、やはり設計思想や原理原則の意識統一は一筋縄ではいきませんでした」
この課題は、設計レビューとペアプログラミングの取り組みを徹底し、チームで技術的な認識を共有して議論できる文化を作ることで乗り越えることができた。ただし設計思想や原理原則を重視した一方で、細かな設計ルールはほとんど設けなかった。
「ユースケースによって設計方針は変わるため、細かなルールを決めてしまうとそれを無理やり適用するあまり設計がねじ曲がってしまいルールが方法ではなく目的になることを危惧しました。そのため細かすぎるルールはあえて設けずに、適宜適切な設計・実装方針を議論しながら開発を進めていきました」(穴久保氏)
設計思想と原理原則の適用されたソースコードが浸透するにつれ劇的に開発工数が短縮された。変更容易性や再利用性が飛躍的に高まり、かつては1カ月かかっていた新規実装をわずか数日間で行えるようになった。
また長年の運用の過程で類似するサービス仕様の実装が重複している箇所が多数存在した。これらを本来あるべき形に修正するためにプランナーと検討しながら新たなサービス仕様をすり合わせていった。また膨大なデバッグ量をこなすために、グラブルチームに所属するデバッグメンバーだけでなく、チーム外のデバッグメンバーにも協力を仰ぎ、会社のデバッグ組織として取り組んだ。但し、全てをデバッグチームに丸投げするのではなく、エンジニアもテストの自動化を行うことで、協力して対応にあたった。
「このように自分たちエンジニアだけで解決にあたるのではなく、会社組織全体として課題解決にあたることが重要だとあらためて感じました。今後もこうした取り組みを続けて、ユーザーの皆様に『最高のコンテンツ』を末永く提供し続けていきたいと考えています」(穴久保氏)
株式会社Cygames