デンソーはなぜ、工場からソフトウェアを「内製化」するのか?

矢ヶ部弾 氏(以下、矢ヶ部):みなさんこんにちは、デンソー生産技術部の矢ヶ部です。

私たちが作っているFactory-IoTのプラットフォームは、設備や人、さまざまなデバイスから出力されたデータを格納し、価値ある情報に変え、それをアプリケーションを介して、利用者にお届けするというものになります。

社内向けのシステムではありますが、「なぜデンソーは工場からソフトウェアの内製化・手の内化をしているのか」。

これを私から説明いたします。そして「誰が」を黒田、「どうやって」を澤田がお話しします。

では、簡単に自己紹介いたします。私は2002年にシステムインテグレーションの会社に入り、スマートメータシステムやHEMS、いわゆるM2Mの開発をしていました。続いてメガバンクに中途入行し、セキュリティ関連開発、またFinTech企業向けのAPIの開発に携わりました。M2Mの技術、セキュリティ、APIの技術開発は、現在130の工場向けのFactory-IoTのプラットフォームを作るときに非常に役に立っています。

4.4万品番もの自動車関連部品を製造

矢ヶ部:最初にFactory-IoTプラットフォームの開発コンセプトについてお話しします。「CASE」という言葉もありますが、モノを品質良く、大量に生産し、売れていた時代から、いかにハードとソフトウェアを組み合わせ圧倒的なスピードでサービス化し生き残っていくか、という時代に変わりました。自動車業界は、100年に一度の変革期とも言われています。

こういったスピード感や変革に追従していきたいということで、「主体性」、進化をコントロールする。「スピード」、軽く、早く試行する。そして特に重要な「共創」というところで、さまざまな仲間の力を借りる。本日はこの3つのコンセプトをお伝えできればと思います。

デンソーは12月16日で創立70周年を迎えます(注:イベント開催日は2019年12月9日)。

(会場拍手)

デンソーの研究開発費について注目していただきたいのですが、5.3兆円の売上に対して5,100億円を投資しております。スタートアップさんが「10億、20億を調達しました!」ということがありますが、弊社の場合は桁が違って、非常に幅広くいろんなことができるかなと思っています。社員数も17.2万人で、これは海外のメンバーが多数を占め、国際色豊かな職場環境となっています。

工場は世界130工場、数え方によっては150と言う人もいますが、ほぼ全ての大陸に存在します。また、2025年までにソフトウェア技術者を12,000人にすると宣言しており、期待と注目が集まっています。

またみなさんご存知のQRコードは今年25周年を迎えました。他製品ではカーエアコン、電動化に必要なモーター、あとはADAS系のミリ波レーダーや単眼カメラなど、さまざまな自動車部品を作っています。製造している自動車関連部品は4.4万品番あり、120億個生産しています。、さまざまな種類、大量の製品を生産するための設備が存在し、工場からのデータは多種多様で、IoTのプラットフォームの開発においては、とても難易度が高いです。

デジタルを介して、人と設備が共創し、改善活動を加速する

矢ヶ部:続いてFactory-IoTの目指す姿を説明いたします。「デジタルを介して、人と設備が共創し、改善活動を加速する」をコンセプトとしています。基本的には設備から、稼働状態や製品品質に起因する加工結果のデータを上げ、その情報を元に、アプリを介して、人が分析し、分析結果を設備に返していきます。

アプリの機能として、見える化の画面、通知機能をはじめ、マシンラーニングやディープラーニングの分析モデルといったものがあるかもしれません。そういったアプリをクラウドに上げて、世界中の130工場で使い倒し、そしてブラッシュアップをかけていく、そのような仕組みを考えています。これが、実はめちゃくちゃ難しいです。ばりむずです。

私の出身、九州の「ばりむず」という言葉を関東の言葉に直すと「とても難しゅうございます」という意味になります。なぜ難しいかというと、先ほどのデータを入れて管理して出すというプラットフォームですが、生産活動をリーンにしたい、これはデンソーだけじゃなくて日本の製造業も同じだと思いますが、リーンにするといった思いから、現場の改善意欲が非常に高いです。

私たちはPoC(Proof of Concept)を何回も行い、IoTプラットフォームをたくさん作ってきましたが、ある工場では、見える化と通知だけを提供したにも関わらず、半年で400件もの改善要望が出ました。改善要望の中には、設備データの項目を増やしたい、音声を取りたい、人の動線を取りたい、他システムとのデータ統合をしたいなど、新しいデータの入力要望が止まりません。

また、アプリ側に関しても「声で検索したい」とか「画面を増やしたい」「ちょっと検索キーの位置を変えたい」「データ解析のサイクルを回したい」「ウォッチに通知を飛ばしたい」。もうちょっと言うと「上流の設計情報と連携させたい」、あとは「モビリティのサービスやシェアリング、アフターマーケットとつなげたい」など、多種多様な改善要望が出ました。

主体性・スピード・共創性を実現するために

矢ヶ部:焦った私たちは、外から買ってきたパッケージシステムに頼りました。いろいろなパッケージシステムを試したのですが、思い通りには進みませんでした。

先ほど申し上げたとおり、設備データ、センサーデータ、人の動線・動作のデータを取得したり、さまざまなデバイスからのデータがあります。そのデータをプラットフォームを介し、アプリをどんどん作って行きたいのですが、新しいデータを入れる・出すというところに関しては、毎回製品ベンダーにお願いしなければならず、主体性を持って進められません。

スピード感もそうで、なにかのアプリケーションを作りたくても、「すみません。ロードマップ上では半年後です」と言われてしまう。共創性に関しても、他のパートナーさんにデータベースの公開には条件があるんです。「……すみません」と言われてしまって、共創性が薄れてしまうんですね。結果、デンソーが思うように開発することができませんでした。

IoTのプラットフォームに必要なものは、収集する、貯める、使うの3つです。私が先ほど申し上げた主体性をもってスピードよく共創的に改善サイクルを回すということは、こういった流れで必要なものであると考えています。

繰り返しになりますが、主体性、スピード、共創性ということで、主体性というところでは、例えば最初はJavaを使っていたのですがGoに置き換え、性能を圧倒的に向上させたり、スピードというところで、パブリッククラウドやkubernetesも活用しています。

デンソーの中でソフトウェアってどう作ればいいの? とか、どうやって共創していくの? こういった課題に対するキーワードが「内製化」です。

それでは黒田から「誰が」内製化したのかをお話します。

ご清聴ありがとうございました。

(会場拍手)

デンソーが本気で取り組む、内製化の裏側

黒田雄大 氏(以下、黒田):それでは「『生産技術屋』が挑む本気のFactory-IoTプラットフォーム内製化」についてお話しさせていただきます。

私は2008年にデンソーに入社し、デンソー歴は12年です。最初に生産技術を担当し、その後は基幹システムのSEをやり、現在は志望してFactory-IoT室に所属しています。Kubernetesやansible、CIなど、インフラ回りのことが好きでやっています。

「大企業+アジャイル開発」といえば、スライドでは出島と表現しましたが、「特殊な組織を作って特殊な場所でやっているんでしょ?」とか、「プロダクトオーナーだけを立てて結局中身は丸投げなんでしょ?」とか、「所詮POCなんでしょ?」と思われることが多いかもしれませんが、私たちは本気だということをお伝えしたいと思っています。

詳細はクロストークでお話させていただきますので、私のプレゼンテーションでは「誰がやっているの?」と「どれくらい本気なの?」というところをお話ししたいと思います。

生産技術のトレードオフをブレイクスルーする

黒田:まず、「生産技術とは一体何ぞや?」という話を概念だけ説明したいと思います。「何を作るか」はいわゆる製品設計で考えるのですが、「どう作るか?」を考えるのが生産技術です。工程設計という言い方をすることもありますが、どういう工程で作っていくかを設計する部署になります。

実際の生産ラインには手で組む手組ラインと、ロボットがある自動ラインがあります。一般論として、単純に言えば、手組のほうが安く、ロボットのほうが高いです。

ですが、当然ロボットのほうが速いし正確です。反面、人のほうが柔軟に工程が変えられます。クオリティやデリバリー、コストなどのトレードオフをどうやって取っていくかを考えるのが、生産技術の大きなミッションです。

ただし、デンソーの生産技術部は製品をどう作るかも当然考えるのですが、クオリティ・デリバリー・コストをトレードオフするだけではなく、技術でブレイクスルーして高いレベルで両立を実現することを考えています。

私たちもまさに、ソフトウェアの力を使って新しいパラダイムで戦うことを考えています。

「ないなら自分で作る」文化

黒田:ブレイクスルーと言うのは簡単ですが、どうやってこれを高いレベルに持っていくのかというと、デンソーには古くから「手の内化」という文化が存在します。

かつて青木元副社長という方がいました。この方は「内製化を進めるぞ」と言った方です。手の内化のことを、安くてうまい「家庭料理の味」とも表現しています。

外にないものを自分たちで作る、外で買えないものを作るからこそ強いんだと語っており、1955年には工機部門(注:工機とは工作機械のこと)で製品を作るための設備、ロボットも内製化していますし、ソフトウェアに関しても古くからCADを内製化し、生産シミュレータの内製化もしていました。

矢ヶ部も話していましたが、QRコードなどの規格まで内製化してしまう。「無いなら自分で作っちゃえ」という文化でやって参りました。創業以来、他所がやらない内製への「こだわり」を強く持っています。

私たちは現在どんな体制でやっているかといいますと、品質管理から生産管理、組み込みソフトまでやっていますので、組み込みソフトの設計、設備設計、さらに矢ヶ部のような銀行や研究職、IT業界からも人材を集め、総智を結集して個性豊かなメンバーで取り組んでいます。社内では他にないぐらい個性豊かなメンバーです。

企画から運用・保守まで全てを内製人員だけで作っているわけではありませんが、全てのフェーズに入り込めるだけの人材を揃えています。生産技術部は製造そのものの競争力を担う非常に大事な部署なんですが、現時点では部の1/4がFactory-IoTに取り組んでいます。

製造業の本丸である生産技術部門で最も力を入れてやっている、「本気」である、ということをお伝えできればと思います。

それでは、本気で作った具体的な中身について、澤田からお話しします。

工場のIoT基盤に求められる技術要件

澤田寛央 氏(以下、澤田):こんにちは、澤田です。簡単に自己紹介です。

私は転職組で、前職は某大手電子部品メーカーです。品質保証や生産技術などいろいろ経験をし、最終的にはMESと連携した自律制御など担当していました。現在は130工場をつなげるというプロジェクトに感銘を受けて、花のデータサイエンティストとして2017年10月にデンソーへ入社しました。

ですが、そもそもまだデータの基盤がなく、データを分析するものもなく、入社3日後にデータサイエンティストを外され、基盤の内製化を任せられました。

ですので私はデータサイエンティスト……じゃないですね、データ収集する基盤を作るエンジニアです。

工場のIoTに関する基盤の主な要件はこちらです。

設備の接続数の増減で自由にスケールアウト、スケールインできるようなシステムでなければいけない、あらゆる種類のデータをデータベースに保存しなければいけない、色々なパートナーと共創できるように、ミドルウェア間で疎結合を保つ、みたいなことをやっています。

Kubernetesという世間で有名な技術がありまして、私たちは世界にある130もの工場をつなげる必要があったので、スケールアウトを自由に短時間で実施できるようにKubernetesを基盤として利用しています。

例えばPodを4から5へスケールアウトした事例を紹介します。

(資料を見ながら)横軸が時刻で、縦軸が単位時間あたりに処理したメッセージ数です。4つのPodで流しているのですが、ちょっとしたコマンドを叩くとpodが1つ増えて、この処理数も上と遜色なくポンっと増えるという事例です。このように簡単に、能力が足りなくなったと思ったらすぐにスケールアウトできるのがKubernetesです。

工場のあらゆる形式のデータを変換する仕組み

澤田:さて、PLCをご存知の方は……たぶんほとんどいないですね。

(会場笑)

設備をコントロールするデバイスとして、モノづくりではPLC(programmable logic controller)をよく使います。デンソーではオムロンやROCKWELL、三菱、キーエンスやシーメンスなど、いろいろなPLCを使用しているのですが、それらの通信仕様にはばらつきがあります。

(資料を見ながら)この例ではアドレスに対して16のビットが割り付けられていて、ビット一つひとつが異なる意味を持っています。例えば、最初のビットは装置のオンラインを表現していて、その次のビットは装置が自動運転中であることを表現しています。このアドレスに対するビットの割り付けがPLCのメーカーごとに違ったり、デンソーの生産拠点ごとでビットの意味が異なるので、このような千差万別なデータ構造をETLしてデータベースに保存しなければならない苦しみがあります。

そこで私たちはKafkaを利用しています。

(資料を見ながら)これはメモリを16進数にダンプしたものですが、この16進数のデコードルールをRDBにスキーマとして用意してあるので、それを参照してこの16進数をkafka streamingにてストリーミング処理し、データベースに挿入できるかたちにしています。

ミドルウェアの間を内製アプリで疎結合に

澤田:構成はこちらのようになっています。

左側が工場で、右側がGCPです。GCPではGKEのpod上にMosquittoやKafkaなどのミドルウェアを立てており、それらを経由して工場からのデータがBigQueryに挿入されていきます。これらのミドルウェアの間を、全て内製のアプリで疎結合しています。したがって、ミドルウェアが変更になったとしても内製アプリを切り替えればデータがBigQueryに挿入されるような仕組みにしています。

最初は内製アプリをJavaで作っていたのですが、コンテナで動かすにはGOがいいなと感じています。

JavaのDockerイメージサイズは195メガバイト近くまで膨らんでしまいました。一方GOにすると15メガバイト程度までイメージサイズを小さくできました。この結果から実装をJavaからGoに切り替えていきました。これは内製で主体性を持って開発できたことだと自負しています。

あとはいろんなモジュールをパッチワークのように張り替えるだけで機能するGOのフレームワークを自作し、モジュールの再利用性を高め、短期間での開発を可能にしています。

まとめです。

130工場のスケールアウトができるようにKubernetesを使っています。あらゆる形式の工場のデータを変換するルールをRDBにもうけて、それをストリーミングでETLをかけています。ミドルウェアの間を内製アプリで疎結合にしています。フレームワークを自分たちで作って、短期間で各種内製アプリを現場に提供できる体制を築いています。

(会場拍手)