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を想定外の使い方で楽しもうぜ! でしたー。

ぼくのしってる松山城下町

愛媛・松山についての徒然 Advent Calendar 2015 12/1の記事です。

愛媛県松山市って所をご存知ですか?

大体の場所は、ここ。
愛媛県松山市_-_Google_マップ

更に詳細は、松山市 – Wikipedia をご覧ください。

で、書きたいのはそんな事じゃない!
夜の基礎情報をまとめたいだけなのだ!

まさに、俺得!!

最初に

基本的に昔の情報がベースになっているので、時事ネタ的な事も古めです。あと、なるべく業界裏話的な事は無しでいきます。

基礎情報

Google_マップ

松山の通り名で一番わかりにくい(と思う)のが、「八坂通り」。なにせ、通り名が地図に載ってないのに、地元民は多用するから。

昔、その辺が八坂って地名だったみたいだけど、現在の住所は2番町だ3番町だとかなので、調べても出てきにくいのだな、これが。一応、今でも八坂公民館とかはあります。

で、この通りの左右が繁華街と思って間違いないので、タクシーに乗って目的地を、

・八坂のお寺のとこ
・八坂と2番町の交差点

とか言うと通っぽい感じです←なんのだw

カテゴリー

松山の繁華街は、コンパクトに各種店舗が集まっているので、

・食事+お酒
・お酒+女性が横につく
・お酒+女性が上に乗る
・女性が○○

など、一通り揃っています。

なお、

・女性向けのお店
・SMショー的な店
・性別不詳的な店
・海外女性のお店

だとかもありますが、これらは管轄外なのでよく知りません。というか、この辺の表記で怒られそうな予感がしてストレートに書いてないんですが、考えすぎ?

ただ、いわゆるお風呂はないので、道後の方へ行きましょう!

キャバクラ

全国各地で呼び方やシステムが違うのですが、松山の場合

・時間制で固定金額
・女性が横に座ってお酒作ってくれる
・お触りは基本禁止
・女の子の飲み代は店次第でプラス
・女の子の服装で、なんとなくジャンル分けされてる

という感じです。あと、結構、系列店でまとめられているので、無料案内所を何箇所か回るとざっくり掴めると思います。

という事で、個人的に分かる範囲でメジャーどころを紹介して終わりにしましょう。

テン開発グループ
会社接待用で多用されるグループ。一番規模が大きくて値段も色々。銀座にもお店あるので、東京の方はどうぞー。ちなみに、職安に出ていた「社内ネットワーク技術者」の求人に申し込んだら、面接前に落とされた事ありますw

C&Cグループ
会社とか友達とか、客層も色々というかカジュアル方向のお店。ここから多くの女性が羽ばたいて行きましたねー。あ、このグループも銀座にお店あるので、東京の方はどうぞーw

エイトグループ
女性の好みが合わないのと料金設定が微妙なのであまり行かないけど、その手の女性が好きな人にはストライクなお店。客層はおっさん率高め、接待にはつかわないかなー、的な感じ。

ゼロワングループ
語ると長くなるので省略。中洲の皆様、よろしくおねがいしますー(^^

あ、地域が同じ松山だから、

・エイトグループ
・エイトワン

を間違えやすい(俺だけ?)ので注意!

あれ? キャバだけで結構長くなってしまった。その他のネタは機会があればー

 

明日からは、普通の松山紹介が始まるはずなので、そちらをお楽しみくださいー

JAWS-FESTAからのアソシエイト試験経由のCloud Roadshow参加の話

はじめに

IMG_2355
とまぁ、いう事で、2015年11月3日〜4日にかけて九州に行ってきました。3日は祝日なので良いとしても4日は平日ですよね。最初は欠勤扱いでしたが、紆余曲折あって出勤扱いとなりました。でも、交通費とかは自腹だぜ!

4日はCloud Roadshowがあるというのも理由のひとつですが、実はアソシエイト試験を受けることも計画しておりました、ええ。

仕事でAWS使うことがほぼないので、資格試験とか受験しても取れないと思いきや、仮試験では軽く合格するという謎な状態に。ついつい浮かれて、アソシエイト試験を2つ同時に受けるという暴挙に! どうなる?

移動開始

JAWS FESTAに朝から参加するために、前日から船で移動開始。船内泊です。愛媛からだと意外と選択肢ないのです。お金もないけどな!
そして現地到着後に、コミュニティトラックのスタッフ担当でタイムキーパーなどをやってました。

コミュニティトラックではこんな事やってました。

IMG_2363
AMIMOTOのお話。なんと、HTTP/2に対応という事で、最後にデモがありました。画像表示など超早かった!
この時はHTTP/2対応のAMIMOTOは公開前でしたが、今は公開してますね(ですよね?)。試してみましょう!

IMG_2364
Twilioのお話。予定よりも早く終わったので、無茶振りでいきなりTwilioのデモを始めたりと楽しく参加できました。

IMG_2367
勉強会を応援するコミュニティのFUNITのお話。勉強会開催によくある困った事をサポートしたりするぜ! という話で、地方でコミュニティやってる人にはすげー刺さる話でした。

なお、もう1人の「コミュニティを盛り上げるために、企業も立ち上がれ」で話された内容も、超刺さる感じでした。ちょっと自分の行動を反省・・。会社で話を通すなら、会社の理論に変換して進めないとね。内容がリアルすぎて引用してもいいのかどうか判断つかなかったので、リンクのみですー。

いやー、みんな来れば良かったのに! っていう内容でしたよ。勿体なさすぎるので、どこかで再演を希望します! ええ、マジで! そして、色々な地区とリモートで繋いで共有しましょう!!!

IMG_2369
懇親会は超大人数で、半分でこんな感じ。いやー、面白かった。ノートPC持ってきてたら、LTに飛び入りしたのになーw

懇親会終了後は愛媛・高知組は軽く2次会へ。だって明日は試験ですからねぇ。深酒禁止!

試験&Roadshow

IMG_2373
当日は早起きだったので、開始時間のかなり前に到着。ここが試験会場ですよ! すごい! ちなみに、早めに試験開始も可能だし、連続して受けるなら休憩時間なしでぶっ続け受験も可能でした。べんりー。

12208651_637471873061575_1630188392689213159_n当然、速攻で開始して、連続で終わらせました。大体半分の時間で終わったのかな? で、一応両方受かりました。その場で結果が出るので、最後のボタンを押す時は結構ドキドキしますよw
みんなも試験受けてみよう!

その後は、Roadshowへ参加し、JAWS-UG 福岡にも参加。ウルトラクイズで壇上までは行きましたが、結構最初で落とされましたねー。残念。

IMG_2376
最後は新幹線+船(船内泊)で戻りました。船は朝の5時に着くので、一度着替えに戻ったらそのまま出社ですよw

という事で、みなさまお疲れ様でしたー。次は、JAWS DAYS 2016が2016/3/12に開催されます。次回はどうなるかなー?

kintone用Twilioプラグイン作りました

主な使用方法

アプリ内に電話番号とメッセージを用意。プラグインをインストールすると電話をかけてメッセージを伝えます。ちなみに、電話じゃなくてSMSでも可。
念のために付け加えると、通話をするんじゃなくてメッセージを伝えるプラグインです。

プラグイン設定手順

STEP 1:プラグインの読み込み

Twilioプラグイン(Twilio_kintone_plugin)をダウンロードしてください。そのファイルを「kintoneシステム管理 > プラグイン」より読み込みます。詳細な手順についてはこちらをご参照ください。※kintoneのシステム管理権限が必要です。
*最新バージョンは 2 です。(2015/11/2 現在)

STEP 2:アプリの用意

Twilioプラグインを適用するアプリを用意します。アプリには、以下のフィールドを用意してください。

電話番号のフィールド(文字列1行フィールド)
メッセージのフィールド(文字列1行フィールド)

STEP 3:Twilioアカウントの用意

Twilioアカウントを取得して、

  • 電話番号
  • AccountSID
  • AuthToken

を用意してください。

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

STEP 4:プラグインの設定

アプリの設定画面から、プラグインを選択します。
アプリの設定

Twilioプラグインの設定画面に移動します。
プラグイン

必要事項を入力します。
プラグインの設定発信元番号は、通話とSMSで分けて入力できますが、同じ番号でも問題ありません。というか、トライアルの場合は、最初に取得する番号をUSの番号にしておくと両方無料で試せます。その辺に注意したアカウント取得手順はこちら(工事中)。

試してみましょう

データを入力してみます。
電話番号:ご自身の電話番号を入れてみましょう
メッセージ:こんにちは、Twilio-kintoneプラグインです。
講師マスター_-_3_-_レコードの詳細

通話ボタンを押す
講師マスター_-_3_-_レコードの詳細_通話

SMSボタンを押す
講師マスター_-_3_-_レコードの詳細_と_プラグイン

以上です。お試しください。

変更記録

Ver.2:

  • 初期設定画面で、入力値チェックに引っかかった場合はエラー表示するように変更。
  • 電話番号に空白が含まれていた場合は自動除去。
  • プラグイン一覧画面でのホームページ移動先をこのブログのkintoneカテゴリに変更

Ver.1:

  • 公開

kintone Café 愛媛 Vol.1開催しました

はじめに

kintone Café 愛媛支部が立ち上がりました。
愛媛のkintoneに関する話題には積極的に参加していきますよー。

という事で、まずはkintone Café 愛媛 Vol.1開催しました!

時間と場所はこんな感じです。
日時:2015年9月26日(土)13:30〜17:30(受付開始 13:00)
場所:サイボウズ株式会社 松山オフィス

次第

内容はこんな感じで、多くの方に事例紹介などをしていただきました。

時間 内容 スピーカー
13:30 〜 13:45 (15分) kintone Café紹介   沖さん(株式会社松山電子計算センター)
13:50 〜 14:05 (15分) デモで解説!15分でkintoneまるわかり   渋谷さん(サイボウズ株式会社)
14:10 〜 14:30 (20分) プラグイン活用と最新kintoneトピック   西尾さん(サイボウズ株式会社)
14:35 〜 14:45 (10分) LT : kintoneだからできるSI開発   四宮さん(株式会社ジョイゾー)
14:50 〜 15:20 (30分) kintoneによるSFA的活用事例   片山様(ケーオー商事株式会社)
15:20 〜 15:35 (15分) 休憩  
15:35 〜 16:35 (60分) ハンズオン    沖さん(株式会社松山電子計算センター)
16:35 〜 16:50 (15分) 休憩  
16:50 〜 16:55 (05分) LT : kintoneのコンセプトと実績/事例 伊佐さん(サイボウズ株式会社)
17:00 〜 17:05 (05分) LT : kintone活用を促進する導入トレーニング 渋谷さん(ICTコミュニケーションズ株式会社)
17:05 〜 17:25 (20分) 次回予告!   沖さん(株式会社松山電子計算センター)

感想

kintoneで何が出来るかなどの事例紹介はかなり盛りだくさんでしたね。

特にSFA的活用事例は、現場が作成!しているという事で、
「こんな風にして情報共有を」
『おぉー』
「で、こんな機能を使って便利に」
『おおぉーーー』
という感じでした。参加者の姿勢も前のめりになってましたよ。

ハンズオンは「マイナンバー管理をkintoneで対策!」というテーマでおこないました。
なんと時間内に皆さん作成完了という優秀な状況でした。実は、周りのkintoneマスターの方々がサポートしていただいたおかげです(^^;
数人に1人の割合でサポートしていただけたのでスムーズでした。ハンズオンはこれくらいの比率でサポート要員必要ですね。

懇親会

懇親会は席を予約していたが料理を予約していないというオチが(爆
その場でコースを決めて食べ始めたんですが、結果料理が多すぎて最後は追加料理をストップするという事態に!
いやー、恐るべき「串ゆう
と、ちょっと宣伝。

最後に

でまぁ、ほぼ写真がないのは「撮ってないから」でして(汗

しかも、午前中は子供の運動会に参加しているというエクストリームっぷり(笑
2015-09-26 07.06.14
尚且つ、ハンズオン用に作成したスライドは最初に設定した時間では足りないという話になり、その場で次第を変更するというkintoneらしいオチが裏では走っておりましたとさ。

次回もお楽しみにー