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

公開日:2025-02-12

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

皆さんは2025年初キャンプはお済みでしょうか?

私の今年の初キャンプは、2月を予定しています。
よく行くキャンプ場は温暖な関西の平地ですが、とはいえ厳冬期のキャンプは正直凍えてしまうので、
最近はもっぱら焚火もせずにテント内にこもってぬくぬくキャンプを楽しんでいます。

おこもりキャンプ
幕内でのガス使用は自己責任。一酸化酸素チェッカーを使いつつ、しっかり換気して使ってます

今回は、前回に引き続き架空のキャンプ場「アールスリー架空野 キャンプフィールド」オープンの準備を行います。

なお、架空のキャンプ場ですのでこの世には存在しません。本当にキャンプ場を運営しているわけではなく、キャンプ場についての設定はすべてフィクションです!

そもそもkintoneを使う理由は?

kintoneを使い始めると、kintoneを使うべきではない用途でもkintoneを使いたくなってしまう、kintoneありきで考えてしまう…という現象がよく起きます。

本来、kintoneでアプリを作る目的は、何か課題があって、それを解決する必要があるから…のはずです。
そもそもどのような点が課題で、それを解決することでどのような効果があるのか。既存の業務の改善であれば、業務の流れや課題を分析してみた結果、もしかするとkintoneを使わない方がシンプルに解決できる場合もあるかもしれません。

今回作るキャンプ場については、当キャンプ場運営システムの目指す大きなテーマとして、

  • キャンプ場にいなくても管理できる
  • 変化に強いシステム

があります。
kintoneであれば、これらのテーマを叶えることができます。

🏕️キャンプ場にいなくても管理できる

前提として、私を含むキャンプ場の従業員はキャンプ場に住んでいるわけではなく、通いです。

当キャンプ場は当日予約を受け付けないため、予約がない日はメンテナンスや掃除などの用事がなければキャンプ場に行きません。
また、キャンプ場での業務がない日は自宅で別の作業をしたり、なんなら他のキャンプ場に泊まりに行ったり泊まり登山に行ったりしたい。
kintoneはネットワークに接続できればどこでも使え、PCだけでなくモバイルでも使用できるので仕事をする場所を限定しません。

また、プロセス管理などの機能を使用することで、同じ場所にいない複数のメンバーで一つの業務を分担して行う事にも向いている点も、kintoneを使う理由の一つです。

🏕️変化に強いシステム

当キャンプ場は、今後バンガローや貸切露天風呂の建設など、新しい施設やサービスをどんどん増やす予定です。そうなれば、予約システム一つとってもその都度変更が必要になることが予想されます。
そういった場合、kintoneであれば自分たちでアプリを改修でき、キャンプ場の変化に合わせたシステムに改善できるため、変化に強いシステムにできるはずです。

業務に必要と判断した時点で素早くアプリを作って運用し、どんどん変えていけるのがkintoneの良いところです。

ということで、当キャンプ場のシステムはkintoneで構築していきます!

予約管理システムの要件

まずはキャンプ場運営に必須の、予約管理システムを作っていきます。
方針として、kintoneサインポスト「基本機能から考える」にある通り、基本機能でできることは基本機能で行います。

基本機能でできないことはカスタマインなどを使って解決します。

🏕️キャンプ場予約の流れ

第1回でも紹介しましたが、キャンプ場の予約は、オープンからしばらくは下記のような流れで行う予定です。

  1. お客様にはGoogle フォームを使用して、予約したいサイトと日付、人数、連絡先のメールアドレスなどの情報を連絡してもらう
    ※予約が重複した場合は先着順
  2. 連絡を受けて空き状況を確認し、予約確定または予約できなかった事をメールで連絡する。予約は、この予約確定メールが届いた時点で確定となる
  3. キャンセルは、予約確定メールへの返信で受ける

kintoneアプリの作成

当キャンプ場のシステムでkintoneアプリを作成する際の基本的なルールとして、フィールドコードとフィールド名は原則同じに設定します。

Information

カスタマインなどの連携サービスを利用される場合やJavaScriptでカスタマイズされる際に、フィールドの識別はフィールド名ではなくフィールドコードで行うため、デフォルトの「文字列__1行_」のようなフィールドコードですと、カスタマインのカスタマイズ画面などを見た時に何のフィールドを使用しているのかわかりにくくなってしまいます。

フィールドコードとフィールド名を同じに設定するか、同じでなくてもわかりやすい名前をつけておくことで、カスタマイズの見通しが良くなります。

後でフィールドコードを変えるのはフィールド数が多いと大変ですので、もしご自身でアプリを作成される際も、今は基本機能しか使わなくても将来を見越してフィールドコードも設定いただくのをお勧めします。

では、具体的なアプリ作成に入ります。

営業日管理アプリ

キャンプ場の営業日と、シーズンを管理します。

Webサイトで公開する予約可能期間(毎月1日に3か月先までの予約を開放する)の情報元になるアプリです。
予約管理アプリで、非営業日や予約日がどのシーズンにあたるかを判断するためにも使用します。

宿泊費はハイシーズンが最も高く、ミドルシーズン、レギュラーシーズンの順に安くなります。
シーズンはマスタアプリで管理することも考えましたが、変更する可能性は低いためマスタ管理は行わずにラジオボタンで管理することにしました。

レコードの登録単位は、1日1レコードで登録します。

フィールド名フィールドコードフィールドタイプ説明
日付日付日付重複禁止に設定
シーズンシーズンラジオボタン項目は「レギュラーシーズン/ミドルシーズン/ハイシーズン」
初期値は「レギュラーシーズン」
営業日営業日ラジオボタン項目は「営業日/日営業日」
初期値は「営業日」
公開公開ラジオボタン項目は「非公開/公開」
初期値は「非公開」
※Webサイトで公開済みかどうかを管理する

宿泊施設マスタアプリ

キャンプサイトを管理します。

一泊の単価は一律に120%などで計算することも考えましたが、各サイトの特性などに合わせてそれぞれ指定することにしました。

施設コードについてはカスタマインで自動採番した値をセットすることにしています。
施設コードは、ルックアップなどで他のアプリと連携する際に使用します。

フィールド名フィールドコードフィールドタイプ説明
施設コード施設コード文字列(1行)重複禁止に設定
※値はカスタマインの自動採番で設定する
施設名施設名文字列(1行)
施設の説明施設の説明文字列(複数行)
定員定員数値
受け入れ可能数受け入れ可能数数値※ほとんどの施設は1施設1組のところ、フリーサイトは複数組受け入れ可能なため設定
一泊の単価(レギュラーシーズン)一泊の単価_レギュラーシーズン数値
一泊の単価(ミドルシーズン)一泊の単価_ミドルシーズン数値
一泊の単価(ハイシーズン)一泊の単価_ハイシーズン数値
AC電源AC電源ラジオボタン項目は「あり/なし」
初期値は「あり」
車両乗り入れ車両乗り入れラジオボタン項目は「可/不可」
初期値は「可」
ペットペットラジオボタン項目は「可/不可」
初期値は「不可」
予約可否予約可否ラジオボタン項目は「可/不可」
※施設のメンテナンスなどで使用不可になった場合に使用

予約管理アプリ

予約を管理します。

予約コードは、重複しない値をカスタマインで設定し、後述の予約明細アプリとの紐づけに使用します。

利用日によってレギュラーシーズン、ミドルシーズン、ハイシーズンが決まるため、連泊を見越して1泊につき1レコードを予約明細アプリに登録し、こちらの予約管理アプリに関連レコード一覧として表示します。

宿泊日数や宿泊費合計(税込)などの計算はkintoneの基本機能で可能ですので設定していますが、宿泊費合計については関連レコード一覧で表示した予約明細アプリの合計になるため、カスタマインによるカスタマイズで行います。

施設情報については、ルックアップで宿泊施設マスタアプリから取得します。

nformation

ルックアップは便利な機能ですが、業務の要件によっては使いづらい場合があります。

たとえば、

  • ルックアップの参照するアプリで変更があってもルックアップフィールド側では自動的に値の再取得が行われないため、更新後の値を使用したければ編集画面で「取得」を押す必要がある
  • 「他のフィールドのコピー」に指定されているフィールドの値は変更することができないため、”通常は取得した値で問題ないが、時々別の値を入力したい”といった使い方ができない

などがあります。
そのため、もし上記のような使い方がしたい場合は、ルックアップは使用しない、またはカスタマイズによって足りない機能をカバーする、といった対応が必要になります。

なお、今回のアプリでは上記の要件に該当しないため、ルックアップを使用しています。

お客様情報は下記のようなフィールド構成です。

フィールドが多いので、ルックアップの「他のフィールドのコピー」用のフィールドは省略します。

フィールド名フィールドコードフィールドタイプ説明
予約コード予約コード文字列(1行)重複禁止に設定
※値はカスタマインの自動採番で設定する
チェックイン日付チェックイン日付日付
チェックアウト日付チェックアウト日付日付
宿泊日数宿泊日数計算(チェックアウト日付-チェックイン日付)/(246060)
宿泊費合計宿泊費合計数値※関連レコード一覧の集計はkintone基本機能ではできないため、カスタマインで集計してセットする
宿泊費合計(税込)宿泊費合計_税込計算ROUND(宿泊費合計*1.1)
予約明細一覧予約明細一覧関連レコード一覧予約明細アプリのレコードから予約コードが一致するもの
利用人数(中学生以上)利用人数_中学生以上数値
利用人数(3歳~小学生以下)利用人数_3歳_小学生以下数値
ペットの利用数ペットの利用数数値
利用人数合計利用人数合計計算利用人数中学生以上+利用人数3歳_小学生以下+ペットの利用数
施設コード施設コードルックアップ※宿泊施設マスタアプリから施設コードが一致するレコードの値を取得する
氏名氏名文字列(1行)
電話番号電話番号文字列(1行)
メールアドレスメールアドレス文字列(1行)
郵便番号郵便番号文字列(1行)
住所住所文字列(1行)

ざっくりとですがプロセス管理も設定しました。こちらは運用しながら調整する予定です。
来場やキャンセルはステータスで管理します。

予約明細アプリ

予約管理アプリのレコード1に対して、多の関係になるアプリです。

連泊を想定し、1日につき1レコードを作成します。たとえばチェックイン日付が2月1日、チェックアウト日付が2月3日であれば2泊ですので、2月1日のレコード、2月2日のレコードを作成します。

それぞれ、施設とシーズンによって単価が変わるため、「一泊の単価」に該当する金額をセットします。
予約日付(1日単位)を指定すれば営業日管理アプリからシーズンを取得したい場合、kintoneのルックアップでは日付フィールドは「コピー元のフィールド」に指定できないため、カスタマイズで取得します。

金額のセットやこのアプリのレコード作成についてもカスタマイズで行う予定です。

フィールドの構成は下記のようになっています。
基本的にカスタマイズでレコードを自動生成する予定のアプリですので、最小限の情報をフィールドとして持っています。

フィールド名フィールドコードフィールドタイプ説明
予約コード予約コードルックアップ予約アプリに存在する予約コードを指定する
予約明細No予約明細No文字列(1行)※カスタマインで予約コードごとの値を自動採番する
施設コード施設コードルックアップ宿泊施設マスタアプリから施設コードを取得する
予約日付(1日単位)予約日付_1日単位日付※1日ごとに1レコード
シーズンシーズンドロップダウンで項目は「レギュラーシーズン/ミドルシーズン/ハイシーズン」
初期値は「レギュラーシーズン」
※予約日付(1日単位)をもとに営業日管理アプリからシーズンを取得してセットする
一泊の単価一泊の単価数値※施設コードとシーズンをもとに、一泊の単価を取得してセットする
予約コードが同じレコード予約コードが同じレコード関連レコード一覧※予約明細アプリの予約コードが同じレコードを表示する
削除削除チェックボックス項目は「削除」
※予約が変更になった場合などの論理削除用

まとめ

以上が、予約管理システムのアプリたちでした。

次回は、これらのアプリにカスタマインでカスタマイズを設定し、予約明細アプリへの自動レコード追加や、メール送信まで基本的な予約システムを完成させる予定です!

想定通り、どこにいても予約管理できるシステムを構築できるのか…!?
次回も楽しみにしていただけると嬉しいです。

投稿者プロフィール

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