降りつぶし.net~同期するWebアプリ・スマホアプリの開発・運用~

第3回 Webアプリ「降りつぶし.net」の構築

この記事を読むのに必要な時間:およそ 4 分

ブログパーツJSONP“stat.php”

図10 ブログパーツを埋め込んだ筆者の鉄道旅行ブログ

図10 ブログパーツを埋め込んだ筆者の鉄道旅行ブログ

指定されたパラメータに紐付いているユーザの乗下車記録の統計情報を,JSONで返します。JavaScript関数名が指定された場合は,結果のJSONをパラメータとして,その関数を呼び出します。これにより,ブログパーツを実現しています。ブログパーツは非ユーザのWebブラウザ上で表示されるものなので,このスクリプトは認証をせず,user_tokensテーブルを参照し,ユーザ識別トークンからユーザIDを得て,統計情報を表示しています。

また,このスクリプトは,本サイト全体の中で最も頻繁に呼び出される可能性があるものです。その度に統計情報を集計することは,まったく実用的ではありません。

そのため,前述のregister.php,upload.php,およびsync.phpが乗下車記録を更新した際,トランザクション内で統計情報を集計し,データベーステーブル⁠statistics⁠に書き込んでいます。stat.phpは,statisticsテーブルに書き込まれたデータをプライマリキーたるユーザIDで検索し,出力しているに過ぎません。

お知らせページ“timeline.php”

図11 お知らせページ(降りつぶしroidの画面)

図11 お知らせページ(降りつぶしroidの画面)

単に,降りつぶし.net公式Twitterアカウント@oritsubushiの直近ツイートを表示するだけです。これは,スマホアプリの「情報」メニューで表示されます。同期機能を利用しない限り,スマホアプリの利用にはWebアプリへのユーザ登録やログインは不要であり,このページも認証をしていません。

デザイン,仕様制限など

サイトデザインは,絵心のない筆者が考えたラフなものを,鉄道ファンでもあるデザイナー,伊藤壮氏@souitohにブラッシュアップしていただきました。バナーには,いわゆる国鉄フォントを用いています。HTMLやCSSの編集は,Geeklogの管理画面から筆者が行っています。

なお,Geeklogの機能である「各種OAuth認証に自動対応」については,現時点では独自に制限を設けています。これはスマホアプリ側の仕様制限によります。同期機能での認証ではGeeklogの認証画面をそのまま利用しますが,ここから各認証サイトに移動している間,Web表示ビューをそのままスマホに表示し続ける必要があります。が,その認証サイト内認証ページにある別リンクがタップされた場合,Web表示ビューではなく,外部Webブラウザを起動しなければなりません。つまり,各OAuth認証サイトの認証ページの遷移をすべて把握し,それ以外のリンク先は外部Webブラウザに渡す,という個別の実装が,スマホ側に必要となるのです。

これに対応し切れていないため,現時点では筆者が個人的に利用しているTwitterでの認証のみの対応となっています。

次回はいよいよ同期機能

第2回のデータベース解説,そして今回のWebサイト解説で,同期機能の解説の準備ができました。

第4回は,同期機能のみについてお届けします。

ミニコラム・駅めぐりの特異テクニック

乗下車には,他のあらゆる鉄道趣味,というか他のほぼすべての趣味にはない,独特の「巡回問題」があります。例として,筆者がつい先日遂行してきた,JR北海道根室本線における駅めぐりの行程を,以下の図に示しました。

 2013年7月14日根室本線内の行程(抜粋)

図 2013年7月14日根室本線内の行程(抜粋)

地方においては,列車は単線の線路を交互に,ときおり同じ向きに連続して,運行されます。また,一部の閑散駅を通過する普通列車もあります(図中の太矢印が通過駅⁠⁠。

そんな中,効率よくすべての駅に乗車または下車するためには,ご覧のようなジグザグな行程を組み,ときには駅間を数km歩き,バスで移動したりします。さもなければ,数駅めぐっただけで,日が暮れてしまうのです。

多くの人にとって,旅行とは,目的地の間を単純に移動していくか,気まぐれに行先を変えるか,どちらかでしょう。しかし駅めぐりでは,一列に並んでいる駅すべてに降りるために,いったん目的を通り過ぎなければならないこともあるのです。

そしてこの巡回を決めるアルゴリズムは,筆者が知る限りありません。筆者の場合,半身浴で長風呂をしつつ,ゴワゴワになった紙の時刻表をひたすら眺めてイメージをつかみます。そして行けそうだと判断したら,時刻表ソフトを使って鉄道ダイヤを確認し,地図ソフトを使って道のりを確認し,バス会社のサイトを検索してバス時刻表を調べ,行程を決定しています。

著者プロフィール

よねざわいずみ

合資会社ダブルエスエフ代表社員。学習塾講師やら芸能ライターやら劇団主宰やらいろいろ経て現在はよろず請負プログラマ。最近の開発はPHP,JavaScript,Java,MTプラグインなど。お仕事随時募集中。

Twitter:@yonezawaizumi

鉄道旅行ブログ:http://feelfine.blog.izumichan.com/