今回は組み込みソフトウェアとアプリケーションの開発の違いについて書かせて頂きたいと思います。
組み込みソフトウェアは電話機、FAX、ガラケー(携帯電話)、Wifi等の通信機器から冷蔵庫、洗濯機、クーラー等の大型家電製品、時計、カーナビ、掃除機等の小物家電を動かすためのソフトウェアになります。
アプリケーションはいわゆるPCアプリケーション、スマートフォン(AndroidスマートフォンやAndroidタブレット、iPhone、iPad等)上で動作するソフトウェアを指します。
私が組み込みソフトウェアとアプリケーション両方を経験してきて、感じてきた違いを少しご紹介したいと思います。
ソフトウェア自体の違い
電力面
組み込みソフトウェアもアプリケーションも電源がなくては動作しませんが、その利用可能な電力量に大きな差があります。電力を一番消費する要素としてはCPU、液晶・有機LED等のディスプレイがあります。
しかし同じ携帯電話でもスマートフォンとガラケーでは搭載している電池容量が大きく異なります。
時計の豆電池もしかりです(スマートフォンの電池と比較するとかなりの小容量です)。
このため、組み込みソフトウェアの開発はただ動くことだけを目的とするわけではいけません。
限られた電力でどれだけ効率よく仕事をさせることができるかが重要になります。
これを考える作業は一般的には省電力設計と呼ばれています。
ざっくりとガラケーの場合、下記のようなしくみで省電力設計が行われています。
- 電話待受け中(画面がスリープ状態)
→CPUの回転率(クロック数と言われています)を落とす(CPUによる電池消費量を減らす)。 - 着信中、通話中
→CPUの回転率を上げる(CPUによる電池消費量を通常に戻す)。
日常で例えると、クマの生活パターンに近いです。
電話待受け中 = 冬眠状態
着信中、通話中 = 冬眠から覚めてえさを求めて活発に動いている状態
まとめ
組み込みソフトウェア開発の場合、電力の消費も気にしながらソフトウェアを設計する必要がある。
アプリケーション開発の場合、あまり電力の消費を気にしなくても、比較的、自由にソフトウェアを設計することができる。
ここで紹介した電力面に限らず、割り込み処理のスケジューリング等組み込みソフトウェア開発はアプリケーション開発よりも設計の自由度が極端に低いということです。
ですので、ソフトウェア開発の世界で早く指導的立ち場に慣れる程のスキルレベルに達したい場合は断然、アプリケーション開発が向いています。
開発をする上でプラスになる性格
私の経験から言いますと、それぞれ、下記のような性格の人が向いていると思います。
組み込みソフトウェアに向いている人
- ハードウェアが好きな人
省電力設計のためにCPUの回転率を制御したりする必要があるため、ハードウェアの資料も理解しなくてはなりません。 - じっくりと時間をかけて考えることが向いている人
割り込み処理やタスクまたはスレッド等の様々なタスクのタイムチャート(スケジュール表)を考える必要があります。 - ものづくりができれば報酬がそれほど多くなくても幸せという人
職人肌の人や他人に関係なくマイペースな人が多かった印象です。
アプリケーションに向いている人
- ものづくりも好きではあるが報酬も大事という人
- とにかく短時間で売れるものを作りたいという人(いわゆるエンジニアでありながら商人気質な人)
- 若い人(20~30代)
アプリケーションは技術革新が早いので、日々、新しい技術を習得し、使いこなす能力を身につけることが必要になります。
このため、40代よりも若い人の方がトータル的に仕事面で優位になる傾向が強いです。40代でも引き続き、アプリケーション開発で勝負をかけようとする人は若い人に負けないように体力と気力を維持する努力が必要になってきます。
キャリアプラン
組み込みソフトウェア開発のキャリアプラン
- これまでの長い知識と経験をいかして生涯、設計者、プログラマーとして仕事をする人も多いです。
- 意外に指導的立場を目指す人は少ないように思います(どちらかというと現場にずっと携わっていたい等)。
アプリケーション開発キャリアプラン
技術革新が早いため、早い人で20代、平均的に30代、遅れて40代で現場(設計者、プログラマー)を離れて、管理者を目指す方が多いです。
※よくIT業界の35歳限界説という迷信がありますが、これは、アプリケーション開発の現場で活躍できる年齢のことを指しているのではないかと思っています。
まとめ
ソフトウェア開発が好きで現場一筋で一生、行きたいという人はアプリケーション開発よりも組み込みソフトウェア開発のほうが断然、向いていると思います。
一方で将来、起業または管理者を第一目標に目指す人はアプリケーション開発が断然、向いていると思います。
独断と私見で書かせていただきましたが、組み込みソフトウェア開発とアプリケーション開発もしどちらかにしようか迷っている若者がいましたら、少し参考にしてみてください。