改善はゴールではなくプロセス
ばんじゅん氏は、レガシーに対してとるべき技術的アプローチについても言及していく。レガシーな機能は、他のレガシーな機能と結合しているケースが多い。ゆえに、なりゆき任せにコード改善を進めていくと「あれも、これも全部を変えなければ」と、芋づる式に修正範囲が広がってしまうことがある。そうした事態を避けるため、「修正すべき対象を分割して、影響範囲を調整可能にすることが重要」と解説する。
既存機能を壊さずコードを置き換えていくために、機能のデグレードを防ぎやすい手法や、動作確認をしやすい方法を用いることも重要だ。ZOZOTOWNのiOSチームが2019年にとったレガシーへの対応としては、以下のようなものがあるという。
また、本稿で解説したような開発・改善を行うには、メンバーに幅広い技術領域を身につけてもらう必要がある。そのためiOSチームではチーム外・社外のメンバーとともに、各種の勉強会を月に一度のペースで開催している。iOSエンジニアで技術共有する会やデザイナーとUIを学ぶ会、品質管理チームとテストを学ぶ会など、内容は多種多様だ。
「話題を変えて、ここからはマインドについて話をさせてください。私は『改善はゴールではなくプロセス』だと思っています。私たちは、売り上げ拡大のために案件開発をサポートしているのだという意識を持つことが必要です。また、基本的には日常的かつ安定的にリファクタリングをしていくこと、リソースをスパイクさせないことを意識しています。
技術導入の方針としては、技術の流行だけを追わないことや、技術の導入そのものを目的にしないことを心がけています。私たちのコードベースにはまだ古いものが残っているため、世の中の多数派とはかけ離れた技術的要素を持っているかもしれません。『流行っている技術は、もしかしたらマッチしないかもしれない』という観点を持つことが重要になります」
長い歴史を持つアプリをメンテナンスし続ける上では、「レガシーな要素とどう向き合うか」という観点が必要不可欠だ。多くの場合、改善施策は地道で根気のいる作業になる。長い改善の道のりを「着実に歩き続ける」という姿勢が、チーム開発における基礎体力を築いていく。その姿勢の重要さを、ZOZOTOWNの事例は伝えてくれた。
