kintoneで自由に予約管理システムを作ろう

#本記事の内容は古く、より詳しく便利な方法がトヨクモ様のブログで紹介されています。
　https://kintoneapp.com/blog/reservation-system/
　※予約人数管理まで可能となっています！

＊＊＊以下古い記事＊＊＊

#kintoneで自由に予約管理システムを作ろう

###はじめに
　美容院、居酒屋etc..ホットペッパーの予約管理システムを利用されたことがある方は多いのではないでしょうか。空き時間を丸バツの一覧で見たり、条件によって表示を切り替えたりと、とても優れた予約管理システムになっていると思います。
　そんな予約管理システムですが、実はkintoneでも作ることができ、入力項目を自在に操れる点が強みとなります。以下は作成の記録ですので、自分で素早く予約管理システムを作り上げたいという方のご参考になれば幸いです。

##使用ツール・技術
　- [Kintoneスタンダードコース](https://kintone.cybozu.co.jp/)(※) 月額7,500円～
　- [フォームブリッジプレミアムコース](https://fb.kintoneapp.com/)　月額14,000円
　- [kViewerプレミアムコース](https://kv.kintoneapp.com/)　月額15,000円
　　上の3つは30日間の無料お試しが可能です。
　- CSS

　  (※)kintoneはサイボウズ社が提供販売する、ローコードツールです。
　　　予約管理システムに限らない幅広い用途で利用可能です。
　　　[開発者向けライセンスもあります](https://developer.cybozu.io/hc/ja/articles/200720464)

###活用想定場面
　-施設予約管理
　-セミナー予約管理
　-来庁日時予約管理　ほか

###参考にした記事
　[データを保持して別のアプリに情報登録！予約管理システムを作りたい](https://kintoneapp.com/blog/reservation_view/)

##手順（今回は施設予約管理システムを作ります）
###＜STEP1＞kintoneアプリを２つ作る。
**（１）予約日時元データ管理アプリ**
　　　予約日時データを保持するアプリです。
　　　予約可能日時データをこちらに登録します。

▼設定画面（施設は会議室Ａ、会議室Ｂ、大ホールの3種類としています。）
<img width="1101" alt="①.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281763/94e58866-56bb-1de5-6ed6-f974a9db69a9.png">

▼設定からAPIトークンを発行してください
<img width="840" alt="②.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281763/b401f236-b885-0e37-176f-0555e853dd3e.png">



アプリ保存をお忘れなく！

**（２）予約者管理アプリ**
　　　予約者の情報を保持するアプリです。
　　　予約があるたびに、申込者の情報が記録されます。

▼設定画面
（利用時間から利用料金を自動算出する設定を入れています。不要な場合は管理欄以下は作成不要）
<img width="1083" alt="③.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281763/6a7079a3-9955-f3a8-e174-6bfda66841fa.png">

▼設定からAPIトークンを発行してください
<img width="799" alt="⑤.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281763/5a8c6c0a-b9ae-c2aa-74c2-de7c9b4c5a3d.png">


▼設定からデザインも変えてみます（任意）
<img width="1101" alt="④.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281763/32200aee-92d8-4f44-843d-b8963fbefc3f.png">

アプリ保存をお忘れなく！

###＜STEP2＞予約日時元データ管理アプリに、予約日時データを投入する
　-ここで投入したデータがユーザー側で予約可能日時として表示されます
　-CSVでデータを投入した方が簡易なため、CSVによる一括投入をご紹介しています。

▼手動で3件データを登録する
<img width="1097" alt="⑥.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281763/281fab2b-585a-e4eb-3627-84803c0cf6d9.png">

▼CSV出力する
<img width="1096" alt="⑦.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281763/49a92654-c4c2-0b40-6757-eea31d43ab45.png">

▼CSVの中身データを作る
<img width="586" alt="⑧.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281763/63646214-6891-5a22-00b3-2e210bf921c5.png">

▼予約日時元データ管理アプリにCSVを読み込ませる
（一括更新のキーを外すとすんなり読み込めます。手動で登録した3件のデータが重複しますので削除してください）
<img width="599" alt="⑨.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281763/53646d5f-152a-c34e-1c18-8d99b04dcd36.png">


###＜STEP3＞kViewer(KB)、フォームブリッジ(FB)の設定を行う
　STEP2まででkintoneアプリを2つ作成したら、続いてkViewer、フォームブリッジの設定を行います。
　**連携設定するkintoneアプリは「予約日時元データ管理アプリ」ですので、お間違えなく!**

▼kViewerでカレンダービューを選択作成(KB)
<img width="1026" alt="⑪.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281763/35f1dbd5-1523-b54a-419b-d1bcf42d898f.png">

▼kViewerの設定(KB)
<img width="1099" alt="⑫.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281763/40c708fe-9811-fc46-7e19-6e20c83f218b.png">


▼フォームブリッジも設定します(FB)
<img width="885" alt="⑬.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281763/c39abb66-d965-f3bb-ea51-16973efbbdb5.png">

▼作成したフォームのURLをここでコピー保存してください(FB)
　作成したフォーム
<img width="1024" alt="⑭.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281763/df1fea1f-377c-2c79-c398-2a835726853f.png">

▼kViewer側で、フォームブリッジ連携を有効にし作成したフォームのURLを入力します(KB)
<img width="1043" alt="⑮.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281763/aed88ff4-ced1-2eb1-fbbc-f5acc6633ece.png">

▼フォームブリッジ側で回答後処理を有効にします。(FB)
　※予約日時元データ管理アプリだけでなく、予約者管理アプリにもデータを送信/保存するためです。
<img width="977" alt="⑯.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281763/08d4c48f-475a-725a-a329-b1e819e04c0e.png">


▼一旦フォームブリッジの全てのフィールドを削除します。(FB)
<img width="1099" alt="⑰.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281763/0cb04ae0-d8ec-da3a-12e9-829d7b376d87.png">

▼予約者管理アプリの項目を中心に、必要なフィールドを同期します(FB)
<img width="1012" alt="⑱.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281763/2becf967-f4be-dc5e-0d01-e55d6b92e61b.png">

▼予約済フィールドは「初期値をチェック済」非表示設定にしてください(FB)
 ※申込があったら予約済チェックを、予約日時元データ管理アプリに送信し、他の人が重複予約をしないようにするためです。
<img width="1092" alt="⑲.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281763/cf59dce5-62c6-5480-ce56-1827feed46e6.png">

▼フォームブリッジから、フィールドと保存先アプリの対応項目を設定します(FB)
・予約日時元データ管理アプリ
<img width="968" alt="⑳.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281763/072b860d-060b-b42d-2376-7860b91d6eed.png">

・予約者管理アプリ
<img width="909" alt="㉑.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281763/d0c9f242-0a5d-0c56-2f50-74281b220f3b.png">

▼kViewerの細かい設定を行っていきます(KB)
・コンテンツ配置の設定(KB)
<img width="1096" alt="㉒.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281763/060aa9d2-12ab-a3df-41ff-9fe938dc344a.png">

・カレンダー表示詳細設定(KB)
<img width="995" alt="㉓.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281763/fffeab8d-5634-0f36-9f40-deadbdb4ec74.png">

・レコードの絞り込み(KB)
※本日以前の日付、及び予約済みの日時はカレンダーに表示しないよう設定
<img width="1022" alt="㉔.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281763/1f7045af-6756-6c2e-9817-d9ae3fb0405f.png">

・施設別の絞り込みリンクの作成(KB)
<img width="1064" alt="㉕.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281763/b16657fa-27cd-fb32-277b-048181746957.png">

▼一旦完成！！
・カレンダー表示(KB)
<img width="1099" alt="㉖.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281763/e1ffd173-a546-d1ad-cb4a-5dc3225e1993.png">

・カレンダークリック、申込ボタンが表示される(KB)
<img width="1091" alt="㉗.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281763/a8bed6df-bb36-2648-7502-1281bf8c6e04.png">

・施設別の絞り込みも可能(KB)
<img width="862" alt="㉘.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281763/40b7215e-2854-8d05-25bd-f0866934f519.png">

・予約送信画面(FB)
<img width="1007" alt="㉙.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281763/7a8ef188-5bce-a156-9fc8-147dc0912a08.png">

▼送信された予約はkintone側で確認ができます！
・予約日時元データ管理アプリ(kintone)
※予約送信されたものは、予約済にチェックが入り、kViewerのカレンダーに表示されない！<img width="1099" alt="㉛.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281763/bc75ae58-d3fe-b7f4-df38-6fb37f403bb0.png">
・予約者管理アプリ(kintone)
<img width="421" alt="㉚.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281763/fbf12348-a0ba-b1d9-3444-7148cd176aa9.png">

###＜STEP4＞より細かな点の設定、見た目のCSSカスタマイズ
　後日追記します。