[連載第9回]自分でキャンプ場を運営するならどうする?架空の妄想キャンプ場運営をkintoneでやってみた!

公開日:

こんにちは。gusukuのサポートの中の人、にらです。

最近人にビリヤニをお勧めしすぎて、本格的に名前を「にら」ではなく「ビリヤニ」にした方がいいのでは…?と悩み始めたわけですが、それはそれとして先月もまた奈良県天川村のキャンプ場に行ってきました。

写真をAIにサイズ変更してもらったら、サイズと無関係な謎の棒や謎のベンチが現れた

この日は夕方から土砂降りの雨が降ったのですが、雨が止んだ後は涼しいというより寒いくらいで、真夏とは思えない過ごしやすさでした。
大阪の街はまだ9月中は暑いようなので、涼を求めて3か月連続でこのキャンプ場に来てしまいそうです。

冬に温かいもいいですが、夏に涼しいキャンプ場はやっぱりいいですね!

今回作るもの

さて、前回エブリサイトでマイページを作成しました。
今回は、各キャンプサイトの空き状況を予約前に確認するためのページをエブリサイトで作りたいのですが、キャンプサイトの予約状況から空き状況を表示するには複雑なデータ処理が必要になります。

複雑なデータ処理はエブリサイトよりカスタマインの定期実行タスクの方が向いているため、今回は下記のように役割分担にすることにしました。

  • カスタマイン
    • 定期実行タスクのカスタマイズで、予約明細アプリに登録された予約情報をもとに、サイトごとの空席状況を「空席管理アプリ」に登録する
  • エブリサイト
    • 「空席管理アプリ」のレコードを、キャンプ場利用者に見えるように公開する

空席管理アプリの作成

空席管理アプリはキャンプサイト(施設)ごとに、1日1レコードを作成し、予約数と受入可能数を登録して管理します。

レコードを登録した際は下記のようになります。
今回作成するカスタマイズでは、「予約数」を予約明細アプリに登録された情報をもとに集計してセットし、その情報をエブリサイトで表示する想定です。

まずは、カスタマインで空席状況を集計し、「空席管理」アプリに登録するところから始めます。

作成する定期実行タスクのカスタマイズの内容

カスタマインの定期実行タスクのカスタマイズは、決まった時間になったら起動して実行される、いわゆる『バッチ処理』を作成できます。
または、kintoneの画面にカスタマインでボタンを作成して、ボタンを押すと
今回は、下記のようなスケジュールで実行する、2つのカスタマイズを作成します。

  • 1か月に1回月初に、3か月後の月の空席管理のレコードをまとめて作成する
    • 毎月実行して、常に3か月後までレコードがある状態にする
  • 1時間に1回、空席管理の空席状況を更新する
ポイント

定期実行タスクのカスタマイズを作成する際に、関連する複数の処理を1つのカスタマイズにまとめてしまいがちなのですが、分割可能なのであれば、別のカスタマイズとして作成いただくことも検討してください。今回のカスタマイズは、そもそも実行するタイミングが異なるため別のカスタマイズとして作成すべきなのですが、それだけでなく、
『レコードがあれば更新、なければ追加』より、『最初にレコードを追加しておいて、その後のカスタマイズでは常に更新』とする方が、カスタマイズがシンプルになることが多いです。

また、『レコードを追加するカスタマイズ』と『レコードを更新するカスタマイズ』は、分割できるなら分割しておいて、時間をずらして実行するようにカスタマイズすることで、こちらもカスタマイズがシンプルになります。

カスタマイズがシンプルになって何がいいの?と思われるかもしれませんが、シンプルな方が絶対にいいです。

カスタマイズのミスを見つけやすいですし、想定外の動作をした時に原因が見つけやすくなります。

また、Job Runnerの処理は、条件「レコード1行が準備できた時」を複数組み合わせると、各アクションでどのレコードを扱っているか、どのような流れでアクションが実行されているのかといった情報の理解や制御が難しくなるため、そういった複雑な処理になることを避ける意味でも、できるだけシンプルになる方向で検討いただくのがおすすめです。

少し違いますが、複数のカスタマイズに分けていただく事をおすすめしている、別の理由を紹介している下記のサポートサイトのページもぜひご一読ください。
Job Runner のカスタマイズのページ分けについて

1つ目:1か月に1回月初に、3か月後の月の空席管理のレコードをまとめて作成

こちらは、やること「日付の範囲からレコードを追加する」を使用して、1日1レコードをまとめて作成します。

まず、空席管理アプリに接続します。
また、空席管理アプリには宿泊施設マスタアプリのルックアップが含まれるため、宿泊施設マスタアプリにも接続しておきます。

次に、3か月後の月初と、月末の日付を取得しておきます。
getdate 関数 を使用すると、『今月月初』など、定期実行タスクのジョブ(処理)が実行された日を起点として、引数として指定した日付を取得できます。

次に、宿泊施設マスタから、「予約可否」が「可」のレコードだけを取得します。
ここで宿泊施設マスタのレコードを取得し、次のアクションで条件「レコード1行が準備できた時」を指定すると、アクション18がアクション24で取得されたレコードの分だけ実行されます。

このような設定にすることで、宿泊施設ごとに1日1レコードを作成できます。

以上が1か月に1回実行するカスタマイズです。

スケジュールは、毎月1日に実行されるように設定しました。

2つ目:予約明細をもとに空席管理アプリを更新する

こちらは、空席管理アプリと予約明細アプリに接続します。

次に、空席管理アプリから「日付」フィールドの値が今日以降のレコードを取得します。
これは、空席管理アプリで処理対象にしたいレコードを取得するためのアクションですので、昨日以前の空席のカウントは不要なため、今日以降のレコードだけを取得します。

次に、空席管理で取得したレコードを1レコードずつ取り出し、そのレコード内の「日付」と「施設コード」フィールドの値を条件に、予約明細アプリからレコードを取得します。
そうすることで、施設ごと、日付ごとのレコードが取得できますので、そのレコードをカウントすれば、その日の予約数を取得できます。

なお、「予約明細」アプリは、予約期間が9月1日~9月3日の場合、

  • 9月1日のレコード
  • 9月2日のレコード

の2レコードが作成される仕様になっているため、単純にカウントすれば予約数がわかるようになっています。

ということで、あとはカウントして値をセットすれば集計は完了です!

こちらのカスタマイズは、1時間に1回実行したいので下記のようにスケジュール設定しておきます。
念のため、空席管理アプリにレコード追加を行う時間は除外しておきます。

実行確認

予約明細にレコードを追加して、空席管理の定期実行タスクを実行してみます。

9月11日と、12日のフリーサイトの受入化の数が減っていますので問題なさそうです。

以上で、エブリサイトで表示するための空席管理アプリは完成しました!

今回はここまでです

ここからエブリサイトで空席管理アプリの情報を表示するところに進むのですが、
今回は長くなってしまったのでここまでです!

エブリサイトでの表示用のアプリの作成と、既存のアプリの情報を表示用のアプリに自動的に反映するための定期実行タスクのカスタマイズ、いかがでしたでしょうか?

次回も楽しみにしていただけると嬉しいです~!

投稿者プロフィール

アバター画像
にら
gusukuのチャットサポートの中の人です。
kintone認定資格は5冠。
趣味はキャンプ、最近登山もはじめました。