組み込み業界と半導体業界の積極的なコラボで新市場の創造を ―― 機器制御のためのAPI「OpenEL」を標準化
2012年は,エルピーダメモリの破たんに始まり,ルネサスエレクトロニクスの経営再建など,半導体業界にとって非常に厳しい年となっています.また,半導体業界の大口顧客である家電メーカにおいても,ソニー,パナソニック,シャープの業績悪化など,暗いニュースが続いています.
これらの原因として,いろいろな分析がありますが,やはりビジネス・モデルが変化してきていることが最大の原因ではないかと思います.モジュール型製品が台頭し,「すり合わせ型の開発」から「組み合わせ型の開発」への変化,つまり垂直統合モデルから水平分業モデルへの変化が背景にあると思います.製品アーキテクチャとそのインターフェースが標準化されたことにより,部品さえ入手できれば誰でも同じような製品が作れるようになりました.その結果,メーカ間の価格競争を引き起こし,コストを安く抑えられるメーカが勝つことになりました.
しかし,垂直統合モデルであっても最近のApple社のように成功している企業が存在するのも事実です.いったい何が違うのでしょう? それは,iPod,iPad,iPhoneのようにみずから新市場を創造する戦略にあると思います.
新市場創造の戦略といえば,かつてのソニーやその製品群を思い浮かべる方も多いでしょう.例えば,顧客に新しい用途を提案したウォークマンのように,顧客からの要望がまだ存在しないうちにひそかに製品を開発し,タイミングを見計らって「市場をアッと言わせるような製品」を発表するという方法です.
未開拓の新市場を開拓する「ブルーオーシャン戦略」も有名ですが,LSI設計においては,低コストと顧客にとっての高付加価値の両方を実現するのは,そろそろ限界かと思います.みずから新市場を創造することが求められており,そのために新たなチャレンジが必要とされています.ここでは,そのチャレンジの一つの提案として,「OpenEL」について紹介したいと思います.
●「すり合わせ型」から「組み合わせ型」への移行を促す標準APIを策定
OpenEL(Embedded Libraries)とは,センサ入力やモータへの出力など,機器制御のためのAPIを標準化し,ソフトウェアの移植性,再利用性,生産性を向上するためのプラットフォームです(図1).具体的には,組み込みソフトウェアのAPI仕様(ライブラリ)のことで,デバイス・ドライバなど,ハードウェアを直接制御するレイヤにおけるソフトウェアの実装方法を規定し,共通化を図るものとなります.
図1 OpenELプラットフォーム
OpenELは,センサ入力やモータへの出力など,機器制御のためのAPIを標準化し,ソフトウェアの移植性,再利用性,生産性を向上させるためのプラットフォームである.
2011年度から一般社団法人 組込みシステム技術協会(JASA)技術本部 応用技術調査委員会 プラットフォーム研究会によって仕様策定などの標準化作業が進められており,2012年9月現在,OpenELバージョン0.1.1が公開されています(こちらからダウンロード可能).サンプルとしてOpenELのAPIを実装したライブラリもオープン・ソース・ソフトウェアとしてBSD(Berkeley Software Distribution)ライセンスで配布されています.
OpenELを採用すると,機器制御のための組み込みソフトウェアの開発方法が,「すり合わせ型」から「組み合わせ型」へ変化し,一部の高度な技術者への依存がなくなることでしょう.また,コーディングのミスもなくなり,レビュー時間も短縮されます.品質の向上や作業工数の削減につながると期待できます(図2).
図2 OpenEL標準化のねらい
●ロボット分野に絞ったOpenEL for Robotを公開
OpenELの用途をロボット分野に絞ったものが,OpenEL for Robotです.2012年5月に発表されたバージョン0.1.1では,JASAが主催するETロボコンの走行体に採用されているLEGO社の「MINDSTORMS NXT」に対応しています(写真1,表1).
写真1 MINDSTORMS NXTの外観
表1 OpenEL for Robot version 0.1.1のAPIの例
API | 説明 |
elLightSensorSetLED() | 第1引き数で指定したポート ID の光センサの赤色LED を点灯・消灯する.点灯する場合は第2引き数を true,消灯する場合は false にする |
elMotorSetBrake() | 第1引き数で指定したポート ID のモータのブレーキを有効・無効にする.ブレーキを有効にする場合は第2引き数を true,無効にする場合は false にする |
elMotorResetEncoder() | 引き数で指定したポート ID のモータのエンコーダの値をリセットし,現在の回転角を基準値にする |
elMotorSetSpeed() | 第1引き数で指定したポート ID のモータの回転速度を第2引き数で指定した値に設定する |
elMotorSetAngle() | 第1引き数で指定したポート IDのモータを第2引き数で指定した角度まで第3引き数で指定した回転速度で回転させる.第2引き数の角度の単位はラジアン |
筆者らの会社(アップウィンドテクノロジー・インコーポレイテッド)では,Interface 2012年6月号付属のFM3マイコン基板を使用したライン・トレース・ロボット(写真2,同誌2012年10月号に関連記事を執筆)や,RX63Nマイコンを使用したライン・トレース・ロボット(写真3)においてバージョン0.1.1を検証・評価しました.いくつかの課題は発見されましたが,特に大きな問題もなかったため,十分実用に耐えうるアイデアであることが分かりました.バージョン1.0では,実際にロボットを開発しているJASA会員企業やパートナと共に,実際の産業用ロボットやサービス・ロボットを対象に実用化する予定で仕様策定を進めています.
写真2 FM3+CQBB-LTRライン・トレース・ロボット
写真3 RX63N+CQBB-LTRライン・トレース・ロボット