技術者の向上心を支えるもの ソフトウェアの見える化で最適化、技術者育成【富士ゼロックス/森 重樹・土樋 祐希・ 降籏 史人】

「世の中を変えるのは技術者なんだ」。富士ゼロックス コントローラ開発本部 コントローラ開発企画グループ グループ長の森重樹氏は、25年近く前に先輩が言った言葉をいまでも鮮烈に覚えていた。米国ゼロックス社のパロアルト研究所が開発したオブジェクト指向プログラミング言語Smalltalkを社内で使い始めたときのことだ。
オブジェクト指向プログラミングは、データや操作する手続きをオブジェクトと呼ぶ1つの部品として扱い、部品を組み合わせてプログラムを記述する。部品だから再利用もできる。ソフトウェアの大規模化への対応が求められていた中、まさにブレイクスルーとなった技術である。
そして現在、ソフトウェアの大規模化は飛躍的に進んだ。
膨大な規模のソフトウェアはどのようにして開発しているのか、その良し悪しの基準とは何か。
同社は、ソフトウェアの見える化を図り、開発品質の向上とともに技術者の育成にも取り組んでいる。
見える化のツールとして導入したのが、プログラミング上の重大な欠陥を自動検出する「Klocwork® Insight™」だ。
技術者が抱える思いや課題も含め、技術にこだわりをもつ同社の取り組みを取材した。

技術で世の中を変える思いの継承

米国ゼロックス社では、有名なコピー機の発明だけでなく、マウス、GUI(グラフィカルユーザインタフェース)、パーソナルコンピュータなどの技術開発によって、身近で手軽に使えるコンピュータの普及に大きく貢献している。
1962年、富士写真フイルムと英国ランク・ゼロックス(現ゼロックス・リミテッド)との合併会社として誕生した富士ゼロックスも、技術で社会に貢献する思いを受け継いでいた。
同社の歴史を紐解くと、1987年に世界初の印刷複写機、1989年世界最高速の複写機、2000年に世界最高速フルカラー電子印刷出版システムが登場。そして、2002年には業界初となるコンビニエンスストアのコピー機から24時間365日、いつでもプリントできる「ネットプリント」サービス開始など、ビジネスや暮らしの可能性を拓く、世界初、業界初の技術やサービスが次々と登場する。
先進技術をもとに、オフィス用複写機、複合機、プリンターなどのハードウェアと、文書管理やセキュリティといったソフトウェア、そして2つを組み合わせて企業の課題解決にまで踏み込んだソリューション・サービスを展開。2010年にはこれまで分散していた複数の研究・開発(R&D)拠点を集約し、「横浜みなとみらい21」地区に富士ゼロックスR&Dスクエアを開設した。商品開発リードタイムの短縮、生産性や品質の向上はもとより「徹底したお客様視点での新しい顧客価値創造」の実現をめざしている。

普通紙で使える電子ペンというドキュメントの新しい活用法

オフィスでドキュメントと聞くと、文書データや書類そのものを思い浮かべる人も多いだろう。しかし、富士ゼロックスでは音声や映像なども含めて、人の思考をかたちにしたものをドキュメントと定義している。オフィスのさまざまなシーンで生まれる「知」をドキュメントとして情報化して共有できる状態をつくりだし、企業の知的生産性や創造性を高めていく。技術の追求とともに、技術によってもたらされる新しい働き方や価値観の提案にも力を注いでいる。
例えば、近年リリースされた「Denshi-Pen」もドキュメントの新しい活用法を提案している。従来、電子ペンで入力する仕組みとしてはペンタブレットが知られているが、タブレット端末の画面上で文字を書かなければならず用途は限られていた。Denshi-Penは紙の上に書く。試しに自分の名前を書いてみたが、電子ペンを使っているという特別な感覚はなかった。Denshi-Penの開発に携わった、コントローラ開発本部 コントローラプラットフォーム第二開発部 土樋祐希氏は魔法の種明かしをこう話す。
「仕掛けの1つは紙にあります。紙に座標を書いたデジタルコードを複合機で印刷します。私が担当したのは、この複合機でデジタルコードを印刷する部分です。最速で出力できるようにいろいろと工夫しました。また、もうひとつの仕掛けがペンにあります。ペンには小型カメラが搭載されていて紙上のデジタルコードを撮影し、その撮影データから手書き情報を読み取るという仕組みです。あとはパソコンに取り込んでOCR(光学文字認識)や表計算のソフトなどで自在に活用できます」
Denshi-Penなら、さまざまな帳票フォーマットへの対応が容易に行えるため、生産管理や保守点検など、電子機器を持ち込みにくい現場での手書き情報の電子化も推進できる。
Denshi-Penのような、今まで誰も開発したことがない新しい技術への挑戦は、自分がつくりだしていくという技術者ならではの喜びがある。その一方で、機能の追加や改良などの日常業務は、自分がものをつくりだしているといった実感が少ない。富士ゼロックスのソフトウェア技術者も通常は機能追加や改良などの業務が多いのが現状だ。その中で、モチベーションを高め、技術のスキルアップを図り、いかに開発効率や品質の向上を実現していくか。富士ゼロックスは技術者の育成にもこだわりをもって取り組んでいる。

開発者自身がコードを書いた段階でバグを自動検証

富士ゼロックスのコントローラ開発本部は、スキャナから読み込んだデータを加工して、FAXやメールで送るといった複合機の多彩な機能を実現していくソフトウェアの開発を行っている。土樋氏が入社した10数年前と比べ、ソフトウェアのプログラムは大規模かつ複雑になってきているという。
「10数年前に複合機の販売が始まりましたが、当時は機能を制御するプログラムも数百万行でした。それが、お客様のニーズに応えるかたちで機能がどんどん追加され、プログラムも追加や改良が繰り返し行われていくうちに今では1千万行以上の規模です。全体を理解しているエンジニアもだんだん少なくなっています。また、新しく技術者が入社したときには大きなプログラムがすでにあって、その中をメンテナンスするといった仕事が多くなってきているのが最近の特徴です。当社に限らずソフトウェアを開発している企業のほとんどは同じ状況にあると思いますが、こうした状況のもと開発の品質面や技術者の育成面で多くの課題があります」
目で良し悪しを確認できる建築物などとは異なり、プログラムで表現した機能はコードの段階では動作を目で見てチェックすることはできない。コードが正しいのか間違っているのかはレビューで判断するしかないが、コードを書き終えた後にメンバーを集めてレビューを行い、問題点を発見していては手戻りも発生する。品質を追求するならレビューは数回繰り返す必要もある。またチームによってレビューに差が出てくるのは否めず均質化は難しい。
上流工程でいかに問題点を改善していくか。土樋氏はある展示会でバグを自動検出できる「Klocwork Insight」と出会う。バグを自動検出できるというメリットのわかりやすさが、導入に向けて経営層に対してアピールしやすかったと土樋氏は話す。「ちょうどKlocwork Insightを評価しているときに森さんに目を留めていただいて、導入してみようということになりました」
同社が「Klocwork Insight」を高く評価したポイントは、開発者がプログラムを書いた後に自分で行うデスクトップ解析と、開発者がリリースしたプログラムに関して一括して実施するシステム解析の両方ができる点だ。
森氏も開発者自身が活用できることについて「プログラムを作成した段階でバグを発見できれば、開発にかかるリードタイムの短縮や作業の効率化、工数削減に大きく貢献します。特に、レビューで見つけにくい、使用可能なメモリ容量がだんだん減っていくメモリリークなどのバグも自動検出できることは大きなメリットです」と話す。
また、開発品質や教育的効果について、開発環境全体の管理や開発品質の向上のための改善活動を行っている、コントローラ開発本部 コントローラプラットフォーム第二開発部 降籏史人氏はこう話す。
「ソフトウェアの開発効率や品質向上のために自動化は重要なポイントの1つです。人手に頼らず自動的にバグを検出できることで、安定した品質の維持と開発作業の効率化の両面を実現できます。また、これまで技術者がプログラムを書いているとき、第三者がきめ細かくチェックすることは時間的にも困難でした。現在は、バグの自動検出結果というデータに基づき、開発者自身はもとより第三者も客観的に判断ができるようになりました。開発者自身が、なぜバグがでたのかという気づきを得ることで自身の中で次の改善にもつながります」
現在、「Klocwork Insight」の活用はコントローラ開発本部全体に広がっているという。

森 重樹 氏
土樋 祐希 氏
降籏 史人 氏

目に見えないソフトウェアの良し悪しを判断する基準

ソフトウェア開発の品質における課題として、バグとともに重要なポイントが保守性である。複雑化したソフトウェアでは、ある機能を実現するためには複数の他の機能や外部環境と連携しなければならず、コードを変更することでシステムの他の部分に影響を及ぼす範囲も拡大する。品質へのリスクや影響範囲を特定するための手間は増えるばかりだ。また開発中でも仕様変更に伴い、ソフトウェア開発には柔軟な対応が求められる。保守性の高いプログラム構造への見直しも急務となっている。
コントローラ開発本部では、ソフトウェア全体の最適化を図るリファクタリングを進めている。リファクタリングとは、プログラミングにおいて外部から見える動作を変えることなく、コードの構造を整理すること。しかし、整理するにしても、ソフトウェアの良し悪しは何か。基準をどうやってつくっていくのか。根本的な問題を解決しなければ先に進むことはできない。
「プログラム上の細かい機能の追加や改良ばかりをしていると、どうしても視野が狭くなります。ソフトウェアをどうやってつくるのか。なぜソフトウェアがつくられたのか。ソフトウェア工学の観点から見たときに、ソフトウェアが良いとか悪いというのはどういうことなのか。『Klocwork Insight』のソフトウェアメトリクス(品質評価基準)やアーキテクチャの視覚化などの指標を使いながら、若い技術者とともに安定した品質の維持と合わせてリファクタリングを進めています」(土樋氏)
ソフトウェアの見える化は若い技術者の育成にも役立つ。森氏も「従来のコードのどこが悪くて、修正した結果、どう最適化できたのか、視覚的にわかるため理解しやすい。スキルの向上も実感できるので、技術者自身がもっと勉強しないといけないというモチベーションの向上にもつながります」と話す。
2012年9月、組み込みソフトウェアのコンテスト「ETソフトウェアデザインロボットコンテスト」通称、「ETロボコン」の地区大会が始まる。富士ゼロックスは2010年に参戦して以来、3年連続の出場だ。土樋氏は2008年に自身が出場し、その後、ロボコンをソフトウェア教育の場として使用する活動を2010年に立ち上げ、出場チームのサポートを行っている。ETロボコンの出場も、ソフトウェアとは何かを若い技術者に知ってもらうきっかけになればとの思いもあるという。「ソフトウェアはただコードを書くだけではありません。ロボットは物理的に動くので、外部環境を正しくとらえて分析し、それに対応する必要があります。また、ロボコンではモデル(設計資料)が評価されるので、他の人に自分たちの設計をどのように正確に伝えるかということを学んでもらえれば、と思っています」
取材の最後に、エンジニアとして大切なことは何かを質問した。「エンジニアであるという自覚を常にもつこと」と降籏氏。「手段にではなく価値にこだわる。自分が使っている技術が、周囲にとってどういう価値を生み出すのかをきちんと考えるように心掛けている」と土樋氏。そして、森氏が口にしたのが「世の中を変えるのは技術者なんだ」という冒頭の言葉。その後にこう続く。「その気概をいつも大切にもっていたい」

遠藤 守信 教授

導入された製品情報

Klocworkについて

「Klocwork」は、C、C++、Java、C#のプログラミング上の重大な欠陥を自動検出する静的ソフトウェア欠陥・脆弱性検証ツールです。高度な静的解析手法を用いて、品質と信頼性の問題、セキュリティの脆弱性、保全性の問題など700種類以上の問題を検出可能です※。また、開発者自身が実行できるデスクトップ解析と、開発者のコードを一括して解析するシステム解析の両面をサポート。豊富なソフトウェアメトリクスで開発プロセスを管理することで安定した品質の維持はもとより、アーキテクチャの視覚化と最適化によってリファクタリングの推進を支援し、保守性の高い構造への見直しもサポートします。※バージョン9.5時点、C/C++、Java、C#の合計のチェック項目数

insight
PAGETOP