[Hybrid]生成AI×LINE×kintoneでみんながハッピーになるAI施設予約アプリを作ろうのkintoneハンズオン資料

こちらの記事は2024/07/24に開催した[Hybrid]生成AI×LINE×kintoneでみんながハッピーになるAI施設予約アプリを作ろうで利用したハンズオンの資料になります。
ハンズオン時に判明した資料の不備を修正したものになります。

当日のハンズオンの動画はこちら
https://www.youtube.com/live/o4gRcKbfTTA?si=xJ0aR82M3EFOyvsP

LINE側のハンズオンの資料は以下になります。
https://specialman9999.github.io/20240724LINEkintone/

以下で作成するアプリテンプレート

構成図

目次

今回作成する3つのアプリ

アプリ名説明
施設管理アプリ施設名や、収容人数などの施設の情報を管理するアプリです。
施設予約管理アプリLINEからの予約情報を保存するアプリです。利用日、施設名、LINE UID、利用時間などを管理します。
稼働率管理アプリ施設管理アプリ、施設予約管理アプリの情報をもとに稼働率の計算をして保存をします。

作成する機能

  • 各施設の月の稼働率がグラフで可視化できるようにする
  • 各施設の日の稼働率がグラフで可視化できるようにする
  • 各施設の曜日の稼働率がグラフで可視化できるようにする
  • 施設が予約された時にメールで通知されるようにする

kintoneの環境設定

組織を作成する

施設予約管理アプリにレコードが保存された時に個人ではなく、所属してる組織のメンバー全員に通知がいくようにするためにまず組織を作成します。

REST APIの通知をメールで送信できるようにする

個人の通知を設定する

アプリ作成

① 施設管理アプリ

フィールドタイプフィールド名オプションフィールドコード
文字列(1行)施設名・必須項目にする・値の重複を禁止する施設名
数値収容人数単位記号:名後ろに付ける収容人数
時刻利用可能開始時間利用可能開始時間
時刻利用可能終了時間利用可能終了時間
計算利用可能時間計算式:
(利用可能終了時間 - 利用可能開始時間) / 60 / 60
単位記号:時間後ろに付ける
利用可能時間
添付ファイル施設の写真施設の写真

<参考>
日付、時刻、日時の計算
https://jp.cybozu.help/k/ja/id/040502.html

※ 予約一覧のフィールドは時間があれば最後に説明

データを登録

施設の写真
https://drive.google.com/drive/folders/11DCaEhekCAumwwlLC-j2GjwFrlvjKgly?usp=sharing

② 施設予約管理アプリ

フィールドタイプフィールド名オプションフィールドコード
チェックボックスキャンセル・フィールド名を表示しない
項目と順番:キャンセル
キャンセル
日付利用日利用日
時刻開始時間開始時間
時刻終了時間終了時間
計算利用時間単位記号:時間後ろにつける
計算式:
(終了時間 - 開始時間) / 60 / 60
利用時間
ルックアップ施設名最後に設定※1参照施設名
数値予定人数単位記号:名後ろに付ける予定人数
数値収容人数単位記号:名後ろに付ける収容人数
文字列(1行)LINE UIDLINE_UID
文字列(1行)レコードのタイトル自動計算する
計算式:DATE_FORMAT(利用日, "YYYY年MM月dd日", "Etc/GMT") & " " & DATE_FORMAT(開始時間, "HH:mm","Etc/GMT") & "〜" & DATE_FORMAT(終了時間, "HH:mm","Etc/GMT") & "@" & 施設名
レコードのタイトル

<参考>
[DATE_FORMAT関数]日付や時刻の表示形式を指定して表示する
https://jp.cybozu.help/k/ja/id/040501.html

※1

通知の設定をする

通知のメールのタイトルをわかりやすくする設定をする

③ 稼働率管理アプリ

フィールドタイプフィールド名オプションフィールドコード
ラジオボタン対象項目と順番:日次月次対象
文字列(1行)曜日・自動計算する
※2 参照
曜日
文字列(1行)会議室名会議室名
日付日付日付
数値利用時間合計利用時間合計
数値利用可能時間合計利用可能時間合計
計算稼働率計算式:(利用時間合計/利用可能時間合計)*100稼働率

※2

IF( ( ( (日付 / 60 / 60 / 24) - 0) / 7 ) - ROUNDUP(( ( (日付 / 60 / 60 / 24) - 0) / 7 ) , 0) = 0 , "5.木曜",  
	IF( ( ( (日付 / 60 / 60 / 24) - 1) / 7 ) - ROUNDUP(( ( (日付 / 60 / 60 / 24) - 1) / 7 ) , 0) = 0 , "6.金曜",
		IF( ( ( (日付 / 60 / 60 / 24) - 2) / 7 ) - ROUNDUP(( ( (日付 / 60 / 60 / 24) - 2) / 7 ) , 0) = 0 , "7.土曜",
			IF( ( ( (日付 / 60 / 60 / 24) - 3) / 7 ) - ROUNDUP(( ( (日付 / 60 / 60 / 24) - 3) / 7 ) , 0) = 0 , "1.日曜",
				IF( ( ( (日付 / 60 / 60 / 24) - 4) / 7 ) - ROUNDUP(( ( (日付 / 60 / 60 / 24) - 4) / 7 ) , 0) = 0 , "2.月曜",
					IF( ( ( (日付 / 60 / 60 / 24) - 5) / 7 ) - ROUNDUP(( ( (日付 / 60 / 60 / 24) - 5) / 7 ) , 0) = 0 , "3.火曜",
						IF( ( ( (日付 / 60 / 60 / 24) - 6) / 7 ) - ROUNDUP(( ( (日付 / 60 / 60 / 24) - 6) / 7 ) , 0) = 0 , "4.水曜","該当なし"
						)
					)
				)
			)
		)
	)
)

<参考>
日付の値に応じて曜日を表示したい
https://jp.cybozu.help/k/ja/utility/app/elapsed_days.html

稼働率グラフを作成

日次の稼働率
曜日の稼働率
月次の稼働率

稼働率の計算するプログラムの設定

年月を入れて、作成するボタンを押すとその年月の稼働率が計算されて、稼働率管理アプリに保存される。

kintone上でコードを書けるプラグインをインストール

以下のURLからプラグインをダウンロードしてください。

https://mydevasset.blob.core.windows.net/system-container/plug-in/jsEdit/SAMPLE_jsEdit_plugin_v4.5.3.zip

上記プラグインの詳細ページ(後で参考にみておいてください。)
https://cybozu.dev/ja/kintone/tips/development/plugins/sample-plugin/jsedit-for-kintone-plugin/

先ほどダウンロードしたzipファイルを読み込む。

プラグインをアプリで使えるようにする
コードをコピペ

エディターに以下のコードを貼り付けをする。

https://gist.github.com/tkc49/becb670b0fc9c06940e999163143ec6a

全体を選択してコピー

ペーストする

各自アプリIDを書き換える

アプリIDの確認方法
各アプリを開いて、URLを確認する。「k/」の右横にある数字がアプリID

必要なモジュールを設定する

■ PC用のJavaScript / CSSファイル

・JavaScriptファイル

  1. https://js.cybozu.com/jquery/3.7.1/jquery.min.js
  2. https://js.cybozu.com/jqueryui/1.13.3/jquery-ui.min.js
  3. https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js
  4. https://cdn.jsdelivr.net/npm/dayjs@1/locale/ja.js
  5. https://js.cybozu.com/sweetalert2/v11.12.0/sweetalert2.min.js

■ CSSファイル

  • https://js.cybozu.com/jqueryui/1.13.3/themes/smoothness/jquery-ui.css
  • https://js.cybozu.com/sweetalert2/v11.12.0/sweetalert2.min.css

外部との接続のためにAPIトークンを作成

以下の2つのトークンを作成します。

  1. 施設管理アプリ
    LINEから施設情報を表示するために必要
  2. 施設予約管理アプリ
    LINEからの予約を登録するために必要

施設管理アプリ

APIトークンとアプリIDをメモ帳に保存しておいてください。(後半のLINEのハンズオンで使います。)

施設予約管理アプリ

APIトークンとアプリIDをメモ帳に保存しておいてください。(後半のLINEのハンズオンで使います。)

カスタマイズしたプログラムで利用した kintone JavaScript API

// 一覧画面が表示された時に実行される
kintone.events.on('app.record.index.show', () => {});
// レコードの取得
kintone.api(kintone.api.url('/k/v1/records', true), 'GET', {});

// レコードの保存
kintone.api(kintone.api.url('/k/v1/records', true), 'POST', {});

// レコードの削除
kintone.api(kintone.api.url('/k/v1/records', true), 'DELETE', {});
// メニューの上側の要素を取得する
kintone.app.getHeaderMenuSpaceElement();
よかったらシェアしてね!
URLをコピーする
URLをコピーしました!

「エンジニアのためのWordPress開発入門」を執筆しました!

WordPressを使った開発案件は依然多く、それに携わるWebエンジニアも多数存在します。ただし、モダンな開発手法に慣れたWebエンジニアがWordPressに初めて触れたとき、その独特のアーキテクチャやシステムの構成に戸惑いを感じることがあるかもしれません。だが、WordPressは、それらを補ったうえにさらに強力なメリットを持ち合わせています。本書は、PHPプログラマがWordPressで開発する際に必要な基礎知識から、現場で役立つ具体的なカスタマイズ手法や開発のポイントについて詳しく解説しています。

この記事を書いた人

NPO法人のHP制作(WordPress)やkintoneを使った業務システムの構築をしています。サイボウズ株式会社公認kintoneエバンジェリスト/CoderDojo西宮と梅田のチャンピオン/認定NPO法人宝塚NPOセンター理事/NPO法人SEIN理事/

コメント

コメントする

目次
閉じる