地図サービス「MapFan」を支えるエンジニア
カーナビにスマートフォン、いまや移動にナビゲーションは欠かせない。移動時だけではない。誰もがお店を探すとき、旅行を計画するとき、何らかの形で地図のデータを利用している。筆者なんて筋金入りの方向音痴なので「もうスマートフォンのナビゲーションアプリがないとどこにも行けない」と思うくらいだ。
日本の地図サービスといえば「MapFan」が有名だ。運営しているのはインクリメントPで、パイオニア社内でのカーナビゲーションプロジェクトが源流にあるほど歴史が長い。会社としての設立は1994年。単に地図サービスだけではなく、カーナビゲーションを支える多くの技術やノウハウを持ち、業界をリードしている。
今回のDBプロはインクリメントPで地図データを更新するためのシステムに携わっている岸田和巳さん。2005年に同社に転職した。その頃というと、パソコンで地図を検索することが普及し始めたころではないだろうか。目的地の住所を入力してWebから地図を開き、好きに拡大や縮小してプリントアウトしてから出かける。これは初めて行く場所に出かけるときの習慣を大きく変えたと記憶している。
そう思い返すと「いや、ぼくは(地図サービスではなく)地図データを整備するシステムのほうが担当なので……」と岸田さんは謙遜する。いやいや。データの整備も地図サービスには欠かせない要素ですよね。
岸田さんは入社後はまず「POI(Point of Interest)」とも呼ばれる地点情報のデータを整備するシステムを担当した。POIとは人間が興味を持つような地図上の場所というところだろうか。例えばコンビニ、駅、図書館など。カーナビで目的地に指定したり、地図アプリで検索対象となる場所だ。POIには地点名と緯度経度のほかに店舗なら電話番号や営業時間など、かなり多くの情報を持っていることもあるそうだ。
この地点情報のデータも地図上の道路と同じく、常に入れ替わっているため最新の情報に整備していく必要がある。同社には地点情報を整備するためのシステムがあり、岸田さんが入社した2005年ごろはその地点情報システムを刷新するための準備を進めているところだった。そこに岸田さんがメンバーに加わり、アーキテクチャやデータベースの設計などに携わった。新システムは2006年に稼働開始したものの、それ以降も徐々に改良を重ねてシステムを成長させてきた。昨年、長らく続けてきた改良に一区切りをつけ完成形に到達したという。
システムに携わってから実に8年ほどは過ぎただろうか。岸田さんはこれまでを振り返り「2005年当時には夢として描いていた構想もありましたが、年を経て周囲の状況も変わり、最終的には(必要性がなくなり)盛り込まれなかった機能もありました。今は最適な形として落ち着きました」と話す。
プログラミングより、「データベース思考」
岸田さんとデータベースとの関わりについて話題を移そう。エンジニアとしての最初の仕事はシステム開発のプロジェクトでプログラミングをすることだった。いわゆるプログラマーである。しかしあまり性に合わなかったのかもしれない。「プログラマにはすごい人がいるんですよね。そうした人に比べると自分はたいしたことがないと思えてしまって」と少し肩身の狭い思いをしていたようだ。
代わりに目が向いたのはデータベースだった。当時開発で使っていたのはOracle Database。「ほかに詳しい人がいないから」ということで徐々にデータベースについて学んできた。実際ORACLE MASTER DBAをOracle Database 8iのときにGoldを取得し、10gになるまで更新し続けた。
実務上の必要性も当然あったにしても、岸田さんの考え方はプログラミングよりデータベースに向いていたのではないだろうか。例えば開発の現場ではプログラムでごりごりとデータを処理することもあるが、岸田さんから見ると「SQLで終わらせればいいのでは」と思う場面もあるそうだ。ここは考え方の指向が分かれるところなのかもしれない。プログラムに慣れた頭だとデータの集合の中でループ処理するという発想になりがち。しかしデータベースを集合論的にとらえた頭だとSQLで処理するほうが得意なのだろう。
実際に岸田さんがインクリメントPで関わったシステム刷新でも似たようなことがあった。今ではネットからリアルタイムに地図データを表示できるカーナビもあるが、それと同時にネットから差分配信された地図データを更新するカーナビも多い。つまり前回の更新時以降のデータを差分で提供するという要件がある。
地点情報で考えると、例えば最新の状態では「セブンイレブン」だとしても、数年前は「ローソン」、その前は「ファミリーマート」など、同じ地点でも名前や情報が変わることがある。そういう地点情報の性質と差分を提供するという要件を考えたとき、プログラミングだけで解決しようとすると難しい。データが増えればなおさらだ。岸田さんは地点ごとのデータを履歴という形で保持し、必要な情報をSQLで抽出するという処理にした。
OSS-DB Gold取得で周囲からPostgreSQLの質問を受けるように
さてここからは岸田さんとPostgreSQLとの関わりについて。これまで岸田さんは主にOracle Databaseに携わってきたものの、近年ではPostgreSQLも使うようになってきたという。これまで説明してきた地点情報を整備するメインのシステムではOracle Databaseを利用しているが、そこにデータを格納する前の加工工程のサブシステム等でPostgreSQLを利用している。
ここでポイントとなるのがエリアで管理するデータ。住所のデータというのは複雑だ。複雑な形をしたエリアに町名が割り当てられているからだ。これをうまく処理するために複雑な形の範囲情報をポリゴンで持ち、その範囲に住所を割り当てるということをするそうだ。このポリゴンデータを管理するサブシステムでは、Oracle Databaseではなく、ポリゴン型を有するPostgreSQLが使われているとのこと。また、社内システムの各所で採用されている、PostGISという空間データを扱うための非常に優れた拡張機能も無償で利用出来るとあって、PostgreSQLのコストメリットを最大限活かした環境構築が実現されているそうだ。
PostgreSQLを使うようになり、岸田さんはOSS-DB技術者認定試験にも挑戦した。2013年9月にはGoldまで取得したそうだ。
OSS-DB Goldを取得後のメリットは?と聞くと、岸田さんは「PostgreSQLで質問があると頼られるようになったことですね。学ぶきっかけになります」と話す。誰かの質問に答えるためにあらためて調べたり、確認することもある。結果的に自分のため、自分の勉強にもつながっているということだ。
PostgreSQLについての印象を岸田さんに聞くと、「やりたいと思うことは(Oracle Databaseではなくても)PostgreSQLでできてしまうことが増えましたね」とPostgreSQLには満足しているようだ。また「現状はPostgreSQL 8.4で利用しているのですが、業務効率を改善できそうな工程があるので、9から出てきたストリーミングレプリケーションも試してみたいですね。」と話している。今後岸田さんがPostgreSQLを使う機会はますます増えてきそうだ。
■■■ Profile ■■■
岸田和巳 KISHIDA,Kazumi
インクリメントP株式会社
技術開発部 第二技術部 第三技術グループ
「普段は日常に溶け込んだものとして使われつつ、いざという時には人々の助けに威力を発揮する存在、多くの人にそう思ってもらえる地図を作っていきたい」―そんな思いを共有した有能なエンジニアが社内に大勢いる中、OracleやPostgreSQLなどのデータベース関連業務に従事。
今後のシステム開発の行末を見据え、開発業務全般を一人で行えるよう、PHPなどのスクリプト言語を中心にプログラミングスキルを身につけようと現在画策中。
趣味は散歩、観劇、フルートなど。職場仲間とは、鎌倉を一緒に散歩したり、深夜ラジオをネタに盛り上がったりして、気分転換している。フルートはレッスンに通っていて、ろくに練習もせずに仕事で疲れているところをレッスン仲間が優しく癒してくれている。