他の人が書いたPHPスクリプトをちょこちょこと修正していて、びっくりする書き方を発見しました。再現したサンプルコードは以下のとおり。
<?php $foo = 2; switch($foo) { case 1; echo "hoge"; break; case 2; echo "fuga"; break; case 3; echo "piyo"; break; default; break; } ?>
これを実行すると、fugaが表示されるんです。
「別に普通じゃん」と思った人は、良く見ましょう、case文のところがセミコロンで終わっています。
「いや待て、オレが今まで知らなかっただけで、本家の(?)Cで同じ書き方をしてもアリなのかもしれん!」と思って、同じ書き方でCのコードを作ってgccしてみたら、案の定コンパイルエラーとなりました。
こんなクォリティ高い書き方でも解釈してくれるPHP、凄すぎます。マニュアルにも載ってないのに、このような書き方で納品しているうちも凄すぎます。奇妙なswitch文の他にも、グローバル変数とマジックナンバーの嵐。一刻も早くここから脱出しなければ、気が狂ってしまいそうです。
NTTドコモ、KDDI、ソフトバンクモバイルの携帯キャリア3社は2007年4月以降、携帯電話などからの緊急通報の際に、発信者の位置を通知することが義務化されるのを受け(2004年5月の記事参照)、「緊急通報位置通知」機能を導入する。
緊急通報位置通知機能は、この機能に対応した携帯電話から110番、118番、119番への緊急通報が発信された際、接続先の警察や海上保安庁、消防などの緊急通報受理機関に、発信された場所に関する情報を自動通知するもの。GPSを使った緊急通報位置通知機能に対応した機種ではGPSによる測位情報を通知し、非対応の機種やGPS測位が利用できない場所での発信の場合には基地局情報を基に算出した位置情報を通知する。
緊急通報時に口頭で説明するよりも、GPSで位置情報を送った方が、警察なども圧倒的に分かり易いだろうなぁ。ドコモが903シリーズから、ようやくGPSを標準搭載してくれたから、可能になって来たのではないかな。
携帯電話の位置情報を扱うシステムを作ったことがある。誰も仕様を知らない(と言うか開発事例が社内に無かった)ので、一人で寂しく公式情報を見ながら作った。
携帯電話端末の位置情報をもらうプログラムというのは案外簡単に実装出来て、それこそシンプルにHTMLのフォームからリクエストを出せば、(端末利用者に同意してもらって)返って来たURLの引数やリクエストヘッダで情報が受け取れてしまう。なかでも3G端末のGPSによる位置情報は、精度が非常に高い。例えば、もらった緯度経度をYahoo!地図情報に引数で渡してやると、「位置情報を送った時、〇〇駅の何番ホームに居た」というのが分かるくらいに誤差が少ない。素人が仕様書を見ながらリクエストを送っただけで、ここまで分かってしまうのかと、作っている当時は少し怖くなってしまった。
この位置情報というやつに一番真面目に取り組んでいたのがauで、ボーダフォン(現ソフトバンク)も、3G端末は非常に高い精度の緯度経度がもらえるし、2G端末では精度は落ちるものの、緯度経度に加えて地域名がもらえた。圧倒的にうんこ仕様だったのがドコモで、オープンiエリアでは、死ぬほど大雑把な括りでまとめた地域コードがもらえるだけで、「後は公式サイトに置いてある地域コードと地域名に対応したEexcelファイルを読んで自分で変換しろよプゲラ」という、それは酷いものだった。
ともかく、ようやくドコモもGPS機能を標準搭載するようになったのは良いことだと思うし、どうせなら位置情報のリクエスト方法も、3社で統一してくれたら、活用事例も増えると思うのだが。
最近のツッコミ
参号館 日記(ariyasacca)
ドコモ(F)GPSはテストで触ってみた感じ<br>衛星ではなく、基地局との相対位置で割り出してる感が<br>というか、基地局だけ判断して後はアバウトに<br>「大体この辺」<br>ぐらいの感じです<br><br>あと、903でGPSが標準装備になったと思ったら大間違い<br>次の機種の発表で驚愕の事実が!?(F)
電波状況がよろしくないと、近くの基地局を利用した位置になるってのは、確か他のところにも似たようなもんだったと思います。ドコモのGPSが、実際のところどんな仕様かまでは知りませんが。<br><br>次は703だから、余り派手なギミックは無さそうと思いつつ、とりあえずFには「ヨコモーションなのにワンセグ見れない」を超えるサプライズを期待します。