見出し画像

a-blog cms 基本機能でつくるスタンプラリー、使った機能とカスタマイズの肝

2017年11月17日、18日に開催された「a-blog cms Training Camp 2017 Autumn」にて、「a-blog cms 基本機能でつくるスタンプラリー」というタイトルで事例発表を行った。

発表後、他の参加者から「その発想はなかった」、「普通思いつかない」、「変態的カスタマイズだ」とお褒めの言葉をいただき、開発中、幾度も折れかけた心をその都度立て直した自分を褒めたいと素直に思った。

カスタマイズの詳しい内容などは SlideShare にスライドを上げてあるので、そちらを見てもらうこととして、ここでは、スタンプラリーをつくるにあたって使った a-blog cms の機能とカスタマイズと肝なった部分を書き記す。

この記事は「a-blog cms Advent Calendar 2017」の15日目の記事である。

デモ動画

まずは、どういうものをつくったか。一連の流れを動画にしてツイートしたので見てもらいたい。

このスタンプラリーは、次の機能を実現している。これらすべて a-blog cms の基本機能を使って構築したものである。

- 登録した飲食店がユーザーの現在地からの距離とともに近い順で表示される
- ユーザーは会員登録しマイページを持てる
- ログイン時、登録した飲食店の近くにいくとスタンプが押せる
- スタンプを押した飲食店の数が表示される

位置情報に基づいた情報配信が容易に

ビルトインモジュール「Entry_GeoList」は、位置情報に基づいて、記事に持たせた位置情報、あるいは現在地から近い距離順でエントリーの一覧を表示できるものだ。基準点からの距離は「m(メートル)」で取得できる。

この基準点からの距離と IFブロック( IF 文)を組み合わせれば、例えば、基準点から半径10m以内にいる時の表示を指定するなど、位置情報に基づいた情報配信が可能となる。

今回はスタンプラリーという形で制作したが、アイデア次第で他のサービスも構築できる。使う人が増えて色んな事例を見たい。

マイページをつくることができる

グローバル変数「%{SESSION_USER_ID}」を使って、ユーザーごとに個別の情報を表示することができる。実装方法は堀さんの記事がわかりやすい。今回のスタンプラリーでも、ユーザーごとにスタンプを押したお店と、スタンプを押した個数を表示している。

山形県のエバンジェリスト、イシカワヒサトさんも「%{SESSION_USER_ID}」を使った事例を発表されていた。

ユーザーセッションで「写真スタジオの撮影データダウンロードサービス」を発表しました。シークレットサイトの利用事例。管理者である店舗側が、顧客にデータをダウンロード提供する仕組みです。余計なことを考えすぎてトライ&エラーの連続でしたが、%{SESSION_USER_ID} に辿り着いたときは、全てが繋がった感じです。「グローバル変数」最強です。
https://hisato.me/ablogcms/camp2017autumn.html

ウェブサイト制作にとどまらない、ウェブサービスをつくるためのベース CMS としてのポテンシャルを感じずにはいられない。

エントリーサマリーにエントリー編集などの操作系のボタンを表示

スタンプラリーのカスタマイズで肝となった部分は、振り返ると「Entry_GeoList」で表示している記事の中にエントリー編集などの操作系のボタンを表示できる方法を思いついたことである。操作系のボタンは、通常「Entry_Body」モジュールにしか表示されないが、スタンプボタンを置くためにどうしても必要だった。

表示方法は上のスライドにまとめてあるが、我ながらよくもまぁこんな方法を思いついたものだと感心する。

IF文の中にモジュールフィールドを突っ込む

IFブロックというと、グローバル変数と数値やコードなどを照合させて制御する、というイメージだが、モジュールフィールドを突っ込んでも動くことを知った。はじめて試してみて動いた時は驚いた。「こうすればできるかも」→「できた!」の体験は実装者にとって一番の喜びかもしれない。

詰んだ!と絶望してから光明が差すまでのもがきを楽しもう

思い返せば、2017年8月19日に開催された「a-blog cms 勉強会 in 富山 2017」にて、「Entry_GeoList を使えばスタンプラリーがつくれそうな気がする。11月にあるキャンプで発表しますので乞うご期待!」的な発表したことが発端だった(その時のスライド)。

頭の中でイメージはできていても、実際に手を動かすと思い通りにいかなかったり、a-blog cms の仕様が自分の想定と違っていたりなど、なかなかうまくいかずなんども諦めかけた。

それでも思考を停止せず、強引であったり、一部実装を諦めた機能はあるけど、人様に見せられるレベルのデモをつくりあげることができた時、これはきっと a-blog cms を使う全国の仲間にワクワクしてもらえるのではないかと感じた。

発表の最後にかの名言を引っ張り出しのは、諦めなかった自分に対する賞賛であり、また、この言葉を共感しあえる仲間がいることの喜びを表現したかったからである。

全国の a-blog cms ユーザーのみなさま、よいクリスマスを。次回(来年5月)のキャンプでお会いしましょう。

美味しい珈琲を飲んで役に立つかもしれない記事を書きます!おなしゃす!!