降りつぶし.netは,「⁠日本の鉄道駅」にいつ乗下車したのか,を管理するソリューションです。第2回は,その基盤となる,全国の鉄道駅データベースの構築について説明しました。第3回は,その上に構築されているWebアプリケーションを説明します。サイトトップWebアプリ構築にCMSを利用Webアプリとしての降りつぶし.netに最低限求められる仕様は,『⁠複数のユーザが自らの乗下車記録を管理できる』ことです。そのためには,各ユーザを識別し,ユーザのみが自分の記録を入出力できるようにしなければなりません。駅データベースやスマホアプリの更新情報をアナウンスしたり,ユーザからデータベースの誤りについてのご指摘を承ったりするUIがあれば,ベターです。そこで,何らかのCMSを利用し,記録の入出力や同期機能などは独自実装して,アナウンスにはブログ機能を,ユーザからの承りは掲示板機能を使うことにしました。CMSとして「Geeklog」を採用GeeklogはオープンソースCMSです。動作がまずまず軽量であり,細かな権限設定ができ,デザインや出力内容のカスタマイズも容易です。OAuth認証に対応しており,Twitterなどのユーザであれば,フォーム入力なしで,簡単に新規登録ができます。筆者の会社では,このGeeklogを用いたカスタマイズを行った経験がいくつかあります(導入例:NPO法人寿クリーンセンター⁠)⁠。第1回で触れたとおり,降りつぶしという趣味はニッチであり,ユーザ数はたかだか数千人と踏んでいましたので,パフォーマンスはさほどシビアではありません。これらを考慮し,とりわけOAuth認証による新規登録の容易さに惹かれ,Geeklogを採用することにしました。GeeklogのカスタマイズGeeklogにはさまざまなカスタマイズ方法が提供されています。プラグインによる開発はもちろん,ヘッダやフッタの表示のみの流用,認証機能のみの流用など,PHPの開発力さえあれば,かなり複雑なWebアプリケーションでも平易に構築することができます。実際に,記録入力トップページ“⁠http://oritsubushi.net/oritsubushi/index.php⁠”のコードを抜粋してみます。array());//以下略COM_xxxxという関数はGeeklogの共通処理関数で,自由に呼び出すことができます。ORITSUBUSHI_xxxxという関数は,筆者が実装した関数です。COM_siteHeader,COM_startBlock,COM_endBlock,COM_siteFooterの各関数は,それぞれ,ユーザの権限に応じた適切なヘッダ・サイドバー・フッタなどを生成しています。ORITSUBUSHI_build関数で,好き勝手なコンテンツを生成しさえすれば,Geeklogの他のページとまったく同じ外観のページができあがる,という寸法です。これらのCOM_xxxx関数を呼び出さず適切なコンテントタイプと内容を出力することにより,整形されたHTMLではなく,JSONなどを返すことも可能となるわけです。最初に呼び出しているORITSUBUSHI_checkFirst関数は,最初にインクルードした“⁠oritsubushi.inc.php⁠”内で,以下のとおりに定義されています。COM_refresh('/index.php');exit;}}スクリプトの冒頭でGeeklogの“⁠lib-common.php⁠”をインクルードするだけで,自動的に認証が行われます。グローバル変数$_USERには認証済のユーザ情報が連想配列で格納されており,$_USER['uid']はユーザIDです。Geeklogでは,この値はゲストユーザの場合1となり,デフォルトの管理者Adminの場合が2で,一般の登録ユーザは3以上となります。降りつぶし.netでは,登録ユーザ全員に乗下車記録の入出力を認めているため,権限チェックなしで,ユーザIDが1より大きければ正規ユーザとみなせることになります。ORITSUBUSHI_checkFirst関数内では,ユーザIDが1より大きくない,すなわちゲストユーザの場合,ログインフォームを持つサイトトップへとリダイレクトさせ,乗下車記録ページヘのアクセスを拒むことになります。これらにより,ORITSUBUSHI_build関数の内容の実装のみに集中できました。CMSの面目躍如です。降りつぶし.netが独自に実装した,呼び出し可能な各PHPスクリプトは,すべて“⁠oritsubushi⁠”ディレクトリ直下に置かれており,以下のような遷移関係にあります(管理者ログイン時のみ動作するメンテナンススクリプトを除く⁠)⁠。記録入力トップページ鉄道事業者一覧です。各事業者名のリンクをクリックすると,その事業者のページが開きます。すべての事業者を表示してしまうと,コンテンツエリアが長くなりすぎてしまうため,事業者種別ごとにまとめて畳んでおき,事業者種別のクリックによって事業者一覧を展開するようにしました。このページに限らず,記録入力の各ページのコンテンツトップには一括アップロード用フォームとボタンがあり,コンテンツボトムには一括ダウンロード用ボタンがあります。芸能ライターやら劇団主宰やらいろいろ経て現在はよろず請負プログラマ。最近の開発はPHP,JavaScript,Java,MTプラグインなど。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。