Media > AI活用ユースケース > 品質管理 > 客室清掃の仕上がりを点検写真で確かめて、やり直しが要る部屋を拾う

客室清掃の仕上がりを点検写真で確かめて、やり直しが要る部屋を拾う

実装ステータス:構成例 技術的に実現可能な構成として設計したもの。自社未検証

清掃スタッフが清掃後の客室を決まった画角で撮った写真を、客室タイプごとの点検基準に照らし、項目ごとに「基準どおり」「やり直し候補」「写真では判断できない」を付けます。インスペクターは全室を回らず、候補の部屋と抜き取りの部屋だけを見に行きます。

サマリー
生成AI
ChatGPT/Claude/Gemini
連携・自動化
Google Apps Script/Make/Power Automate
対象業界
宿泊
対象部門
品質管理/総務
対象業務
内容確認・チェック/分類・仕分け
主な課題
人手が足りない/属人化している/確認ミスが多い
AIで行う処理
画像認識
主な効果
品質標準化/属人化解消/工数削減
導入難易度
★★★☆☆
実装レベル
本格構成
費用感
API連携(中)
人間の確認
条件付き
現在工数
150h/月
AI導入後
50h/月
想定削減
67%
年間削減
1,200h
モデル条件による試算値です。実在企業の実績ではありません。

01導入前 / 導入後の業務フロー

導入前(Before)
  1. 清掃スタッフが清掃を終え、内線か口頭で「〇〇号室、終わりました」とインスペクターに伝える
  2. インスペクターがその部屋へ移動し、鍵を開けて入室する
  3. 紙の点検表を持って、ベッドメイク、水回り、アメニティの配置、ゴミ箱、床、備品を順に見る
  4. 基準に合わないところがあれば、清掃スタッフを呼び戻してやり直しを頼む
  5. 点検表にチェックを付け、フロントに「販売可」を伝える
  6. 次の部屋へ移動する。チェックイン時刻が近づくと、回る順番をその場で組み替える
導入後(After)
  1. 人清掃スタッフが会社支給の端末で Google フォームを開き、部屋番号を選び、6つの画角の写真と、現地で見る項目のセルフチェックを送信する
  2. 自動フォームの送信をきっかけに Google Apps Script が動き、写真の形式とサイズを確かめる
  3. 自動Gemini API が写真ごとに、画角・明るさ・ぶれ・人や私物の写り込みを見る
  4. 自動撮り直しが要る写真があれば、その画角を「撮り直し」と書いて止める
  5. 自動点検基準の表から、その客室タイプの「写真で見る項目」だけを取り出す
  6. 自動Gemini API が項目ごとに `ok` / `redo_candidate` / `cannot_judge` を付け、根拠と写真上の位置を返す
  7. 自動項目ごとの結果から、部屋の区分(`redo` / `inspect` / `pass`)をスクリプトの規則で決め、`pass` の部屋から抜き取りの部屋を選ぶ
  8. 人インスペクターが `redo` と `inspect`、抜き取りの部屋だけを回り、写真で見られない項目もあわせて見る
  9. 人やり直しが要ると確かめた部屋は、清掃スタッフに戻す。確かめた結果を一覧に記録する
  10. 人残りの `pass` の部屋は、写真を流し見て販売可にする
各工程の詳しい説明を読む
  1. 清掃スタッフが清掃を終え、内線か口頭で「〇〇号室、終わりました」とインスペクターに伝える
  2. インスペクターがその部屋へ移動し、鍵を開けて入室する
  3. 紙の点検表を持って、ベッドメイク、水回り、アメニティの配置、ゴミ箱、床、備品を順に見る
  4. 基準に合わないところがあれば、清掃スタッフを呼び戻してやり直しを頼む
  5. 点検表にチェックを付け、フロントに「販売可」を伝える
  6. 次の部屋へ移動する。チェックイン時刻が近づくと、回る順番をその場で組み替える

(a)全室を回る時間が無い。 同じ時間帯に部屋が次々と仕上がり、点検の時間のかなりの部分が廊下とエレベーターの移動です。 チェックイン時刻が迫ると、「この人の部屋なら大丈夫」と見ずに販売可にする部屋が出てきます。

(b)点検の基準が人によって違う。 枕の向き、タオルの折り方、アメニティの並べ方の許容範囲が、インスペクターごとに少しずつ違います。清掃スタッフから見ると、誰が点検するかでやり直しになるかが変わります。 新しく入ったインスペクターが一人前になるまでに時間がかかる理由も、ここにあります。

(c)急ぐほど見落とす。 見落としやすいのは、決まって「いつもそこにあるはずのもの」です。 補充し忘れたアメニティ、角が浮いたベッドスロー、空にし忘れたゴミ箱。形が決まっているものほど目が素通りします。

(d)何をやり直したかが残らない。 点検表にはチェックが付くだけで、どの項目で失敗が多いのかが分からず、清掃の手順を直す材料が集まりません。

  1. 【人】 清掃スタッフが会社支給の端末で Google フォームを開き、部屋番号を選び、6つの画角の写真と、現地で見る項目のセルフチェックを送信する
  2. 【自動】 フォームの送信をきっかけに Google Apps Script が動き、写真の形式とサイズを確かめる
  3. 【自動】 Gemini API が写真ごとに、画角・明るさ・ぶれ・人や私物の写り込みを見る
  4. 【自動】 撮り直しが要る写真があれば、その画角を「撮り直し」と書いて止める
  5. 【自動】 点検基準の表から、その客室タイプの「写真で見る項目」だけを取り出す
  6. 【自動】 Gemini API が項目ごとに ok / redo_candidate / cannot_judge を付け、根拠と写真上の位置を返す
  7. 【自動】 項目ごとの結果から、部屋の区分(redo / inspect / pass)をスクリプトの規則で決め、pass の部屋から抜き取りの部屋を選ぶ
  8. 【人】 インスペクターが redo と inspect、抜き取りの部屋だけを回り、写真で見られない項目もあわせて見る
  9. 【人】 やり直しが要ると確かめた部屋は、清掃スタッフに戻す。確かめた結果を一覧に記録する
  10. 【人】 残りの pass の部屋は、写真を流し見て販売可にする

8番目が、この設計の分かれ目です。 基準どおりと出た部屋は流し見て終わりにし、候補と抜き取りの部屋にだけ足を運びます。 全室を回ったまま写真も見ると、仕事が増えるだけです。

7番目を規則で決めているのも意図してのことです。 AIには項目ごとの事実を記録させ、回るかどうかはスクリプトが決めます。 抜き取りの割合は、運用しながら変わるからです。

02今回想定するシステム構成

構成図
清掃スタッフの端末(会社支給・Google アカウントでログイン)
   │  部屋番号を選び、6つの画角で撮影して送信
   ▼【トリガー】Google フォームの送信
Google Apps Script
   ├──▶ 写真の形式・サイズの確認(Google ドライブの保存先から取得)
   ▼
Gemini API ── ①写真の確認(画角/明るさ/ぶれ/人や私物の写り込み)
   │
   ├── 撮り直しが要る ──▶ 判定一覧に「撮り直し」と書いて止める
   ▼
Google Apps Script ── 点検基準の表から「写真で見る項目」だけを取り出す
   ▼
Gemini API ── ②点検項目ごとの判定(見本の写真と比べる)
   │   ok / redo_candidate / cannot_judge + 根拠と位置
   ▼
Google Apps Script ── 部屋の区分を規則で決める(redo / inspect / pass)
   │                  pass から抜き取りの部屋を選ぶ
   ▼
判定一覧(Google スプレッドシート)
   ▼
【インスペクターが候補と抜き取りの部屋だけ回る】
   └──▶ 現地で写真では見られない項目(におい・髪の毛・備品の動作)を見る
役割想定する製品代替候補
処理Gemini API(写真の確認と点検項目ごとの判定)Claude API、OpenAI API
連携Google フォーム(部屋番号の選択と、画角ごとの写真の受け取り)Microsoft Forms、自社で用意する撮影用の画面
連携Google Apps Script(写真の取得、判定の呼び出し、一覧への書き込み)Power Automate、Make
連携Google スプレッドシート(点検基準の表と判定一覧)Microsoft Excel(オンライン)
保管Google ドライブ(受け取った写真と見本の写真)Microsoft OneDrive、SharePoint

予約・客室管理システムには書き込みません。 出すのは見に行くべき部屋の一覧までで、販売可への切り替えは人が行います。

Google フォームを使うのは、画角ごとに質問を分けられるからです。 「ファイルのアップロード」の質問を画角の数だけ並べれば、写真と画角の対応を選ばせずに済みます。ファイルはフォームのオーナーの Google ドライブの新しいフォルダに保存され、回答者は Google アカウントへのログインが必要です。 質問ごとに、ファイルの形式・数・サイズの上限を決められます。

判定の土台は Gemini API の画像理解です。 対応形式に HEIC と HEIF が含まれ、スマートフォンの写真を変換せずに渡せます。 1回のリクエストの画像ファイルは最大3,600件です。

気を付けるのは大きさです。 画像を直接入れる場合、指示と画像を合わせたリクエスト全体が20MBに制限され、写真6枚と見本で上限に近づきます。 大きいファイルや繰り返し使う画像には Files API が案内されており、見本の写真はそこに置いて使い回します。

写真上の位置はバウンディングボックスで返せます。 座標は0から1000に正規化され、元の画像の大きさに戻して使います。候補の箇所に枠を付けて一覧に出します。

03どうやって実装するのか

Step1

処理の起点を決める

Google フォームの送信を起点にします。 Apps Script のインストール型トリガーには、Google フォームとスプレッドシートの両方で使えるフォーム送信のトリガーがあります。1部屋分の写真が送られた時点で、その部屋だけを判定します。 まとめて処理すると、チェックイン時刻に間に合いません。

インストール型トリガーは、作成した人のアカウントで動きます。 個人のアカウントで作ると、異動したときに止まります。フォームもスクリプトも業務用アカウントで作ります。

取りこぼしを拾うため、時間主導型のトリガーも置きます。 毎分から月1回までの間隔で動かせますが、時刻は少しずらされることがあり、午前9時の繰り返しなら9時から10時の間のどこかで動くとされています。未完了の部屋の再処理だけに使い、正規の経路はフォーム送信にします。

Step2

入力データを集める

データ中身取得元
客室の写真6つの画角の写真(画角は質問で区別)Google フォーム → ドライブ
送信の情報部屋番号、スタッフの ID、送信時刻、セルフチェックフォームの回答
点検基準の表客室タイプごとの項目、画角、基準文、写真で見るか現地で見るかスプレッドシート
見本の写真客室タイプ・画角ごとの基準どおりの写真Files API に置く
客室の情報部屋番号と客室タイプの対応客室管理システムから書き出したシート

質を決めるのは点検基準の表です。 項目名だけだと、AIはやり直しの境目を自分で決めてしまいます。「ベッドスローはベッドの中央にあり、左右の垂れが同じ長さ」のように、写真で判断できる文にします。

画角は客室タイプに関係なく、① 入口からの全景 ② 枕元とナイトテーブル ③ 洗面台とアメニティ ④ 浴室 ⑤ トイレ ⑥ デスク周りとゴミ箱の6つに固定します。

表には項目ごとに「判定の方法」の列を持たせます。 値は photo(写真で見る)と on_site(現地で見る)の2つです。

判定の方法項目の例扱い
photoベッドメイクの形、枕の数と位置、タオルの数と置き場所、アメニティの並び、ゴミ箱が空か、鏡に目立つ水はねがないかAIに渡して判定させる
on_siteにおい、髪の毛や細かなほこり、シーツの小さなしみ、テレビ・空調・給湯が動くか、排水AIに渡さない。 入室した部屋で見る

on_site の項目はプロンプトにも入れません。 渡すと、写っていないものにも何か答えようとします。渡さないことが、判定させないいちばん確かな方法です。

Step3

データの取得方法を決める

スクリプトは送信のたびに、6つの質問の回答からドライブ上のファイルを特定して読み込みます。

取るものどこから何に使うか
画角ごとの写真フォームの各質問 → ドライブ写真の確認と点検の判定
部屋番号と送信時刻フォームの回答客室タイプを引き、判定一覧の行を作る
点検項目(photo だけ)点検基準の表判定させる項目の一覧
見本の写真Files API に置いたもの画角ごとの比較の基準

部屋番号は自由入力にせず、プルダウンで選ばせます。 打ち間違えると、別の部屋の写真で別の部屋を販売可にすることになります。 その日のチェックアウト予定の部屋だけを選択肢に出せれば、さらに減ります。

点検基準の表は判定のたびに読みます。

Step4

AIへ渡す前に整形する

  1. 形式の確認 … PNG、JPEG、WEBP、HEIC、HEIF のどれかか。フォームの質問でも形式を画像に絞ります
  2. 枚数の確認 … 6つの画角がそろっているか。欠けた画角は「撮り直し」で返します
  3. 大きさの確認 … 合計が20MBを超えそうなら、写真を Files API に置いて参照します
  4. 向きの確認 … 公式のベストプラクティスに画像が正しく回転しているかを確かめることが挙がっています。端末の向きを画角ごとに手順書で決めます
  5. 解像度の扱い … 縦横とも384ピクセル以下なら258トークン、それより大きい画像は縦横768ピクセルのタイルに分けられ1タイルごとに258トークンです。カメラの解像度を下げるか、media_resolution で1枚あたりのトークンの上限を決めます
  6. 重複の確認 … 同じ部屋の送信が2回あれば、後の送信だけを判定し、前の送信は記録に残します

5番目は、解像度を上げても費用が膨らむだけのことがあります。 見たいのは「タオルが2枚あるか」の水準で、細部は現地で見る項目に回してあります。

Step5

AIに処理させる

Gemini API は2回呼びます。1回目は写真の確認、2回目は点検の判定です。 1回にまとめると、暗い写真に「ゴミ箱は空」と答えつつ「暗い」とも書く結果が返ります。

1回目(写真の確認)で見るもの

見るもの値返したときの扱い
画角が決まったものかmatch / mismatchmismatch は撮り直し
明るさok / too_dark / too_bright撮り直し
ぶれ・ピントok / blurry撮り直し
写すべき範囲が入っているかok / partial撮り直し
人・私物・書類の写り込みnone / person / belongings / document判定を止めて人へ

いちばん下の行は別扱いです。 人が写れば削除して撮り直し、私物は忘れ物かもしれないので忘れ物の手順に回します。

2回目(点検の判定)で見るもの

させるのは、photo の項目それぞれについて、見本の写真と比べて基準どおりかを判定し、根拠を書くことだけです。

値意味インスペクターの扱い
ok写真から基準どおりと判断できる一覧で流し見る
redo_candidate写真から基準と違うと判断できる現地で確かめ、やり直しを頼む
cannot_judge写っていない、または判断できない。迷ったら ok にせずこちら現地で確かめる
させないこと理由
on_site の項目の判定写真に写らない。渡してもいない
部屋として販売可にするかの判断規則とインスペクターが決める
清掃スタッフの出来の評価1部屋の写真では人の評価にならない。第13章
基準に無い「気づいた点」の指摘やり直しの判断がまた人によって割れる
写っていない部分の推測画角の外は cannot_judge

4行目を許すと、第3章の(b)に戻ります。 気になる点は表に項目として足します。

Step6

指示内容を固定する

1回目(写真の確認)

あなたはホテルの客室点検の担当として、清掃後の客室写真が点検に使えるかを確かめます。
点検はまだ行いません。ベッドやアメニティが基準どおりかは判断しないでください。

【この写真の画角】{angle_name}({angle_description})
【この画角の見本の写真】(この後に添付)
【確認する写真】(この後に添付)

【確かめること】
1. 見本と同じ画角か(match / mismatch)
2. 明るさ(ok / too_dark / too_bright)
3. ぶれ・ピント(ok / blurry)
4. 写すべき範囲が入っているか(ok / partial)
5. 人・私物・書類が写っていないか(none / person / belongings / document)

【厳守事項】
- 迷ったときは ok や match を選ばないでください。撮り直しのほうが安全です。
- 客室の備品(タオル、アメニティ、リモコン、案内の冊子など)は私物ではありません。
  それ以外の、かばん・衣類・スマートフォン・飲みかけの容器などは belongings です。
- 鏡や窓に人が映っている場合も person です。
- 写り込んだ書類の文字や画面の表示を読み取って書かないでください。
- reason には、撮り直しの理由を清掃スタッフが分かる短い日本語で書いてください。

2回目(点検の判定)

あなたはホテルの客室点検の担当です。清掃後の客室写真を、見本の写真と点検基準に照らして、
項目ごとに判定してください。写真に写っているものだけを根拠にしてください。

【客室タイプ】{room_type}
【点検項目】(item_id、画角、基準文の一覧)
{photo_items}
【写真】画角ごとに「画角名 → 見本の写真 → 確認する写真」の順で添付します。

【status の選び方】
- ok ............... 写真から基準どおりと判断できる
- redo_candidate ... 写真から基準と違うと判断できる
- cannot_judge ..... 項目が写っていない、隠れている、小さすぎて判断できない
迷ったときに ok を選ばないでください。

【厳守事項】
- 一覧にある点検項目だけを判定してください。一覧に無いことを指摘しないでください。
- 写真の外や、物の陰になっている部分を推測しないでください。cannot_judge です。
- 髪の毛、細かなほこり、小さなしみ、におい、備品が動くかは判定しないでください。
  一覧に入っていても、これらに当たる場合は cannot_judge にしてください。
- 数を数える項目(タオル、枕、アメニティ)は、数えた数を count に書いてください。
  重なっていて数えられないときは cannot_judge です。
- redo_candidate のときは、基準と何がどう違うかを evidence に具体的に書き、
  その箇所の位置を box_2d に入れてください。
- ok のときも、何を見て判断したかを evidence に短く書いてください。
- 清掃した人の丁寧さや手際について書かないでください。
- 部屋を販売してよいかは書かないでください。

「迷ったときに ok を選ばない」を両方に書くのは、何も言わなければ誤りの見えない写真に ok が付くからです。

「一覧に入っていても、微細なものは cannot_judge」と重ねるのは、表の作り間違いに備えるためです。 「洗面台に髪の毛が無い」のような項目が photo に紛れ込んでも、「無い」と答えさせない二重の止めです。

Step7

出力形式を固定する

Gemini API の構造化出力で、JSONを受け取ります。 出力形式にJSONを指定してスキーマを渡し、enum と required で status を3つの値に固定します。

1回目の出力

{
  "angle": "A3_washbasin",
  "angle_match": "match | mismatch",
  "brightness": "ok | too_dark | too_bright",
  "sharpness": "ok | blurry",
  "coverage": "ok | partial",
  "intrusion": "none | person | belongings | document",
  "reason": ""
}

2回目の出力

{
  "room_no": "",
  "room_type": "",
  "checks": [
    { "item_id": "BED-03", "angle": "A1_overview",
      "status": "ok | redo_candidate | cannot_judge",
      "count": null, "evidence": "", "box_2d": [0, 0, 0, 0] }
  ]
}

checks にはその客室タイプの photo の項目を並べます。box_2d は redo_candidate のときだけ入れます。

この形にする1つ目の理由は、AIの判定と部屋の区分を別の層に置けることです。 区分はスクリプトが規則で決めます。

部屋の区分決め方
redoredo_candidate が1つでもある
inspectredo_candidate は無いが、cannot_judge が1つでもある。または判定が完了しなかった
passすべての項目が ok
抜き取りpass から一定の割合を無作為に選んで回る

抜き取りは、pass が本当に基準どおりかを確かめ続けるために置きます。 抜き取った部屋でやり直しになった件数が、見落としの目安です。

2つ目は、値をスクリプトで確かめることです。 公式にも、出力は構文上正しいJSONになるが、値はアプリケーションの側で検証するよう書かれています。item_id の抜けや重複があれば、部屋ごと inspect にします。

3つ目は、evidence と box_2d で、入室前に何をどこで見るかが分かることです。

Step8

システムへ連携する

つなぎ先方式内容
Google フォームApps Script のフォーム送信トリガー送信を受けて処理を始める
Google ドライブApps Script から読み込み画角ごとの写真と見本の写真を取る
Gemini APIApps Script から API 呼び出し写真の確認と点検の判定
点検基準の表スプレッドシートの読み取り客室タイプごとの photo の項目と基準文
判定一覧スプレッドシートへの書き込み部屋ごとの区分、項目ごとの結果、撮り直しの画角

判定一覧はフロア別・区分別に並べ、 回る部屋を上に出します。同じフロアをまとめて回れば移動が減ります。

撮り直しの画角は、清掃スタッフが端末で見る別のシートに書き出します。 判定一覧そのものは見せません。

Step9

人が確認する

インスペクターが回るのは redo、inspect、抜き取りの部屋だけです。 全室を回ると、第10章の50.0時間には収まりません。

  1. redo を先に回る … 枠の付いた写真を見てから入室し、やり直しが要るかは現地で決めます
  2. inspect と抜き取りを回る … 写真で判断できなかった項目を見ます
  3. 入室した部屋では、on_site の項目も見る … におい、髪の毛、備品の動作です
  4. 確かめた結果を記録する … AIの判定と違った項目と、その向きを残します
  5. pass の部屋を販売可にする … 写真を流し見て、違和感があれば回る部屋に足します

3番目を忘れないでください。 回らなかった部屋の on_site の項目は、清掃スタッフがフォームのチェック欄で自分で確かめた扱いになります。 以前より弱くなる部分で、抜き取りで補います。

Step10

例外に対処する

起きること対応
画角が欠けている、撮り直しが要るその画角だけを撮り直しのシートに書く。部屋は判定しない
人・私物・書類が写っている判定を止める。人の写った写真は削除して撮り直し。私物は忘れ物の手順に回し、部屋は inspect
リクエストが20MBを超えるFiles API に写真を置いてから参照する
対応していない形式のファイルフォームの質問で形式を絞る。すり抜けたものは撮り直し
Gemini API が応答しない、JSONが崩れる時間主導型のトリガーで再処理。チェックイン時刻が近ければ inspect にして回る
item_id が一覧と合わない部屋ごと inspect
フォームを共有ドライブに置いたファイルのアップロードの質問が使えない。共有ドライブの外で作る
管理者がデータ損失防止を有効にしている同じく使えない。情報システムの担当と事前に確かめる

5行目が安全装置です。 判定が出ないことを pass と扱うと、止まっているあいだの部屋がすべて見ずに販売されます。

Step11

記録を残す

  • 受け取った写真と、送信した時刻・部屋番号・スタッフの ID
  • 1回目と2回目に Gemini API へ渡した指示と、返ってきたJSONの全文
  • そのとき参照した点検基準の表の版 … 項目や基準文を変えた日付が分かるように
  • 部屋の区分と、抜き取りに当たったかどうか
  • インスペクターが確かめた結果 … AIの判定と違った項目と、その向き
  • 撮り直しになった画角と理由の件数(画角別・客室タイプ別)

3つ目で基準の版を残すのは、 判定が良くなったのか基準が緩くなったのかを見分けるためです。

5つ目は表を直す材料になります。 同じ項目で候補を覆す件数が多ければ、基準文か見本の写真に問題があります。

04実装レベルの3段階

最小構成:写真を手でAIの画面に貼り、項目ごとに判定させる / 1部屋ごとの判定
半自動化:上記+Google フォームで写真を受け取り、Apps Script から Gemini API を呼んで判定一覧に書く / 写真の受け取りと判定の一覧化
本格構成:上記+写真の確認を先に行って撮り直しを返し、部屋の区分と抜き取りを規則で決め、回る順に並べる / 回る部屋の選定まで

最小構成では部屋数がさばけません。 1部屋ずつ貼り付けるので、月3,000室には使えません。確かめるための段階です。 半自動化の段階では、インスペクターはまだ全室を回ります。 判定一覧と現地の結果を1か月並べ、ok と出た部屋で現地がやり直しにした件数を数えます。この件数が十分に少ないと確かめられてから、回る部屋を絞ります。 本格構成で1部屋1分になり、この段階が本記事の想定です。 段階を飛ばさないでください。 いきなり回る部屋を絞ると、判定の見落としと撮影の失敗の区別がつかないまま、「写真では基準どおりだったのに」という苦情が先に来ます。

05工数削減シミュレーション

前提値(モデル条件)
対象人数
5 名
月間件数
3,000 件
1件あたり現在時間
3 分
1件あたり導入後時間
1 分
現在  3,000件 × 3分 ÷ 60 = 150 時間/月
導入後 3,000件 × 1分 ÷ 60 = 50 時間/月
月間削減時間
100h
削減率
67%
年間削減時間
1,200h
年間金額換算(時間単価2,500円)
300万円
モデル条件による試算であり、実際の効果は業務内容・運用方法によって異なります。

自社条件で導入効果を整理したい方へ

このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。

AI活用について相談する

06向いている企業・向いていない企業

向いている
  1. 客室数が100室を超え、チェックアウト後の清掃が毎日まとまって発生するホテル。インスペクター(客室点検係)が全室を回っていて、チェックイン時刻までに点検が終わらない日がある場合。点検の基準がベテランの頭の中にあり、人によってやり直しの判断が分かれる場合。清掃スタッフに会社支給のスマートフォンやタブレットを持たせられる場合。
向いていない
  1. 客室数が数十室で、インスペクター1人が全室を無理なく回れている場合。客室ごとに内装や備品の置き方がまったく違い、決まった画角と基準を作れない場合。清掃スタッフに端末を持たせられず、撮影の手順を組み込めない場合。なお、におい・髪の毛のような微細な汚れ・備品の動作は写真で確かめられないため、この構成では判定しません。

07最小構成で試す方法

  1. 客室タイプを1つ選び、6つの画角の見本の写真を撮る
  2. そのタイプの点検項目のうち、写真で見られるものを10項目ほど選び、基準を文にする
  3. 1週間、清掃後の部屋を20〜30室分、清掃スタッフに6つの画角で撮ってもらう(わざと基準から外した部屋を数室入れる)
  4. インスペクターはいつもどおり全室を回り、紙の点検表に結果を書く
  5. 写真と見本と基準の文を、手元のAIサービスの画面に部屋ごとに貼り付け、「項目ごとに、基準どおり/やり直し候補/写真では判断できない、を付けてください。写っていないものは判断できないとしてください」と指示する
  6. 出てきた判定を、インスペクターの点検結果と突き合わせる

4番目で全室を回り続けるのが大事です。 比べる相手が無ければ、AIの判定が合っているかを確かめられません。

出てきた内容判断
インスペクターがやり直しにした項目が候補に出たフォームとスクリプトの連携に進む
写っていないものを基準どおりとした指示の書き方で直る。構成は有効
写真が暗い・画角がずれていて判定にならない撮影の手順書が先。 AIの問題ではない

3行目は、ほぼ必ず出ます。 客室の照明は撮影向きの明るさではありません。照明をすべて点ける、カーテンを開けるといった手順を決め直すと、判定が大きく変わります。

08実装時につまずきやすいポイント

問題対策
写っていないものが ok になる迷ったら ok を選ばないと指示し、写っていない項目は cannot_judge
暗い写真のまま判定される写真の確認と判定を2回に分ける。 撮り直しは判定に進めない
髪の毛やにおいを判定しようとする点検基準の表で on_site に分け、プロンプトに渡さない
基準に無いことを指摘し始める一覧に無いことを書かせない。気になる点は表に項目として足す
横倒しの写真で見本と合わない端末の持ち方を画角ごとに手順書に書く
リクエストが大きすぎて失敗する合計20MBの制限。見本の写真と大きい写真は Files API に置く
部屋番号を打ち間違えるプルダウンで選ばせる。その日の対象の部屋だけを出す
フォームにファイルの質問が作れない共有ドライブに置いていないか、データ損失防止が有効でないかを確かめる
判定が止まった部屋が見ずに販売される判定が無い部屋は inspect。回る側に倒す
抜き取りを減らしすぎる見落としに気づけなくなる。抜き取りの結果を毎週数える
点検基準の表をスクリプトに書き込む備品を変えたときに直せない。表を毎回読む

上の3行が、失敗のほとんどです。 どれも「写っていないものを、写っているかのように答える」ところから出ています。判断できないという答えを選びやすくしておくかで、運用に乗るかが決まります。

下から2行目も早く効いてきます。 順調に見え始めると抜き取りを減らしたくなりますが、判定を信じてよいかを確かめる手段はそれしかありません。

09セキュリティ・AIガバナンス上の注意点

この構成で扱うデータ: 清掃後の客室の写真、部屋番号、清掃した時刻、送信したスタッフの ID です。宿泊客の情報は扱わない前提です。

  1. 撮るのは、チェックアウト後に清掃した空室だけにする … 連泊中の部屋は撮りません。この前提が崩れると、客室の写真が宿泊客の私生活の記録になります。 手順書の最初に書き、フォームの選択肢にもチェックアウト後の部屋だけを出します
  2. 人や私物が写った写真は判定に使わない … 1回目の確認で person が出た写真は削除して撮り直します。鏡に映った清掃スタッフも同じ扱いです。belongings は忘れ物の可能性があるため、判定を止めて忘れ物の手順に回し、写真は忘れ物の記録に必要な範囲だけで扱います
  3. 写り込んだ書類や画面の中身を読ませない … 残されたメモや書類には個人の情報があり得ます。指示で読み取りを禁じ、写っていれば撮り直しにします
  4. AIの判定だけで清掃スタッフを評価しない … redo_candidate は写真から見た候補で、インスペクターが現地で確かめる前の段階です。 撮影の角度や照明で出ることもあります。スタッフ別の件数を評価や指導に使うなら、インスペクターが確かめた結果だけを使い、AIの判定の件数は使いません。 撮影と送信のスタッフ ID は、撮り直しとやり直しを本人に戻すためだけに持ちます
  5. 写真の保存期間と閲覧できる人を決める … 閲覧は客室管理の担当に限り、期間を過ぎた写真は消します
  6. 外部の API に渡す前提を確かめておく … 客室の写真を Gemini API に送ります。契約上のデータの扱いを自社の規程と照らしてから始めてください

誤りが起きた場合のリスクは、やり直しが要る部屋を見ずに販売することと、基準どおりの部屋をやり直しにすることの2つです。 前者は写っていないものを ok にすると起き、後者は基準に無いことを指摘させると起きます。前者は宿泊客の苦情に、後者は清掃スタッフの不信につながります。 どちらも表と指示の書き方で防ぎます。

10まず何から始めるか

1週目:点検基準の表を分ける

紙の点検表の項目を、写真で見る項目と現地で見る項目に分けます。 写真で見る項目は、ベテランにやり直しの境目を聞き取りながら、写真で判断できる文にします。まずは部屋数のいちばん多いタイプ1つからです。

2週目:画角を決めて見本を撮る

6つの画角を決め、立つ位置と端末の向きを手順書に書きます。照明をすべて点ける、カーテンを開けるといった撮影の前の手順も決めます。 そのタイプの見本の写真を撮ります。

3週目:20〜30室で試す

清掃スタッフに実際の部屋を撮ってもらい、手元のAIサービスに貼り付けて判定させます。インスペクターはいつもどおり全室を回ります。写っていないものを ok にしていないかを最優先で見ます。

4週目:フォームと判定一覧をつなぐ

Google フォームに画角ごとのファイルの質問を作り、Apps Script のフォーム送信トリガーで Gemini API を呼び、判定一覧に書き出すところまで作ります。この時点ではまだ部屋を絞らず、全室を回りながら判定一覧と現地の結果を並べます。

2か月目: 写真の確認を先に行う1回目の呼び出しと、撮り直しのシートを足します。客室タイプを広げ、ok と出た部屋で現地がやり直しにした件数を毎週数えます。3か月目以降: 部屋の区分と抜き取りを規則で決め、回る部屋を絞ります。抜き取りの結果を見ながら点検基準の表と見本の写真を直し、インスペクターが回る部屋を判定一覧から選べるようになった時点で、この構成は完成です。


11関連ユースケース

12この仕組みを理解するための記事

13技術仕様の確認日・参考情報

技術仕様確認日:2026-09-29/最終更新:2026-09-29
確認した内容情報源確認日
対応する画像の形式が PNG、JPEG、WEBP、HEIC、HEIF であること。1回のリクエストに入れられる画像ファイルが最大3,600件であること。画像を直接入れる場合、テキストの指示・システム指示・画像のバイト数を合わせたリクエスト全体が20MBに制限されること。大きいファイルや繰り返し使う画像に Files API を使うこと。384ピクセル以下は258トークン、それより大きい画像は縦横768ピクセルのタイルごとに258トークンであること。バウンディングボックスの座標が0から1000に正規化され、元の画像の大きさに戻す必要があること。画像の回転を確かめ、鮮明な画像を使うことがベストプラクティスとされていること。media_resolution が1枚あたりのトークンの上限を決めることGoogle AI for Developers: Image understanding2026-09-29
出力形式にJSONを指定し、スキーマを渡して構造化された出力を受け取れること。スキーマで properties、required、enum などが使えること。出力は構文上正しいJSONになるが、値はアプリケーションの側で検証するよう書かれていること。非常に大きいスキーマや深い入れ子のスキーマは拒否されることがあることGoogle AI for Developers: Structured output2026-09-29
インストール型トリガーに、Google フォームとスプレッドシートで使えるフォーム送信のトリガーがあること。時間主導型トリガーが毎分から月1回までの間隔で動き、時刻が少しずらされることがあること。インストール型トリガーが作成した人のアカウントで動くこと。割り当ての上限の対象になることGoogle for Developers: Installable Triggers2026-09-29
Google フォームでファイルのアップロードを回答者に依頼できること。ファイルがフォームのオーナーのドライブの新しいフォルダに保存されること。回答するには Google アカウントへのログインが必要なこと。ファイルの形式・ファイル数・ファイルサイズの上限を設定できること。フォームが共有ドライブにある場合や、管理者がデータ損失防止を有効にしている場合は使えないことGoogle ドキュメント エディタ ヘルプ: ファイルを Google フォームにアップロードする2026-09-29

客室の写真を外部の API に送ってよいかは、自社の規程と契約の条件で確かめてください。

実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。

自社の業務に使えるAI活用候補を整理します

このユースケース(UC-0283)についてのご相談はこちらから。

AI活用について相談する
目次