jk-meets-js

恋に落ちるコード.js [技術系コメディ/短編/連載中]

This project is maintained by 8novels

恋する位置情報(ジオロケーション) -Where Is the Love?-

「赤ふん坊や、ゲットだぜ!」
「あ、赤ふん坊やってのは福井県大飯郡高浜町のゆるキャラでですね」

 放課後、|情報処理《JS》部の部室――ではない。
 |瀬尾絵子《せのおえこ》と|篠宮樹里《しのみやじゅり》の二人は、MacBookとiPhoneを持って、近くの名勝・|気比松原《けひのまつばら》を散策中だ。

「さて、今日は部室を抜け出し、炎天下の海岸にやってきたわけだが」
「お、樹里のキャラが戻ってる。良かった」
「今日はJavaScriptと位置情報、というテーマで話すぞ」
「GPSは現代人の生活になくてはならないものになったからねー」
「なんせ今は、世界中で自分の位置情報を晒す遊びが流行ってるらしいので。私たちもブームに乗らないとな」
「ずいぶん間違った形でブームが伝わったようだけど」

 海水浴客の歓声と蝉の声の中、二人の額にも汗が滲むが、樹里の話は続く。

「時に絵子は、World Wide Web Consortium(ワールド・ワイド・ウェブ・コンソーシアム)、通称W3Cという団体は知っているか」
「うん、知ってる。ウェブ系技術の標準化を進めてる団体だよね」
「この位置情報を取り扱うためのルールも、W3Cの手で『Geolocation API』として標準化されている」
「へー」
「このGeolocation APIにJavaScriptからアクセスすることにより、位置情報を利用したWebアプリケーションの製作が可能となるのだ。これで君も、へしこちゃん、ゲットだぜ!」
「あ、へしこちゃんってのは福井県三方郡美浜町のゆるキャラでですね」

「では、さっそく我々の位置情報を取得してみよう」
「それはいいんだけど……」

 絵子は不満げな顔で辺りを見回す。

「周りは水着の子ばっかだよ? せっかくの海だよ? まずは泳いで行こうよ」
「遊んでいる場合ではない。今私は、全能なるGPS衛星と対話中なのだ」
「怪しい宗教みたいに言わないでよ……じゃあ、せめて海の家寄って行こうよ。イカ焼き食べたいよ」
「ええい、気が散る。測位できないではないか」
「うえーん」

 しばらくしてMacBookの画面が書き換わる。

「……お、出た出た。取得できたぞ」
「なんか、数字の羅列が出てきたね。35.6……」
「これが、私たちが今いる場所の緯度と経度だ」
「ほー」
「そしてこれが、現在地を取得するためのJavaScriptのコードだ」

navigator.geolocation.getCurrentPosition( function( pos ) {
  console.log( pos.coords.latitude, pos.coords.longitude );
});

「え、たったこれだけで位置情報が取れちゃうんだ」
「2行目は結果の出力だからな。実質、1行のコードで取得できる」
「へー。こりゃすごい」

「じゃあ、コードについて説明しよう」
「はい」
「まず、最初のnavigatorというのは、このJavaScriptを実行しているアプリケーションのことだ。要はWebブラウザのことだと思えばいい」
「なるほど」
「次のgeolocationというのが、位置情報を取得するためのオブジェクトである。今日の主役だな。このオブジェクトは、Safari・Chrome・Firefoxなど、新しいWebブラウザであればもれなく実装されている」
「ふむふむ」
「次のgetCurrentPositionメソッドが、geolocationオブジェクトのメソッドの一つであり、現在地を一回だけ取得する命令である。取得した結果は変数に格納され、次の関数に渡される。今回はposという変数だな」
「ほえー……」
「どうした、絵子」
「いやー、暑くて頭がボーッとしてきた」
「ああ、それは悪かった。日陰でカキ氷でも食べるか」
「やったー! 樹里、愛してるー!」

「……それで、位置情報を関数に渡した後はどうなるの?」

 松原の木陰でしゃがみ込みながら、絵子は問いかける。手にはレモン味のカキ氷。

「その中に含まれるcoordsオブジェクトの中に、いろんな情報が格納されている。latitudeプロパティが緯度、longitudeが経度だな。他にも高度なんかも取れる」
「うん」
「今回はコンソールに出力しただけだが、Ajaxなんかを使ってサーバーに送信すれば、自分の位置情報を他人に知らせることもできるわけだ」
「なるほどねー……はい、樹里」

 絵子はカキ氷をすくい、樹里の口元に運ぶ。

「美味いな……さて、ここから先は細々した注意事項だ。カキ氷を食べながら聞き流してくれればいい」
「うん。そうするー」
「最近のChromeは、プライバシー保護の観点から、HTTPS接続でないと位置情報を取得できないよう仕様変更されている。検証の際には注意してほしい」
「んー」
「Webアプリケーション製作時の注意。位置情報取得の頻度や精度はオプションで細かく指定できる。また、いつでも取得に成功するわけではないので、失敗した時の動作もちゃんと定義する必要がある」
「んー」
「まあ、一つのWebアプリケーションを完成させるには、もっともっとたくさんの記述が必要なわけだが。最初のとっかかりは実に敷居が低い、ということはわかってもらえたと思う」
「うん、わかった」

「さて、涼んだところで。次は|湯巡権三《ゆめぐりごんぞう》、ゲットだぜ!」
「あ、湯巡権三ってのは福井県あわら市のゆるキャラでですね」