- - PR -
組み込み開発の現状とビジュアル開発環境の有効性
近年、携帯電話や車載機器、デジタル家電などに搭載される組み込みソフトウェアは、開発規模の肥大化、製品サイクルの短縮に伴い、ソフトウェアの品質確保や開発効率の向上が大きな課題となっています。
また、組み込みソフトウェアに携わる開発者も年々増加しており、独自のエディタ+コマンドラインでのビルドやデバッグなどの職人的な開発では、開発の生産性や品質を保つことが厳しくなっているのが現状です。
このような背景から、ビジュアルで高機能な開発ツールの導入に注目が集まりつつあります。
そこで、本連載ではEclipseのC/C++開発機能の概要を紹介し、Eclipse C/C++開発環境の構築方法について解説します。
Eclipseの有効性と組み込み開発での利用
ご存じのとおり、Eclipseはオープンソースの統合開発環境です。もともとJava言語のための統合開発環境としてIBMによって開発されましたが、いまではJava以外にもC/C++、PHP、COBOLなどの開発言語にも対応しています。
とりわけ、組み込み向けのC/C++開発環境については、組み込みソフトウェア向けプロジェクト「Device Software Development Platform(DSDP)プロジェクト」が発足し、Eclipse C/C++開発用ツール「CDT(C/C++ Development Tools)」と連携した機能拡張を行っており、“今後10年でEclipseが最も発展していく領域だ”といわれています。
また、いままで独自GUIで提供されていた商用製品も、Eclipseの機能拡張の容易さから、Eclipseをベースとした製品へ移行し始めています。
| 【参考記事】 Eclipse DSDPプロジェクトについて ・Eclipse Foundationのプロジェクト最新事情 組み込み開発でもEclipseを! |
以下に、組み込みC/C++アプリケーションの開発にEclipseを利用するメリットを示します。
C/C++の高機能なグラフィカル開発環境を無料で利用できる
EclipseのC/C++開発環境は“無償”で提供されており、商用製品に勝るとも劣らない機能を無償で利用できます。EclipseのグラフィカルなGUIを利用することで、コンパイラやデバッガなどのコマンドを実行せずに、効率的に開発を行えます。
さまざまな機能をEclipseの統一されたインターフェイスで利用できる
今回紹介するC/C++開発環境のほかにも、“構成管理クライアント機能”や“UMLモデリング機能”などさまざまな機能をEclipseの統一されたユーザーインターフェイスで利用できます。そのため、ツールごとに使い方を覚えるといった導入時の問題点から解放されます。また、“エディタなどで開発した成果物をSubversionなどの構成管理サーバにチェックインする”といった成果物の連携をシームレスに行うことができます(図1)。
図1 Eclipse導入前、導入後のイメージ
| 【参考記事】 EclipseのSubversionを使った構成管理について ・CoolなEclipseプラグイン(15) バージョン管理に便利なSubversiveプラグイン |
| 【トピックス】 NECではSDAM(SystemDirector Application Modeler)という無償のEclipse UML Editor を提供しています。 |
Eclipseプラグイン機能により、独自カスタマイズも容易
ご存じのとおり、Eclipseは“プラグイン”を追加することで、さまざまな機能を追加できます。また、Eclipse自体にPDE(Plug-in Development Environment)と呼ばれるプラグイン開発のための環境も提供されており、容易に機能を拡張できます。
ここで、Eclipseの導入事例を2つ紹介します。
まず、「開発者がそれぞれ別のエディタを使用している現場に構成管理ツールを導入するケース」です。
別々のエディタを利用している状況で構成管理ツールを導入すると、本来密接に連携しなければならない業務を別々のツールで行うことになります。
その点、Eclipseは“エディタと構成管理ツールが統合”されており、コーディング時と同じ操作性でファイルチェックアウト、チェックインができるため、構成管理と併せた開発を効率的に行うことができます(図2)。
図2 Eclipseは、エディタと構成管理ツールが統合されている
次に、「Intel x86系のLinux PCに実機のシミュレーション環境を構築したケース」です。
Eclipseを適用する前では、エディタでコーディングした後にコマンドラインで、ビルド、デバッグする必要があります。組み込み開発に慣れた技術者であれば、エディタ+コマンドラインのデバッグでも十分に開発できますが、開発に不慣れなメンバーの場合、gdbコマンドを覚える必要があり、効率的に開発を行うことが困難です。
しかし、Eclipseを適用すれば、統一されたグラフィカルなユーザーインターフェイスで、コーディング 〜 ビルド 〜 デバッグまでを行うことができるため、開発に不慣れな技術者でも効率的に開発を行えます。gdbのブレークポイントや変数のウオッチコマンドなどを覚えることなく、マウス操作でデバッグを行えます(図3)。
図3 コーディングからデバッグまでEclipseで統一
Eclipse CDT、RSE、Ecloxとは?
CDTとは?
CDTは、“Eclipse上でC/C++開発を支援する”プラグインです。外部コンパイラ、デバッガと連携したビジュアルな開発環境を提供します。CDT自体にはコンパイラ、デバッガは含まれておりませんので、別途コンパイラ、デバッガは準備する必要があります(図4)。
図4 CDTプラグインの概要
また、リモートマシンがgdbserverに対応している場合には、ホストマシン(Windows)側から、リモートマシン(Linuxなど)上のアプリケーションをリモートでデバッグすることも可能です(図5)。
図5 リモートデバッグも可能
以下に、CDTの提供機能を示します。
C/C++エディタ機能
C/C++アプリケーションのコーディングを支援する高度なエディタ機能を提供します。
- シンタックスハイライト
- コード・アシスト
- テンプレート
- リファクタリング支援
- C/C++検索
グラフィカルビルド機能
コンパイラと連携したグラフィカルなビルド機能を提供。makefileを自動生成する機能も提供しています。
- ビルドツール連携
- makefile自動生成
グラフィカルデバッグ機能
gdbと連携したグラフィカルなデバッグ機能を提供。gdbの一通りの機能をEclipseのGUIから利用できます。
- ブレークポイント設定
- 実行制御
- 変数ウオッチなどのウオッチ機能
RSEとは?
次にRSE(Remote System Explorer)について説明します。
RSEは、Eclipse DSDPプロジェクトのサブプロジェクトである、Target Managementが提供しているプラグインです。“Eclipse上からリモートマシンにアクセスして、FTPやターミナルソフトウェアの機能を利用”できます。接続プロトコルはssh、ftp、dstore(RSE独自プロトコル)に対応しています(図6)。
図6 RSEプラグインの概要
RSEでは、以下の機能を提供しています。
リモートファイルシステム管理機能
リモートマシンのファイルシステムを表示、編集する機能です。ローカルマシンからのファイル転送やリモートシステム上のファイル検索などさまざまな機能を提供しています。
- ツリービュー、テーブルビュー形式でのリモートファイルシステムの表示
- コピー、ペースト、ファイル編集
- アーカイブファイル操作
- GUIでのリモート検索
リモートシェル(コマンド)実行機能
リモートマシンのコマンドを実行する機能です。Eclipseからリモートマシンのコマンドを実行し、その結果を受け取ることができます。
- リモートシステムのコマンド実行機能
リモートデバッグ機能
CDTのデバッグ機能と連携し、リモートデバッグを支援する機能です。リモートマシンへのファイル転送やパーミッション設定を自動で行います。
- リモートマシンへの自動ファイル転送およびパーミッション設定
- CDTデバッグ機能と連携したリモートデバッグ支援
Ecloxとは?
続いて、Ecloxについて説明します。
Ecloxは、Ecloxプロジェクトが提供しているプラグインで、“ドキュメント作成ツールdoxygenをEclipse上から利用”できます(図7)。
図7 Ecloxプラグインの概要
Ecloxでは、以下の機能を提供しています。
doxygen構成ファイルの作成機能
doxygen構成ファイル(生成するドキュメントのフォーマットなどを定義するプロパティファイル)をEclipse上で作成する機能を提供します。
- doxygen構成ファイル(ひな型)の作成
- doxygen構成ファイルエディタ
doxygenコマンドの実行制御
doxygenコマンドをEclipse上から制御します。
- doxygenコマンドの実行・停止
関連記事 設計/開発技法
- 特集:Javaは組み込みに“不向き”は本当か?
- 連載:BREWアプリケーション開発入門(全10回)
- 連載:イチから作って丸ごと学ぶ! H8マイコン道(全12回)
- 連載:−ザ・組み込み−ソフトウェアのハードウェア化(連載中)
- 連載:組み込みLinux開発入門(全3回)
- 連載:T-Engineプログラミング入門(全4回)
- 連載:Symbian OS開発の勘所(全10回)
- 連載:Symbian OSアプリ開発の手引き(連載中)
- 連載:解説! ロボット開発環境Robotics Studio(全4回)
- 連載:Robotics Studio活用術 はじめて作るサービス(全5回)
- 連載:生産性向上への道 Eclipseで行うC/C++開発(全4回)
組み込み開発フォーラム 新着記事
- 世界が広がる!! クラウド時代の組み込み機器(2010/9/7)
- 決まらない要求の開発と管理(2010/9/6)
- 組み込み向けAndroid「Embedded Master 2」公開へ(2010/9/3)
- マルチコア時代のシミュレータ「Wind River Simics」(2010/9/2)
- 仮想ファイルシステムのありがたみを知ろう(2010/9/1)
- 富士ソフト、Androidでワンセグを実現するパッケージ(2010/8/31)
- 動きの開発、速度制御ロジックのモデリング(2010/8/30)
- リバースモデリング技術を応用し、複合機開発を支援(2010/8/30)
- 3D描画エンジンeruption、Android搭載端末に採用(2010/8/26)
- ネットワーク対応機器の脆弱性を開発段階で阻止(2010/8/25)
- 機器のマルウェア対策はホワイトリスト型が効く(2010/8/20)
- 構造化プログラミングの苦難の歴史(2010/8/17)












