
1. 背景と設計理念
背景
山ノ内町インフォメーションセンターは、湯田中駅前に位置する国際観光の拠点である。これまでJNTO(日本政府観光局)に提出する月次訪問者報告書は、手書き集計とExcel入力による紙ベース運用であった。その結果、以下のような構造的課題が存在した。
- 業務効率の低下:毎日の手書き集計と、約2,800セルに及ぶExcelへの転記作業による大きな負担。
- データ欠損:JNTO指定以外の国籍を記録できず、有用な情報が失われていた。
- 精度と即時性の欠如:手作業による集計ミスの発生、およびリアルタイム分析の不可能。
目的
本アプリケーションは、上記課題を抜本的に解決するために開発されたものである。単なる効率化にとどまらず、蓄積データを地域観光戦略の意思決定資源へと転換することを目的とする。
設計原則:「Never Make It More Cumbersome Than Paper」
本プロジェクトの根幹は「紙より煩雑であってはならない」という原則である。手書きより操作が遅ければデジタル化の意味を失う。そのため、フォーム設計は「入力・選択・送信」で完結する直感的な操作性を最優先とした。
さらに、JNTO報告書の形式(国名と人数)を完全に再現することを必須要件とし、アプリ全体の構造とロジックをこの形式準拠を基盤として設計した。
2. 技術構成とアーキテクチャ
技術構成:Google Apps Script + Google Sheets
センターでは既にGoogle Workspaceを利用しているため、Apps ScriptとSheetsを組み合わせる構成が最適解であった。この選択によりホスティング費用が不要となり、認証もWorkspaceの権限管理に統合。追加コストゼロで迅速な導入を実現した。
構造:3モジュールから成る疑似SPA構成
本アプリは疑似シングルページアプリケーション(SPA)として動作する。ページリロードを伴わず、クライアント側で3つの主要ビューを切り替える構造である。これにより軽快かつ連続的な操作感を実現した。
3. データ構造
課題:報告様式とデータ完全性の両立
従来の紙ベース運用では、JNTO指定国のみを記録対象としていたため、「不明」や「その他」といった曖昧な分類が多発していた。本アプリでは200以上の国・地域を網羅し、より正確なデータ分析基盤を整備した。
一方で、JNTOの厳密な報告形式(特定の国順・表記順)への準拠も求められる。両要件を同時に満たすため、以下のようなマスターデータ構造を採用した。
マスターデータ:「Countries」シート
国籍情報を一元管理するマスターであり、以下4列で構成される。
| Name | 国名。データ入力および集計の主キー。 |
| Region | 地域名。UI上でのグルーピングに使用。 |
| Is Frequent | TRUE/FALSE フラグ。JNTO報告上の主要国扱いを定義。 |
| Display Order | 月次サマリー出力時の並び順。報告書形式との整合を確保。 |
中核設計:二重ソートロジック
利便性と報告形式の両立を目的に、文脈に応じて異なるソート処理を採用。
- データ入力画面:地域内で国名をアルファベット順に並べ、検索性を重視。
- 月次集計画面:Display Orderの数値に基づく手動順序で整列し、公式報告書フォーマットと完全一致を実現。
この二重ソート構造こそ、本アプリ設計の核心である。日常業務における操作性と、公式報告における厳密性を両立させる設計思想。
4. 主な機能
データ入力と日次ログ
訪問者の国籍・人数・宿泊エリア・問い合わせ内容を入力する簡潔なフォームを提供。送信後、直下の「最近の入力」ログに即時反映。各レコードには「編集」「削除」ボタンを付与し、修正操作を容易化。
月次サマリー
従来、スタッフは最終的な月報作成のためだけに、毎日手作業で集計を行っていた。本アプリでは入力時刻を自動記録し、任意の年月を選択するだけで国籍別の合計を即時算出。冗長な日次集計を完全に排除した。
- 年月選択により、国籍別訪問者数を自動集計。
- JNTO報告用フォーマットに準拠した表示形式。
- 「Excel出力」ボタンでワンクリックダウンロード。
問い合わせ検索・ナレッジベース化
従来、訪問者対応ノウハウは個人依存の暗黙知であり、新任スタッフには共有されにくかった。本アプリでは問い合わせ内容を全文検索可能なログとして蓄積し、知識ベースとして活用可能とした。
- キーワード検索により過去事例を即座に参照。
- 類似質問への対応方法を可視化し、対応品質を均一化。
- 将来的なビッグデータ・AI分析の基礎資産となる。