1000万行のコードと向き合う3つのステップ――富士ゼロックスはリファクタリングにどう取り組んでいるのか(2/2 ページ)

» 2015年07月06日 05時00分 公開
[谷崎朋子@IT]
前のページへ 1|2       

リファクタリングで修正時間は半減、開発者の意識向上にも効果あり

 コードの可視化と対象の絞り込み、コンセンサスの獲得に成功した同社は、次にリファクタリングの手順を3つのステップに分けて定義した。

 ステップ1は、大きく複雑なファイルを分割する「部品化」を実施する。ファイルの凝集度を高めて責務を明確にし、設計意図を理解することが目的だ。

 「ここでは、データ依存関係などを見ながら、Lattixのパーティショニング機能でモジュール間の依存関係を単方向で分割する作業を行った。これにより、例えば1つのmainファイルに見えていたものが、実際はパーサーがモジュールを使っているといった流れが見えてきて、設定意図を理解できるようになった」(土樋氏)。

 分割は、相互依存関係が分かりやすいLattixを使った。手動でコンパイルし、その結果をLattixで解析、適切な分割になっているかを確認しながら進めた。また、Lattixのシミュレーション機能も活用した。「ファイル内の要素を仮想コンポーネントとして分割されるので、それをベースに実際のコードを修正・コンパイルすることができた」(土樋氏)

 ステップ2では、Understandを使って「簡易化」を実施する。そしてステップ3は、インターフェースを伴うファイル構造の見直しをする「再整理」を実施する。固定する部分と可変性のある部分とを切り分けて、変更しない部分を増やしてソフトウエアの安定性を高めるのが狙いだ。

 「現在は、ステップ1とステップ2を進めている段階」と述べた土樋氏は、そのプロセスの回し方について、こう説明する。「リファクタリング対象を見える化したら、どのように改善するかを開発担当者と検討。開発者は計画を策定し、全体を見るときはLattixを、関数など細かい部分を見るときはUnderstandを使うなど、ツールを使い分けながら構造を改善。そして、最後はプロジェクトマネジャーがテスト範囲を審査。問題がなければ評価部門に送り、第三者評価を実施。その後、商品化へと進める」。

リファクタリングプロセスの整理

 さらに、ツールの使い方やスキルアップのために、外部のコンサルティングなどと連携して基本講座を開催するなど、教育面にも力を入れている。

 「講義は、基礎編・実習編・アドバンスド編があり、年2回実施している。1年目は70人規模で実施したが、それ以降はソリューション単位などで継続的に開催している」(コントローラ開発本部 コントローラ開発企画グループ マネジャー 森重樹氏)。

 この他、リファクタリング情報を共有するためのサイトの作成や、開発者による事例発表やパネル展示など、年1回の情報共有の場を設けている。成果を示すことで、モチベーション向上にもつながっているという。

 リファクタリング活動を始めてから2年が経ち、今では2012年当時と比べて複雑度は収束の方向にある。

 「最初は課題認識の高いチームにリファクタリングを試験的に導入してもらい、様子見をした。そこでは、7000行あるファイルが8ファイルに分割でき、構造が見える化したことで処理も理解しやすくなり、不具合の修正箇所もすぐに見つけられるようになった。結果的に、修正時間は半分以下にまで短縮された」(森氏)

リファクタリング事例

 成果が確認できたことで、他チームにもリファクタリングの適用を進め、今ではNGエリアにあるファイルの絶対数も削減されたという。「さらに、リファクタリングするようになってからは、新規ファイルを作るときも気を付けるなど、開発者に意識の変化が見られた」など、副次効果があったと土樋氏は言う。

リファクタリング成功の秘訣は上層部や開発者の理解を得ること

 順調に成果を出しつつある同社だが、課題もいくつかあると土樋氏は言う。例えば、外部の力(コンサルティングなど)やツールの活用だ。「理論、ツール、プロセス、教育、実践を結び付けるのは大変で、外部を頼るのも一つの手だと思う。また、ツールを効果的に使いこなすことは大切であると同時に難しい。自社が抱える課題は何かをきちんと把握した上で、ツールを選定することも重要だ」(土樋氏)

 だが、課題の最たるものが、リファクタリングの効果を示す難しさだ。これは、上層部による理解と、開発者による理解の2種類があるという。

 上層部について、土樋氏はこう述べる。「リファクタリングの効果は外から見ても分かりにくいため、ビジネス上の投資効果を示すのが難しい」。特に、動くものを早く出すというプレッシャーに追われる中間管理職は、納期優先が阻害されると懸念し抵抗が大きかった。

 また、開発者からは、動いているものを直すことによる品質低下や、仕事が増えることに対する懸念が上げられた。

 これに対し、土樋氏たちは可視化することで問題箇所が早く見つかり、修正時間が短縮されるという点をパイロット導入などで証明、理解へと結び付けた。

富士ゼロックス コントローラ開発本部 コントローラ開発企画グループ マネジャー 森重樹氏

 「引き出しに物がいっぱい詰まっていると、入れた人はいいかもしれないが、違う人にとっては複雑で、必要なものがすぐに見つからない。これはこの引き出しに入れてラベルを張るといった整理整頓をすれば、誰もが一目で分かる状態になる。開発でも同様で、必要な箇所がすぐに分かれば修正やテストにかかる時間は短縮される」。この理屈は、上層部も開発者も直感的に理解してもらいやすかったと森氏は言う。

 さらに、リファクタリングのプロジェクトを進める上で、ハードウエアやソフトウエアなど複数のチームから横断的にメンバーを集め、コンサルティングチームを結成した。教育や進め方などの相互理解を高め、チームに戻って指揮するという形を構築した。これもリファクタリングを組織的に推進する成功ポイントの一つだ。

 「部門ごとに凝り固まってしまわず、横串でコンサルチームを作ったことで、トップダウン・ボトムアップがしやすくなった」。結果的に、部門間の技術者同士で情報交換が盛んになり、技術者自身もコンサルチームも知見や経験を蓄積、実践力につながっていると森氏は言う。

 「リファクタリングの効果の示し方、ツール活用や既存コードの単体テスト環境の整備による品質確保、新規コードのメトリクスチェックを採用した未然防止策の強化など、まだまだ課題は多い」。土樋氏は、今後も取り組みを継続し、成果を出していきたいと述べた。

前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。