Code for History

"Code for History"はIT技術を歴史学上の問題の解決に使うコミュニティです。強調したいのは、我々にとってIT技術は「手段」であって「目的」ではありません。「目的」は歴史学上の問題を解決する事であって、必要であればITでない手段も活用します。常に最優先なのは、問題を解決することです。

Maplatディストリビュータ企業募集

会津若松版奈良版など展開しています古地図アプリMaplatですが、オープンソースなので誰でも自分でデータ作って自分のサーバ上で公開できるものの、技術ある人やある程度勘のある人しか設定できないので、市井の方が公開したいと思ってもまだハードル高い状態です。
ですので、Maplat普及のためにも、導入したい方の相談に乗って代わりに設定導入作業する(もちろん商売として)、Maplatディストリビュータとでもいうべき立場になっていただける企業を募集しています。
ご興味あれば、rekishikokudo@tilemap.jpまでご連絡ください。

私が語らないと歴史に残らない「位置ゲー事件簿」その2:Willcomと京ぽん - ユーザからの熱愛を受けたキャリアと名機

その1より1年以上を経てしまったが、その2を書いてみたいと思う。

位置ゲー黎明期は同時にケータイWebサイト黎明期(は少し過ぎてたかも)でもあったが、開発者とユーザの間がとにかく近かった。
黎明期の位置ゲーはほぼほぼ企業ではなく個人が作っていた、というのも一つの理由ではあろう。
それゆえに、開発者が動作検証できる各キャリアの端末を全部揃えていないこともあったし、また揃えていても機種依存等で動作が同じキャリアで異なることもあった*1
そうなると、勢い問題の発生している機種を持っているユーザの助けを借りないと、デバグすらできない事もあった。
プログラムを少し変えて、変えた事を当該機種を持つユーザにメールや電話で連絡して、動作の変化を教えてもらって、変化と仕様書を付き合わせながら起きている現象を想像して、また少し変えて...というようなボトルシップの組み立てのようなデバグを繰り返したりもした。
ゲームが少しおかしな動作をすればクレームの嵐というような今現在から振り返ると想像もつかないような、おおらかな時代だった...ひとつには、開発側だけでなく遊ぶ側も、自分たちがコンテンツを作っているという意識があったのだと思う。

また単にゲームのデバグだけでなく、ゲームの前提となる機能の利用方法のハックなども、開発側とユーザ側が一緒になって行ったりもした。
たとえば、auケータイでの位置情報は、アンテナ基地局の位置情報を取得する方法は公開されていたが、GPSで位置情報を取得する方法は長らくezwebでのコンテンツキャリア以外には公開されなかった。
それをハックして、htmlタグの記述方法と、種々のパラメータの意味を明らかにしたのは、我々黎明期の位置ゲー開発者とユーザとの連携の功績だ。
そんな仕様ハックを楽しんでいたユーザの中でも、特に熱かったのが、PHSである「Willcom(当時DDIポケット)」のユーザ達と、その愛した名機「京ぽん」である。

その1で書いた通り、日本の位置ゲーの走りのひとつである「アンテナ奪取」は、端末が返すアンテナの基地局位置情報を元に、それを奪い合うゲームだった。
ということは、当然のことながら位置情報が取れない機種/キャリアでは遊べないだけではなく、位置情報が取れてもそれがGPS位置情報などの正確な位置情報だと遊べない、「アンテナ位置情報でないと」ゲームが定義できないゲーム性だった。
当時そのようなアンテナ位置情報を取れたのは、へなさんが「アンテナ奪うのれす」を作った「J-Phone(現Softbank)」と、「au」しかなかった。
Willcomの位置情報は、端末がその時受信できている複数のアンテナとそのアンテナからの電波強度を元に、三角測量的な手法で推定した位置情報を返していた。
当然、Willcomは少しでも正確な位置を返すためによかれと思ってそうしていたのだが、その三角測量をしているがゆえに、Willcomでは「アンテナ奪取」は原理的に遊べないはずだったのである。
熱いWillcomユーザが、名機「京ぽん」をハックし倒すまでは。

Willcomユーザというのは、まあぶっちゃけ変わり者が多かった。
普通にほぼ同じ技術を使っている(CDMA oneとかPDCとかは置いておいて)ケータイの間で利用料金などで3社を乗り換えている一般ユーザと違い、明確に毛色の違う「PHS」を選んでいる彼らは、どこか普通と違っており、またこの技術のここが好きだからこれを選んだ、と明確な意志を持ちかつ技術に詳しい人が多かった。
実際、アンテナから得られる電波の強度を測定してロギングしたデータをデータベース化したり、そういった活動を楽しんでいるユーザが多かった。
そのWillcomユーザから熱狂的に愛されたのが、京セラから発売された「京ぽん」だった*2

その京ぽんを使って、位置情報測位時の電波強度パラメータの測定等を遊んでいたWillcomユーザが、ある日気づいた。
普通に位置取得すれば、必ず複数箇所のアンテナの電波強度が返ってくるのに対し、ある手順で位置取得すれば、再現性を持って必ず1ヶ所の電波強度しか返ってこない(つまりは三角測量してないのでそのアンテナの位置が得られている)というファームウェアバグに。
その手順自体は、昔のことすぎて私もよく覚えていないが、確か1度httpリクエストを投げて、そのレスポンスが完了する前に、リクエストをキャンセルしてすぐに位置情報取得リクエストを投げるとか、そんな手順だったと思う。
そのやり方は変わったもの好きなWillcomユーザの間ですぐに広まって、すぐにWillcomユーザではなかったものの位置情報サイトや位置ゲーをやっていた私の耳にも届いた(というかそもそも私のサイトのユーザさんが見つけたのだったかもしれない。そこまでの細部は忘れた)。
その手順がシステム的に再現できれば、Willcomでもアンテナ奪取ができる!と思った私は、いろいろ実装してみて、もちろん私はWillcomユーザじゃないので京ぽんを持っているユーザさんにテストしてもらって、最終的にシステム的にも再現できる事を導くのに成功した(たしか、味ぽんは当時では珍しくクライアントサイドのでJavaScriptも使えたので、空のページを読み込んで、その上でJavaScriptで位置取得URLにリダイレクトする、といった手順だったように思う)。
その技術の確立で、晴れてWillcomでも、京ぽん限定だがアンテナ奪取を遊べるようになったのだった。

一度Willcom版アンテナ奪取が実現すると、弱小キャリアで元々ユーザが少ない上に、機種限定というハンデがあったにも関わらず、Willcom版はJ-phone版やau版に引けを取らない盛り上がりを見せた。
元々変わったものが好き、というユーザ特性があったし、自分たちで作り上げるコンテンツが好き、というところもうまくはまったのだと思う。
驚くのは、公開後しばらくして京ぽんファームウェアアップデートがあり、そのファームウェアアップデートを施すと単独アンテナ位置を返すというバグが直ってしまい、アンテナ奪取が遊べなくなる、という情報が出回った時だ。
それを聞いた京ぽんアンテナ奪取ユーザ達は、ファームウェアアップデートをすれば様々な動作が改善されるにも関わらず、ファームウェアアップデートを施さず、その後何年も古いファームのままアンテナ奪取を遊び続けた。
すごい位置ゲー愛だと思う。

アンテナ奪取の元管理者という立場から、私がWillcom京ぽんについて語れるのはここまでだが、Willcom京ぽんコミュニティーからは、他にも多くの黎明期位置ゲーコンテンツが生まれている。
いまや日本を代表する企業に育っているコロプラも、その元になっているコロニーな生活Willcomから生まれたコンテンツだし、同じく黎明期の位置ゲーである電波の杜のゲーム群も、Willcom起源。
位置ゲーではないけどKamoTOWNやGPSMANなどいろいろジオメディア界隈に影響を与えたコンテンツを作成した、ふぇちゅいんさんもWillcom起源。
今や残っていない企業ですが、あの頃のWillcomという会社とその名機京ぽん、そしてその熱いユーザ達は、日本の位置ゲーの歴史に大きな爪痕を残したと思える。

*1:私もできる限り4キャリア揃えていたが、やはり限界はあった。ちなみにその頃の後遺症か、いまだにiOSAndroid両方持ってないと不安だし、もう触ることはないだろうとはいえWindowsフォンもあったりする。

*2:京ぽんの名称は、当時のWillcomのネット利用可能電話ブランドが「Air-H"(エアーエッジ)」であったため、Willcomの電話全体が「味ぽん」の略称で呼ばれていたことによる。「京セラ」が発売した「味ぽん」なので「京ぽん」。

Maplat奈良版公開!

私の開発しているMaplatという古地図を扱うアプリですが、奈良の古地図2件と、歌うパステル画家5Seasonsさんの京終界隈マップ、うとうとさんのならまちおもしろ地図3部作を加えて、Maplat奈良版として公開しました!

GPSで現在地を表示しながら、古地図や楽しい絵地図で奈良の町歩きが楽しめるはずです。 ぜひ試してみてください。

他の地域もあります!

今後も新しい地図をどんどん増やしていきます! これに追加したい地図などお持ちの方はぜひご提供、ご紹介ください! 自分の地域に作ってみたい方も、ぜひご相談ください。

古地図アプリが紙の地図に勝つために:その1、みんなでワイワイ視点共有

以前、Facebookにも書いた話題の改題です。

私は以前Stroly(当時はちずぶらり)という古地図や絵地図の観光マップアプリの仕事してましたが、家族と鳥羽に行った時に自分の観光アプリ起動した隣で、大学生たちが大きな観光マップ広げて「どこいくー?」「私ここ行きたいー」とかワイワイしてるの見て、あ、負けた、と思いました。
1人で手元で古地図/絵地図みながら何かを探す用途としては、古地図/絵地図アプリはハンディで便利ですが、バッと拡げてみんなでワイワイ視点共有しながら、あーでもないこーでもないと楽しく検討するためのプラットフォームとしては、現状の古地図アプリは全く向いているとはいえません。

単に視点を共有できるようにすればみんなでワイワイできるようになるとは限りませんが、少なくとも現状できないものをできるようにすることには意味があると思い、すぐ視点を友人とのアプリ間で共有する機能を考えてStrolyに実装したいと思っていました。 しかしながらその直後、Strolyを解雇されて実現できませんでしたが、今でもあの時「紙に負けた!」と感じたインパクトが強いので、自分のアプリ(Maplat)で実現したいと思ってます。
そういった視線を多人数で共有できるの含め、アプリ地図はまだまだ紙の地図に勝てないところは残っていて、その意味でまだ紙地図はアプリ地図のライバルだし、そういう負けてる点にいかに気付いていかに取り込んでいくかが、アプリ地図技術者の使命だと思ってます。

といったところまでがFacebookや、その以前にはTwitterにも書いたはずの内容なのですが、媒体を変えたとはいえ何度も同じ内容だけを書くのもアレですし、今回は実際にシステムを組むとどうなるかを設計してみました。
今私の中で空前の大ブームの、Azureサーバレス構成で作ると、 f:id:kochizufan:20170916011546p:plain こんな感じになります。

この仕組みを使って、Maplatでも友達間の視点や現在地、お気に入りPOI等を共有でき、チャットなども交えてワイワイできるような機能を加えたいと思っています。

=== 追記 === 最初この視点に気づいた2012年GW頃と10月ごろのTweetがサルベージできたので貼っつけておきます。

なるほど、当初はBlueTooth等での視点共有を考えていたようです。

誰も伊達や酔狂で1億円企業と喧嘩なんかしねえよ

伊達や酔狂、ワガママでStroly社と争ってると思われてる節感じるけど、社員10人以上抱えて弁護士までついてる1億円企業相手に1人で喧嘩して怖くないわけないやろ。
あの会社が俺に対してなしたいまだに謝罪ない脅迫、騙しに対する怒りと、まだ開発中途だった中途半端な技術を拡散される事の社会的損失に対する危機感がなけりゃ、こんな喧嘩とっくにやめてるわ。

あと、と言いながらも、同じ業界にお互い居てイベントなどで顔合わせることも多いんだから、お互いに謝罪し合って過去の事は水に流そうぜ、という呼びかけは常に俺の方から何度かしてる。
それに対して弁護士がしゃしゃり出てきたり、警察に通報した、などと常に逃げ回ってるのがStroly社の方。
嘘だと思うなら弁護士との内容証明のやりとりで俺の方から出したもの公開でもなんでもするけど。

Maplatのキーワードは、Strolyでは実現不可能な「非線形全単射投影の保証」

Maplat会津若松版をSotM会津若松で宣伝したいと思って、現地で売りを列記したチラシを配布しようと思ったのだけど、念のため運営に確認したら、スポンサー代を払わないと現地でチラシは配れないと。
スポンサー代調達しようかとも思ったけど、やっぱキツかったのでそれは断念。
代わりにMaplatのTシャツを作って現地で着て歩くことにした。
チラシでならいろいろとMaplatの売り、できることだの何だのてんこ盛りにしようと思ってたんだけど、Tシャツだと一発で見た人が興味持ちそうなこと書かないといけない。
で、何にしようかと思った時、一瞬でひらめいた。
古地図座標系と正確な地図座標系の間の「全域(−∞〜+∞)」で、「非線形全単射での投影変換」が「保証」されること。
これしかない。

英語で書くと、"Guaranteed nonlinear bijective projection"。
ちずぶらりに合流する前のマピオン時代から、8年越しで古地図を扱う技術として実現したかったことで、Maplatでも、ここ1ヶ月ほどでやっと実現できるようになった性能。
Maplatで実現できていて、Strolyで実現できてないことは山ほどある。
リアルタイムでの古地図と正確地図の重ね合わせ。
Webでの、方角と地図スケールの重ね合わせ。等等。
が、どれも、その差が生まれたのは開発担当者の能力の違いであって、技術ポテンシャルの根本的な差異ではない。
ぶっちゃけ、リアルタイム重ね合わせは、インパクトの割に正直言うと「虚仮威し」だし、方角と地図スケールの重ね合わせは、Stroly側でも俺が残してやったスマホ版では実現できている。
Web版Strolyで実現できていないのは、ぶっちゃけ開発者の怠慢、あるいは能力不足でしかない。
今の三流開発者に取って代わるような、超一流開発者がStroly社に入れば、あっという間に覆される優位。

それらに比べて、「非線形全単射での投影変換」は、原理的にStrolyでは絶対に実現できない機能。
どんなに優秀な技術者が入っても、「StrolyがStrolyであること(つまりは、今の特許取得対象技術)」を捨てない限りは、原理的に絶対できない(できると主張する奴がいるなら、そいつは数学ができないアホ)*1

Strolyが誇りとしている「特許を取得しているという事実」、その請求項に示されている手法では論理的に絶対にできないことだから、この優位は絶対にStrolyから覆されることはない。
また、Strolyの特許技術で原理的に実現できないことをこちらが実現していると言う事実は、とりもなおさずこちらがStrolyの特許を侵害していないという証拠にもなり、Strolyがこちらにスラップ訴訟等を起こす可能性に対する、最高の防御にもなる。
この売りを前面に出さない手はない。

また、全単射投影保証が実現できていると言うことは、とりもなおさずGISで重要なトポロジーの保存なども保証されると言うことだ。
つまりは地籍図の変換など、遺産や税金など大きなお金が動くセンシティブな分野でのGIS利用とも融合できる可能性が出てきたと言うことだ。
古地図連携技術が数奇者のおもちゃだけでは終わらなくなったことも意味する。
ここに未来がある。

今後Maplatを売り込む時は、「非線形全単射投影の保証」を前面に推して売りだしていきたい。

*1:というか、Stroly社が取得している特許5810411号の請求項2と請求項9は、原理的に全単射実現できないStrolyが、少しでも「全単射っぽく」見せかけるための技術で特許が成立している。この特許の存在自体が、Strolyが全単射できないことと、全単射の重要性、そしてそれを実現したMaplatの有用性の証拠になっている。

SotM2017向けにMaplatを整備してみて

Maplatを今年のState of the Map Aizuwakamatsu向けに整備しての気づき: ‬

‪データ整備:‬

  • 同じ地域の古地図を多数マッピングする場合、正確地図側のマッピングポイントはほぼ同じところになる場合が多い。地域毎のマッピングポイント候補データセットか、あるいは他の地図のマッピングポイントを読み込める機能と、それに対するだいたいの対応点位置リコメンド機能が必要。
  • 対応点としてのGCPと、トポロジーエラー解消のために加えた補助GCPを見分ける属性必要。

アプリ側:

  • 地図もPOIも、こちらから提供した情報しか表示できないアプリだと、それだけで街歩きが完結できない。予約してる宿の場所やコンビニの場所、トイレの場所など、ユーザーが他から得た情報の取り込みUI必要。
  • POI説明文の中に別の施設の説明がふくまれていることがあるが、その施設がPOIとしては整備していなくても、準備した地図の中に画像情報として含まれていることがある。そこに対し、地図IDと座標などで遷移できるリンク機構を準備すると、コンテンツの連携を高めることができる。

© Code for History