僕ならばここにいる
〜GPS、携帯電話、そしてUNIX〜
法林 浩之
日本UNIXユーザ会
hourin@suplex.gr.jp
Powered by ... mgp2html.pl
(page 1)
私の近況
- 3月末でソニーを退職
- いわゆる充電期間中
- そろそろ再就職に向けて活動開始
…といいつつ半年経過
(page 2)
僕ならばここにいる
- 自分の居場所を記録し、表示するシステム
- 充電期間突入に前後して作った
- システム名は稲垣潤一の同名曲に由来
- システムの構築と運用から得た知見を体験談的に紹介
- できるだけ自分の思考過程をたどる形で説明
- 体験談なので、体系的にまとまった話ではない
- 改善の余地多数あり → 皆さんから意見/提案を募集
(page 3)
動機
- 自分の居場所を示すことに興味があるらしい
- 「俺はここにいるぞここにいるぞ」
- Webで行き先表示板とか作ったことがある
- 居場所を継続的に記録、表示したいと思った
- リアルタイムで記録
- 全国各地、どこにいても(屋内でも屋外でも)記録
- 自分のたどった経路が表示される
- 結果は誰でもWebで閲覧可能
(page 4)
自分の生活に合わせた要望
- 移動手段は徒歩/自転車/公共交通機関
- ノートPCのOSはUNIX
- 新しいデバイスの導入は最小限に
(page 5)
調べもの
- 「物体(自分)の位置を他人が見るシステム」について調べる
- 「自分の位置を自分だけが見るシステム」ではない
- カーナビ
- パソコンの地図ソフト
- 携帯電話やPHSを使った位置情報システム
(page 6)
位置情報配信システムの例
- 車両の動きを監視するソフトに多い
- ココセコム
- IPCar
(page 7)
位置情報配信システムを構成する道具
- 物体の現在位置を測定
- 位置情報をサーバに送信
- 通信機器: 携帯電話もしくはPHS
- データ送信機器: 今回はノートPCを使用(PDAでも可)
- 物体の位置を地図とともに表示
- Webサーバ
- 地図データ(を提供するWebサイト)
(page 8)
GPS(Global Positioning System)
- 地球を周回する衛星(24個)から電波を受信して位置を特定
- 条件が良ければ誤差10m未満
- 時刻情報も精度が高いのでNTPサーバに使われる
- メーカー
- 受信機
- センサーのみのものは、データをPCに送って処理/表示
- 液晶画面がついているものは単体で使えるが、PCに接続も可
- データ転送
- シリアル4800bpsが多いが最近はUSB接続の機器もあり
- データフォーマットはNMEA0183が標準だがメーカー独自形式も多い
(page 9)
Webで閲覧できる地図データ
(page 10)
野望
- GPSで現在地を測定し、シリアルでノートPCに転送
- ノートPCをインターネット接続し、位置情報をサーバに送信
- サーバにて、位置情報から地図サイトのURLを作成
- 自分のホームページに、そのURLへのリンクを置く
- これを定期的かつ自動的に(たとえば5分おきに)実行しよう
(page 11)
カベに当たる(その1)
- ノートPCのバッテリーは持ち時間が短い
- 自家発電しながら旅をする冒険家もいるが…
- 対策: 自動運転をやめて、拠点に着いたときだけデータ入力
- 経路表示はあきらめる
- データ入力時だけ電源を入れればいい
- 丸1日ぐらいならバッテリーも持つだろう
(page 12)
道具を用意(1)
- ノートPC: VAIO PCG-C2GPS
- C1に似た機種
- 反射型液晶画面
- 携帯型GPSが付属(PCQ-HGR1)
- GPS付きの機種である必要はない
- 携帯電話: ソニー C406S (au)
- IDO PacketOneカード(C081NDB) でPCと接続
- PHS: セイコー MC-P200 (DDI Pocket、PCカード型)
- PCカードはいずれもFreeBSDで使える
(page 13)
道具を用意(2)
- GPSは3種類使ってみた
- エンペックス GPS65 EZ(単体型)
- ソニー PCQ-HGR1(PC接続型)
- GARMIN eTrex(単体型)
- GPSに求める性能
- 比較検討
- GPS65 EZはバッテリーが持たない
- PCQ-HGR1は測定してくれない
- eTrexが圧倒的に高性能 → 常時使用
- eTrexは英語モデルを使用
- 日本語モデルは、データをPCでうまく扱えないらしい
(page 14)
道具を用意(3)
- サーバ: www.suplex.gr.jp
- 手持ちのサーバをハウジングサービスに設置
- 必要なソフトを自由にインストールできる
- 地図サイト: MapFanWebを使用
(page 15)
システム作り開始
- サーバへのデータ送信、サーバでの処理を先に実装
- サーバに送信するデータ
- 北緯/南緯、緯度、東経/西経、経度、コメント(場所など)、パスワード
- 時刻はサーバで取れるので入力しない
- 送信プロトコルはHTTPを使用
- サーバでの処理
- 受け取ったデータをPostgreSQLに蓄積
- ブラウザから閲覧リクエストが来たら、PostgreSQLからデータを取得して地図URLを生成、表示
- 処理プログラムはPHPで記述
(page 16)
データベース
PostgreSQLの書式で記述
- DB作成
create table koko (
unixtime int4, …… UNIX時刻
nanboku text, …… 南北(S/N)
ido text, …… 緯度
touzai text, …… 東西(E/W)
keido text, …… 経度
comment text …… コメント(場所など)
);
- データ入力
insert into koko values (
'1023456789','N','35.10.6.1','E','136.53.53.4','SRA中部支社'
);
(page 17)
カベに当たる(その2)
- GPSを見ながらノートPCにデータを打ち込み、送信できるようになったが…
- データ入力に手間がかかる
- 移動中に作業するのはさらに困難
- 対策: 携帯電話Webの利用
- EZWeb用の入力フォームを用意
- C406SからEZWebのフォームを呼び出す
- GPSで計測したデータを手でフォームに入力して送信
- GPSと携帯電話さえあれば入力可能
(page 18)
携帯電話のWebページ
- 私が持っているのはauの携帯電話
- サービス名: EZWeb
- プロトコル: WAP
- Webページ記述言語: HDML
- 参考までにi-modeの場合
- サービス名: i-mode
- プロトコル: 独自(名称不明)
- Webページ記述言語: コンパクトHTML(独自)
- 携帯電話用に作ったもの
- WAP用入力フォーム(HDML)
- WAP用フォームに入ったデータをPostgreSQLに蓄積するプログラム(PHP)
(page 19)
WAP用Webページ作成時の注意点
- HDMLはHTMLとタグが全然違う
- PC用ブラウザで見ることができない
- 普通はシミュレータでテストしてからサーバに載せる
- UNIX用シミュレータがないので、いきなりサーバに載せてテスト
- WebサーバにWAP用設定が必要
- Apacheの場合は、.htaccessもしくはsrm.confに以下を追加
AddType text/x-hdml; charset=Shift_JIS hdml
- HDML独特の用語
- カード: ほぼ1画面に相当
- デッキ: カードの集合、1400byte以内という制約あり
(page 20)
WAP用入力フォーム
- 1画面につき1項目ずつ入力
- パスワード(文字列)
- コメント(文字列)
- 北緯/南緯(選択、デフォルトは北緯)
- 緯度(数字7けた、例: 3510061)
- 東経/西経(選択、デフォルトは東経)
- 経度(数字8けた、例: 13653534)
- 入力結果を表示し、確認してから送信
- 途中で「戻る」ボタンを押すと、前の項目に戻って訂正可能
- 最初はコメントを後ろにしていたが、順番を変えた
(page 21)
カベに当たる(その3)
- 野外では快調に入力できるようになったが…
- 屋内ではGPSが使えない
- とにかく屋根の下では全く測定できない
- 屋外でも高いビルに囲まれると苦しい
- つまり市街地では苦しい
- GPSが使えない状況でどうやって位置を測定し入力するか
- 対策
- ノートPCをインターネット接続
- MapFanWebで現在地の地図を表示(住所から検索することも可能)
- URLに含まれる緯度経度をWebフォームにcut&pasteして送信
- もう少し賢い方法を用意したいが、
最終的に地図を見ながら微調整が必要なので、自動化は意外に難しい
(page 22)
入力したデータの修正/削除
- 入力ミスなどへの対策
- 管理用表示を別に用意
- ある1回の入力を選ぶと編集画面に移動
- 修正
- 緯度、経度、コメントは修正可
- パスワードを付けてsubmit
- 削除
- 自主的に設けた制約
- 時刻情報は変えられない
- ある時刻のデータを後で入力することはできない
- 「その場で入力しないと記録に残らない」という制約を自らに課した
(page 23)
本運用開始
- 一通り動くようになったので旅に出た
- 四国88ヶ所霊場めぐり
- 寺に到着するたびに入力
- ついでに奈良、高野山、鳥取(jus関西シンポ)にも
- 4/26〜5/23の約1ヶ月間にわたって旅行
- その後も継続運用
- 幕張、沖縄、福岡、長崎、大阪、神戸など各地で入力
- もちろん首都圏でも
- 運用開始から半年で約400件
- 運用経験をもとにシステム改善に着手
(page 24)
データ入力/表示方法の改善
- 表示するデータの選定条件を変更
- 最近1週間のデータを表示(デフォルトをこれに変更)
- 場所/コメント欄に対する検索に合致したデータのみ表示
- ある期間に入力したデータのみ表示
- 過去に入力したデータの流用機能
- よく行く場所を入力するときに便利
- 場所/コメント欄を検索し、1件のデータを選んで編集画面に移動
- 必要に応じて編集し、入力
- 携帯電話で同じことをするプログラムも書いた
(page 25)
到達地点を白地図に描画
- たまったデータの活用方法のひとつとして考えた
- GMT(The Generic Mapping Tools)を使用
- 主に地形図を描くためのUNIXコマンド群
- http://gmt.soest.hawaii.edu/
- プログラム例
psbasemap -R125/142.5/25/37.5 -Ba5f2.5 -K > map.ps
pscoast -Jm -R -Di -G200 -K -O >> map.ps
psxy -Jm -Sc0.1 -W1 -R -O < data.txt >> map.ps
- 描画プログラム(PHPで作成)
- 到達地点データをPostgreSQLから入手
(経度) | (緯度) |
139.68594 | 35.62617 |
129.84711 | 32.75361 |
…… |
- GMTコマンド群を使って地図を描き、PNGに変換して保存
- PNGを表示するHTMLを出力
(page 26)
運用こぼれ話
- その場所にいたことを知られたくない場合は入力しない:-)
- 道に迷ったら携帯電話で入力して自分のホームページを見る
- 地図サイトはリンクポリシーがうるさい
- 一旦地図だけのページを表示してから、
アイコンを押して周辺地域も見られる地図に飛ぶ
ようにリンクを張らないといけない(MapFanWeb)
- フレーム内にマピオンのページを表示してはいけない(マピオン)
- もっと自由に使わせて欲しい
- 意外に見ている人が多い
- 知人に会うとよく言われる
- 親兄弟まで動向を激しくチェック
- 「この様子だとまだ就職してませんね」とリクルートメールが…
(page 27)
今後の展開
- 当初考えていた、連続運転による記録は棚上げ
- 継続運用しつつ、入力/表示方法をさらに改善したい
- 関連技術動向
(page 28)
入力/表示方法の改善
- 現在地の緯度・経度を割り出す手段を増やす
- 住所、郵便番号などから算出
- すでにいくつかシステムが存在
- 例: モーバイルインフォサーチ実験(NTTソフトウェア研究所)
http://www.kokono.net/
- 地図を見ながら微調整が必要なことが多い→手間減らない
- 入力できるデータの種類を増やす
- 白地図への描画方法の改善
- 今はすべてのデータを描画
- 条件に合うデータだけ描画したい
- 描画する地域の広さに応じて地図を拡大、縮小したい
(page 29)
関連技術動向
- 気になっていること
- テロ対策で、GPSの意図的な誤差(SA)が大きくならないか?
- 測定のたびにGPSに表示される誤差を記録し、
地図と見比べて比較検討中
(page 30)
まとめ
- 「僕ならばここにいる」の実態を紹介
- できるだけ製作過程、思考過程に沿って紹介した
- 改善できそうな所はいっぱいあるので、皆さんからの意見/提案を歓迎
- システムのURL
- 今日の資料
(page 31)
参考文献
- UNIX MAGAZINE 1999年3月号「インターフェイスの街角」
- 「PHP4徹底攻略」ソフトバンクパブリッシング
- 「PostgreSQL完全攻略ガイド」技術評論社
- 「ケータイで見るWebページの作り方」アスキー
- 「パソコンカーナビを始めよう!」インプレス
(page 32)