見出し画像

組み込みエンジニアがモバイルアプリ開発に挑戦してみた話

車載カーナビの組み込み開発エンジニアが、新たにモバイルアプリ開発にチャレンジした話です。どのような違いがあったのか、新しく得た気づきや学び直した点など、実体験を交えながら記載していこうと思います。


自己紹介

こんにちは。 SaaS Technology Center モバイル開発部所属の柚原です。
新卒から2年間は、受託開発をする会社で携帯のミドルウェアの開発や、インターネットバンキングのフロントエンド開発に従事していましたが、かねてより自社製品の開発を行いたいという希望があり、縁あって2008年1月からパイオニアにキャリア採用で入社しました。

国内自動車メーカー向けカーナビの組み込み開発が私のパイオニアにおけるキャリアのスタートでした。

その後、以下の製品の開発を担当しました。

  • サイバーナビや楽ナビなどのカーナビ、ディスプレイオーディオの開発


2013年発売のサイバーナビ


2013年発売の楽ナビ


2020年発売のディスプレイオーディオ


  • 協業先との次世代統合コックピット(※)のPoC開発

※統合コックピット:ドライバーへ情報を表示するメーターパネルと、センターディスプレイ、そのすべてのディスプレイと操作要素を統合した ユーザーインターフェースのこと。

上記製品にて、主にUI開発をメインに行っていましたが、2年ほど前からモバイルアプリ開発の分野に足を踏み入れ、現在は次世代向けスマホアプリの開発を行っています。

ここからは組み込み開発モバイルアプリ開発の違いについて、私の実体験を交えて記載してみます。


開発ツール/プログラミング言語の違い

組み込み開発

組み込み開発は、製品ごとにいろいろな種類の開発ツール/プログラミング言語があります。そのため、開発現場によって独自性が強く、次の開発への流用性がしづらいということが課題として挙げられます。

また、使用するツールで困ったことがあっても、Webで調べても解決しない場合がほとんどで、ツールの提供メーカーに問い合わせるしかありません。

開発ツールやプログラミング言語そのものが難しいため、ややハードルが高いのかなという印象です。

パイオニアでのカーナビUI開発においても、専用のUI開発ツールを使って画面開発を行っています。UIと各機能のつなぎ込みに関しては、WindowsやLinux環境でのC++言語による開発が採用されています。

専用のUI開発ツールは、C言語やC++言語などに似せた言語で実装できることが多いですが、誰もが初見となるため、プロジェクトが本格的に始まる前の事前開発において、できるだけルール化および共通化を図っておくことが重要で、実装担当者ごとの品質の差が極力表れないように気を付けて対応を進めています。

モバイルアプリ開発

一方モバイルアプリ開発に関しては、ほとんどの場合Android StudioやXcodeでの開発となり、Java、Kotlin、Swift等のプログラミング言語で統一されているため、知見の流用がしやすいです。

またWebで調べれば大抵のことはわかるため、参入障壁は低いのかなという印象です。

組み込みエンジニアの方はぜひモバイルアプリ開発にも挑戦してもらいたいです!


プロジェクト規模の違い

続いて、プロジェクトの規模の違いについてです。

組み込み開発

さまざまな製品があるため、製品ごとにプロジェクトの規模は異なるかと思いますが、パイオニアの車載カーナビは、ナビゲーションの機能に加え、マルチメディアの機能、通信機能などがあり、よく目に留まる画面から奥の方のあまり使われない画面まで合わせて数百画面あります。

UI開発エンジニアだけでも、ピーク時は数百人規模の人員が関わっており、ソフト全体ではその倍以上のエンジニアが関わっています。

それに加えて、ハードウェアの関係者もいるため、実際にはどれだけの人数が関わっているのだろうか・・・という規模感になっています。

モバイルアプリ開発

一方モバイルアプリ開発に関しては、AndroidやiPhoneのデバイスメーカーによりAPIを呼び出すだけで通信機能や音楽再生機能、位置情報機能など多種多様な機能が利用できるようになっています。

車載カーナビのように、例えば、GPSモジュールやセンサモジュールを組み込み、GPSの情報とセンサの情報を組み合わせて位置情報を割り出し、それをアプリに提供するというような仕組みを作り込む必要がないため、私が関わるアプリで数十人、バックエンド側を含めたとしても組み込み開発と比較して小さい規模感で対応しています。


品質とスピードに対する考え方の違い

組み込み開発

一般的に組み込み開発では、開発する製品がインターネット環境にない場合がほとんどで、問題が見つかってもモバイルアプリのように簡単にバージョンアップが出来ません。

そのため、高い信頼性でシステムが安定動作しなければならないため、品質に対する要求が強く、テストや検証のために時間やコストをかける傾向があります。また、システムの性能や制約によっては、開発のスピードよりも品質や信頼性が優先されることがあります。

パイオニアのカーナビも例外ではなく、一歩間違うと重大な事故につながる恐れがあるため、高いレベルの品質で開発を進めていくよう心がけています。

モバイルアプリ開発

一方、モバイルアプリ開発では、市場やユーザーのニーズに合わせたスピード感が求められる傾向があります。

新しい機能やアップデートのリリースを迅速に行うことが、競合優位性を維持する上で重要であるため、スピードに対する要求が強く、開発サイクルを短縮することが求められます。

一方で、品質やセキュリティにも十分な配慮が必要であり、テストや品質管理のプロセスを適切に導入することが必要です。

どちらの開発においても、それぞれに合った品質とスピードの両立が重要です。より高い品質を求められるのは組み込み開発、よりスピードを求められるのがモバイルアプリ開発だと認識していますが、うまくバランスを取りながら、関わる全員が同じ考え方で開発を進めていくことが重要であると考えています。


開発スタイルの違い

組み込み開発

一般的な組み込み開発の開発スタイルは、要件定義、設計、実装、テスト、リリースの各フェーズを段階的に進める、いわゆるウォーターフォール型の開発が主流かと思います。

組み込み開発でウォーターフォール型が好まれるのは、以下の理由からだと思います。

1.ハードの仕様が明確であり制御するソフトウェアの要件も明確であること
2.ハードに密接に連携するため、要件定義や設計の段階で詳細な検討が必要であること
3. ハードの開発とソフトの開発が並行して進むため、日程管理がしやすいこと
4.ハードの開発とソフトの開発が並行して進むため、フェーズ毎に品質を確認したほうが、品質管理しやすいこと

私が関わっていたカーナビの開発においても、明確な言葉として聞かないものの、この開発スタイルで対応を行っています。またV字モデルも取り入れ、テスト工程を重視して取り組んできました。

モバイルアプリ開発

一方、モバイルアプリ開発は前述したようにスピード感を求められる傾向があると思います。

そのため現在関わるモバイルアプリ開発は、アジャイル型の開発を採用しています。

3週間ごとのサイクルで新機能をリリースし、より早くフィードバックを受け、品質を確保することを意識し開発に取り組んでいます。


最後に

組み込みソフト開発からモバイルアプリの開発に足を踏み入れ、2年が経ちました。

これまで組み込みソフト開発の中でも特にUI開発専門でやってきたため、音楽を再生する仕組み、通信を行う仕組みなどを作ったことがありませんでした。

現在携わるモバイルアプリの開発では、画面をはじめ、音楽再生、アプリストアへのつなぎ込みなど、関わる機能は多いですが調べれば実現することができます。

新しいことでも調べればできないことはないという、モバイルアプリ開発の面白みであり、私の自信につながりました。

パイオニアには、カーナビやNP1といったモバイルアプリ連動の車載製品があり、モバイルアプリで車載器を動かすところもまた面白いと思います。


より豊かなカーライフを提供する、あっと驚く製品を今後も作り続けます。

この記事がみなさんの参考になり、パイオニアという会社、パイオニアの製品に興味を持っていただければ幸いです。

パイオニアの採用にご興味がある方は、以下のリンクよりご応募をお待ちしております!


#仕事の心がけ