(ロカポ)開発などのブログ2005/10/27認知心理学の登場(ロカポ誕生の記録:7)認知心理学の登場これまでの投稿で書いたとおり、ジオコードに要求される要素はすべて相反するものでした。・絶対的な情報量(コードがカバーする地域と、精度によって決まる)・表示桁数(同じ情報量なら、N進法のNを大きくすればある程度短くなる)・表示文字種類(N進数を表すにはN種類の文字が必要。Nが多くなると扱いにくくなる)さらに技術的要素と「扱いやすさ」も相反します。・外部データベースを使用すると、データがないとデコードできない・データ圧縮などの複雑なアルゴリズムを使うと、いざというときに手計算では復号できないこれを全部やろうというのは、いささか無謀な挑戦に思えます。確かに技術的な観点で言えば、これ以上は八方塞がりです。今回は「人間が使いやすい!」をテーマにしているので、読むのはコンピュータでなくて人間です。そこで「認知心理学」の登場となります。認知心理学については私は素人ですので、専門的な事は書けませんが、さわりだけ。間違っていましたらご指摘頂ければ幸いです。認知心理学に「チャンク」という考え方があります。書くと分かりにくいですが、090-XXXX-XXXXと書くと、見易さ、読みやすさ、が向上します。人間が一度に処理できる物事の数を「短期記憶容量」と言って、最大7個までと言われています。Miller)ただし、単純な個数ではなく、意味のあるかたまり単位の個数で、これを「チャンク」と言います。7つ以上のアイテムを羅列してみます。整理すると覚えやすいですね。これはまずアイテムの分類で3チャンクに分けることで、脳に一度に処理させるアイテムを3に落とし、それぞれのカテゴリでさらに3つずつのアイテムを扱わせたからです。つぎの二つの文字列は、技術的にはまったく同じ情報量です。mazda」と並んでいます。これが頭の中で車メーカーという単位で4チャンクとして処理されるので記憶が容易になります。「toyota-honda-nissan-mazda」と区切りを入れると、技術的な意味では区切り文字の分だけ桁数が増えていますが、さらに読みやすくなっています。厳密には認知心理学とは異なるかもしれませんが、語呂合わせや、リズムや韻など、他にも記憶を助ける方法はいろいろとありそうです。元々は学校の論文を書くときにいつも参考にしていた「考える技術・書く技術―問題解決力を伸ばすピラミッド原則バーバラ・ミント著」に、マジック・ナンバー「7」の事が載っていたのですが、たまたまこの本を読み返していて、「この辺りの工夫をジオコードに取り入れてみたら、情報量を犠牲にせずに読みやすいコードができるのではないか?」とひらめきました。図書館をいくつか回って、認知心理学やら記憶術、暗記法の類の本をかき集めてきました。測地系が急に変わった!?ブログの投稿がだいぶ滞っていました。パラメータが急に世界測地系で処理されていることに気づいた。Webを探しても情報が無かったので、私の勘違いか?前からそうだったかな?と思いつつ、「ここギコ」のねねさんに聞いてみたところ、早速記事にアップしていただきました。したらもうトラックバックが。GoogleMapsのAPIも、10/1の時点ではmap.20.jsだったものが、10/24現在maps.26.jsで、数日おきに更新されている。すごい勢いで開発しているなあ、と思いつつも、いつまた元に戻るか分からないし、フラグでも付けて両方対応にしておくべきかなと検討中です。Locapointはもともとグローバル対応を目指しているので、実はWGS84で統一してもらえるとほっとします。post2005/10/15ジオコードの分類(ロカポ誕生の記録:6)前回いくつかのジオコードを紹介した。ジオコードは沢山あるが、おおよそ次の3つのタイプに分類できる。全てのジオコードはこれらのいずれか、またはこれらの組み合わせで実現されている。1.メッシュコード型ある領域の面を、長方形または緯線、経線によるメッシュで段階的に区切っていき、そのメッシュの番号を元にコード化するタイプ。デンソーのマップコードなどがその典型である。緯度、経度の数値を、特定のアルゴリズムで符号化するものである。ソニーのジオコードがそれにあたる。位置情報の一部または全部をデータベースに保存し、データを呼び出すキーをコードとするタイプ。ダブリュのナビゲーションコードは、度にあたる部分を都市名に置き換え、デコード時に都市名から緯度および経度の「度」の情報をデータベースから呼び出して復号している。極論すれば、位置情報を全部データベースに保存することも考えられる。緯度経度を丸ごとデータベースに入れて「○○の家」という名前をコードにすることも可能である。これらにはそれぞれメリット・デメリットがあり、私が考えるところでは以下のようになると思う。×そこで、ロカポ開発のベースとして、暗号型を選択し、なんとか読みやすさを向上させる方法を模索することにした。(ロカポ誕生の記録:5)ロカポを開発するにあたり、ロカポの先輩にあたる現在ある“ジオコード“(=ここでは位置情報をコード化したもの、と広い意味でとらえています)を調べてみた。「緯度経度は面倒くさい、もっと簡単なコードを」と考えるのは誰でも同じで、本当に数多くの「ジオコード」が提案されている。ここでは本当はもっと沢山あるのでしょうが、私が調べた範囲で、これらのコード達を敬意をこめて紹介いたします。(なお、それぞれにコメントをつけていますが、私のコメント中に記載したメリット、デメリットはあくまでも私個人の感想であり、該当するコードを非難あるいは評価したものではないことをご了承下さい。)マップコード株式会社デンソーが開発したジオコード。日本全国を基準となる複数の正方形に分割し、それぞれの正方形を30マス×30マス=900マスの正方形で分割、と分割を3レベル繰り返し、日本全国の任意の位置(正確には約30メートル×30メートルのエリア)を10桁の整数値で表せるようにしたもの。高精度用の拡張フォーマットとして、3メートル四方の領域を表す精度には、元の10桁+「*(アスタリスク)」+2桁の数字で12桁のフォーマットで表す仕様が用意されている。大きな特徴としては、もとの基準正方形の選択に人口密度等を考慮に入れて、首都圏や大都市でのマップコードが表す値が小さくなるように設計されていることである。これにより、例えば首都圏のマップコードは場所により4桁で表現できる。(上位6桁はゼロになるので表記を省略している)コンセプトとしてはビデオ予約のGコードと同じ考え方であり、ジオコードとしてこのアイデアを取り入れたものはおそらくマップコードが初めてであろう。欠点は対象領域が日本国内に限定されていることである。マップコードのサイトでは、海外向けも検討しているとされているが、10桁の桁数と30メートルの精度を確保する場合、対象とできる面積には自ずと限界がある。各国で導入したとしても、それぞれの国でのマップコード間には関連性はなく、独立したものとなると予想される。MGコード(マップルガイドコード)昭文社発行の各種ガイドブック・地図に掲載されている7~8桁のコードナンバーであり、正確には緯度経度のように任意の地点を表記可能なジオコードではない。ツーリングマップルの普及に伴って、バイク乗りの間で普及している。6,005,504)。簡単に説明すると、緯度、経度をともに0.1秒単位のステップに変換し、二進数に変換、緯度を上位桁経度を下位桁にして二進数の文字列を連結する。この二進数の数を37進数で表すことにより、9桁のコードで表現する。37進数の用いる文字は数字、英数字、および「=(イコール)」の計37文字である。ソニーの米国特許取得のポイントとしては、誤り訂正符号をつけるというアイデアがある。この場合は9桁には収まらないが、例えばコードを10桁にし、最後の一桁をチェックディジットとすることが可能である。このようにランダムなコードの入力は誤り訂正符号があると入力ミスを検出しやすいという利点がある。Shen博士が開発したジオコード。Webによると1995年からのようである。私が見たジオコードの中でもっとも優れていると思う。全世界の緯度と経度それぞれを対象に、30で順に分割し、更に30で分割、とこれを繰り返す。他のジオコードと違って、領域を面で分割していくのではなく、緯度および経度おという二つの二次元のデータを30づつ分割している。コードの表記は、緯度、経度それぞれ独立しており、30進法で表記している。この表記にはアルファベット大文字の子音20個+数字が使われている。使われていない文字は母音の(A,E,I,O,U,)と(Y)である。IやOが使われていないので、数字の1や0との間違いがなくなる、という優れたアイデアがある。Shen氏はこれをユニバーサルアドレスとして、住所代わりに使うアイデア等を提唱している。標準は5桁+スペース+5桁で経度方向0.0000148度(=約1.6メートル)、緯度方向はその半分の分解能を実現しており、ジオコードの中では最も精度が高い。6桁×6桁にするとその30倍の精度を実現できる。仕様上、桁数に制限がないので、任意の精度を選択可能である。緯度、経度がスペースを挟んで並んでいるか、拡張仕様としてスペースをもう一つ挟んでZ方向(高さ方向)もデータを記述できるようになっている。ハイフンを組合わせることで点ではなくエリアを表現できるようになっている。30進法を使用していることで、角度(360度)との割り算の際の親和性が非常に良い。私がNACの存在を知ったのはロカポの開発後であるが、ロカポの目指すものとコンセプトは一番近かったのがこのNACである。(Microsoft)NACからのライセンスのオファーを断った後、マイクロソフトが独自に特許申請していた曰く付きのジオコード。NACとの違いは、大文字ではなく小文字を使っていること、使用しない子音がYではなくてLであること、緯度と経度情報の間にスペースがないこと、緯度経度の順序が逆であること、のみである。コンセプト的にはまったくNACと同じといえる。新ジオコード(アジア航測)領域をタイル型に分割していき、二進数で表し、最終的なコードを「もいろぞちわもぞ」などのかな文字によるコードで表すものである。かな文字64文字を使用することで、64進法をとり、二進数との親和性が良い。(7ビットを一文字に割り当てる)。航空写真の会社らしく、緯線経線で囲まれた領域の高緯度側が小さくなる歪みまで計算に入れている。ナビゲーションコード(アイシン・エィ・ダブリュ)度、分、秒のうち、度の部分をデータベース化し、都市名等で置き換えたコード。6,552,670)マップコードや各種メッシュコードのように領域をメッシュで切っていくタイプのジオコード。メッシュは正方形で4分割で各領域に00、01、10、11を割り当てている。各正方形が4分割、と所望の精度になるまで分割していく。一つの分割につき2ビット必要である。このコードの特徴はその名の通り二進数との親和性が高い、というより二進数表現そのものであることである。政府や各種団体が定めたメッシュコードが多数ある。postロカポが目指す「使いやすさ」(ロカポ誕生の記録:4)ロカポが目指すべき使い安さをはっきりさせる必要が出てきた。元となる緯度経度のメリット、デメリットを考えることが必要であろう。デメリットはもちろん、「長い」ので人間が扱いにくいことである。そのためにいろいろなジオコードが開発されているわけであるが、メリットも大きい。数字が大きくなるにつれて北(北緯の場合)や東(東経の場合)に移動するので、二点間の緯度経度から東西南北の位置関係が直感的に分かる。様々な測地系が混在し、緯度経度だけではどの測地系での緯度経度かわかりにくいこのように緯度経度本来のメリットを並べてみると、各種ジオコードは「表示桁数を短くしている」が、逆にメリットのほとんどを犠牲にしていることが分かる。デンソーのマップコードは、マス目の境界をまたぐとコードががらりと変わり、実際の場所とコードの値の連続性が薄い部分が存在する。基準点のデータとデコードするロジックを動かすPCなどが必要だ。当時、私はレジャーにおける遭難時の通報取次ぎサービスのような事業を始めようと考えていた。ワムネットサービスの海ざんまい・山ざんまいのようなサービスである。遭難や災害などの緊急時に、デコーダがないと場所が分からないようなコードでは不便である。したがって、電子的な計算手段がなくても、最低電卓があればデコードできるようにしたかった。メールなどのデジタルな電子的通信手段が使えない場合、つまり無線、トランシーバー、電話など、音声による伝達しか有効でない場合でも使いやすいように、特に音声による伝達ミスを避けたかった。捜索する状況を考えると、次々に入ってくる位置情報(コード)について、コードのままある程度直感的に位置関係を把握できることが望ましいが、値と場所の不連続面があるコードでは、これが難しい。そこでロカポ開発にあたり、条件としたのは次の条件である。コードの値と実際の地域の関連性が直感的に分かることロカポにはかなり厳しい条件をつけた。ここで他のジオコードはどのようにしているのか、調べてみる。次回、他のジオコードを紹介する。post情報圧縮と桁数圧縮(ロカポ誕生の記録:3)前回の書いた、同じ情報量を持つデータを、大きい基数の記数法(10進法以上の○進法)を用い、情報量を減らさずに少ない表示桁数で表す技術は、桁数圧縮というそうだ。いわゆるハフマン符号やファイル圧縮技術などの技術で、データの持つ冗長性を削って、情報本来が持つ真の情報量に近づける技術。これらは何メガバイトもあるファイルでは、多くの冗長性があり、数十パーセント圧縮できるかもしれないが、1メートル精度の緯度経度情報はたかだか50ビット、バイトにすると7バイトのデータであり、これ以上圧縮技術で圧縮することは意味が無い。それに、「本来世界中の任意の地点を表すことができるコード」というコンセプトを掲げた時点で、そのコードはランダムな値を取るものであり、50ビットという情報量はどうしても必要となることが分かった。今回のコードの開発では、情報圧縮技術は使えないという結論になった。情報の偏りを利用して見かけ上の情報量を圧縮する方法もある。今回のコード化を思いついたきっかけとなったビデオ予約のGコードは、チャンネル・日時・録画時間を、応用数学を用いて数値化してある。その際、よく予約されるゴールデンタイムの時刻や録画時間には短い数字となるようにコードを割り当てている。このため、視聴率の高い番組のGコードは非常に短く、短いものでは「たった2桁の数字で予約できる」ように見える。これは見かけ上の情報量であり、例えば「23」というGコードは本来「0000000000000023」等であり(Gコードの本当の桁数は知りません)上位桁のゼロは表記していないだけである。逆に言うと、深夜や午前中などの時間帯や、録画時間が中途半端な番組のGコードは長くなり、本来表示に必要な桁数が現れる。デンソーのマップコードも同じ仕組みで首都圏でのコードを6桁に見せているが、あれは上位4桁にはゼロが入っているのである。同じ理屈で、例えば海洋部分は長いコードを割り当て、陸地には短いコード、都市部には最も短いコードを割り当てることが出来る。この方法では、符号化・復号化には基準となるデータが必要になるなど、使うときに不便な面も多いことも判明した。実際、デンソーのマップコードを使うには、基準点となるデータをデンソーから買わないと使用できない。ここでふと、本来の緯度、経度の利点について考えた。山や海での遭難の際は、普通緯度経度を使う。マップコードで遭難の通報があったら、通報を受けた側がパソコン等の電子機器を用意していてマップコードを緯度経度に変換しないと救助に向かえない。電子機器を使用しないとデコードできないと、こういう場合は問題になる。これまで漠然と「使いやすいコード」を作りたいと考えていたが、ここらへんでしっかり「使いやすい」の定義を固めておく必要がありそうだと思った。次回、ロカポイントのコンセプトでもある「使いやすい」の定義についての考察を書きます。post2005/10/12情報量と表示に必要な桁数の関係(ロカポ誕生の記録:2)地球上のあらゆる地点を1メートルの精度で表すために必要なデータ量を、次のように計算してみた。ステップが必要である。ステップが必要である。ステップは49.507ビットの情報量ということになる。この情報量を表すには、いろいろな基底の記数法(2進法、16進法、10進法など)で表すと、必要とされる桁数は以下のようになる。10000進法もし、10進法であれば最低15桁必要であり、クレジットカード番号(16桁)のように覚えやすいコードとは言えない。電話番号のように覚えやすいとは言えない。し中国語の漢字(や他のユニコードの文字)を10000文字使用して、10000進法にすればたった4文字で表現することができる。ようなコードが使いにくいことは容易に想像できた。それに、○進法の○の数値が大きくなればなるほど、桁数の短縮効果は少なくなってくることが分かる。基数を大きくするより文字種を扱いやすい数に絞る方が、効果が高いかもしれない。現段階で選択肢は二つあった。1.情報量そのものを減らす。精度を30メートルなどに落とすコードの適用エリアを絞る2.情報量は減らさないただし、扱いやすいコードを開発する必要がある。存の「ジオコード」は1の方法を採用しているものが多い。ナビゲーション用に30メートルと割り切ることで、10桁の数字で表すことを可能にしている。精度(3メートルの精度)を表すには、緯度方向と経度方向にもう一桁ずつ必要であり、12文字で表す拡張仕様になっている。したかったので、1メートルの制度も地球規模の適用範囲も譲れませんでした。したがって、2番目の方法を模索していくことに決めました。この時点ではどうやっていけば良いのか、まったくアイデアの無い状態でした。post2005/10/07ロカポ誕生の記録(1)まだプレオープンでお客様もあまりおりませんので、ロカポを開発するに至った経緯を書いておこうと思います。2004/10/25(月)、長野県塩尻市にあるGPS関係のベンチャー企業の社長さんとお会いした帰りでした。私自身も翌週の11/1に会社設立を予定していて、GPS(というかGIS)でビジネスをしていきたいと考えていました。塩尻から名古屋までの特急で考え事をしているのか、ウトウトしているのか、そんなときにふと、こんな事を考えました。宴会に行くとき、場所が分からない。お店の電話番号は分かっているので、お店の人に電話する。「すいません、そちらに行きたいのですが、道が分かりません。携帯のナビはあるのですが、お店の緯度経度ってわかりますか?」・・・てお店の人が分かるわけないですよね。みな電話番号は覚えているのに(最近はそうでもないか)緯度経度は覚えていない。「東経135度XX分XX秒、北緯35度YY分YY秒です」とは覚えきれないからだ。緯度経度で十分な精度、例えば1メートル程度の分解能を表すには、度、分、秒で表記しても度で表記しても合計15桁程度の数字が必要だ。脳に記憶できる限界があって、それは10桁の電話番号と15桁の緯度経度の間にあるのかもしれない。そこでふと浮かんだのがビデオ予約のGコードでした。数桁の数字に圧縮してある。『GIS版のGコード』をつくれば、脳の記憶能力の限界以下に情報を圧縮し、誰もが位置情報を気軽に使える世の中になるかもしれない。そこで眠気も覚め、私はパソコンを取り出し、エクセルでいろいろ計算しはじめました。post2005/10/02ロカポ(Locapoint)のサイト、本日プレオープン本日、ロカポ(Locapoint)のサイトをプレオープンすることができました。Map上に直接、マーカーとコメントを置いたり、線を描いたりして自分だけの「ガイドマップ」を作ることができます。不具合があり、さらに「重い」のですが、徐々に改良していく予定です。このブログへ来て頂きまして、ありがとうございました。Japanロカポ開発者です。