2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
ソフトウェア開発事例の紹介(全1記事)
提供:トヨタ自動車株式会社
リンクをコピー
記事をブックマーク
高橋直大氏(以下、高橋):大手町オフィスにあるコネクテッド先行開発部から、鈴木真一さまにお越しいただきました。よろしくお願いいたします。
鈴木真一氏(以下、鈴木):よろしくお願いします。
前段いろいろとお話しさせていただいていましたが、ソフトウェアの開発事例紹介ということで、In-Vehicle Infotainment systemの開発について紹介させていただきたいと思います。
あらためまして、トヨタ自動車コネクテッド先行開発部の鈴木と申します。よろしくお願いします。
先ほど、クルマを持っている方や、クルマに興味がある方がどれくらいいるのかをお聞きした時、なかなか渋めの……。
(会場笑)
状況だったかなと思っているので、だいぶアウェイ感がいっぱいではありますが、大学で情報系を勉強して、クルマが好きだからといって会社に入ってしまうとどんなことになるのかが少し見えるような自己紹介からさせていただきたいなと思います。
私は、2006年に新卒でトヨタ自動車に入社しました。最初の数年間は、Telematics System、いわゆる通信を使って、クルマとクラウドをつなぎながらお客さまにサービスを提供するシステムの、製品企画、設計、外注の管理……どこの会社にお願いをして、どういうふうに開発をしていって、やっていくのか、ということをやっていました。
その後、今日の本題のIn-Vehicle Infotainment system、IVIシステムのアーキテクチャー設計や通信仕様の設計などをしました。
その後、共通ソフト基盤の内製開発の立ち上げやPMをしてきています。現在は、IVIシステムの内製開発の技術責任者を務めています。
(大学では)情報系を勉強していましたとか、ソフトの内製、PMをしていますと言いながら、愛車は「トヨタ86」です。これ、本当は「トヨタ86」と言うと、「ぜんぜんソフトないじゃん」みたいな感じで笑いが起こるところだったんですが、クルマを持っていないし、特に興味がない方たちは、何を言っているのかわからないですよね。持っているのは86というクルマで、つまりクルマに乗るのが好き、運転するのが好きで、入社してしまったという経歴です。
趣味ですが、小さい子どもがいるので子どもと遊んでいて、AtCoderとも縁がないような生活をしています(笑)。
鈴木:みなさん、クルマをあまりご存じないということで、「IVIって何なんだろう?」と今思っていると思いますが、(スライドを示して)IVIはこの写真です。宣伝ではありませんが、6月に新しく弊社が出した「アルファード」というクルマのシステムです。ちょうど真ん中に見える部分で動いているものです。
クルマに乗ってみないとわからないと思いますが、運転をしていると、いろいろ知りたいと思ったり、いろいろ操作したいと思うことがあるんですね。「歩きスマホをやめてください」と言われても触りたくなってしまってみなさん触っていると思いますが(笑)、あれと同じ状態がクルマでもあるんです。
なので、真ん中に画面を用意して、お客さまに触っていただいて、クルマの設定を変更したり、あるいはナビゲーションしたり、オーディオを聞いたり、走っている最中は見られませんが、テレビを見られるようにしたりなど、そういうことをしているのがIVIシステムです。
鈴木:ふだんスマホを触っていて、クルマに乗った時にぜんぜん違うユーザーエクスペリエンスになったら、みなさんは不満を感じると思いますが、クルマも一緒でなるべくお客さまに快適に生活をしていただけるように、快適にクルマを運転していただけるように、考えながらものづくりをしています。
クルマの中の部品、あるいはサービスの中でも、ちょっと毛色の違う製品、部品、システムになっています。そういった部品なので、しっかりと製品企画をして、お客さまに寄り添ったかたちでの企画をしていかなければ、お客さまに価値を提供できないし、喜んでいただけません。
そのため、ユーザーリサーチした結果から「次の製品はこういうふうにしたほうがいいよね」と分析をする。そこからお客さまのペインポイントを解決するだけではなく、より良いものにしていこうというアイディエーションをしていったり、使いやすいデザインを追求していったりなど、いわゆるものづくりをする前の段階からいろいろ考えていって、ものを作っているという作り方をしています。
そういったところで企画、あるいは仕様を固めて、開発をしています。ここでまた開発に時間がかかってしまうと、お客さまにお届けするまでにすごく時間がかかってしまいます。お客さまの手元に届くまでに世界が変わってしまっているみたいなことにならないように、いかにこの開発をキュッと短くしていくのかが非常に重要なポイントです。
鈴木:その開発の期間を短くするために、製品開発は大きく2つに分かれています。1つが要素技術開発。もう1つが、実際の製品の開発です。
要素技術開発が担うのは、例えばナビゲーションです。最適な経路をどうお客さまに提供するのか。経路計算だけではなく、どういうデータの持ち方をするとその経路計算ができるのか。そういったことをしっかりと考えながら、要素技術として確立していく、ある種汎用的な技術の開発です。
いろいろな要素技術がある中でも、私たちが解こうとしているものはデータに偏りがあったりするので、まさに今日みなさんがやられていたようなものを経て、「こういった製品を使ってこういった技術を使ったほうがうまく解決できるよね」と、最終的にどれを選ぶのかを決めて製品に落としていくという開発をしています。
要素技術を開発する。あるいは要素技術を選んで、見極める。そういったものを使いながら製品の開発をする。このようなやり方をしています。
鈴木:要素技術として、どんなものがあるのかを少し紹介させていただきます。
1つ目が、音声認識です。(スライドの)上にURLを貼っていますが、オウンドメディアに「トヨタイムズ」というのがあります。後で検索して実際の動画を見ていただくと、イメージがすごく湧くかなと思います。
クルマに乗っている時に音声でクルマを操作するという、音声認識の今までの仕組みを、ボイスコマンドやボイスプロンプトと呼んでいました。例えば「温度を何度に設定してください」と言うと、クルマ側が反応して、温度を設定してくれます。
今取り組んでいるのは、例えば「少し寒いです」と言うと、「じゃあ、エアコンの温度を上げますね」と提案してくれるというものです。それだけではなく、そのクルマに機能として載っていれば「シートヒーターもつけましょうか?」みたいな提案もしてくれる。お客さまが「お願いします」と言えば、シートヒーターがつくという新しい取り組みを今しています。
こういったところは、音声を理解して、自然言語を理解する。その上でお客さまの意図を理解して、車にどんな装備があるのかを考えながら提案をするという、複数の要素技術や技術を組み合わせて実現をしていくことになります。
音声認識や自然言語を理解するだけだと、これは実現できません。実際このビデオの中でも本当にシートヒーターがついているわけではなく、こういうコミュニケーションが取れますというデモをしている動画です。
最終的に機能を提供してお客さまにお届けするためには、先ほども申し上げたとおり、いろいろなソフトウェアを組み合わせて最終的にはシステムにしていかなければいけません。
鈴木:そのシステムを組み合わせて、最終的な価値をお客さまに提供することを実現するために、もう1つ、要素技術になりますが、「Arene OS」というものを開発しています。
(スライドの)左下にSDKと書いてあります。このSDKを使ってほかのソフトとうまく組み合わせて開発をしていきます。
(Arene OSは)クルマを開発していく上で、クルマをシミュレーションしたほうがソフトの開発がしやすかったりするので、そういったシミュレーションをするようなツールや、そういったものを提供しているプラットフォームです。
例えばディーラーにアポイントを取るとか、先ほどお話ししたようなシートヒーターをオンにするとか、そもそもシートヒーターがついているかどうかを確認するとか、をやりやすいようにしていくプラットフォームを用意して、開発をしていくということをやっています。
鈴木:音声認識、要素技術、それから先ほどお話ししたツールなどを使いながら製品の開発をしていきますが、製品を開発していく上でのポイントがあるので、そちらについて説明をしたいと思います。
(スライドの)左側のグラフは、プログラム行数の遷移です。右肩上がりで、車のソフトウェア、行数がどんどん増えていっています。
クルマの中には、2つ大きなシステムがあります。1つがIVI。もう1つが自動運転のソフトですね。この2つが行数のかなりの部分を占めています。
そのため、単純に開発すればいいというわけではありません。先ほど紹介させていただいたArene OSなどの仕組みを使いつつ、大規模な建築物を作る時のように、ソフトウェアを部品で分けて開発をしていくということをやっています。非常に大規模な組み込みの開発というのが、クルマのソフトの開発における特徴的なポイントになっています。
システムを分割して開発をしていきます。疎結合にすることで、並行してさまざまなチームが同時にソフトを開発できるようにするのですが、それを進めていく上では、インターフェイスの定義が非常に重要になっています。トンネルを入り口と出口からそれぞれ掘っていってもつながらなかったら穴を掘った意味がないので、同じようなことがソフトでもあると思っていただければいいです。
インターフェイスで区切ったそれぞれのユニットの品質が悪いと、お互いに組み合わせた時にまたイチからやり直しになってしまうので、ユニット単位での品質の担保も非常に重要です。動的解析や静的解析などメトリクス分析をしながら、今後のメンテナンス性がどうなのかを含めて見ていきます。ユニットテストは当然やりながら、機能的な面も押さえていきます。
その上で組み込みになるので、それぞれのユニットで「今回どれぐらいCPUやメモリを使いますか?」「ストレージを使いますか?」ということを、互いに宣言しながら、それでシステムが成立するというのを机上で決めた上で、開発を進めます。
なので、そこをうまく守って開発するは非常に重要ですし、「どれぐらいかかるのかな、今回のこのシステムは?」というところを見極める力も非常に重要です。
今回みなさんが(プログラミングコンテストを)やられているのを見て、非常にすごいんだなと思った部分が、実行時間とメモリの制限です。今回であれば主催者側から提示されていると思いますが、常に気を遣いながらコードを書き続けているみなさんは、やはり競争力が高いんだろうなと思っています。
みなさんのような非常に優秀な方々に少しでも協力いただければというふうに思っています。
私からのプレゼンは以上です。
高橋:ありがとうございました。
(会場拍手)
高橋:IVIの説明のスライドのところまで戻ってもらってもいいですか? 僕はこれをずっとカーナビと呼んでいたんですが、これをカーナビと呼ぶのはそもそも違うんですか?
鈴木:いわゆるカー用品店に行くとカーナビと売っているかもしれませんし、伝統的にはカーナビと呼んでいただいてもいいのかもしれませんが、テレビも映るし、センターとつながって、例えばコンシェルジュみたいなサポートもしてもらえるので、カーナビと呼ばれると寂しいなっていう。
高橋:なるほど。カーナビはNGでした、覚えておいてください。地雷を踏みました(笑)。
それは置いておいて、これって単体で取り外せるものではなくて、クルマにくっついているという話ですよね。
鈴木:そうですね。取り外したら動かなくなります。裏でクルマ側のネットワークとも接続されていますし、メーターやたくさんの部品とつながっています。
カー用品店で箱売りしているカーナビは、後ろで大きなコネクターでつなぐかたちになっていると思いますが、同じようにクルマにインテグレートされたシステムになっています。
高橋:これ単体であるわけじゃなくて、例えばクルマのカメラ的なものにもつながっているし、クーラーにもつながっているし、クルマにあるだいたいのものとつながっていて、情報が取れて、操作ができるという感じなんですよね?
鈴木:はい、そうです。世代を追うごとにクルマの機能が増えていっています。クルマの機能が増えていく中でボタンが増えていくと、「このボタンは、何?」みたいなボタンがすごく多くなってくるので、クルマのいろいろなセッティングを、画面の中でできるようにしたいなと、かなり取り込まれているものが多いかなと思います。
高橋:なるほど。だからこれは、トヨタさんが作っているOSで動いているんですよね。
鈴木:はい。このモデルはまさにそうで、私が関わっていたものが裏で動いています。
高橋:なんでこれはLinuxとかじゃなくて、自作のOSみたいなもので動かすんですか?
鈴木:広義で言うとLinuxです。カーネルはLinuxカーネルを使っています。Linuxベースの「Automotive Grade Linux」という、Linux Foundationの中で作っているディストリビューションがあるのですが、それを一緒にトヨタも開発をしていて、それが中に入っている状態です。
なので、私たちが開発しているのは、主にミドルウェアに当たるところです。
高橋:車特化Linuxみたいな感じのイメージ?
鈴木:そうですね。汎用の組み込みLinuxを車向けに拡張しているようなかたちです。
高橋:それがあるからこそいろいろ操作がしやすくて、いろいろなことができる感じなんですね。
鈴木:そうですね。横で連携をしながら開発をしやすくするというのを目標にやっています。
高橋:なるほど。
高橋:(発表の)途中、ソースコードの行がすごい数が出てきましたが、あれってみんな手で書いているんですか?
鈴木:今回は、かなりの行数を手で書いています。やはり世代によって違いますが、例えば画面の部分に関しては、デザインからオートジェネレートする部分があって、手で書くのか、ジェネレーターを作るのか、トータルで見た時に早いのか、安いのか、みたいなところで取捨選択をしています。
一般的な制御系だと、先にモデルを作って、モデルで確認をしてコードを書く。じゃあ、コードを書くのは無駄だからジェネレートしたほうがいいよねというパターンもあると思いますが、ことIVIに関しては、いわゆるなにかを制御しているというよりは、誰かと連携しながら表示をするとか、なにかをコントロールするとかのほうが多いので、もっとジェネレートできたら楽かもしれませんが、けっこう手で書いているシステムです。
高橋:なるほど。いや、あの行数書くのには、めちゃめちゃ人数が必要だと思うんです。関わっている人はめちゃめちゃいるんですか?
鈴木:めちゃくちゃな人数がいます(笑)。
高橋:なるほど。それはトヨタの中の人も外の人もという感じですか?
鈴木:はい。中と外ですね。
高橋:それでもまだ足りないから、どんどん人を増やさないといけないという感じですか?
鈴木:もう少し正確に言うと、外の力をお借りすれば人数は集まります。ですが、うまく開発をする上では、やはり中と外のバランスみたいなのがあって、もっと中で密にコミュニケーションを取ってやらないとスピード感が出ないなというのが今の状況です。
高橋:ちなみにですが、相当クルマに詳しくないと関われないのかなと思っているんですが、そうでもないですか?
鈴木:全体のシステム設計や機能そのものに関しては、クルマに詳しくないと、あるいはクルマに詳しくなっていかないといけない部分はありますが、コードを書くことに関していうと、システムを教えてもらいながらペアでやっていく中で勉強する、これから知っていくでもまったくかまわないと思っています。
高橋:なるほど。どうもありがとうございました。
鈴木:はい、ありがとうございました。
(会場拍手)
トヨタ自動車株式会社
関連タグ:
2024.12.20
日本の約10倍がん患者が殺到し、病院はキャパオーバー ジャパンハートが描く医療の未来と、カンボジアに新病院を作る理由
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.17
面接で「後輩を指導できなさそう」と思われる人の伝え方 歳を重ねるほど重視される経験の「ノウハウ化」
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05