


2009年に新卒入社した当初より携帯アプリ開発を担当。Android端末の普及初期から「NAVITIME」「ドライブサポーター」「自転車NAVITIME」
「カーナビタイムfor Smartphone」など数々のサービスに立ち上げから携わってきた、社内随一のAndroid開発者。
「NAVITIME」サービスのAndroidアプリの開発を手がけるY. A氏に話を聞いた。Androidが登場したことで、携帯電話分野の進化の速度が「10倍になった」という。急激なAndroidの進化を追いながらも、独自の高速地図コンポーネント開発など技術を追求し続けている。

- ──入社した理由を教えてください。
- 大学院修士課程でJava言語による並列処理を研究していました。就職先を選ぶにあたって、自社サービスを自分自身で良くしたいと思ったこと、世の中の役に立つサービスを作りたいと思ったことから、今の会社を選びました。
- ──2009年にAndroid版の「NAVITIME」の立ち上げに参加したのですね。
- 「NAVITIME」のAndroid版の立ち上げのために社内でJavaの知識があるエンジニアを総動員したのですが、入社1年目の私もその中に混じっていた形です。
- ──その時のAndroidに対する印象はどうでしたか。
- 最初のうちは、とにかく癖が多くて苦労しました。Androidの環境は独特で標準的なJava環境との違いが大きく、「これはJavaじゃない」と感じて、Androidが嫌いだと思っていた時期もあります。
- その後、Androidへの取り組みを続け、AOSP(Android Open Source Project)のコードを読んだりするうちに、「Androidを通してGoogleの思想を学べる」と感じるようになりました。今はかなりAndroidが好きです(笑)。勉強のために、個人的にAndroidアプリを作って公開したりもしました。

- ──今まで経験した中で、特に印象深いプロジェクトは何でしたか。
- 一つは「乗換NAVITIME タブレット版」の開発です。それまで開発していたAndroidアプリは既存の資産を活用していたのですが、これは初めてフルスクラッチで開発しました。このときGoogleが定めたUIデザインガイドラインを調べたところ、世界観が面白く、Androidによる表現に興味を持つようになりました。例えば、Androidのタブレット向けバージョンの「Android3.0」から「Action Bar」というUI要素が加わるのですが、これを実際のアプリでどう取り込めばいいのか、どういう表現がやりやすいのかを追求しました。
- もう一つは、「自転車NAVITIME」です。地図が入ったナビゲーション機能を初めてフルスクラッチで開発しました。このときは、AndroidのUIデザインガイドラインに対する理解をデザイナーとも共有するようにしました。ユーザーの行動を分析してアプリの改善に結びつけることもしました。数値を元に改善するという点で、最近よく言われている「グロースハック」の考え方に近いですね。
- ──エンジニアとデザイナーの間の情報共有ができる環境ということですね。Android端末の機種ごとの個別対応が大変だったりしませんでしたか。
- それはありました。ナビゲーションアプリはGPS(Global Positioning System)やカメラの機能を使いますが、そうしたデバイスでは端末による挙動の違いが顕在化しやすいのです。方針として、すべての端末で動くコードを追求しました。一種類の端末だけを回避するような特殊なコードを書いてしまうと、今後すべてのバージョンでそうしたコードを書き続けないといけなくなりますから。
- 苦労したことの一つは、GPSの情報を取得するインターバル(時間間隔)です。ある端末だと、インターバルを「0」に設定すると1秒おきにデータを取得するのですが、別の端末では「0」だとデータが上がってこない。端末メーカーの実装の問題なのか別の問題なのか、解釈に困る場合がかなりありました。
- すべての端末で動くことを目指して、テストにはコストをかけています。自動車のダッシュボードに複数の端末を並べて、カメラで撮影してチェックすることもあります。
- 最近では、特定の機種に依存する問題は減ってきています。ただ、GPS周りの挙動の差はかなり残っています。端末のGPSがうまく動かない場合でも、ユーザーから見ればNAVITIMEのサービスがうまく動かないのと同じですから、そこは毎回苦心しています。
- ──エンジニアの立場から、Androidの登場や、スマートフォンやタブレットの普及をどうご覧になっていますか。
- Androidが出る前と後で、技術進化のスピードが10倍違います。1年経つと、古い知識はもう間違った知識になってしまう。技術者が追いつく努力をしていかないといけません。
- それに、プログラミングに関係することばかりでなく、Googleの戦略の部分も知る必要があります。市場が急激に変化しているからです。例えば、カーナビ専用機が、スマートフォンやタブレットのナビゲーションに置き換わるような変化が起こっています。こうした動きを早い段階で察知できるように情報収集をしています。
- ──最近のお仕事を教えてください。
- Androidアプリに組み込む『地図コンポーネント』の開発です。すでに、『バスNAVITIME』アプリで使っているものです。AndroidのViewクラスの表現をOpenGLで置き換えるフレームワークを作って、アプリ内で使えるようにしました。
- CPU処理、GPU処理とも並列処理を取り入れて、理想的な場合では60fps(フレーム/秒)で地図を動かせるようにしました。メインスレッドを中断せずに描画できるので、ユーザーを待たせることなく、地図の素早い描画が可能になりました。特にスクロールは劇的に速くなりました。従来のアプリで200msかかっていた処理が17msと、約12倍高速になっています。
- ──バッテリー消費への配慮はどうなっていますか?
- なめらかなアニメーションをする代わりにバッテリー消費が激しくなる場合もあります。そこはトレードオフを配慮して、アプリ内で切り替えができるように設計しました。
- ──今後やりたいことは何ですか?
- スマホアプリ、ケータイアプリ開発のスペシャリストになりたいと思っています。Androidだけでなく、最近はiOSの勉強も始めました。感想としては、Androidの方が「癖」があるので、AndroidからiOSへ行く方がやりやすいのではないかと思っています。
- ──同じチームのエンジニアに求めることは?
- 技術を学ぶとき、誰でも到達できる地点から1歩、いや2歩、3歩奥に進むこと、ベストプラクティスを追求することです。深く追求することで、違う種類の知識が身についてきます。常に100%を追求して仕事をしていると、同じ100%のままではなく、水準がだんだん上がっていきます。そういう仕事を一緒にしていきたいですね。

「ギークアカデミー」バックナンバーはこちら
今回のギークが活躍する現場は「株式会社ナビタイムジャパン」
エンジニア求人一覧は以下よりご確認いただけます。

ご登録後、すぐにご紹介できる求人がない場合は、インテリジェンス DODAカスタマーセンターよりその旨をご連絡の上、求人発生時まで求人紹介・カウンセリングをお待ちいただいております。あらかじめご了承ください。