kintoneでTwilioを使う時のjsカスタマイズをまとめました

これは、kintone Advent Calendar 2015の記事ではありません(ぉぃ

以前、kintoneのTwilioプラグインを作成しまして、それについてはここで紹介しております。
これで簡単にTwilio使うのも良いんですが、せっかくなら一斉発信とか出来る方が面白いですよね。

という事で、Twilioで通話とSMSの両方を使えるようにするjsカスタマイズを紹介します。これを元に、全レコード一斉発信とかテーブルからの一斉発信とか、色々と改造してお楽しみください。

Twilioアカウント取得

Twilioアカウントの取得方法はこちらから。(岩崎さん、またお借りしますー(^^;)

カスタマイズビューからレコード登録

カスタマイズビューを用意

twilio-kintone-customizeview.txt

<style type="text/css">
td{font-size: 40px; border: 0px; padding:10px;}
input{font-size: 40px;}
.header{font-size: 40px; font-weight:bold;}

.css_btn_class {
    font-size: 1.4em;
    font-weight: bold;
    padding: 10px 30px;
    background-color: #248;
    color: #fff;
    border-style: none;
    border-radius: 10px;
    -webkit-border-radius: 10px;    /* Safari,Google Chrome用 */
    -moz-border-radius: 10px;   /* Firefox用 */
}

.css_btn_class:hover {
    background-color: #24d;
    color: #fff;
}
</style>

<table>
  <tr>
    <td colspan="2" style="text-align:center; font-size: 35px">受付システム</td>
  </tr>
  <tr>
    <td class="header">名前</td>
    <td><input type="text" id="visitor_name" style="width:450px; ime-mode: active;" placeholder="ぼうず たろう"></td>
  </tr>
  <tr>
    <td class="header">電話</td>
    <td><input type="text" id="visitor_tel" style="width:450px; ime-mode: disabled;" placeholder="09099999999"></td>
  </tr>
  <tr>
    <td class="header">人数</td>
    <td><input type="text" id="visitor_number" style="width:100px; ime-mode: disabled;" placeholder="3"></td>
  </tr>
  <tr>
    <td class="header">座席</td>
    <td style="font-size: 40px;"><input type="radio" name="visitor_seat" value="テーブル" checked>テーブル <input type="radio" name="visitor_seat" value="カウンター">カウンター</td>
  </tr>
  <tr>
    <td colspan="2" style="text-align:center;"><a href="#" class="css_btn_class" id="btn_reserve">受け付け</a></td>
  </tr>
</table>

カスタマイズビューのJavaScript

function () {

    "use strict";

    function loadJS(src) {
        document.write('<script type="text/javascript" src="' + src + '"></script>');
    }
    loadJS('https://cdn.jsdelivr.net/foundation/5.2.2/js/vendor/jquery.js');

    //レコード一覧表示イベント
    kintone.events.on('app.record.index.show', function(event) {

        //カスタマイズビュー以外の場合は終了。
                //ここの値は自身のカスタマイズビューIDと入れ替える。
        if (event.viewId != 5119208) return;

        //==================================================
        //カスタマイズビューの登録ボタンクリック時の処理
        //==================================================
        $('#btn_reserve').click(function() {

            //入力データの取得
            var name = $("#visitor_name").val();
            var tel = $("#visitor_tel").val();
            var number = $("#visitor_number").val();
            var seat = $("input[name='visitor_seat']:checked").val();

            //kintone登録用のJSONデータ作成
            var kintoneData = {};
            kintoneData.app = kintone.app.getId();
            var record = {};
            record.name = {value: name};
            record.tel = {value: tel};
            record.number = {value: number};
            record.seat = {value: seat};
            kintoneData.record = record;

            //kintoneへデータを登録
            kintone.api('/k/v1/record', 'POST', kintoneData, function(resp) {
                alert("受け付けが完了しました。n呼び出しまでお待ち下さい。");
                location.reload();
            },function(resp) {
                alert("登録に失敗しました。n" + resp.message);
            });

        });

    });

})();

発信処理を作成

ここからは、Twilioでの発信処理を作成していきます。

初期設定でTwilioの設定を入力

    // Twilio認証パラメーター(Twilioダッシュボードで確認可能)
    var ACCOUNT_SID = '{account_sid}';
    var AUTH_TOKEN  = '{auth_token}';
    // 呼び出し用の発信元番号。050が使用可能
    var FROM_DIAL = '{from_dial}';
    // SMS送信用の発信元番号。050が使えないので、USの番号を使用する事
    var FROM_SMS    = '{from_sms}';

ボタンの作成

        // 呼び出しボタンを表示
        var DialButton = document.createElement('button');
            DialButton.id = 'dial_button';
            DialButton.innerHTML = '呼び出し';
        DialButton.onclick = function () {
            dial(event);
            }
        kintone.app.record.getHeaderMenuSpaceElement().appendChild(DialButton);
        // 呼び出しボタンを表示
        var SendSMSButton = document.createElement('button');
            SendSMSButton.id = 'send_sms_button';
            SendSMSButton.innerHTML = 'SMS送信';
        SendSMSButton.onclick = function () {
            sendSMS(event);
            }
        kintone.app.record.getHeaderMenuSpaceElement().appendChild(SendSMSButton);

SMS送信処理

この処理では、特に変わったことはなく、普通にメッセージなどを作成してPOSTします。

        // SMS送信処理
        function sendSMS(event) {
            // レコードから名前と電話番号を取得
            var rec = kintone.app.record.get();
            var name = rec.record.name.value;
            var to = rec.record.tel.value;

            // Twilio APIのURL
            var url = "https://" + ACCOUNT_SID + ":" + AUTH_TOKEN +
                    "@api.twilio.com/2010-04-01/Accounts/" + ACCOUNT_SID + "/Messages";

            // HTTPヘッダー
            var headers = {'Content-Type': 'application/x-www-form-urlencoded'};

            // SMS送信先の電話番号。入力されたパターンに応じてプレフィックスをつける。
            if ((" " + to).indexOf(" 0") !== -1) {
                to = (" " + to).replace(/ 0/g, "+81");
            } else if ((" " + to).indexOf(" +") === -1){
                to = "+" + to;
            }

            // 送信データ
            var data = 'From=' + encodeURIComponent(FROM_SMS) +
                        '&To=' + encodeURIComponent(to) +
                        '&Body=' + name + "様n間もなく順番です。";

            kintone.proxy(url, 'POST', headers, data, function (body, status, headers) {
                if (status === 201) {
                    alert(name + '様へのSMSの送信が完了しました。');
                } else {
                    alert(name + '様へのSMSの送信に失敗しました。¥n' + status + '¥n' + body);
                }
            });
        }

呼び出し処理

呼び出し処理では TwiMLのURLを指定する必要があるので、SMSのように文章を自由に変えるのが面倒です。そこで、Twimletsを使用してTwiMLのURLを作成します。

        // 呼び出し処理
        function dial(event) {

            // レコードから名前と電話番号を取得
            var rec = kintone.app.record.get();
            var name = rec.record.name.value;
            var tel_to = rec.record.tel.value;

            // Twilio APIのURL
            var url = "https://" + ACCOUNT_SID + ":" + AUTH_TOKEN +
                    "@api.twilio.com/2010-04-01/Accounts/" + ACCOUNT_SID + "/Calls.json";
            // HTTPヘッダー
            var headers = {'Content-Type': 'application/x-www-form-urlencoded'};

            // 発信先の電話番号。入力されたパターンに応じてプレフィックスをつける。
            if ((" " + tel_to).indexOf(" 0") !== -1) {
                tel_to = (" " + tel_to).replace(/ 0/g, "+81");
            } else if ((" " + tel_to).indexOf(" +") === -1){
                tel_to = "+" + tel_to;
            }

            // TwiMLを生成
            var twiMl = '<Response><Say voice="woman" language="ja-jp">' +
                    name + '様。予約の順番が来ました。カウンターまでお越しください。</Say></Response>';
            // Twimletsを利用して、TwiMLのURLを生成
            var twiMlUrl = 'http://twimlets.com/echo?Twiml='+encodeURIComponent(twiMl);

            // 送信データ
            var data = 'From='+encodeURIComponent(FROM_DIAL) +
                        '&To='+encodeURIComponent(tel_to) +
                        '&Url='+encodeURIComponent(twiMlUrl);

            kintone.proxy(url, 'POST', headers, data, function (body, status, headers) {
                if (status === 201) {
                    alert(name + '様への呼び出しが完了しました。');
                } else {
                    alert(name + '様への呼び出しが失敗しました。¥n' + status + '¥n' + body);
                }
            });
        }

いま、ソースを見てたら、E.164処理(頭に+81を付ける処理)がダブってますね。しかも、元のコピーライト残ってるしw
まぁ、いいか。

という事で、これらのソースをまとめたものはこちらで公開しております。
改造するさいのデバッグで電話をかけまくるとお金がかかるので、Twilioに慣れる前はトライアルアカウントのままにしておくのをお勧めします。実際に運用するさいはアップグレードが必要ですが、開発用にはトライアルアカウントを使うようにしましょう。

参考サイト

kintoneマッシュアップのための豆知識(curlコマンドとkintone.proxy()の対応)
Twilio × kintone ハンズオン用サンプルプログラム

kintoneで胴元になろう

これは、kintone Advent Calendar 2015の19日目です。怒られたら差し替えます。(差し替え予定の真面目なのはこっち

年末ジャンボは買いましたか? 当選したら人生変わりそうですよね。
まぁ、当選しても大体失敗する方に転がる可能性が高いとか言われているので、私は買ってません。いえ、決して、お金がないから負け惜しみ言ってるわけじゃないですよ。ええ(涙
まぁ、お金がないのは間違いないんですが、昔、無駄に買って懲りた事あるのでー。

でも、買う方がダメでも、もしかしたら胴元になればいけるかも? でも、胴元になるパターンってどんなのがあるんだろう。よし、考えてみよう!

ノミ屋?

公営競技のアレを元に、独自にあれこれしてってパターンなので、こうかな?
ノミ屋_-_1_-_レコードの詳細

これなら、当選パターンに合わせての配当金試算も出来て、倍率が高いパターンへの警告も可能かな。しかも、確定後は当選者に通知もボタンひとつで出来るってのも可能かなぁ。
でも、倍率の管理とかもあるだろうし、項目足りないかも。

ちなみに、Twilioプラグインは複数番号とかテーブルには対応していないので、そのままでは使えません。kintone Café大阪のLTでデモをした自作の抽選アプリでは一斉発信に対応してるので、何かの機会があればー。

富くじ?

発行枚数があって、実際の販売数がある、と。んでもって当選番号があるくらいかな。
富くじ_旧

いやまてよ、普通は1等から3等とか分かれてるからこうかな?
富くじ_-_1_-_レコードの詳細

当選番号は手動で決めても問題なさそうなので、番号を決める管理者と当選者を確認する担当者でフィールドのアクセス権限を設定すればいけそうかな。
当選者の顔写真とかを添付して確認とかでもいいかな?

 

とまぁ考えても、当然ですが法的な問題で胴元にはなれませんよねー。

・・・現金じゃなきゃ良いのか?

ロンダリー

ギフト券のコードで申し込みして、当選もギフト券コードで返却。
amazon_-_1_-_レコードの詳細

ちなみに、ギフト券でギフト券は買えないので、その辺の変換作業は地味に必要です。

なお、この場合に必要な関連技術で、ギフト券コードをアカウントに自動で登録するだとか、任意の額のギフト券コードを取得するとかが必要ですね。
そういえば、さくらのサーバーにこんなPHPのソースがw 何年前だこれ(爆 謎の基礎研究を結構やってたからなー(遠い目

automail_php_-__Users_okiyasu256_Dropbox_php_sorce_usdvd_amaauto

 

という風にkintoneを使うと、考えた形そのままでアプリが作れて実際に動作可能という、夢のような環境を手にすることができます。
しかも、各種サービスと連携させると自動化などもサクサク構築可能なので、プロトタイプのデモがあっという間に量産できますね!

 

そういえば、特定商品を検索するツール作って、ギフト券で商品を買いまくれば現金化の自動化が簡・・。

・・・おや誰か来たようだ。続きはまた今度。

Twilio – API Gateway – Lambda – kintone と繋いで、応答メッセージを楽に変えてみよう

これは、Twilio Advent Calendar 2015の12月17日の記事です。

さいしょに

この記事は、

kintone Advent Calendar 2015の2日目の、
kintone APIを使ってスペースを有効活用する(サーバーレスで)

と、

Twilio Advent Calendar 2015の9日目の、
Twilioサーバーレス化作業記録 – RequestURLもサーバーレス化

に刺激されて作りました。ソースとかはコピペ満載なので、ふいんき(何故か変換できない)をお楽しみ下さい。

リカちゃん電話運用サービスを作る

基本的な流れ。

1 決まった番号に電話する
2 応答メッセージが流れる

  • メッセージは管理画面から差し替え
  • MP3と合成音声のどちらでも可
  • 特別な場合に備えて、生TwiMLも可にした

kintone側の準備

1 アプリの作成フォーム

受付番号には、Twilioの番号を入力します。これで識別するので+付きの番号になります。理論上は何番号でも運用可能!

応答パターンを切り替えることで、何で返すかを選ぶことができます。その他はテキストでオッケー。MP3の場所もURLをテキスト入力です。MP3の置き場として今回はS3を用意しましたが、転送費用とかが気になる場合は別サーバーをお勧めします。

API Gateway & Lambdaの準備

Twilioサーバーレス化作業記録 – RequestURLもサーバーレス化 で紹介されている方法でお願いします。まずはLambdaのサンプルメッセージが返ってくるのを試してください。

Lambdaで、ソース修正

kintone APIを使ってスペースを有効活用する(サーバーレスで) で紹介されているソースを参考に、アプリIDやドメインを自分の環境の数値にしてください。Twilio-telservice_-_NetBeans_IDE_8_0_2

次に、アプリ内のフィールド情報を指定していきます。Twilio-telservice_-_NetBeans_IDE_8_0_2 2
body_getsalesamountの方だけ修正してください。ポイントは、Twilioの番号で検索する事と、必要なフィールドの指定を間違えない事です。

kintone側に番号が登録されてない場合の別メッセージを変更できるように、ダミーで111という番号を使うようになっています。この辺は、申し込みサイトへの誘導とか色々とできそうですね。

最後にレコードの内容からTwiMLを作成します。Twilio-telservice_-_NetBeans_IDE_8_0_2 3

以上で、作業は終わりです。

 

kintone側にこんな感じで入力しておくと、対応したメッセージを返します。通常は音声案内で、時間限定イベントで秘密のメッセージ流してとかができますね。テレフォンサービス_-_レコードの一覧

 

という感じですが、他に色々と繋ぐと楽しめそうなので、次はAmazonギフト券と繋いでみます(ぉ

Twilioアカウント取得時のハマりパターン

これは、Twilio Advent Calendar 2015の12月15日の記事です。

【12月14日】Twilioで日毎に作業者から確認連絡をしてもらうのを自動化する
【12月16日】Twilioサーバーレス化作業記録 – Token生成サーバーレス化

 

なんか、投稿枠が空いていたのと、ちょろっとしたデモが早めに出来て時間が空いたのとで、チャンスとばかりに書いてみました。
技術話は出てきません。Twilioアカウントを取得時に落とし穴に勝手に落ちた話です。

Twilioアカウントには2種類あるのはご存知?

まぁ、ここを見てるような方なら、アメリカと日本との2つのアカウントがあって、ログインIDなども別というのは知ってますよね。
で、ハンズオンとかでもアカウント取得の時には、
「www.twilio.com じゃなくて、jp.twilio.comなので注意」
という話だと思い込んでたんですが、

jp.twilio.com じゃなかった

という話です。

お前は何を言ってるんだ?

とりあえず、下の2つのキャプチャを見ていただくと、URLとか画面構成とかほぼ一緒で、どちらもjp.twilio.comで始まっているというのはわかると思います。でも、上がアメリカで下が日本なんです。
違いは、KDDIのロゴがあるかどうか。

jp-com jp-jp

どうしてこうなった?

www.twilio.comから何も考えずに、手打ちでURL変更してjp.twilio.comに行くとこんな感じ。

com

jp

あー、画面変わったから日本になったんだろうなーとか思ったら大間違い。

本当の日本のサインアップ画面は、これ。
http://twilio.kddi-web.com/
jp-home

なんだよー、http://twilio.kddi-web.com/ じゃないか、何を間違ってたんだ俺!

とサインアップを押すと、この画面。
https://jp.twilio.com/try-twilio/kddi-webjp-signup

https://jp.twilio.com/ だ! でも後ろに、/try-twilio/kddi-web が付いてる!!

ここでうっかり、https://jp.twilio.com/try-twilio にしちゃうとアメリカアカウントになります(たしか)。

ということで、サインアップのURLがわからなくなったら、googleで聞くのが一番でした。
とまぁ、私は不具合を引き寄せる才能に溢れているので(涙)、こういう何でもないところで引っかかるんですわー。という共有話でした。

 

ちょっと時間は稼いだ、残りの空き枠を頼むー。バタリ。

がんばれ地域スーパー

この記事は、愛媛・松山についての徒然 Advent Calendar 2015の8日目です。
昨日は松山に半移住しようと思ったことと日々の生活を、ちまちまブログに書いてる。 | ねこみみ隊長らしい。 でした。

さて、皆さん、食事の買い物とかどうしてます?
自分では買ってない? コンビニでお弁当買ってる?

実は、昔、スーパーやってた事もあって、なるべく大手じゃないところにも行ってほしいなぁ、と思い今回まとめてみました。
お近くにあるようでしたら、一度地元のスーパーで生鮮食料品を買ってみてください。もし誰かが気に入るお店を見つけたとなれば、これを書いた意味があったという事になるので、私が自己満足に浸れます(おぃ

なお、地元優先という事で、マから始まる2つのチェーン店は出てきませんw

そして、基本的に生鮮食料品を扱ってる店を対象にしてます。具体的には精肉・鮮魚・野菜・惣菜、くらい。細かく言うと牛乳売るのにも保健所の許可いります。これマメな!

注:記載漏れがありそうなので、「私の行ってるお店が載ってない!」という場合はお知らせください。

フジ

まぁねぇ、ここがわざわざ四国の他県にいかなければ、マから始まるチェーン店とかサから始まるチェーン店が来なかったのにというのは、一時業界的にも流れておりましたが詳細は知りません。

ましてや、ショッピングセンターの出店に関して、札束の物理攻撃を仕掛けたとかいう噂も流れた件についても詳細は知りません。でも、2階ってよく揺れますよねぇ。建材を・・ゲフンゲフン

「値段は高いが品は良い」という路線だったのが、競争激化で値段を下げてきたので、買いやすくはなったと思います。でもそのせいか、葉物野菜で時々「おぃ」というものがあるので気をつけてー。

愛媛県下だいたいどこにでもあるので、おなじみのスーパーだと思います。電子マネーでEDY導入しないで自社電子マネー作っちゃうくらいの規模です。

セブンスター

セブンイレブンじゃないよ? というのは東京でのネタ話だったのに、ついにセブンイレブンが愛媛に出店しちゃったので、普通になってしまいました。
ここはITMグループって事で様々な事業やってます。伊丹十三記念館とかもやってるのは、社長が同級生だったからだとかなんとか。まぁ、詳細はGoogle先生にでも聞いてください。

地味に新規出店を続けてたり、チェッカーコンテスト上位を獲得したりと、教科書的なまじめさを感じます。売り場もちゃんとしてるし、コストコフェアやったりと元気なスーパーですね。

ここは、EDY導入してます。

とか書いてると終わらない感じがしたので、この後は短めに紹介。

松山生協

ここは、クレジットカード使えます。余戸店限定で言うと、お肉が安いです。多分、コンサルというか店舗管理の人が大鉈ふるって改装している感じなので、良くなっていくと思いますよ。値引き狙うの好きな人におすすめ。

COOP

あまり行かないので、商品構成とか語れるレベルではない。まぁ、「この店じゃないと!」的なファンは多そう。

スーパー日東

大量買いで安値販売という方向性の店。最近行ってないからよく分からんが、複数店舗やってて元気な感じのはず。実は、来住店は元はうちの店でした。

サニーTSUBAKI

元はサニーマートって店だったが、高知からサニーマートがやってきてややこしかったせいか、裏で色々とあったせいかは分かりませんが、店名変わりました。
ちょっと前に店舗増やしたので、地元でも店舗数の多い企業になってますね。

そごうマート

昔ながらの小さなサイズのスーパー。結構あちこちにあるので、見かけた人も多いんじゃないかな。地域密着だけど、店もお客も平均年齢高そうな感じなのと、通路への前出し陳列がよくあるのでカートが通りにくいという問題点ありがち。子連れには辛いかなー。
まぁ、全店回ったわけではないのと、店ごとに別管理っぽいので近くに複数店舗ある人は回ってみよう。

バリュー

ディスカウントメインのお店かな。伊予市の方では苦戦しているような感じだけど、そりゃまぁ、国道拡幅時に・・ゲフンゲフン

バナナ館

高速伊予IC入り口近くにあるバナナの看板が(地元では) 有名。一時期、土橋前に店あったりしたけど、今は網元に力入れてるのかな?

網元は牡蠣食べ放題とかやってるので、そういうのが好きな人には良いと思うが、毎年食べ放題のルールが微妙に変わるので、値段と内容を確認の上で行ってねー。

おくむらストアー

野菜に強いお店。そりゃまぁ、すぐ近くの農学部で激安販売されてるしなぁ。ここもスーパーだけじゃなく色々な取り組みしてます。配送の車見てたら、弁当事業のステッカーが貼ってあった気がした。

スーパーABC

地元にはあまりないレア商品を独自で仕入れたりとか一時期は頑張っていたけど、(多分)色々あってフジに吸収されました。なので、看板はそのままですが商品やレジとかはフジです。旧空港通にあった店もドカンと改装してたり、平井にあるZもABCに店名変更してましたね。
そういった意味で、独自性はないんですわー。残念。

食彩館エルベ24

萱町にある地域密着型のお店。お値段安め、テレビによく出る。

スーパーうごもり

西垣生にある地域密着型のお店。チラシとかがインパクトある作りだった記憶があるけど、正確には覚えてない・・。

スーパー田中

国道33号から浄瑠璃寺へ抜ける道をそのまま下って行くとある。あと、別店舗で国道33号を山に向けて進む時に「エキサイトスーパー」とか書いてある店を見たことある人もいるかも。お肉安いけど脂身多めっていうイメージあるな。

スーパーえばら

行ったことないですー

ミート伊藤

八倉にあるぞ。焼肉屋だけじゃないんだぜー。ちなみに月末に半額セールやるけど、テレビに映った値段見る限り・・ゲフンゲフン
色々ありますなー。

末広マート

県病院前にあるので知ってる人も多いはず。立花店とかネットショップとか色々とやってて手堅い感じ。

セルフサンコー

市内電車の清水町駅前にあるお店。生活圏にないのであまり行った事はないです。

全日食チェーン

Zのマークのお店があったら、それは全日食というボランタリーチェーンの店です。県内にそこそこ店舗数があったはず。加盟してたので、色々とやっておりました、ええ。オープンに書けないこと多いから省略。

たかすかスーパー

検索したら出てきたけど行ったことないー。

やまさんセンター

ディスカウント系だったかな、全日食の勧誘リストに入ってた気がするが詳細忘れた。

スーパーともちか

上林のそうめん流し行った後によった事あるな。クールスモール近くなので、前は通るけど意外と寄らないんだよなぁ。

これで終わると普通なので、島エリアを追加。

中島

ファミリープラザトミナガ

前述の全日食チェーンの店。地元では大きな会社なので、事業的には他にも色々とやってるようですね。

その他

パンとかジュースとかを売ってるお店はあちこちにある。上述のスーパー基準と外れるので細かくは書かないが、見かけたら覗いてみよう。

興居島

JAえひめ中央Aコープ 由良

一度、買い出しに行ったくらいかな。

松山生協・泊店

入った事ないので不明。

睦月島

店名不明

通りに看板出てるので気付きやすいが、実際のお店は結構中にある。
それよりも魚さばいていて周りに猫が群がってた場所があったんだけど、あれ何だったんだろう?

野忽那島

確か、無かったような気がする。堤防に線を引きに1回上陸しただけなのであまり覚えてない。

釣島

船乗り場の前に自動販売機があるが、店はやってなかった。この島に行く際には、飲食は自力で何とかするようにしましょう。手を伸ばせば取れるからといって、ミカンを取るなよー。でも、灯台まで歩いていく途中にいいミカンがあったので、いつか畑指定で買いに行きたいな。

津和地島

色々ある

旅館が2つあって、その通りが島のメインストリート。歩いていると飲料というかお酒とつまみを売ってて宴会材料には事欠かない感じ。

関係ないが、津和地クリテリウムとか、誰か企画しない? ほぼフラットで、距離もそこそこあって、本州の方が近いから人は来そうな気がするんだけどなぁ。

怒和島

重松酒店

ジュース買った覚えがある。

渡部商店

行った事はない

二神島

小さな商店が1つあり、パンとかジュースとか売ってる。おばちゃんの社交場。

安居島

流石に店はないが、塩害対応の特別な自動販売機がひとつだけある。

番外編

島の移動スーパー

島にはトラックが毎週回ってきているみたいで、確か津和地で遭遇した事がある。各島を回った最後の島だったので見切り販売しててお買い得だった。島巡り中に遭遇した時は、地元の方の迷惑にならない程度に買いましょう。値切りもできるよ。

陸地部の移動スーパー

最近、買い物に行けない人向けに、移動スーパーが市内でもスタートしたようだ。FCみたいなので、同じ名前でも経営は別とかありそう。記憶が確かなら、2社ほど参加しているはずだしな。いつまで続くかなー、と思ってるので、興味ある人は買い支えよう。

通販

前述のフジが「おまかせくん」っていうネットスーパーをやってたりする。なんと、チラシの値段とネット価格が同じというお得な仕様なのだ。
数年前(!)にPHPを覚えた時に、スクレイピングするウェブサービスを作った事がある。毎時巡回して、値下がりした商品だけを表示で、底値時にはアイコン表示追加ってやつ。

まぁ、SQLの書き方に問題あったようで、数ヶ月後に高負荷でサービス自体に制限かかっていたので、今は停止しちゃってるけどーwww

更に今はない店を追加

コーノ

懐かしいw
今回調べ直して、そんな店あったなー、と思い出した。お家騒動でなくなりました。

エフコグループ

ボランタリーチェーンだ。
最盛期には16店舗くらいあったはず。そのうちの3店はうちだったけど。ここも色々あって書けないが、裁判所デビューはこことのアレだwww

閉店した店舗のうちいくつかは、紹介済みの、高知のサニーマートとか、サニーTSUBAKIとかが引き継いでやってます。というか、エフコの2代目達はなにやってんだろ? 接点ないからよく知らないんだよなぁ。

俺、外様だったし、社交性なかったしー(爆

という事で、あなたの周りのスーパーをもっと活用してくださいね。地方再生は地域経済の活性化からですよ。とか、適当な事を言っておわる。

明日12/09は、daruyanagiさんの「愛媛の先っぽにバイクで行ってきた」ですー。

kintone Advent Calendar 2015 番外編 -アドベンチャーゲームを作ろうー

kintone Advent Calendar 2015の3日目でプロセス管理が登場したので、前に考えていたネタを作ってみた。

アドベンチャーゲームを作ろう

プロセス管理だけで、ミステリーハウスみたいなのが出来て、リソース管理もkintoneで完結するんじゃないかという話をしたのは、2015/11/20 kintone Café大阪のLT大会でした。
まぁ、色々触っているうちに何となく思いついただけだったので、その時は掘り下げてなかったのですが、他の人がやったとなると負けてはいられません。

とは言え、いわゆる「周回遅れながらも追いかけよう案件」ですねぇ。

ステージ構成

 

ザックリ書くとこんな感じ。
キャプチャ

東西南北に部屋移動。外に出るには鍵が要る。という流れ。これをkintoneで実現するためにこんな構成にしました。

  • 各部屋の説明と背景画像のステージアプリを作成
  • ゲームアプリを作成しプロセス管理を設定
  • アイテム情報はゲームアプリ内に保存
  • ゲームアプリからステージアプリの内容を参照

実際の画面

注:各画像はネットで適当に拾ってきたものなので、問題があれば削除します。

レコード追加でゲームスタート。
02

部屋移動してみる
03

04

 

書庫に移動
05

 

鍵を取る
06

 

外に出る選択肢が出現
07

 

クリア
08

 

という事で、アイテム管理のためにJSカスタマイズ10行程度必要でしたが、それっぽいのが出来ました。

  • レコード内の値によってプロセスの選択肢を変更したり出来る
  • プロセス処理内で、選択肢の変更に使っているフィールドを変更することは出来ない
  • 実際にゲームにするとなると、プロセス管理が膨大な量になるので無理かなー(おぃ

くらいが気づいたところですね。

プロセス管理はこんな感じ。

09

という事で、番外編の kintoneを想定外の使い方で楽しもうぜ! でしたー。