この記事で利用している kintone API SDK(β) for Java は非推奨になりました。
kintone Java Client を使って書き換えてください。
(著者:サイボウズ 北川 恭平)
はじめに
私が所属する、サイボウズ システムコンサルティング本部 cybozu.com ソリューショングループでは、今IT界隈で流行っていると思われるIoT(Internet of Things)を実践的に学ぶために、「Raspberry Pi」を使ってkintoneとの実用的な連携サンプルをいくつか作成しました。
実生活で使うだけではもったいないと思い立ち、cybozu developer networkでそれらを本日より公開していきます。
予定では、IoT企画として最大6本を定期的に掲載する予定ですが、大人の事情で変更が起こりうる点ご了承ください。
やりたかったこと
今週は私の作成したものをご紹介します。
その名も「オートランチセレクト」。
突然ですが、暑い時は冷たいもの、寒い時は暖かいものが食べたくなるかと思います。しかしながら、食べたいものを求めてふらっとランチにいきたいけれどお店が分らない!なんてことはないでしょうか。
それを、解決するのがこの「オートランチセレクト」です。
ざっくりとした流れは以下です。
- Raspberry Piをつかって温度センサーより気温情報を取得
- 気温情報より気温に適した料理をランダムに選択
- ぐるなびAPIを使ってこの選択した料理が食べられるお店をランダムに取得
- kintoneアプリにこのお店の情報を登録
主にJAVAとRubyをつかってこれらの処理を実現しました。
準備
Raspberry Pi
- Raspberry Pi Model B Revision 2
温度センサー
- こちらに同梱されていた温度センサー
ぐるなびAPIアカウント
- こちらよりぐるなびWebサービス用新規アカウントを発行します
kintoneアプリ
以下2つのアプリを用意します
<カテゴリアプリ>
気温によって食べたくなりそうな料理にカテゴリ分けするためのアプリです
フィールド名 | フィールドコード | フィールドタイプ |
Food Name | food | 文字列(1行) |
グループ | group | ラジオボタン |
<ランダムランチアプリ>
選び出した飲食店情報を登録するためのアプリです
フィールド名 | フィールドコード | フィールドタイプ |
本日のおすすめランチ店舗 | recomm | 文字列(1行) |
店舗URL | link | リンク |
店舗住所 | address | 文字列(1行) |
センサーで観測した気温 | temper | 数値 |
ヒットしたグループ | group | 文字列(1行) |
気温の取得
こちらを参考に、温度温度センサーを装着しRubyにて気温を取得しました。
Javaサンプル
今回、Javaの外部ライブラリとして以下の二つを使いました。
- kintone API SDK(β) for Java
- Jackson(Java用のJSONパーサーライブラリ)
- 取得した気温をもとにカテゴリを決定し、カテゴリアプリにREST APIでGET リクエストを送信し料理を取得します。(サンプルコードは抜粋して掲載しています)
- 店舗情報の取得は、ぐるなびAPIの店舗検索APIを利用しました。店舗検索部分の詳細はぐるなび店舗検索APIのJAVAのサンプルをご参考ください。
- 最後に、取得した情報をランダムランチアプリに登録していきます。
- 実行する際は、別途設定ファイルにて以下を設定します。
パラメータ名 設定値 domain cybozu.com環境のドメイン名 basicname ベーシック認証をのログイン名 basicpass ベーシック認証のパスワード cateId カテゴリー登録アプリのアプリ番号 cateToken カテゴリー登録アプリのAPIトークン lunchId ランダムランチアプリのアプリ番号 lunchToken ランダムランチアプリのAPIトークン
実行してみた
それでは、作成したスクリプトを実行してみます。一定間隔で気温を10回はかりその気温の平均値をもとにランチのお店を選び出します。
おお!どうやら無事にランチがkintoneに登録されたようなので、kintoneを確認しましょう。
定期実行×通知設定をしておけばこんな風にお昼前に自動で通知ができますね。
店舗名、URL、店舗住所、気温、料理のカテゴリが登録されました。(ぐるなびAPIのパラメータで特定の地点の半径~km以内のお店といった指定ができます。)
最後に
この仕組みを考えついた当初からうすうす気づいてはいたのですが、オフィス内で実行しても空調により気温がほぼ一定に保たれているため、常に同じグループしか選ばれないという所が欠点です。ただ、自分の知らないお店をランダムにサジェストしてくれるワクワク感はなんともいえないものがあります。
興味のある方は是非お試しいただければと思います。
記事に関するフィードバック
記事のコメント欄は記事に対するフィードバックをする場となっております。
右の記事フィードバックのためのガイドを参照してコメントしてください。
記事のリンク切れなど、気になる点がある場合も、こちらのフォームからフィードバックいただけますと幸いです。