CLOSE

ソフトウェア開発事例の紹介(全1記事)

2023.10.10

Brand Topics

PR

「車特化型ソフトウェアプラットフォーム」や「次世代音声認識」の開発も担う コネクテッド先行開発部における、IVIソフトウェア開発

提供:トヨタ自動車株式会社

トヨタ自動車株式会社が主催となって行うプログラミングコンテスト「TOYOTA Programming Contest 2023 Summer」。トークセッション「ソフトウェア開発事例の紹介」で登壇したのは、トヨタ自動車株式会社 コネクテッド先行開発部の鈴木真一氏。In-Vehicle Infotainment systemの開発について発表しました。

登壇者の自己紹介

高橋直大氏(以下、高橋):大手町オフィスにあるコネクテッド先行開発部から、鈴木真一さまにお越しいただきました。よろしくお願いいたします。

鈴木真一氏(以下、鈴木):よろしくお願いします。

前段いろいろとお話しさせていただいていましたが、ソフトウェアの開発事例紹介ということで、In-Vehicle Infotainment systemの開発について紹介させていただきたいと思います。

あらためまして、トヨタ自動車コネクテッド先行開発部の鈴木と申します。よろしくお願いします。

先ほど、クルマを持っている方や、クルマに興味がある方がどれくらいいるのかをお聞きした時、なかなか渋めの……。

(会場笑)

状況だったかなと思っているので、だいぶアウェイ感がいっぱいではありますが、大学で情報系を勉強して、クルマが好きだからといって会社に入ってしまうとどんなことになるのかが少し見えるような自己紹介からさせていただきたいなと思います。

私は、2006年に新卒でトヨタ自動車に入社しました。最初の数年間は、Telematics System、いわゆる通信を使って、クルマとクラウドをつなぎながらお客さまにサービスを提供するシステムの、製品企画、設計、外注の管理……どこの会社にお願いをして、どういうふうに開発をしていって、やっていくのか、ということをやっていました。

その後、今日の本題のIn-Vehicle Infotainment system、IVIシステムのアーキテクチャー設計や通信仕様の設計などをしました。

その後、共通ソフト基盤の内製開発の立ち上げやPMをしてきています。現在は、IVIシステムの内製開発の技術責任者を務めています。

(大学では)情報系を勉強していましたとか、ソフトの内製、PMをしていますと言いながら、愛車は「トヨタ86」です。これ、本当は「トヨタ86」と言うと、「ぜんぜんソフトないじゃん」みたいな感じで笑いが起こるところだったんですが、クルマを持っていないし、特に興味がない方たちは、何を言っているのかわからないですよね。持っているのは86というクルマで、つまりクルマに乗るのが好き、運転するのが好きで、入社してしまったという経歴です。

趣味ですが、小さい子どもがいるので子どもと遊んでいて、AtCoderとも縁がないような生活をしています(笑)。

IVI(In-Vehicle Infotainment system)とは何か?

鈴木:みなさん、クルマをあまりご存じないということで、「IVIって何なんだろう?」と今思っていると思いますが、(スライドを示して)IVIはこの写真です。宣伝ではありませんが、6月に新しく弊社が出した「アルファード」というクルマのシステムです。ちょうど真ん中に見える部分で動いているものです。

クルマに乗ってみないとわからないと思いますが、運転をしていると、いろいろ知りたいと思ったり、いろいろ操作したいと思うことがあるんですね。「歩きスマホをやめてください」と言われても触りたくなってしまってみなさん触っていると思いますが(笑)、あれと同じ状態がクルマでもあるんです。

なので、真ん中に画面を用意して、お客さまに触っていただいて、クルマの設定を変更したり、あるいはナビゲーションしたり、オーディオを聞いたり、走っている最中は見られませんが、テレビを見られるようにしたりなど、そういうことをしているのがIVIシステムです。

いかに開発をキュッと短くしていくのかが重要なポイント

鈴木:ふだんスマホを触っていて、クルマに乗った時にぜんぜん違うユーザーエクスペリエンスになったら、みなさんは不満を感じると思いますが、クルマも一緒でなるべくお客さまに快適に生活をしていただけるように、快適にクルマを運転していただけるように、考えながらものづくりをしています。

クルマの中の部品、あるいはサービスの中でも、ちょっと毛色の違う製品、部品、システムになっています。そういった部品なので、しっかりと製品企画をして、お客さまに寄り添ったかたちでの企画をしていかなければ、お客さまに価値を提供できないし、喜んでいただけません。

そのため、ユーザーリサーチした結果から「次の製品はこういうふうにしたほうがいいよね」と分析をする。そこからお客さまのペインポイントを解決するだけではなく、より良いものにしていこうというアイディエーションをしていったり、使いやすいデザインを追求していったりなど、いわゆるものづくりをする前の段階からいろいろ考えていって、ものを作っているという作り方をしています。

そういったところで企画、あるいは仕様を固めて、開発をしています。ここでまた開発に時間がかかってしまうと、お客さまにお届けするまでにすごく時間がかかってしまいます。お客さまの手元に届くまでに世界が変わってしまっているみたいなことにならないように、いかにこの開発をキュッと短くしていくのかが非常に重要なポイントです。

要素技術開発と製品開発

鈴木:その開発の期間を短くするために、製品開発は大きく2つに分かれています。1つが要素技術開発。もう1つが、実際の製品の開発です。

要素技術開発が担うのは、例えばナビゲーションです。最適な経路をどうお客さまに提供するのか。経路計算だけではなく、どういうデータの持ち方をするとその経路計算ができるのか。そういったことをしっかりと考えながら、要素技術として確立していく、ある種汎用的な技術の開発です。

いろいろな要素技術がある中でも、私たちが解こうとしているものはデータに偏りがあったりするので、まさに今日みなさんがやられていたようなものを経て、「こういった製品を使ってこういった技術を使ったほうがうまく解決できるよね」と、最終的にどれを選ぶのかを決めて製品に落としていくという開発をしています。

要素技術を開発する。あるいは要素技術を選んで、見極める。そういったものを使いながら製品の開発をする。このようなやり方をしています。

要素技術開発その1 次世代音声認識

鈴木:要素技術として、どんなものがあるのかを少し紹介させていただきます。

1つ目が、音声認識です。(スライドの)上にURLを貼っていますが、オウンドメディアに「トヨタイムズ」というのがあります。後で検索して実際の動画を見ていただくと、イメージがすごく湧くかなと思います。

クルマに乗っている時に音声でクルマを操作するという、音声認識の今までの仕組みを、ボイスコマンドやボイスプロンプトと呼んでいました。例えば「温度を何度に設定してください」と言うと、クルマ側が反応して、温度を設定してくれます。

今取り組んでいるのは、例えば「少し寒いです」と言うと、「じゃあ、エアコンの温度を上げますね」と提案してくれるというものです。それだけではなく、そのクルマに機能として載っていれば「シートヒーターもつけましょうか?」みたいな提案もしてくれる。お客さまが「お願いします」と言えば、シートヒーターがつくという新しい取り組みを今しています。

こういったところは、音声を理解して、自然言語を理解する。その上でお客さまの意図を理解して、車にどんな装備があるのかを考えながら提案をするという、複数の要素技術や技術を組み合わせて実現をしていくことになります。

音声認識や自然言語を理解するだけだと、これは実現できません。実際このビデオの中でも本当にシートヒーターがついているわけではなく、こういうコミュニケーションが取れますというデモをしている動画です。

最終的に機能を提供してお客さまにお届けするためには、先ほども申し上げたとおり、いろいろなソフトウェアを組み合わせて最終的にはシステムにしていかなければいけません。

要素技術開発その2 「Arene OS」

鈴木:そのシステムを組み合わせて、最終的な価値をお客さまに提供することを実現するために、もう1つ、要素技術になりますが、「Arene OS」というものを開発しています。

(スライドの)左下にSDKと書いてあります。このSDKを使ってほかのソフトとうまく組み合わせて開発をしていきます。

(Arene OSは)クルマを開発していく上で、クルマをシミュレーションしたほうがソフトの開発がしやすかったりするので、そういったシミュレーションをするようなツールや、そういったものを提供しているプラットフォームです。

例えばディーラーにアポイントを取るとか、先ほどお話ししたようなシートヒーターをオンにするとか、そもそもシートヒーターがついているかどうかを確認するとか、をやりやすいようにしていくプラットフォームを用意して、開発をしていくということをやっています。

IVIソフトウェア開発におけるポイントとは?

鈴木:音声認識、要素技術、それから先ほどお話ししたツールなどを使いながら製品の開発をしていきますが、製品を開発していく上でのポイントがあるので、そちらについて説明をしたいと思います。

(スライドの)左側のグラフは、プログラム行数の遷移です。右肩上がりで、車のソフトウェア、行数がどんどん増えていっています。

クルマの中には、2つ大きなシステムがあります。1つがIVI。もう1つが自動運転のソフトですね。この2つが行数のかなりの部分を占めています。

そのため、単純に開発すればいいというわけではありません。先ほど紹介させていただいたArene OSなどの仕組みを使いつつ、大規模な建築物を作る時のように、ソフトウェアを部品で分けて開発をしていくということをやっています。非常に大規模な組み込みの開発というのが、クルマのソフトの開発における特徴的なポイントになっています。

システムを分割して開発をしていきます。疎結合にすることで、並行してさまざまなチームが同時にソフトを開発できるようにするのですが、それを進めていく上では、インターフェイスの定義が非常に重要になっています。トンネルを入り口と出口からそれぞれ掘っていってもつながらなかったら穴を掘った意味がないので、同じようなことがソフトでもあると思っていただければいいです。

インターフェイスで区切ったそれぞれのユニットの品質が悪いと、お互いに組み合わせた時にまたイチからやり直しになってしまうので、ユニット単位での品質の担保も非常に重要です。動的解析や静的解析などメトリクス分析をしながら、今後のメンテナンス性がどうなのかを含めて見ていきます。ユニットテストは当然やりながら、機能的な面も押さえていきます。

その上で組み込みになるので、それぞれのユニットで「今回どれぐらいCPUやメモリを使いますか?」「ストレージを使いますか?」ということを、互いに宣言しながら、それでシステムが成立するというのを机上で決めた上で、開発を進めます。

なので、そこをうまく守って開発するは非常に重要ですし、「どれぐらいかかるのかな、今回のこのシステムは?」というところを見極める力も非常に重要です。

今回みなさんが(プログラミングコンテストを)やられているのを見て、非常にすごいんだなと思った部分が、実行時間とメモリの制限です。今回であれば主催者側から提示されていると思いますが、常に気を遣いながらコードを書き続けているみなさんは、やはり競争力が高いんだろうなと思っています。

みなさんのような非常に優秀な方々に少しでも協力いただければというふうに思っています。

私からのプレゼンは以上です。

高橋:ありがとうございました。

(会場拍手)

汎用の組み込みLinuxを車向けに拡張している

高橋:IVIの説明のスライドのところまで戻ってもらってもいいですか? 僕はこれをずっとカーナビと呼んでいたんですが、これをカーナビと呼ぶのはそもそも違うんですか?

鈴木:いわゆるカー用品店に行くとカーナビと売っているかもしれませんし、伝統的にはカーナビと呼んでいただいてもいいのかもしれませんが、テレビも映るし、センターとつながって、例えばコンシェルジュみたいなサポートもしてもらえるので、カーナビと呼ばれると寂しいなっていう。

高橋:なるほど。カーナビはNGでした、覚えておいてください。地雷を踏みました(笑)。

それは置いておいて、これって単体で取り外せるものではなくて、クルマにくっついているという話ですよね。

鈴木:そうですね。取り外したら動かなくなります。裏でクルマ側のネットワークとも接続されていますし、メーターやたくさんの部品とつながっています。

カー用品店で箱売りしているカーナビは、後ろで大きなコネクターでつなぐかたちになっていると思いますが、同じようにクルマにインテグレートされたシステムになっています。

高橋:これ単体であるわけじゃなくて、例えばクルマのカメラ的なものにもつながっているし、クーラーにもつながっているし、クルマにあるだいたいのものとつながっていて、情報が取れて、操作ができるという感じなんですよね?

鈴木:はい、そうです。世代を追うごとにクルマの機能が増えていっています。クルマの機能が増えていく中でボタンが増えていくと、「このボタンは、何?」みたいなボタンがすごく多くなってくるので、クルマのいろいろなセッティングを、画面の中でできるようにしたいなと、かなり取り込まれているものが多いかなと思います。

高橋:なるほど。だからこれは、トヨタさんが作っているOSで動いているんですよね。

鈴木:はい。このモデルはまさにそうで、私が関わっていたものが裏で動いています。

高橋:なんでこれはLinuxとかじゃなくて、自作のOSみたいなもので動かすんですか?

鈴木:広義で言うとLinuxです。カーネルはLinuxカーネルを使っています。Linuxベースの「Automotive Grade Linux」という、Linux Foundationの中で作っているディストリビューションがあるのですが、それを一緒にトヨタも開発をしていて、それが中に入っている状態です。

なので、私たちが開発しているのは、主にミドルウェアに当たるところです。

高橋:車特化Linuxみたいな感じのイメージ?

鈴木:そうですね。汎用の組み込みLinuxを車向けに拡張しているようなかたちです。

高橋:それがあるからこそいろいろ操作がしやすくて、いろいろなことができる感じなんですね。

鈴木:そうですね。横で連携をしながら開発をしやすくするというのを目標にやっています。

高橋:なるほど。

車に相当詳しくないと開発には関われないのか?

高橋:(発表の)途中、ソースコードの行がすごい数が出てきましたが、あれってみんな手で書いているんですか?

鈴木:今回は、かなりの行数を手で書いています。やはり世代によって違いますが、例えば画面の部分に関しては、デザインからオートジェネレートする部分があって、手で書くのか、ジェネレーターを作るのか、トータルで見た時に早いのか、安いのか、みたいなところで取捨選択をしています。

一般的な制御系だと、先にモデルを作って、モデルで確認をしてコードを書く。じゃあ、コードを書くのは無駄だからジェネレートしたほうがいいよねというパターンもあると思いますが、ことIVIに関しては、いわゆるなにかを制御しているというよりは、誰かと連携しながら表示をするとか、なにかをコントロールするとかのほうが多いので、もっとジェネレートできたら楽かもしれませんが、けっこう手で書いているシステムです。

高橋:なるほど。いや、あの行数書くのには、めちゃめちゃ人数が必要だと思うんです。関わっている人はめちゃめちゃいるんですか?

鈴木:めちゃくちゃな人数がいます(笑)。

高橋:なるほど。それはトヨタの中の人も外の人もという感じですか?

鈴木:はい。中と外ですね。

高橋:それでもまだ足りないから、どんどん人を増やさないといけないという感じですか?

鈴木:もう少し正確に言うと、外の力をお借りすれば人数は集まります。ですが、うまく開発をする上では、やはり中と外のバランスみたいなのがあって、もっと中で密にコミュニケーションを取ってやらないとスピード感が出ないなというのが今の状況です。

高橋:ちなみにですが、相当クルマに詳しくないと関われないのかなと思っているんですが、そうでもないですか?

鈴木:全体のシステム設計や機能そのものに関しては、クルマに詳しくないと、あるいはクルマに詳しくなっていかないといけない部分はありますが、コードを書くことに関していうと、システムを教えてもらいながらペアでやっていく中で勉強する、これから知っていくでもまったくかまわないと思っています。

高橋:なるほど。どうもありがとうございました。

鈴木:はい、ありがとうございました。

(会場拍手)

続きを読むには会員登録
(無料)が必要です。

会員登録していただくと、すべての記事が制限なく閲覧でき、
著者フォローや記事の保存機能など、便利な機能がご利用いただけます。

無料会員登録

会員の方はこちら

トヨタ自動車株式会社

関連タグ:

この記事のスピーカー

同じログの記事

コミュニティ情報

Brand Topics

Brand Topics

  • モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術

人気の記事

新着イベント

ログミーBusinessに
記事掲載しませんか?

イベント・インタビュー・対談 etc.

“編集しない編集”で、
スピーカーの「意図をそのまま」お届け!