1 組み込みソフトウェアとは何か
ここ数年で加速したスマートフォン(もしくはタブレット。以降、端末と称します)の普及によって、これまでパソコンを所持していなかった方にもソフトウェア(アプリ、ウィジェットなどで)に触れる機会がぐっと増えたかと思います。
一方で従来のようなデスクトップパソコンやノートパソコンをご利用の方もいらっしゃると思います。端末グループとパソコングループ、カタチは違えどソフトを扱えるという意味では同じなのに、何が組み込みで、何が組み込みではないのでしょうか?
組み込みという言葉がつくと「特定の目的を達するため」と言ったニュアンスが生まれます。組み込みシステムと言うと「ある目的・機能を達成するためのシステム」となります。スマートフォンで例えるなら、高機能携帯電話ですから必要最低限、電話の機能は持っているわけですし、付加価値の部分でいろいろなアプリが楽しめるようにシステム設計(タッチ反応速度、処理時間、電池容量、音声品質、フルセグなど)が行わていると思います。
では組み込みソフトとは?ですが、ざっくばらんに言うと、組み込みシステム上で動作させるソフトウェア、ということでしょうか。特定の開発言語であったり、OSのことを指すわけではありません。また、一般的に組み込みソフトは対象とする組み込みシステム上で開発することはなく、パソコン上で行われます。組み込みソフトの開発は実際い動作する環境(プラットフォーム)と開発を行うプラットフォームが異なることからクロスプラットフォーム開発(クロス開発)と呼ばれます。よって、Windowsパソコン上でWindowsアプリケーションを開発する場合は、クロス開発とは呼びません。
2 どのように開発するのか
組み込みソフトはクロス開発と書きましたが、問題はWindows(Linux、Mac、その他OSが稼働するパソコン)上で異なる環境のプログラムはどのように作るのか?です。簡単に言うと各環境(プラットフォーム)に合わせた統合開発環境(Integrated Development Environment:IDE)というものを利用します。開発言語(C、C++、Javaなど言語はプラットフォームに依存) でプログラムを書き、IDE上で翻訳(コンパイル) し、組み込みシステムに搭載される制御装置(CPU、MPU、マイコン、FPGAなど)が解釈できる状態(オブジェクトファイルの作成)にします。作成したオブジェクトファイルを記憶媒体に書き込むことで組み込みシステムの実機上で動作確認が行えるようになります。
IDEは使用するシステム(主に制御装置、もしくはオープンソース基板を利用するなら基板)に依存します。今やIDEの代表格はEclipse。様々な言語やプラットフォームに対応している点が魅力です。一方で使い慣れないうちは機能の多彩さに振り回されがちですね。その他は各制御装置メーカーや基板メーカーが提供するIDEです。Arduinoやmbedは広く普及したオープンソース基板ですが、こちらはArduinoIDE、mbedIDEが準備されており、いち早くソフトウェア開発が行えるようになっています。一方でマイコンベースで見ると国内メーカーのRenesasからHEW(制限付きで無料使用可 、バージョンアップ対応終了)やCubeSuite+(制限付きで無料使用可)があり、Eclipseと融合したe2studioというIDEも選択可能です。
3 組み込みソフトで何ができるのか
むしろ大きな問題はこちらでしょうか。私は常々思いますが「何ができるか?」というよりも「何をしたいのか?」です。私個人の意見ですが、ソフトウェアに制約はないと思っています。もちろん、言語仕様や制約によって出来る/出来ないはありますが、やりたいと思った機能はほとんどが実現できるものだと思っています。
ArduinoやGR-SAKURA(RenesasマイコンRX63Nシリーズを使用したArduino互換基板)の解説本を購入し、ひと通り記載内容をトレースした方にぶつかる壁が、こちらではないでしょうか?「次は何をしたらいいのか?」と。
LEDをチカチカさせられます。パソコンとUSBケーブルを介して通信ができます。モーターが回せます。一つ一つの機能を確認するのが、第一段階かと思いますが、次の段階は何を作るかです。そして、様々な制約の中でどうやって実現するのかを考えることです。今はお手軽に各種センサー(温度、湿度、高度、加速度など)が購入できるようになりました。「こんなのがあったら便利だな!」「子供が喜ぶかな?」のように一つの完成形をイメージしてからものづくりに入ると楽しみながら進められるのではないでしょうか。
企業でソフトウェア開発にチャレンジするときも同じだと思います。Arduinoやmbedベースの基板を利用すれば比較的敷居は低い状態から開発を行うことができますから、これを一つの制約と捉え、どんなものを産み出せるのかを担当者・グループで揉ませること自体がものづくりの教育ともなります(ブレーンストーミングやKJ法、名前は知っていても体験できる機会はグッと減りました。このような取り組みを通して業務遂行に必要な思考法を勉強することも大事だと考えます)。
4 組み込み体験から学べること
E.P.ラボでは、組み込みシステムを動かす体験(開発キットを利用)、開発プロセスの体験、開発手法・ツールの体験を通して自分(達)でものづくりができるようサポートいたします。
<
h4 class=”minTitle”> 4.1 組み込みシステムを動かす体験
まずは組み込み開発とはどういったものなのかを体験します。よくわからないものを作りましょうと言ってもイメージが沸かないものです。ArduinoやGR-SAKURAのような手に入りやすい基板とIDEを利用して「組み込みシステムってどういったものなのか」「ソフトウェアを作るってどういうことなのか」「組み込みシステムを動かすってどういうことなのか」を体から先に覚えていただきます。頭での理解は体ができるようになってからでも遅くはありません。
4.2 開発プロセスの体験
ものづくりは粘土やブロックのように何となく組み立てていては中々できません。グループ・チームで開発を行う場合、開発プロセスの手順や情報の流れを整理しておかないと会議のための会議が発生したり、意思疎通が取れなかったり、開発の後戻りが発生したり…開発チーム内の人間関係に影響を及ぼすこともあります。
一人ですべてを作り上げる場合、どのプロセスをどこまで進めたのかを全て自己管理する必要があり、こちらもプロセスの組み方、進め方を知らないと後戻りが多々発生します。
どう進めれば比較的スムーズに開発が進むのか、どこに注意すれば漏れがなく開発が行えるのかなどを開発の模擬体験を通して知っていただきたいと思います。
4.3 開発手法・ツールの体験
実際に開発を進めてみるとだいたい直面するのがアイデア出しの方法、情報のまとめ方、意思決定、スケジューリングでしょうか。それぞれのプロセス場面で必要な手法・ツールは異なり、また開発内容によっても異なるでしょう。私はソフトウェア開発・解析がメインですので、各手法・ツールについて専門家ではありませんが、場面場面に有効な手法・ツールについて内容や使い方をご紹介します。
手法・ツールは組み込み開発のみならず、ビジネス一般でも利用できるものが大半です。入社数年の若い方にもぜひ体験していただき、社員研修後のOJTとしても利用できるかと思います。
4.4 基本法則の復習
学生時代に勉強したであろうオームの法則に始まり、開発を進めるにあたってはソフトウェアだけではなく様々な知識が求められます。組み込みシステムの開発体験を通して、基本法則(主にメカトロ要素)の復習できることもメリットの一つではないでしょうか。
5 推奨するハードウェア
E.P.ラボではオリジナルのキットは販売していません。既にインターネット上で販売されているキットで十分かと思います。Amazonから引用しますと…
新品価格 |
新品価格 |
新品価格 |
新品価格 |
以上の中からArduino基板とエントリーキットがあれば十分です。
参考書籍はAmazon商品ページの推薦に従って
Arduinoをはじめよう 第2版 (Make:PROJECTS) 新品価格 |
を購入しておけば、組み込み開発の体験までは十分でしょう。E.P.ラボが指導する場合は、上記セットが基本構成となります。
後々のことを考えるのであれば、単体でも拡張性が高いGR-SAKURAもいいですね。
GR-SAKURA(RSオンライン)
個人的にはGR-SAKURAがお勧めなのですが、Arduinoの拡張器版(シールド)を利用する予定がある場合は、GR-SAKURAに実装されているLANコネクタが干渉しますのでご注意ください。これはArduino Ethernetでも同様です。