このページの本文へ

セミナー・イベント情報@プログラミング+ 第26回

1/30アイデアソン、2/20ハッカソンをオンライン開催

総額100万円コンテストに挑戦! SDLアプリ開発スターターガイド 2021

2021年01月23日 18時00分更新

文● 久田智之(株式会社アナザーブレイン)

  • この記事をはてなブックマークに追加
  • 本文印刷

 国内外の自動車メーカーによるオープンソースの標準規格「SDL」(Smart Device Link)。スマートフォンアプリやWebアプリとして開発、走行スピードやガソリン残量などの車両情報を参照もでき、カーナビなどの画面や音声で操作するものです。このSDLアプリ開発の開発を競うSDLアプリコンテストが作品募集中(〆切は2021年2月21日に変更になりました)。これに向けて、2021年1月30日(土)にアイデアソン、2月20日(土)にハッカソンがオンラインにて開催。これからSDLアプリをはじめる人にもやさしいスターターガイドをお届けします。

SDLを標準搭載したスズキ「ハスラー」のディスプレイ

SDLを知って、カーナビ画面をプログラムしよう!

 SDLは、カーナビなど車載機(車載HMI:後述)でさまざまな利便性を提供するアプリを動かすための規格です。SDL対応の車載機は、トヨタのカローラシリーズやスズキのハスラーなどに搭載がはじまっています。

 参考記事:スマートフォンと車をつなぐSDL規格。その魅力とは!?

 その「SDLアプリ」とはどんなものか? まず知っておくべきポイントとして《SDLアプリには2つのタイプ》があります。どちらも、走行スピード・位置情報・ウィンカーの点滅状態などの車両情報を参照でき、SDL対応車載機の画面や音声を使って操作します。

(1)スマートフォンアプリとして開発(スマホアプリ開発者向け)

 iOS、Androidを搭載したスマートフォンをUSBケーブル、BluetoothまたはWiFi経由でSDL対応カーナビなどに接続。スマートフォンアプリから車載機の画面に必要な情報を出したり、タッチ操作から入力を受付けます。使い勝手としては、アップルのCarPlayやグーグルのAndroid Autoに似たものになりますね。

(2)JavaScriptによるアプリとして開発(Webアプリ開発者向け)

 2020年春のバージョンアップで追加されたもので、JavaScriptで書いたスクリプトをSDL対応のカーナビなど車載機にダウンロードして動作させます。Webアプリの開発者の方々にも気軽に作ることのできる《いちばんハードルが低い作り方》です。

 まだSDLアプリの開発について調べたこともSDLアプリの開発経験のない方でも、1月30日(土)のアイデアソン、2月20日(土)のハッカソンに参加できます。参加者同士の情報交換のほかにテクニカルサポートもあるのでその実際が分がるでしょう。

 なお、SDLは、2020年春に続いて、秋にもさらなるバージョンアップがされました。それによってHTML5(Jamstack)ベースのWebアプリを開発すればそのまま動く形となりました。表示に関してはもうブラウザーそのものともいえます。これはクルマの内部も大きく変化してくる時代により柔軟なアプリ画面が求められるからだと思われます(それでもデータ取得などの標準の意味は大きい)。ただし、この記事の執筆段階ではテスト環境がまだ整備されておらずこれからに期待というところです。

 SDLアプリの開発には、上記2つの開発環境をお持ちであればとくに新たに必要なものはありません。いくつかのテスト/デバッグのための実行環境がありますが、「Manticore」というWebベースのシミュレーターが便利です。カーナビ画面が表示されると同時に、クルマの走行状態をWebフォーム上のスライダーやトグルボタンなどで設定して使います。Androidアプリなら、Manticoreを開くと同時にAndroid Studioを立ち上げるだけでテスト環境ができあがります。

 SDLがどんなものか、SDLアプリがどのように使うものかが分かったところで、SDLの最新技術情報とそこから広がる世界を紹介しておきたいと思います。

コラム:用語説明

⾞載HMI:Human Machine Interface、カーナビの画⾯のようなもの。最近の⾃動⾞に装備されている画⾯装置には、カーナビ機能は搭載されておらず、SDLやApple CarPlay、Android Autoなどの仕組みで、スマホのカーナビアプリと連携させるケースも増えているため、その画⾯装置はディスプレイオーディオ(DA)と呼ばれることもあります。SDLとは、⾞載HMIで動くアプリを開発するオープンソースプロジェクトといえます。

OEMメーカー:⾃動⾞業界では、いわゆる⾃動⾞(完成⾞)メーカーのことを指します。ほかの⼀般的な業界だと、OEMというと他社ブランドの製品を委託⽣産したりするケースを指すため、少し違和感があるかもしれませんのでご注意ください。

グローバルな視点をもって新しいアプリ市場に出て行こう!

 従来、SDLアプリは、AndroidアプリならGoogle Play、iOSアプリならApp Storeというアプリマーケットで提供される形態でした。そこに、JavaScriptで開発できるようにバージョンアップがされたことで、その流通形態も変化してくる可能性もあると思います。今後、OEMメーカーなどが⾃社のSDLアプリ市場(マーケットプレイス)を開始するかもしれません(あくまで筆者の想像ですので予想ははずれるかもしれませんが)。

 そのときは、クルマに搭載されたSDL対応HMIデバイスの画面をタップすることで、それらのSDLアプリマーケットに簡単にアクセスできるようになるでしょう。そこに⾃⾝が開発したアプリのアイコンが並んでいる姿を想像してみてください。ワクワクしませんか? いろんなクルマのダッシュボードで、自分の作品が動いて役に⽴っている未来です。

 また、SDLは、⽇本だけの規格ではなく米国ではフォード、ヨーロッパならプジョーなどが対応する国際規格です。いままでのSDLアプリコンテストにエントリーされた作品は、ほとんどが⽇本国内での利⽤を想定したアイデアやサービスだったと思います。ところが、いまは「インドではスズキ⾞が乗用車で50%のシェアを占めている」といったニュースも⽬にします。たとえば「インドでも大ヒットのSDLアプリをつくってみよう」というようなグローバルな視点も、とても⾯⽩いチャレンジになりそうです。

「クルマの運転が⼤好き!」ではないかたのアイデアもねらい⽬

 「クルマの運転とか別に興味ない、だから、SDLアプリも興味がないんだよね」とか、「ペーパードライバーだから」、「クルマの運転免許をもっていないから、SDLなんて関係ないや」そう思われている⽅はいませんか? ところが、そんなことはありません。クルマが好きな⽅が発想するアプリに対して、そうではない人たちの発想も重要なのです。

 自分が同乗者であったり、タクシーに乗っているときに「こんなアプリがあったらいいな」という発想もあるのではないでしょうか。そして、意外やそちらのほうがニーズが⼤きい可能性もある。こちらの記事「これまでのSDLアプリコンテストでの優秀な作品を振り返る!」のレポートの⼀番最後の、池澤あやかさんのコメントをぜひ読んでみてください。

これまでのSDLアプリコンテストの作品を振り返る座談会のようす(「これまでのSDLアプリコンテストでの優秀な作品を振り返る!」より)

 クルマ好きじゃない⼈の視点が入ると、今後もっとおもしろいアプリができるのではないでしょうか? また、SDLアプリはクルマで使うことを想定している以上、業務用車両での利用も大きなジャンルです。さらにクルマだけではなくバイクも対象なのです! 過去の作品をみていると、バイクに関するアプリはとがった作品になっていることが多く、今後も可能性を感じるところです。

2つのタイプ(スマートフォンアプリか、JavaScriptか)で、発想のアプローチも変わってくる

 WebアプリのようにJavaScriptで開発できるようなったことで、SDLアプリ開発の敷居が一気に下がりました。これは同時にSDLアプリの発想のアプローチも変わってくることを意味しています。

[従来]スマートフォンでアプリが動き、HMIをリモートディスプレイとして使う仕組み

 2018~2020年までの技術開発記事のほとんどがこちらの仕組みをベースにして書かれています。iOSおよびAndroidのネイティブアプリでの開発です。これは、クルマの中でスマートフォンアプリを使いたい、あるいはスマートフォンに入っている音楽をはじめとするさまざまなデータを使いたいという目的のために有効です。すでに提供ずみのスマートフォンアプリをSDL対応するというのもありです。

 その背景として、スマートフォンの「ながら運転」が事故発生に繋がっており、2018年12月には道交法が改正され厳罰化されたということがあげられます。⼿持ちするスマートフォンの画⾯を⾒て操作するよりも、⾃動⾞のコンソールに備え付けられたHMI画⾯で使えたら視線移動も少なく安全になるというわけです。また、⾳声操作や⾳声案内により安全性をさらに⾼めることも可能です。

スマホの「ながら運転」はキケンかつ厳罰化(「スマートフォンと車をつなぐSDL規格。その魅力とは!?」より)

 このタイプのアプリでは、データの保存や演算は、HMIではなくスマートフォン側で⾏います。App StoreやGoogle Playにならんでいるようなスマホアプリとの連携も⽐較的相性がよい構成だといえるでしょう。利⽤シーンについては、1台のクルマを家族で共有したり、レンタカーをつかったりしても、利⽤したいアプリを都度HMIにダウンロードして使うわけではなく、⾃⾝のスマートフォンにアプリをインストールしていれば、いつでもどのクルマでも気軽につかえる仕組みです。アプリで利⽤するプライベートな情報もスマートフォン側に保存し、クルマ側に残なくてよいので安⼼です。

[NEW]クラウド経由やHMI単独で独⾃アプリを動かせる仕組みが登場!スマートフォンが不要に

 Web系の技術でSDLアプリを開発できるようになったわけですが、これには、Cloud AppとWebEngine Appの2種類の動かし方があります(より詳しくはこちらの記事「Webエンジニアでもクルマアプリが作れる」をご覧ください)。アプリの開発のアプローチという点では、この2つは違ったものになります。

JavaScriptによるアプリ開発の画面(「Webエンジニアでもクルマアプリが作れる」より)

 Cloud Appは、クラウド上でアプリを動かし、そのリモートディスプレイとしてHMIを利⽤する仕組みです。こちらはリモートディスプレイとしての観点からは、従来のものと⼤きく変化はありません。スマホアプリの代わりに、クラウドアプリが動いている感じととらえてよいですね。アプリ利⽤時はクルマとクラウドが、インターネットでつながりっぱなしになっている必要があります。

 WebEngine Appは、HMI本体にWebEngine Appをインストールし、HMIのなかでChrome互換エンジンが動き、その中でHTML5アプリが動くような感じの仕組みです。ゆくゆくは、スマホアプリではありませんので、公式やOEMごとなどSDL対応アプリストアというマーケットプレイスが準備されることになるのだと思います。そこからダウンロード&インストールするような形になります。

 とくにWebEngine Appの利⽤シーンについては、従来とは変わって「クルマ本体にアプリがインストールされる」イメージが強くなります。ここがアプリアイデアを考える際に、従来と⼤きく発想のアプローチが変わるポイントです。

 アプリの開発は、原則JavaScriptです。Cloud Appは、node.jsのSDKが⽤意されています。WebEngine Appについては、まさにHTML5 Webアプリをつくるような感じで開発を進められる、JavaScriptのSDKが⽤意されています。Cloud Appは、JavaScriptだけでなくJavaでもSDKが⽤意されているのですが、従来の資産を利⽤したりエンタープライズな仕組みをつくるのには向いているかもしれませんが、ハッカソンなどの取り組みにはやや大げさかもしれません。

 ところで、述べたように2020年秋に、表現の⾃由度が⾼いWebViewモード(WebEngine Projection Modeと記載されているケースもあり)が登場しました。PCやMacのChromeブラウザー上で動くようなHTML5アプリが、HMIの画⾯のなか(iframeのような実装のなか)で動くようになりました。HMIの画⾯サイズが機種によって異なるので、アプリ開発者がレイアウト変更など考慮しなければなりません(スマホアプリでのレスポンシブ対応や、ローテーション対応に近い考え⽅になっていくのではないかと思います)。

 iframeに近い感じで動くので、従来のiOS/AndroidSDLアプリのプロジェクションモードと違い、伝送遅延がないためYouTubeなどの動画プレーヤーもスムースに動くでしょう。注意事項としては、表現の⾃由度が⾼いため(動画やアニメーションもごりごり動かせる)、くれぐれも運転の安全に配慮したインターフェイスを準備する必要があります。操作を単純にしたり、フォントを大きく⾒やすいものを採⽤するなど、開発者が対応する必要があります。今後「フォントサイズは最低nポイント」など業界標準の安全基準がつくられていくようですが、まだ公開されるまでにいたってはいません。

 新しくJavaScriptによるアプリが登場したからといって、いままでのクルマの中でスマートフォンを使いたいというニーズは引き続きあるはずです。それぞれの違いや特性を見据えながら、適材適所で使い分けられていくことになるのではないでしょうか?

開発にあたっての選択をチャートと表にまとめてみました。

実⾏環境について

 SDLアプリを開発するにあたって、そのテストやデバッグのための実行環境にはいくつかあります。SDLではクルマとカーナビなどの車載HMIの役割をするものをなんらかの形で用意しなければなりません。それには、ソフトウェア的にシミュレーションするものとハードウェアが用意されています。すぐに動かしてみるべきなのが「Manticore」というクラウド型のシュミレーターですが、これにはいくらか制限があるため作りたいアプリの内容によって、他の実行環境を用意する必要がでてきます。

 また、実際にクルマを走らせたときの車両情報を参照したい場合もあるでしょう。いささかハードルが高くなりますが、そのための方法もこの後で紹介します。なお、最初にも触れたようにSDL対応の車載HMIを搭載したクルマが発売されてきていますが、自作のアプリを自由に動かせるようになっているわけではありません。コンソーシアムに参加し、しっかりと安全基準およびテスト基準をクリアし、アプリリリースを申請し、OEMメーカーに許可されたアプリのみが動かせるような⼿順となります。

 それでは、SDLアプリをテスト、デバッグなどをしていくための実行環境を紹介していきます。

Manticore(マンティコア)SDLデバイスシミュレーター

 なにはなくとも、まずは触ってみたいのが「Manticore」というSDLコンソーシアムが提供するシミュレーターです。SDLアプリ開発の第一歩ともいえるものです。

 参考記事:SDLデバイスシミュレーター「Manticore」でSDLアプリを動かそう!

Manticoreでテスト中の画面

 事前にSDLコンソーシアムへのユーザー登録が必要ですが、無料で利⽤できるので、まずはお試しください。⾞載HMIの画⾯をシミュレートしたものと、クルマのリアルタイム情報(スピードやエンジン回転数、ウィンカーの点滅状態など)をシミュレートできる機能がついています。クラウドで動作していますので、必要な環境設定も最新のChromeブラウザーを⼿元のPCやMacにインストールしておく程度でよいのでとても簡単です。

※ Manticoreの機能的な注意事項としては、iOS/Androidアプリのプロジェクションモードに⾮対応なこと(今後も実装される可能性は低い)。2020年秋のバージョンアップで追加されたWebEngine WebViewにも⾮対応なことです(こちらは近⽇にも対応されそうな気もしますが、現時点では動かない)。

※ ⾳声インターフェイスについても読み上げには対応していますが、⾳声認識には現時点では⾮対応のようです。

Ubuntu (Docker)で実⾏環境を作る(SDLデバイスシミュレーター)

 Manticoreでは、iOS/Androidアプリのプロジェクションモードに対応していません。それをシミュレーターで動かしたい場合は、⾃⾝で環境を作る必要があります。

 参考記事:SDL対応アプリ開発環境の構築その1〜⾞載機エミュレーターを作成する

UbuntuでのSDL車載機エミュレーター環境(上記記事より)

 こちらは2年ほど前の記事になりますので、やや状況がかわってきているところはありますが(例えばUbuntu 14となっているところを、現状ではUbuntu 18のほうがよかったり)、おおまかな⼿順としては参考にしていただける内容となっています。SDLはオープンソースプロジェクトなので、以下のGitHubを参考にしながら環境を整えていくことになります。

 SmartDeviceLinkのレポジトリ:https://github.com/smartdevicelink

GitHubのSDLのレポジトリ

 プロジェクションモードは、これらオープンソースに実装されていないと⾒受けられるところもあるので、独⾃実装が必要だったり、⾳声読み上げや認識についても、ほかの仕組みと組み合わせる必要もあり、難易度はあがってきます。「2020年秋に追加されたWebengine AppのWebViewモードで、⾼い表現⼒でごりごり動かす」場合も、こちらのアプローチで実⾏環境をつくる必要もあります(そろそろManticoreが対応するかもしれませんが)。今後開催されるハッカソンでは、このあたりの技術サポートも受けられるかもしれませんので上⼿に活⽤しましょう。

 また、このUbuntuで実⾏環境をつくる⼿法は、後述する「Raspberry Piなどで、ほんとうに⾞載できるHMIをハードウェアをつくってみる」とも、ほぼアプローチは近くなっています。

SDL BootCamp(SDLデバイスハードウェア)

 クルマに搭載されたHMI実機でアプリを動かすことができると、アプリを開発し「完成した!」という達成感も⼀段階とあがります。そして、⾞載機で動かすということは、実際のクルマのリアルタイム情報(スピードや位置情報、ウインカー点滅状態など)をアプリから利⽤する際にも、実際のデータの利⽤が可能となるはずです(実際はなかなか大変なのですが)。

 SDL BootCampは、Raspberry Pi 3で動くSDL⾞載機のソフトウエア(OS込み)イメージです。公開されているソフトウエアイメージをダウンロードしてきて、SDカードに書き込んで、それをRaspberry Piにさして起動するとSDLデバイスができあがるという、たいへんお⼿軽な⼿順となっています。

 参考記事:ラズパイによる疑似SDL⾞載機に、地図を表⽰してみよう!

「SDL BootCamp」を使った実行環境(上記記事より)

 こちらは、クルマのリアルタイム情報を取り込む機能もついています。ですが、すこし難易度は⾼くなっています。⾞種ごとにリアルタイム情報を取得し変換する仕組みはSDL規格の外側にあるため存在せず、そこについて各⾃で準備する必要があるためです。T社のP⾞と、S社のH⾞で、異なるリアルタイム情報取得プログラムを⽤意する必要があるのです。そしてこの部分はオープンソースプロジェクトではありませんので情報の探し⽅も難しくなります。取り組んでみたい⽅は、OBD2やCANBUSといったキーワードから探してみるのがよいでしょう。

 SDL BootCampについては、SDL対応バージョンがやや古いことには留意してください。また、プロジェクションモード動作時、画⾯上でのタッチイベントなどが繰り返されると、イベントがトリガーされなくなるケースがあるようですが、これから対応されるかどうかは未定ではないかと思われます。Raspberry Pi 4でという場合については、この後の「⾃分で⾞載デバイスを作ってみる」で触れてみたいと思います。

⾃分で⾞載デバイスを作ってみる

 ⼿元に、Raspberry Pi 4がある。クルマもある。OBD2アダプターもある。とにかく実⾞で試してみたい。というかたは、⾞載デバイスをつくってしまうのも楽しいかもしれません。Raspberry Pi 3まででは、その処理能⼒の制限からオープンソースで提供されているSDL Coreをコンパイルさせたりすることはおすすめではなく、別途PCにUbuntuなどのLinux 環境を⽤意して、ARM⽤のクロスコンパイル環境を⽤意する必要がありました。

 Raspberry Pi 4が発売開始され、Raspberry Pi 3に⽐べて処理能⼒がぐんと⾼くなったため、Raspberry Pi 4上でも、SDL Coreや関連環境をコンパイルできるようになったのです。もちろんRaspberry Pi 4といっても⾼性能なパソコンよりは⾮⼒なため、「めちゃコンパイル速いぜ! 快適だぜ!」とまではいきませんが、従来のクロスコンパイル環境をつくったりする⼿間と⽐較すると、かなり簡単になります。

 そしてその⼿順についてもRaspberry Pi 4⾃体でUbuntuを動かせるということは、前述した「Ubuntu (Docker)で実⾏環境を作る」⼿順と⼤きくかわりがないということなのです。やり⽅を調べるにあたっても、⽐較的参考にできる技術情報がおおいので、わかりやすいのではないかと思います。

 こちらも、もしかしたら、ハッカソンに参加すると技術サポートを受けていただけるかもしれません。

 Linuxや組み込み系に詳しい⽅でしたら、やはりYocto Linuxで動作させて軽快なデバイスを作りたいと思われるかもしれません。するとRaspberry Piシリーズ以外の開発ボードも選択肢にはいってくるかもしれません。そうなってくるとSDLアプリハッカソンではなく、SDLハードハッカソンになってしまいそうなので、技術サポートの範囲外になってしまいそうですが、ご興味ある⽅は、ぜひ各⾃でチャレンジしてみてください。

アイデアソン/ハッカソンの開催概要

■イベント名:スマホとクルマ・バイクをつなぐSDLアプリを作る(オンラインアイデアソン/ハッカソン)
■開催日:
2021年1月30日アイデアソン
2021年2月20日ハッカソン
※両日の参加が申込条件となります。
※アイデアソンで編成されたチームで、そのままハッカソンにご参加いただきます。ハッカソン対応のためにメンバーが足りない場合は、自力で追加メンバーをリクルート可能です。
■開催形式:オンライン
※Zoom/Slack/Googleスライドが使える環境を整えておいてください。
■賞典:
アイデアソン賞金総額5万円
ハッカソン賞金総額10万円
※複数チームに分配される予定です
■参加費:無料
■主催:SDLコンソーシアム日本分科会/SDLアプリコンテスト実行員会(事務局:角川アスキー総合研究所)
■運営協力:HMCN (Hiroshima MotionControl Network)
■アイデアソン/ハッカソン参加申し込みページ:
こちらよりアクセスしてください==> https://hmcn.connpass.com/event/199571/

SDLアプリコンテスト 開催概要

■コンテスト名称:「クルマとスマホをなかよくする SDLアプリコンテスト2020」
■主催:SDLコンソーシアム日本分科会、SDLアプリコンテスト実行員会(事務局:角川アスキー総合研究所)
■応募締切:2021年2月21日(日)24:00
■募集内容:エミュレーターか開発キット上で開発したSDL対応アプリ(既存アプリのSDL対応、新規開発)
■募集対象:年齢、性別、国籍等不問。個人・チームどちらでも応募可
■応募方法:プレゼンシートと動作解説動画をWebフォームで応募
■審査:審査員が新規性、UX・デザイン、実装の巧みさ等で評価
■最終審査会:2021年3月8日(月)、オンラインにて開催予定
■グランプリ:賞金50万円+副賞
■特別賞(最大5作品):賞金各10万円
■公式サイト:http://sdl-contest.com/

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

最新記事

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン