【EDSF2011】ソフトウェアの再利用と先行開発に関するキヤノンの取り組み
2011年11月17日、パシフィコ横浜でEDSFair2011Nov/ET2011の共同企画セッションが開催され、キヤノンにおけるソフトウェアの再利用と先行開発に関する事例が紹介された。
事例を発表したのは、キヤノン株式会社 デジタルプラットフォーム開発本部 鈴木 ソフトウェア基盤第二開発部 主席研究員 鈴木茂夫氏。鈴木氏は製品開発部隊に開発プラットフォームを提供する立場で、具体的には各製品ドメインに最適な組込みプラットフォームおよび組込みOSの提供を担当。昨今、組込みシステムにおけるソフトウェアの開発規模が増大する中で進めているという、ソフトウェア開発の生産性向上に向けた取り組みの具体例を紹介してくれた。
まず鈴木氏が紹介したのは、ソフトウェアの再利用に関する取り組み。
キヤノンでは、従来から製品の差分開発は進められていたが、最近では様々な製品の枠を超えてソフトウェアを再利用する取り組みを進めており、OSやミドルウェアなど基盤となるソフトウェアは製品ドメインを超えて共通利用。各製品に搭載される通信機能やユーザー・インタフェース、コンポーネント間通信機構なども基盤ソフトウェアとして共通利用しているほか、基盤ソフトウェア上で動くより上位のソフトウェアに関しても、コンポーネント思考開発によって機能ソフトとして部品化している。
また、各製品ドメイン内でのソフトウェア再利用も進められており、例えばコントローラソフトのフレームワークを製品ごとに構築して共有。シーケンス制御やジョブ制御などはフレームワークとして実装されているため製品間で流用できる形にしている。OSに関しては、小型で軽量の内製RTOSとLinuxの2種類のOSを用意し、その組み合わせによりローコスト製品から高機能製品まで様々な製品のスケーラビリティに対応しており、2種類のOSのAPIをできるだけ共有化しているという。
更に、コンポーネント間通信機能をマルチ・プロセッサ構成に対応させることにより、上位で動く機能ソフトの可搬性の実現を目指しており、これにより機能ソフトの開発者はプロセッサ構成を気にすること無くソフトウェアを開発することが出来るようになるという。
続いてシミュレーターを用いたソフトウェアの先行開発の話。
鈴木氏によるとキヤノンでは、シミュレーター導入の戦略としてまず基盤ソフトウェア開発用のシミュレーション環境を構築。その環境をベースに製品開発に必要なモデルを追加し、各製品毎の専用シミュレーション環境を構築してコントローラソフトの開発に利用するという2段構えの形をとっている。基盤ソフトウェア開発用のシミュレーション環境は、2種類のOSに合わせてOSシミュレータと仮想ハードウェアを用意しており、仮想ハードウェアはSynopsysのVirtual Platformを利用。OSシミュレータはRTOS用、仮想ハードウェアはRTOS/Linuxどちらにも使えるようにしている。
鈴木氏によると、2種類のシミュレーション環境にはそれぞれ特徴があり、OSシミュレーターは内製ツールのため低コストで多くの設計者が使えるというメリットがあるが、ソースレベルのシミュレーションしか出来ないため、ドライバ開発には利用できない。それに対して仮想ハードウェア(以下、VP)は、オブジェクトレベルの動作検証が可能であり、ドライバ開発や性能見積りにも使えるというメリットがあるため、用途に応じてうまく役割分担させる形で活用しているとの事。具体的には、OSシミュレーターはネットワークやミドルウェアなど上位レイヤのソフトウェア開発に、VPはドライバなど下位レイヤのソフトウェア開発とソフトウェア全体の最終動作検証に利用しているという事だった。またキヤノンでは、VPを開発初期段階のHWとSW機能分割にも利用しており、基本的なVP上でシーケンスソフトを最初に作り、それを元にアーキテクチャ探索を実施。その結果からHWとSW機能分割を行なっているという。
実際にVPを用いてネットワークカメラのコントローラソフト開発を行った最初の例では、ハード設計終わった段階からVPを利用する形であったが、ハードウェアの実機が完成する前にソフトウェアの先行開発を進める事ができ、ESが完成したときには基本的な処理シーケンスの動作検証を終える事ができた。VP利用にあたっては、シミュレーション速度向上のめのモデルの抽象度の上げ方が難しく、ツールに慣れるのにも苦労したという。
講演の最後に鈴木氏は、ソフトウェア再利用の課題として、ソフトウェア資産のバージョン・コントロールやメンテナンス、開発現場のサポートなど運用面の課題を挙げ、既存のソフトウェア資産をどのように新しい再利用性の高いソフト構造へ移行するかも重要な問題と指摘。ソフトウェアの先行開発に関しては、ハードウェア・モデルの充実や再利用と合わせて開発ターゲットに合わせたサポートが重要であるとし、ソフトウェア開発者を説得して先行開発環境の構築に参加してもらうと、VPを用いたソフトウェアの先行開発が非常に楽になると語っていた。