GPS神話 その3+iPhone

2010 年 2 月 9 日

ということでまたしても前回の続きです。

iPhoneのGPSはやはりA-GPSなのですが、携帯のそれとはまた若干異なります。
携帯の場合には、アンテナ・基地局が使われていましたが、iPhoneの場合には、それに加えて、WiFiのAP(アクセスポイント)が使われています。
ふだんあまり意識しないことだとは思いますが、WiFi機器からAPが発見できるようにするということは、APにログインできない設定にしておいても、APのグローバルIPアドレスが参照できるということです。

そもそも、IPアドレスは割当を受けた業者が公表されているため、使用されているIPアドレスのおよその位置の特定は可能です。余談ですが、アクセスしてきたユーザーに対してそのユーザーの地域に結びつけた広告を配信する、というサービスは主にこれを利用しています。

しかし、そこら中に車を転がして(Googleストリートビューのように)APのグローバルIPアドレスを高精度なGPSロガーで取得した情報にひもづけていけば、数メートル単位でマッピングすることができます。実際に、そうして作成したマップ(というよりはデータベース)を販売している業者は世界的にもいくつもあり、日本国内でもすでに複数あります。

iPhoneの位置情報機能には、もともとそれらを参照する機能が組み込まれているので、WiFiがONであれば、そして周囲にWiFiのAPが存在すれば、A-GPSに優先して位置情報を取得します。機能としての位置情報APIの内部では隠蔽されていて(これはコソコソ隠している、という意味ではなく、プログラミング用語としての隠蔽です)、それがA-GPSで得られたものか、WiFiから得られたものかを意識する必要がありません。それは同時に、どちらから得られたものかを判別する手段がないということでもあります。

さて、ここでGPSの本来の機能に立ち戻って考えてみますが、そもそもGPSの一連のやりとりは、基本的にはクライアント側の「時刻」を補正するもので、あくまでもそこから位置情報が計算できる、というものでした。
となると、GPSを使った位置情報のデータの中では、情報を返す側(衛星なり基地局なりAPなり)の時刻は重要なものとなります。A-GPSでも、単に位置情報を取得することだけが重要なのではなく、時計の時刻を補正することも重要な機能として使用されています。(携帯の時計はA-GPSによって補正されています)

衛星の時計はもちろん性能が担保されています。基地局の時計は、GPS衛星から取得した時刻によって補正されています。では、WiFiのAPはどうでしょうか?
私自身、会社にも自宅にもWiFiのAPを設定していますが、それらの時刻を、外部のNTPなどを参照して補正される設定にしているかどうか、即答ができません。一般的にもどうでしょうか?家で無線LANを使うためにAP/ルータを買ってきて、時刻の設定を行う人がどれだけいるでしょうか?

ではそれがWiFiを利用して位置情報を取得する際にどのような影響を与えるかというと、クライアント機器は、本来のGPSの枠組みから外れ、ごくごくシンプルに位置情報を取得するだけの立場になります。基地局やWiFiAPなどの「仮想GPS衛星」から戻ってくる時刻があてにならないわけですから、時間軸からは切り離されたものになるということです。

WiFiのAPを利用することの最大のメリットは、携帯の電波が届かない場所に端末があったとしても、WiFiのAPさえあれ良いわけですから、地下鉄や建物の中などでも位置情報が取得できます。また、場所にもよりますが、携帯の基地局の数よりもWiFiのAPの方が数が多いような地域では、基地局を使用するよりも細かい位置の特定が可能になるはずです。

デメリットは、位置情報を時系列にならべると、精度に非常にバラつきが生じる点です。本来であれば、時系列に並べた上で、ほぼ同じ時刻の位置情報をまとめて、最も精度の高い位置情報を抜き出せば良いはずです。しかし、位置情報に含まれる時刻が不正確なので、実際にそれを行うと、壊滅的な軌跡が描かれます(とても見れたものではないです)。

この話をすると多くの場合「じゃあiPhoneはGPSとは言えないんじゃないか?」と質問されますが、そのたびに私は「そうとも言えるしそうでないとも言える」と答えています。
これは徹底的にユーザーを向いた機能なのです。ユーザーにとっては可能な限り多くの場所で、可能な限りズレのない位置を表すことが求められる機能なのであって、「GPSとはそのようなことが出来るものだ」という認識が既にでき上がっているのです。GPS衛星を使っていようがいまいが、時計がどうとか、そんなことはどうでも良いわけです。そしてそうした考え方が、Appleの製品については全てにおいて反映されています。

これまで長々と書いていましたが、結論としては、iPhoneはGPSロガーにはなりえません(「おまえが言うな!」と言われそうですが)。アプリ開発を続ける中で、この問題は常に関係者間で議論されてきました。実際に使用する人から見た場合に、位置のバラつきは、アプリの性能の悪さとしか見えないからです。「わざわざク○アプリと呼ばれるために作る必要があるのか?」という意見もありました。
しかし、私はむしろ、Apple的な考え方をすべきではないかと思いました。iPhoneを持っている人たちに対して、iPhoneでできること(と同時に専用機でないことの限界)を見てもらいたい、まずはGPSロギングの面白さを感じてもらいたいと考えたのです。携帯では面白さが伝わるほどの精度が出ませんが、iPhoneであればその面白さを伝えることのできるレベルにあると思います。
iPhoneの機能はもともと、これまでの携帯とは違う「新しい経験」を楽しむということを第一に想定しているものだと思うのです。iPhoneそのものが全くもって完全とは言い難い機械ですが、完全ではなくともこれだけ人の心をひきつけるわけですから、「完全じゃないじゃないか」という批判には意味がないのです。
そこで、「完全にGPSロガーであること」を追求するのはやめました。精度を求めるのであれば、GPSロガーを買った方がハッピーになれます。しかし、ほとんどのiPhoneユーザーにとって、それは一番重要なところではありません。iPhoneでなければ意味がないのです。

ちなみに、海外の(ほとんどが海外のものですが)GPSロガーアプリの多くは、移動中の軌跡を見せているものは少ないのです。iPhoneに貯めておいたデータを後で一括送信し、受け取ったサーバ側で、不要と思われるデータをガツガツ間引いた上で表示するというものが主流です。これであれば、最終的に「きれいな」軌跡を見ることができるでしょう。(この方式を検討したことも事実です)
しかし、その場で見れなければ、楽しみは半減すると思うのです。「きれいでなくてもいいからその場で見せろよ」と思うのですよね。

GPS神話 その2

2009 年 12 月 5 日

ということで前回の続きです。

世に多く出ている「GPS対応」のうち、かなりの割合で実はGPSには対応していません。
かといって嘘をついているか、というとそうでもないというのがこの問題の困るところでして、端的に言ってしまうと、広義のGPSと狭義のGPSがある、ということです。

狭義のGPSというのは前回まとめたとおりのものなんですが、広義のGPSというのは何かというと、GPS由来の位置情報を使用するもの、というものです。
そのようなものの中で一番多く出回っているのが、GPS対応携帯電話でしょう。
GPS対応の携帯電話は、GPS衛星からの位置情報を取得しているわけではありません。実際にGPS情報を取得しているのは、携帯電話基地局です。

もともと基地局にとって、GPS衛星の情報を取得するメリットは「時計あわせ」がメインでした。前回のまとめにもありましたが、GPS衛星が発する電波の正体は時報です。
(もちろん時計サーバーを用意すれば各基地局に正確な時間をいきわたらせることも可能でしょうが)
携帯端末が直接GPSの電波を受信するのは効率が悪いので、サービスとして提供できるレベルの「GPS機能」になりません。携帯キャリアの電波が届く範囲内にいながら、さらに30秒だの1分だの時間がかかるようなものを使ってもらえるとは思えません。

ということで、携帯電話でつかっている「A-GPS」という位置情報システムは、GPS衛星の情報を地上の基地局で受け取り、そこから情報を分配する、という仕組みでできています。GPSの恩恵をできるかぎり多くのデバイスで利用できるようにした、すばらしい仕組みです。

しかし、携帯が精度の高い位置情報を得るためには、携帯側が複数の基地局の電波をとらえ、それぞれの基地局からの位置を割り出さなくてはなりません。

携帯は可能な限り通信品質を上げるために、基地局を探し続けるように作られています。これはかなりバッテリーを消費する挙動ですので、余計なことをしたくはないところです。
ですので、基地局を探す挙動は、(公開されていない…と思うのですが…実測調査ができますので)ある一定の時間、状況の変化によって発動するわけです。
つまり、携帯側から見ると、位置情報のアップデートは電波受信状態の強弱に影響されます。いまいる場所(地形や建造物など)によって、位置情報の精度が変動する可能性があるわけです。さらにいえば、電波の混雑ぐあいによっても「基地局ゲット待ち」が発生するわけで、とぎれとぎれの場合にはやはり影響をうけることが予想されるわけです。

もちろん、携帯キャリアの中の人たちは、こうした状況が起きないよう日々泣きながらお仕事をされているわけですが、これは携帯キャリアの人たちとは関係なく、そもそもA-GPSの仕組みに由来するものです。
たぶん、携帯のGPS機能を作っている人たちに、「携帯のGPSって精度あんまりよくないねー」などと言ったら、おそらく激しく怒って言うでしょう。「バッテリが速攻で切れてもいいならいくらでも精度上げられるよ!」

さて、ここでiPhoneというヤツが出てきまして、使い始めた人たちが「あれ?携帯よりもGPS精度がいいんじゃないの?」と言い出しました。
実際、精度は格段に良いのです。ではこれはなぜかというと、さらにプラスされた機能があったわけでして…。

ということで、まさかの前中後編。続きは次回…。


全体としてかなり端折っていますので、この文章は完全に正確ではありません。
専門家の方からすると「違うよ!」というところもあると思いますが、そこは「部外者がしゃしゃり出てきやがって、しかもわかってねえなあ~」とニヤニヤしていただければと思います。

GPS神話 その1

2009 年 11 月 8 日

「GPSってすごいんでしょ?cm単位で場所がわかるんでしょ?」というような質問をよくされます。
確かに新聞やニュースなどでGPSについて語られる時、「今は10cm単位でわかっちゃうんです」というような説明がされることもあります。
が、それは正しくありません。原稿書いている人も本当の仕組みを把握していないんじゃないかと思うことがあります。結果として、世の中にはGPS全般に対する過度な期待感というか、誤解が生まれてしまっているんじゃないかと思うのです。

まずGPSのおさらいをしますと、

  1. GPSは衛星から電波を投げ、受信するシステム(一方通行です)
  2. GPS衛星の電波は直進性が強いので空が広く見える場所である必要がある(=屋内で使用できない)
  3. 衛星はただ時報を投げてくるだけの存在
  4. 民生用と軍事用がある(軍事用の方が精度が高いですが利用できません)
  5. GPSで位置を認識するためには複数の衛星の電波を受け取る必要がある(計算で位置を算出する)

というのが概要です。
(元々船舶用なので、海上ではこれで全然問題ないですよね)

さて、Wikipediaによれば、現在のGPS衛星は、民生用では95%以上の確率で10m程度の精度で位置を取得することが可能とされています。
ここで重要なのは、

  1. 最高が10mであること
  2. 5%の確率で10m以上誤差が発生すること
  3. 10m/95%というのが限りなく理論値に近いこと
  4. 衛星から電波を受け取る装置の都合は想定していないこと

の4点です。
つまり、「10m程度の誤差で位置を認識できるはず」というシステムなのであって、「確実に10m以内に位置を確定できる」システムではないのです。

ではなぜ本来の力が出せないのかというと、いくつか理由があります。

  1. 精度の高い受信機は高価
    アホみたいな話ですが、実は一番影響があります。最も入手しやすいのは数千円~1万円までの機種だと思いますが、その価格帯では正直まともに衛星の電波をキャッチすることすら難しいのです。たとえば、私の持っている8,000円程度の受信機は、晴天でないと衛星が複数キャッチできません。薄曇でも電波をつかまえるのに15分~30分かかります。
  2. 空が狭いと電波が弱くなる
    あまり日常生活において「空が狭い」という言い方はしないと思いますが、これはまさに字面どおりです。ビルに囲まれた場所や高架のそばなどの人工物の存在だけでなく、崖下など自然の地形にも左右されます。
  3. 邪魔な電波/電磁波が多い
    常にではないようですが、時々影響するようです。すぐそばを電車が通過すると精度が激的に下がる、という現象を何度か体験しました。

つまり、人間の生活している場所では、GPS精度の低下を防げないのです…。
実測してみたところ、数百m程度の誤差はあたりまえのように出ます。
10m程度の円内におさまるつもりでいるのに!

ところが、実はもっと大きい問題がひそんでいます。
なんと、世の中の「GPS機能」がついた機械というのは、実は多くがGPSではないのです!

じゃあ何だということになりますが、それはまた次回…。

推測する力。

2009 年 10 月 18 日

ものを作るためには(当たり前ですが)さまざまな力が必要だと思います。

その中で、個人的にかなり重要だと思っているのが、想像力です。
と言っても、ゼロからアイデアを考え出したり、言葉の裏を瞬時に読み取ったりというエスパーじみた能力を指しているのではありません。

経験によって知識が増えるのは当然ですが、一人の人間が蓄積できる情報も、関知しうる情報も、一生をかけたところで大した量ではないはずです。
一方で、この世にあるものは全て誰かによって作られたものであるわけで、全てのものは、誰かの知識に基づいていたり、逆に誰かの失敗だったり するはずです。

目の前にある何か、吊り広告であったり、キャッチコピーであったり、何らかの言語の関数であったり、API仕様書であったり、Webサイトであったり、取り扱い説明書であったり、歩道のガードレールだったり、携帯の充電器だったり、何かを見て、目に見える以上の何かが「存在するかもしれない」と考えることができるかどうか。
ものをつくる仕事を始めてから、ものを作れる人になるまでの間に存在する壁のひとつなのではないかと思っています。

パスワード問題の続き。

2009 年 8 月 21 日

リリースしたiPhoneアプリについては公式の方でご覧いただくということで。
http://www.flama.co.jp/blog/logearth_20090820

さて前回の「WordPressではユーザーが非常に短いパスワードに変更できてしまって困る」の件、どうやらユーザーフォーラムでは「だったらパスワードの変更を禁止したらよくね?」ということになっているらしいということが判明しました。(確かにパスワード変更禁止プラグインは存在するので)

確かに…。セキュリティ的にはそれもまた別の問題が発生するような気もしますが、とりあえずこの一点についてはそれで良いんでしょうね…。微妙に納得がきませんが。

WordPressで短いユーザーパスワードを入れさせない…ということがしたい。

2009 年 8 月 17 日

ということなのですが、プラグインが全然見つからないのです。

というのも、WordPressでは、ユーザーが自分でパスワードを変更する際、「短すぎますよ」と怒られはするものの、1文字というのも設定できてしまうのです。

「しないでね」と言っても、できるようになっていればやる人はやっちゃうわけでして、これは困ったなあと思っている次第。

作るべきか…。

WordPressで関係者だけに公開するコンテンツを。

2009 年 8 月 7 日

ということで、けっこう長いことWordPressを使っているわけですが、意外と細かいことをしようとすると、意外にもやったことがなかったことに気づくわけです。(当たり前ですが)

何かというと、関係者だけに公開するコンテンツを作る必要があって、「あー記事非公開とかあったなー」というのを覚えていたので、たぶんすぐできるだろうと思った次第。

正直ナメておりました。
結論から言うと、Role Managerというプラグインを入れました。
これは、通常「管理者」から「閲覧者」まである権限とは別に、独自の権限を設定した「役割グループ」というのを追加するものです。

で、新たに作った役割グループに対して、ページ閲覧・非公開記事閲覧・非公開ページ閲覧だけを許可するわけです。
これで、公開/非公開記事を混在させても、ログインしていれば閲覧ができるという状態にできます。

デフォルトの機能で簡単にできそうなもんなのになんでこんなめんどくさいことをするかというと、どうやらWordPressの「閲覧者」には、非公開記事を閲覧する権限が無いようなのです。

元々、WordPressの「ログイン」は「コメントできる」権限以上という想定になっているからでしょうね。
(なのでコメントを禁止した状態では閲覧者権限はほとんど意味をなさないですね)

そんなこんなありつつも最終的にはだいたいどうにかなるWordPressはありがたい、というお話でした。

GoogleApps+Postini

2009 年 7 月 21 日

GoogleAppsを会社用にお金を払って使う版=Premiumというヤツですが、これにはPostiniというメール検疫サービスが付いています。正直これには凹まされました。

もともとこれを使い始めたのは、メールアーカイブ機能があるためです。

辞めていく社員が自分のPCをメールごと全消去するというのはよくあることで、正直いって、退職というものが円満である割合は、正直それほど高くない、というのが私がこれまで中小企業で見てきた感想です。(中小じゃなくても良くあったけど)
メールの消去によって損害を被ったのどうのというモメ事が、実際結構起きているんですよね。
「消して当然」と思う人がそれなりにいるかもしれません。立場の違いだったりもするのかもしれませんが、これはもうしょうがない。後を引き継ぐ人がどれだけ苦労しようと知ったこっちゃねえよ、と言ったとしても、これもやはりしょうがないと思っています。
対策ができるのであればすればいいだけで、できるのにしないのは、やっぱりそれもしょうがない人だと思うわけです。

ということなんですが、Postiniには、メールアーカイブだけじゃなくて、SpamフィルタとかVirusフィルタとかコンテンツフィルタとか山盛り入ってまして、しかもデフォルトではだいたい全てOnになっています。

一見よさげに見えるのですが、これがクセもので、ちょっと「まじめなお仕事」から外れたものがバンバンひっかかります。
「安全の確保のためなら業務が一部遂行できなくてもかまわない」というくらいのセキュリティ意識?コンプライアンス意識?をお持ちの会社さんであれば良いのでしょうけれども、普通の会社には堅いものから柔らかいものまで、情報として入ってくるわけです。
しかもひっかかる勘所がわからない。明らかにヤバげ文言は通っていて、一方で、某(携帯で有名な若者が多い)SNSの名前が入っているだけでアウトだったり。

…ということで、Postiniはメールアーカイブ機能以外全て停止することにしました。
もとから実施していた対策との組み合わせで対処。

Postini自体はやはりある程度の大きさの企業/組織に展開するための機能であることは間違いなくて、「ローカルで対処できる人数の限度」を超えたところで初めてプラスに転じるものでしょうね。

誰かがどこかで。

2009 年 7 月 18 日

時系列なので箇条書きで。

  1. ちょっと思いついたネタがあった
  2. その日の他社さんとの企画会議で言ってみた
  3. ほぼ全員ポカーン
  4. 会議終わって南雲さんのtwitterを見たら、そのネタとほぼ同じことがアイデアとして書いてあった

ということがありまして、やはりこれは素直に喜ぶべきだろうと思いました。

iPhoneアプリをAppStoreにUpする時の罠

2009 年 7 月 17 日

iPhoneアプリをAppStoreに申請する時、Apple製のApplicationLoaderというツールを使います。
が、これでUpしようとしたら拒否られまして、まるまる36時間くらいあれこれ悩んだのでグチって書いておく次第。
SDKバージョン3.0です。

まずエラーの内容は

The binary you uploaded was invalid. The signature was invalid, or it was not signed with an Apple submission certificate.

というものです。

  1. Certificate/Provosioningが間違っている?
    結論から言うと最初は確かに間違っていました。Distribution用のProvisioningになってなかったし。
    codesign -vvvv hoge.app が問題なく通ったのでやり直してみたところ、エラー変わらず。
    Developerアカウントの契約更新が関係している?
    確かに最近そういうこともあった。しかし、それだったら1の対処で新しくなってるはず。
  2. Certificateのcommon nameが間違っている?
    たしかにcodesignコマンドとかは構造の妥当性とかのチェックっぽい感じはするので、内容のチェックを再度徹底的にしてみた(とにかくいろいろ変えてcerを作ってporovision作って…)。
    しかしどうにも変わらず。
  3. じゃあ何よ?
    ということで、こういう時は最も基本的なところに立ち返る必要があるというのが経験上の鉄則。
    Developer Program Portal > Distribution > Prepare App をクドクド見直していると…

あれ?アップロード用のzip作るのって、zipコマンドじゃなくて右クリックなの??
もしかしてそれでzipの内容変わっちゃうの?

…アップロード正常終了しました。恐るべし。20年Mac使ってきましたがまさかこんなオチとは…。

ということでまとめますと:
appファイルをAppStoreに申請するときはzipに固めなきゃいけないんだけど、右クリックの方の圧縮でないとダメ~

“zipしろ”と言われたら迷わずコンソールを立ち上げてしまうおのれの頭の固さを呪えというお話でした。