HOME > CLIENT VOICE > Apache Sparkで、カーナビデータから行動パターンを発見する。

Client Voice

カーナビゲーションシステムやカーオーディオを製造販売するアルパイン株式会社が、Apache Sparkを使ってカーナビのデータを分析するプロジェクトにクリエーションラインの木内が参加しました。この度、プロジェクトが無事終了したことをうけて担当されたアルパイン株式会社先行開発部の黒田倫太郎様、チームリーダーの大西佳成様にお話を伺いました。

まず最初にカーナビのデータを分析に使おうと思った辺りから教えてください。

黒田:まずカーナビゲーションが取っているデータを使って何か新しいサービスにつなげられないかということを考えまして、そのためにはまずカーナビゲーションセンサーのデータを分析しなければいけないというのがもともとのニーズだったんです。

それで、自分なりにいろいろ試行錯誤して最初はリレーショナルデータベースを使って分析できないかと考えて、実際にリレーショナルデータベースでプロトタイプのプログラムを開発したりしていました。ただそのやり方だと私たちが目指している規模の実用化には到底使えないぐらい遅かったんですね。元々「ことがら」をデータにする方法は無いかと常々勉強していて、それに利用するDBはNo SQLデータベースやグラフデータベースかなという感触でした。そのような時期にJTF2015で情報を入手し、その時点では”もしかしたら”というレベルだったのですが、幸運にもその場でお会いできたCreationline木内様に相談させていただいて、後日、ご提案を頂いた時に”いける”という確信に変わりました。

リレーショナルデータベースだと遅すぎたという時に別の発想でカーナビのデータを処理できないかと思いついたわけですね。そこからクリエーションラインにお声をかけて頂いたのはどういう経緯でしょう?

黒田 倫太郎氏
黒田 倫太郎氏

黒田:実際にインターネットでグラフデータに関して調べているうちにクリエーションラインさんのブログの記事に出会ったんです。そこではNeo4Jというグラフデータベースに関する記事がありましてそれを読んで勉強していたんです。その頃、数年来私が参加しているテクノロジーに関するイベントがありまして、そこにクリエーションラインの方が発表をされるということでそのセミナーに参加して終わった後に相談を持ちかけてみたんです。そこからが全ての始まりだったんですよ。

そしてクリエーションラインとしてはちょうどビッグデータのソフトウェアであるApache Sparkに取り組んでいた時だったので、Sparkを使った分析システムを提案させて頂いたという流れですね。

黒田:そうですね。2015年の夏頃から始めて年末までという感じでシステムを作って実際に動かしてみて検証を行い、実用化に向けて手ごたえを得ることができたと考えています。
ただ、センサーから出てくるデータをそのままでは使えないので、今回は色々工夫をしています。その辺をクリエーションラインさんに苦労して頂いたということになりますね。具体的にはデータをどうやってコンパクトにするか、分析に合った形に整形するか、という辺りです。

今回は弊社の木内が担当させて頂いたんですが、その辺について木内さん、説明してください。

木内:分析のためにお借りしたカーナビゲーションのデータですが、最小の単位で数ギガバイトあったんです。それをSparkを使って検証するところから始めたんですが、これが意外と面倒でしたね。

その面倒というのは具体的にどういう部分ですか?

木内:まず最小単位のデータから今回のプロトタイプでは使わない部分を取り除くことを行った上で、今回のデータ分析に使う部分をSparkで取り扱えるようなグラフデータにするんですが、その時に幾つか問題がありまして、ひとつはGPSの座標データがけっこうブレるという問題ですね。

これはスマートフォンとかでもGPSのデータを使って地図をみてみると居るはずのないところに自分が居たりするというあの現象ですか?

alpine004

木内:そうですね。なので停まっていた自動車が次の朝に動き出す時にGPSのデータを見てみると夜の座標と朝の座標が違っているという状況になってしまうのです。それを補正する必要がありました。さらに実際の車の動きと車載センサーのとるデータの僅かな時間のズレがあって、停まっていてこれからエンジンをかけて動き出すはずなのにもう時速数キロで動いているみたいな感じで(笑)

黒田:その辺は車載センサーが取っているデータに少しだけズレがあるんですが、元々は不具合解析用のログだったのですがそれをいわゆるプローブ情報相当に加工するということが結構大変で今回のプロジェクトの中でもそこに時間を割いた記憶が強いです。その時の経験やノウハウは今後の社内製品開発に活かしたいと思います。

わかりました。では、今回の分析のプロトタイプでは目指していた目的は達成できましたか?

黒田:はい。最初は数ギガのいう大きさから始めて、今回の最終フェーズでは数百ギガのデータを扱うクラスターでの実証実験でもSparkの分散処理で求めていた性能が出ていますので、問題無いのではと思います。社内での結果報告会でも色々な部門から反響が届いていまして、これからの展開が楽しみです。

木内:クリエーションラインとしてもSparkの事例としてかなり有効な経験をさせていただきましたので、これからの開発に活かしていければと思います。

アルパインさんとしても今回のように新しいソフトウェア、しかもオープンソースのソフトウェアを使うのはチャレンジだったのでは無いですか?その辺に不安はありませんでしたか?

alpine003
大西 佳成氏

大西:実際にはこれまでアルパインではやってきていないことにチャレンジしたことになりますね。クリエーションラインさんとの仕事が初めてでしたし、今回はパブリッククラウドでSparkを動かしているわけですが、それも初めて使うサービスだったので初めてづくしでしたね。でも担当の黒田がどうしてもやってみたいという強い熱意を持っていましたので、まぁ、失敗しても経験になるし、やらせてみようという感じです。

黒田:新しいことでしたので、ちゃんと成功させないといけないというプレッシャーはありましたけど、プロトタイプでパブリッククラウド上にシステムを構築して、今は社内のサーバーで分析の検証を続けていますが、実際にリレーショナルデータベースで非常に長い時間かかっていたような処理が劇的に短縮できたのでこの方向は間違っていなかったと思います。

木内:今回のプロジェクトではSparkで分散処理を行っているんですが、分析のためのロジックはScalaではなくてPythonで記述しているんです。よくSparkでシステムを構築するためには分析の部分をScalaで書かなくてはいけないという思い込みみたいなものがあるんですが、今回Pythonで書いてみて、これなら十分に使えるなということが実感できました。ビッグデータ的な分析って試行錯誤の繰り返しなんですよ。なんでいちいちコンパイルが必要なScalaよりも書いてから直ぐに実行できるPythonで実装できたのは今回のシステムの収穫のひとつですね。

今回の結果をうけてアルパインさんの今後の目標はなんですか?

黒田:今回、Sparkを使ってシステム化することが検証できたのでこれから実際にサービス化するものについて実際にお客さんに使う価値があるものを考えていかないといけないと思っています。それが提案できて始めて今回のプロジェクトが実を結ぶということになるんだと思います。

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

ビッグデータがバズワードになっている今だからこそ、具体的に大量のデータを処理して分析に活かす事例が意味を持ってくるのではとクリエーションラインは考えています。Sparkを使って分析する知見。さらにPythonを使ったスクリプト記述など、クリエーションラインにとって大変勉強になったユースケースでした。アルパイン様の更なる発展を引き続きサポートしていきたいと思います。

hdr_logo001

アルパイン株式会社

事業内容
車載音響機器、車載情報通信機器の開発、製造及び販売
代表者
代表取締役 宇佐美 徹
設立
1967年5月10日
資本金
259億2,059万円(※インタビュー時)
URL
http://www.alpine.com/

CLIENT VOICE一覧を見る

mautic is open source marketing automation