管理物件の空室を定期に巡回して撮った写真から、通水・換気の跡、郵便物やチラシのたまり、汚れや設備の異常の候補を見分けて、巡回記録とオーナーへの報告を作る
空室の巡回で撮った写真から、通水・換気をした跡、郵便物やチラシのたまり、天井や床のしみなど異常の候補を部屋ごとに拾います。巡回記録の下書き、修繕の手配が要る部屋の一覧、オーナーへの月次の報告の下書きを作ります。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Google Apps Script/Make/Power Automate
- 対象業界
- 不動産/建設
- 対象部門
- 総務
- 対象業務
- 内容確認・チェック/記録・議事録作成
- 主な課題
- 人手が足りない/書類作成に時間がかかる/確認ミスが多い
- AIで行う処理
- 画像認識
- 主な効果
- 入力漏れ削減/対応スピード向上/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 巡回の担当が、その日の空室を回り、通水・換気・郵便物の回収をして、写真を撮る
- 気になる点を手帳にメモし、事務所に戻って写真をフォルダに入れる
- 事務の担当が、写真を部屋ごとに分け直し、巡回記録の部屋の行に書き写す
- 事務の担当が、前回の写真と比べて、しみや破損が増えていないかを見る
- 異常がありそうな部屋は、管理の担当に修繕の手配を相談する
- 月末に、オーナーごとに空室の巡回の状況を報告書の文面にまとめる
- 人巡回の担当が、決めた撮り場所で写真を撮り、ファイル名に部屋の番号を付けて巡回のフォルダに入れる
- 自動Google Apps Script が1時間ごとにフォルダを見て、部屋ごとに写真をまとめ、台帳から物件・部屋・オーナーを引く
- 自動Gemini API が、撮り場所ごとに作業の跡と異常の候補、写真の上の位置を返す
- 自動スクリプトが、前回の答えと比べて部屋ごとの区分を付け、巡回記録の下書きを書く
- 人管理の担当が、「要確認」「撮り漏れ」の部屋だけ写真で確かめ、修繕の手配に回すかを決める
- 自動月末に、確定した記録からオーナーごとの報告の下書きを作る
- 人事務の担当が、報告の下書きを確かめてオーナーに送る
各工程の詳しい説明を読む
- 巡回の担当が、その日の空室を回り、通水・換気・郵便物の回収をして、写真を撮る
- 気になる点を手帳にメモし、事務所に戻って写真をフォルダに入れる
- 事務の担当が、写真を部屋ごとに分け直し、巡回記録の部屋の行に書き写す
- 事務の担当が、前回の写真と比べて、しみや破損が増えていないかを見る
- 異常がありそうな部屋は、管理の担当に修繕の手配を相談する
- 月末に、オーナーごとに空室の巡回の状況を報告書の文面にまとめる
(a)写真の整理と書き写しが多い。 1日に十数室を回ると、写真は100枚を超えます。どの写真がどの部屋かを分け直すところから始まり、「異常なし」の部屋も異常なしであることを記録に書いています。
(b)異常の見落としが後で分かる。 前回の写真との比較は、忙しい週に省かれます。天井のしみが2回前の巡回から写っていたことに、上の階の入居者から苦情が来て初めて気づくことがあります。
(c)作業をしたかが確かめられない。 巡回記録の「通水済」「換気済」の印は、担当が付けたものです。臭いの苦情が出たとき、本当に水を流していたかを写真で確かめる手がかりがありません。
(d)オーナーへの報告の文面に時間がかかる。 1人のオーナーが複数の空室を持つことも多く、部屋ごとの記録を拾い集めて文面にする作業が、月末に集中します。
- 【人】 巡回の担当が、決めた撮り場所で写真を撮り、ファイル名に部屋の番号を付けて巡回のフォルダに入れる
- 【自動】 Google Apps Script が1時間ごとにフォルダを見て、部屋ごとに写真をまとめ、台帳から物件・部屋・オーナーを引く
- 【自動】 Gemini API が、撮り場所ごとに作業の跡と異常の候補、写真の上の位置を返す
- 【自動】 スクリプトが、前回の答えと比べて部屋ごとの区分を付け、巡回記録の下書きを書く
- 【人】 管理の担当が、「要確認」「撮り漏れ」の部屋だけ写真で確かめ、修繕の手配に回すかを決める
- 【自動】 月末に、確定した記録からオーナーごとの報告の下書きを作る
- 【人】 事務の担当が、報告の下書きを確かめてオーナーに送る
5番目が、この設計の分かれ目です。 管理の担当が写真を開くのは、区分が「要確認」と「撮り漏れ」の部屋だけです。「異常なし」の部屋は一覧で確かめます。全部の写真を開き直す設計にすると、①②の時間はほとんど減りません。
現地での確認は、これまでどおり残します。 臭い、水の流れの悪さ、床のきしみは写真に写りません。巡回の担当が気づいたことは、メモの欄に書いてもらい、AIの答えと並べます。
02今回想定するシステム構成
巡回の担当(スマートフォン) │ 決めた撮り場所で撮影。ファイル名に部屋の番号と撮り場所 ▼ Google ドライブの巡回のフォルダ 【トリガー】Apps Script の時間主導型トリガー(1時間ごと) Google Apps Script ├── フォルダのファイルを部屋ごとにまとめる ├── 部屋の台帳 ── 物件・部屋・オーナー・設備 ├──▶ UrlFetchApp で Gemini API を呼ぶ ▼ Gemini API ── 撮り場所ごとの作業の跡・異常の候補・位置(box_2d) ▼ Apps Script ── 前回の答えとの比較 → 部屋ごとの区分 ▼ 巡回記録の下書き / 修繕の相談の一覧 /(月末)オーナーへの報告の下書き ▼ 【管理の担当が「要確認」「撮り漏れ」の部屋を写真で確かめる】
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 処理 | Gemini API(空室の写真から作業の跡と異常の候補を判定) | Claude API、OpenAI API |
| 連携 | Google Apps Script(写真のまとめ、呼び出し、比較、下書きの作成) | Make、Power Automate |
| 連携 | Google スプレッドシート(部屋の台帳の写し、巡回記録、修繕の相談の一覧) | Microsoft Lists |
| 保管 | Google ドライブ(巡回のフォルダと、部屋ごとの写真の保管) | 社内のファイルサーバー |
| 撮影 | 巡回の担当のスマートフォン | タブレット |
つなぎには Google Apps Script を使います。 インストール型のトリガーのうち時間主導型のトリガーは、1分ごとから月1回までの間隔で動かせます。この構成では1時間ごとに動かし、フォルダの中のファイルを Folder の getFiles() で一覧にします。Gemini API は UrlFetchApp.fetch() で、method に post、contentType に JSON、payload に本文を入れて呼びます。インストール型のトリガーは、作った人のアカウントで動きます。 担当が異動しても止まらないよう、業務用のアカウントで作ります。
写真を見る土台は、Gemini API の画像理解です。 対応する形式は PNG、JPEG、WEBP、HEIC、HEIF で、1回のリクエストに複数の画像を入れられます。 画像を直接入れる場合は、指示などと合わせたリクエスト全体が20MBまでです。位置は [ymin, xmin, ymax, xmax] の形で、0から1000に正規化した座標で返せます。
03どうやって実装するのか
処理の起点を決める
時間主導型のトリガーで、1時間ごとに巡回のフォルダを見ます。 巡回は昼間に行われ、写真は担当が部屋を出るたびに入ります。夕方には、その日の部屋の下書きがそろいます。
1つの部屋の写真がそろってから処理します。 撮り場所は「郵便受けとドアの前」「玄関」「キッチンの流し(水を流している様子)」「浴室の排水口(同)」「洗面台(同)」「トイレ」「各居室(窓を開けた様子)」「ベランダ」「給湯器のリモコン」です。ファイル名を「部屋の番号_撮影日_撮り場所」とし、同じ部屋で「郵便受けとドアの前」と「キッチンの流し」がそろった部屋から処理します。 最後の撮り場所が入ってから30分たっても足りない撮り場所は、「撮り漏れ」として下書きに出します。
その月の巡回予定と照らし、予定日を過ぎても写真が1枚も無い部屋を一覧にします。 写真の無い部屋は、巡回されていない部屋かもしれません。点検の結果より先に、この一覧を管理の担当に見せます。
台風や大雨の後には、臨時の巡回をします。 臨時の巡回の写真はファイル名に「臨時」を付け、区分を通常の巡回より先に並べます。 窓からの雨の吹き込みやベランダの排水口の詰まりを、先に見るためです。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 空室の写真 | 撮り場所ごとの写真。部屋の番号、撮影日、撮った担当 | 巡回のフォルダ |
| 部屋の台帳 | 物件、部屋の番号、間取り、水まわりの設備の一覧、給湯器の種類、オーナー、空室になった日 | 賃貸管理のシステムから写した台帳 |
| 前回の記録 | 同じ部屋の前回の答え、確定した区分、手配した修繕 | 巡回記録 |
| 担当のメモ | 臭い・水の流れなど、写真に写らない気づき | 巡回記録のメモの欄 |
質を決めるのは、部屋の台帳の「水まわりの設備の一覧」です。 洗濯機の排水口がある部屋、浴室が2か所ある部屋、ベランダに排水口が2つある部屋。どこに水を流すべきかが台帳に無いと、撮り漏れが決まりません。 撮り場所の決まりは、この一覧から部屋ごとに作ります。
撮り場所の名前は、AIに渡します。 写真の中の何を見ればよいかが分かり、キッチンの写真で「水が流れているか」を、浴室の写真で「排水口のまわり」を見させられます。 一方、前回の答えはAIに渡しません。前回「天井にしみ」と渡せば、今回も見つけようとして、照明の影をしみと答えることがあります。
データの取得方法を決める
スクリプトが、次の順に集めます。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 写真 | 巡回のフォルダ(getFiles) | AIに渡す |
| 部屋の番号・撮影日・撮り場所 | ファイル名 | 台帳の引き当てと、撮り漏れの判定 |
| 設備の一覧・オーナー | 部屋の台帳 | 撮り場所の決まりと、報告の宛先 |
| 前回の答えと区分 | 巡回記録 | 変化の判定 |
| 担当のメモ | 巡回記録のメモの欄 | AIの答えと並べて管理の担当に見せる |
写真はファイルの中身を取り出して base64 にし、撮り場所の名前と合わせて本文に入れます。 1部屋で8〜12枚になるため、縮めた写真でもリクエスト全体20MBの上限に近づくことがあります。 上限を超えそうな部屋は、水まわりと居室の2回に分けて呼びます。本文の response_format に後で示すスキーマを入れ、API キーはスクリプトのプロパティに持たせて、コードには書きません。
部屋の台帳は、賃貸管理のシステムから毎晩書き出したものを写します。 スクリプトから賃貸管理のシステムへ直接は書き込みません。入居の申込みが入った部屋は、翌日の写しから巡回の予定を外します。
AIへ渡す前に整形する
- 枚数と名前の確認 … 部屋の番号が台帳にあるか、撮り場所の名前が決まりのとおりかを見ます
- 向きの補正 … 写真の向きの情報で、横倒しの写真を正しくします
- 写りの確認 … 暗くて何も見えない写真、ぶれた写真は「撮り直し」とします
- 人の写り込みの確認 … 人が写った写真は、AIに送らず担当に返します
- 郵便物の写真の扱い … 宛名が読める大きさで写っていないかを見て、読める写真は縮めるか撮り直しにします
- 大きさの調整 … 長辺が大きすぎる写真は縮めます。天井のしみや排水口のまわりが潰れない大きさを残します
5番目は、この題材で特に大事です。 空室の郵便受けには、前の入居者あての郵便物や、宛名のある通知が入っていることがあります。 見るのは「たまっているか」だけで、宛名は要りません。郵便受けは扉を開けて少し離れて撮る決まりにし、1通ずつ並べて撮りません。
3番目の暗さは、電気の止まった空室で起きます。 空室でも照明を使えるようにしているか、担当が携帯の照明を持つ決まりにします。暗い写真では、しみも水の流れも見えません。
AIに処理させる
させるのは、撮り場所ごとに、次の答えを返すことだけです。
| 見るもの | 答え方 | 判断できないときの扱い |
|---|---|---|
| 水を流している様子(流し・浴室・洗面) | shown / not_shown / uncertain | 水の流れが見分けられなければ uncertain |
| 窓を開けた様子(居室) | 同上 | 窓が写っていなければ not_shown |
| 郵便物・チラシのたまり | found / none / not_visible / uncertain | 扉が閉じていれば not_visible |
| 天井・壁・床のしみ | 同上 | 暗くて見えなければ not_visible |
| 水まわりの汚れ・かび・虫 | 同上 | 同上 |
| 窓・建具・設備の破損 | 同上 | 同上 |
| 給湯器のリモコンの表示 | display_on / display_off / not_visible | 反射で読めなければ not_visible |
found と uncertain のときは、写真の番号と box_2d を返させます。 管理の担当は、印の付いた位置を見るだけで済みます。
| させないこと | 理由 |
|---|---|
| 修繕が要るかの判断 | 前回からの変化と現地の確認で管理の担当が決める |
| 漏水や故障の原因の推測 | 写真では確かめられない |
| 給湯器の表示の意味の解釈 | 型式ごとの取扱説明で確かめるもの |
| 郵便物の宛名・差出人の読み取り | 巡回に要らない個人の情報 |
| 写っている人についての記述 | 巡回に要らない |
2行目がいちばん起きやすい失敗です。 天井のしみの写真を見せると、AIは「上の階からの漏水と考えられます」と書きます。それがオーナーへの報告に入れば、上の階の入居者を疑う文面になります。 原因は、管理の担当が現地と上の階の状況を確かめてから書きます。
指示内容を固定する
あなたは、賃貸住宅の空室を巡回して撮った写真を見て、巡回の作業の跡と、異常らしいものを書き出す立場です。
同じ部屋の写真を撮り場所の名前と一緒に渡します。写真に見えるものだけを答えてください。
【この部屋の情報】間取り:{layout} 撮り場所:{spots}
【撮り場所ごとに答えること】
- 流し・浴室・洗面:water_running(shown / not_shown / uncertain)
- 居室:window_open(shown / not_shown / uncertain)
- 郵便受けとドアの前:mail_pileup(found / none / not_visible / uncertain)
- すべての撮り場所:stain、dirt_mold_pest、damage(found / none / not_visible / uncertain)
- 給湯器のリモコン:heater_display(display_on / display_off / not_visible)
- found と uncertain のときは、photo_no と box_2d と、見えたものを短く note に
迷ったときに none を選ばないでください。
【厳守事項】
- 暗い・反射・画角の外で見えない部分は not_visible にしてください。見えない部分を none にしないでください。
- しみや汚れの原因、漏水の有無を推測しないでください。
- 修繕が要るかどうかを書かないでください。
- 郵便物の宛名、差出人、内容を書かないでください。たまっているかどうかだけを答えてください。
- 給湯器のリモコンの表示の意味を書かないでください。何か表示されているかだけを答えてください。
- 写真に写っている人について、何も書かないでください。
「郵便物の宛名を書かない」を明記しないと、AIは宛名を読み上げます。 写真に文字があれば、それを書き出すのが自然だからです。巡回記録に前の入居者の名前が残れば、それだけで個人の情報を不要に持つことになります。
「表示の意味を書かない」を入れているのは、誤った案内を防ぐためです。 リモコンの数字を見て、AIがもっともらしい故障の説明を書くことがあります。意味は型式ごとの取扱説明で、管理の担当が確かめます。
出力形式を固定する
構造化出力で、部屋ごとに次の形のJSONを受け取ります。
{
"room_id": "B021-0203",
"spots": [
{ "spot": "kitchen_sink",
"checks": [
{ "item": "water_running | window_open | mail_pileup | stain | dirt_mold_pest | damage | heater_display",
"status": "shown | not_shown | found | none | not_visible | uncertain | display_on | display_off",
"photo_no": 3,
"box_2d": [0, 0, 0, 0],
"note": "" }
] }
],
"retake_needed": false
}
項目と状態を enum にして、決めた値以外を返させません。 Gemini API の構造化出力は、/v1beta/interactions の response_format に mime_type: "application/json" とスキーマを入れて指定し、enum と required が使えます。ただし、JSONとして正しくても値が正しいとは限らないため、アプリケーションの側で値を確かめるよう案内されています。 スクリプトで、撮り場所ごとに決めた項目がそろっているか、water_running に found のような組み合わせの合わない値が入っていないかを確かめ、合わなければ「確認が要る」にします。
区分は、スクリプトが前回の答えと比べて決めます。
| 区分 | 条件の例 |
|---|---|
| 要確認(至急) | しみ・破損が前回から新しく found。または窓・ドアの破損が found |
| 要確認 | 汚れ・かび・虫が found。給湯器が display_on |
| 撮り漏れ | 決めた撮り場所の写真が無い。または水を流す様子が not_shown |
| 郵便物 | 郵便物・チラシのたまりが found(回収の写真の追加を担当に頼む) |
| 異常なし | すべて none で、作業の跡が shown |
しみと破損を前回からの変化で「至急」にしているのは、空室では変化そのものが知らせだからです。 前回から写っているしみは、すでに相談した記録があるかを確かめるだけで済みます。規則の中身は管理部が決め、表として持ちます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| Google ドライブ | Apps Script の Folder(getFiles) | 写真の一覧と取り出し、処理済みのフォルダへの移動 |
| Gemini API | UrlFetchApp.fetch(post) | 撮り場所ごとの判定 |
| 部屋の台帳・巡回記録 | Google スプレッドシート | 台帳の読み取りと、下書きの列への書き込み |
| 修繕の相談の一覧 | Google スプレッドシート | 要確認の部屋の追加 |
巡回記録には、下書きの列だけに書きます。 確定の列は管理の担当が埋めます。修繕の手配も、工事業者への依頼は管理の担当が確定してから出します。 スクリプトから外へは何も送りません。
処理が終わった写真は、部屋ごとの保管のフォルダへ移します。 移すのは、答えを巡回記録に書けたときだけにします。巡回のフォルダに残っている写真の数が、そのまま未処理の数になります。
人が確認する
すべての部屋で、管理の担当の確定を通します。 写真を開く部屋は区分で絞ります。
- 「要確認(至急)」を最初に見る … 印の付いた位置を写真で確かめ、前回の写真と並べます。新しいしみなら、上の階や隣の部屋の状況を確かめる手配までを1つの手順にします
- 「撮り漏れ」を見る … 水を流していない撮り場所があれば、次の巡回を前倒しにするか、担当に確かめます
- 「要確認」と「郵便物」を見る … 清掃や回収の手配を決めます
- 「異常なし」は一覧で確定する … 下書きを流し見て、まとめて確定します
1番目を省かないでください。 空室のしみは、誰も住んでいないあいだに広がり続けます。 写真で確かめた時点で、現地の確認の手配まで進めます。
目標は、1,200件をならして1件1.5分です。 「異常なし」の部屋は一覧で数秒、「要確認(至急)」の部屋は写真を開いて数分かかります。月末のオーナーへの報告の確認も、この時間に含めています。
最初の1か月は、事務の担当がこれまでどおり写真を見て、AIの区分と並べます。 担当が異常と見た部屋に、AIが候補を出していたかを照らします。出していなかった部屋は、撮り場所か指示の書き方を直す材料です。
例外に対処する
| 起きること | 対応 |
|---|---|
| 部屋の番号が台帳に無い | 処理せず管理の担当に知らせる。番号の付け間違いを疑う |
| 決めた撮り場所の写真が無い | 「撮り漏れ」として下書きに出す |
| 暗い・ぶれで見えない | 「撮り直し」。次の巡回で撮り直す |
| 人が写っている | AIに送らず担当に返す |
| 郵便物の宛名が読める | AIに送らず縮めるか撮り直し |
| 1部屋の写真が多く上限に近い | 水まわりと居室の2回に分けて呼ぶ |
| 入居の申込みが入った部屋 | 台帳の写しで巡回の予定から外す |
| 内装の工事中の部屋 | 台帳で「工事中」にし、区分を付けない |
| Gemini API が応答しない | その部屋は「未処理」。写真をフォルダに残し、次の回で処理する |
「未処理」と「撮り漏れ」を「異常なし」に混ぜないでください。 混ぜると、巡回されていない部屋が巡回された部屋と同じ記録になり、(c)の問題がそのまま残ります。
記録を残す
- 部屋ごとの写真と、撮影日時、撮った担当
- AIの答え(撮り場所ごとの状態・位置・メモ)
- 区分と、そのとき使った規則の版
- 管理の担当が直した区分と、確定した日
- 手配した修繕・清掃と、その結果
- オーナーへ送った報告の版と、送った日
オーナーへの報告の下書きは、たとえば次の形にします。
【空室の巡回のご報告】2026年10月分 ○○様
B021-0203(1K) 巡回 10/03・10/17 通水・換気を実施
10/17 浴室の天井に小さなしみを確認。原因を確認中です(写真2枚添付)
B021-0305(1LDK) 巡回 10/03・10/17 通水・換気を実施 異常はありませんでした
チラシの投函が多く、10/17 に回収しました
最後の行の報告の版は、管理業務報告書の材料になります。 賃貸住宅管理業法の施行規則は、管理受託契約を結んだ日から1年を超えない期間ごとに、報告の対象となる期間、管理業務の実施状況、入居者からの苦情の発生状況と対応状況を記載した管理業務報告書を交付して説明することを求めています。月次の報告を残しておけば、1年分の実施状況をそこから組めます。
04実装レベルの3段階
最小構成では、月1,200件をさばけません。 確かめるための段階です。 半自動化で、1件5分が3分程度になります。 写真の分け直しと書き写しは無くなりますが、前回との比較とオーナーへの報告が手で残ります。 本格構成で1.5分になり、この段階が本記事の想定です。 差が大きいのは、②の比較と③の報告の下ごしらえが規則で行われるためです。 段階を飛ばさないでください。 半自動化の下書きを1か月見ると、撮り漏れの多い撮り場所と、暗くて見えない物件が分かります。そこを直してから区分を付けるほうが、管理の担当が一覧を信用します。
05工数削減シミュレーション
導入後 1,200件 × 1.5分 ÷ 60 = 30 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 数千戸の賃貸住宅の管理を受託し、空室を月に1〜2回巡回して通水・換気・郵便物の回収をしている賃貸管理会社。巡回の写真は集まっているが、部屋ごとの巡回記録への書き写しと、オーナーへの報告の文面づくりが事務の担当の手作業になっている場合。部屋ごとに撮る場所の決まりを巡回の担当にそろえられる場合。空室の管理を請け負う清掃・設備の会社にも当てはまります。
- 管理戸数が少なく、空室が月に数室で、担当が記憶で報告できる場合。巡回で写真を撮っておらず、撮る決まりも作れない場合。内見の客や入居予定者が室内に入っている時間に巡回が重なり、人を写さずに撮る決まりを通せない場合。なお、修繕の要否と費用の判断、漏水や設備の故障の原因の特定は、この構成では代替できません。
07最小構成で試す方法
- 先月の巡回から、修繕を手配した部屋と手配しなかった部屋を合わせて20室選ぶ
- その20室の写真を用意する(人が写っておらず、郵便物の宛名が読めないもの)
- 手元の Gemini の画面に、1室分の写真と撮り場所の名前を貼り付ける
- 「撮り場所ごとに、水を流している様子、窓を開けた様子、郵便物のたまり、しみ、汚れ・かび・虫、破損、給湯器の表示が見えるかを答え、見える場合は場所を示してください。原因や修繕の要否、郵便物の宛名は書かないでください。見えない部分は見えないと答えてください」と指示する
- 当時の記録と、修繕の手配の結果と突き合わせる
試すときも、会社で使ってよいと決めた有料の枠で行います。
| 出てきた内容 | 判断 |
|---|---|
| 修繕を手配した部屋で異常の候補が出ている | 撮り場所の決まりとスクリプトに進む |
| 原因や修繕の要否まで書いてしまう | 指示の書き方で直る。構成は有効 |
| 暗くて何も答えられない | 撮り方が先。 AIの問題ではない |
3行目は、電気の止まった空室の写真でよく出ます。 写真で見えない部屋は、現地でも見落としやすい部屋です。照明の決まりを作ると、現地の点検の見方もそろいます。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 見えない部分を「異常なし」と答える | not_visible を用意し、迷ったらそれを選ばせる |
| しみの原因を推測して報告に入る | 原因を書かせない。原因は管理の担当が確かめて書く |
| 郵便物の宛名を読み上げる | 宛名を書かせない。撮るときも離れて撮る |
| 給湯器の表示をもっともらしく解釈する | 表示の有無だけを答えさせる |
| 暗い部屋で何も見えない | 照明の決まりを作る |
| 前回の答えを渡して、無いしみを答える | 前回の記録はAIに渡さず、比較はスクリプトで行う |
| 1部屋の写真が多くて上限に近づく | 縮めて送り、水まわりと居室に分ける |
| トリガーが作った人の異動で止まる | 業務用のアカウントでトリガーを作る |
| 申込みが入った部屋を巡回し続ける | 台帳の写しで毎日予定を外す |
| オーナーへの報告を自動で送る | 下書きまでにし、送るのは事務の担当 |
上の3行が、この構成の失敗のほとんどです。 どれも、写真に写っていないこと・要らないことまで書くことから起きます。見えるものだけを答えさせ、原因と宛名を書かせなければ、報告の文面で困ることはほとんどありません。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 空室の写真、部屋の台帳、オーナーの名前、巡回記録、修繕の手配の記録です。写真には、前の入居者あての郵便物、内見の客、隣の部屋の様子が写り込むおそれがあります。
- 郵便物の宛名と人を写さない、写った写真を送らない … 郵便受けは離れて撮り、宛名が読める写真と人が写った写真はAIに送りません。AIへの指示でも、宛名と人について何も書かせません
- 規約の年齢の条件を確かめる … Gemini API の規約は18歳以上の利用を条件とし、18歳未満を対象とする、または18歳未満が利用しうるサービスでの利用を禁じています。 この構成を使うのは社員と巡回の担当だけで、入居者やオーナーに使わせる仕組みではありません
- 有料の枠で使う … 無料の枠では送った内容が製品の改善に使われ、人が読むことがあるとされ、個人の情報を送らないよう案内されています。有料の枠では、プロンプトや応答を製品の改善に使わず、限った期間だけ記録するとされています
- 保存される場所を確かめる … 有料の枠でも、内容はどの国でも一時的に保存・キャッシュされうるとされています。オーナーとの管理受託契約で写真の扱いに条件があれば、先に確かめます
- 修繕の判断と報告の責任は管理会社に残る … 賃貸住宅管理業法は、管理業者が管理業務の実施状況などを定期的に委託者に報告することを求めています。AIの答えはその材料で、報告の中身を確かめて送るのは管理会社です。 原因の推測をそのまま報告に載せないでください
- 鍵と巡回の予定を写真と一緒に置かない … 空室の巡回の予定と鍵の保管場所が分かる情報は、写真のフォルダとは別に管理します
誤りが起きた場合のリスクは、しみや破損を見落とすことと、巡回していない部屋を巡回したことにしてしまうことの2つです。 前者は not_visible を none に混ぜると起き、後者は「未処理」や「撮り漏れ」を「異常なし」に混ぜると起きます。どちらも、見えないことと撮っていないことを記録に残すことで守ります。
10まず何から始めるか
1週目:撮り場所の決まりを作る
空室の多い物件を1つ選び、部屋の台帳の水まわりの設備から、部屋ごとの撮り場所の一覧を作ります。郵便受けは離れて撮る、暗い部屋は照明を持つ、という決まりも書き添えます。
2週目:20室で試す
先月の巡回の写真から20室を選び、手元の Gemini の画面で撮り場所ごとに答えさせます。当時の記録と修繕の手配の結果と突き合わせ、見えない部分を「異常なし」と答えていないか、宛名を読み上げていないかを最優先で見ます。
3週目:区分の規則を決める
管理部で、要確認(至急)・要確認・撮り漏れ・郵便物の規則の表を作ります。オーナーへの報告の文面の型も、ここで決めます。
4週目:フォルダから下書きまでをつなぐ
Apps Script で、時間主導型のトリガーから Gemini API の呼び出しまでをつなぎ、巡回記録の下書きに書き出すところまで作ります。 区分はまだ付けず、事務の担当の見直しと並べます。
2か月目: 前回の答えと比べて区分を付け、撮り漏れの一覧を出します。3か月目以降: 月末のオーナーへの報告の下書きを足し、1件5分が何分になったかを実測します。オーナーからの空室の問い合わせに、写真付きの記録でその場で答えられるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 管理業務に、賃貸住宅の居室などについて点検・清掃その他の維持を行い、必要な修繕を行う維持保全が含まれること(第2条)。賃貸住宅管理業者が管理業務の実施状況などを定期的に委託者に報告しなければならないこと(第20条) | e-Gov 法令API: 賃貸住宅の管理業務等の適正化に関する法律 | 2026-10-12 |
| 管理受託契約を締結した日から1年を超えない期間ごと、および契約期間の満了後遅滞なく、報告の対象となる期間、管理業務の実施状況、入居者からの苦情の発生状況と対応状況を記載した管理業務報告書を交付して説明すること。委託者の承諾を得て電磁的方法で提供できること(第40条) | e-Gov 法令API: 賃貸住宅の管理業務等の適正化に関する法律施行規則 | 2026-10-12 |
対応する画像の形式が PNG、JPEG、WEBP、HEIC、HEIF であること。画像を直接入れる場合、指示などと合わせたリクエスト全体が20MBまでであること。1回のリクエストに複数の画像を入れられること。位置を [ymin, xmin, ymax, xmax] の0〜1000の座標で返すこと | Gemini API: Image understanding | 2026-10-12 |
構造化出力を /v1beta/interactions の response_format に mime_type: "application/json" とスキーマを入れて指定すること。enum と required が使えること。JSONとして正しくても値はアプリケーションの側で検証するよう案内されていること | Gemini API: Structured output | 2026-10-12 |
| 18歳以上の利用を条件とし、18歳未満を対象とする、または利用しうるサービスでの利用を禁じていること。無料の枠では送った内容が製品の改善に使われ、人が読むことがあり、個人の情報を送らないよう案内されていること。有料の枠では製品の改善に使わず、限った期間だけ記録すること。どの国でも一時的に保存・キャッシュされうること | Gemini API Additional Terms of Service | 2026-10-12 |
| 時間主導型のトリガーが1分ごとから月1回までの間隔で動くこと。インストール型のトリガーは作った人のアカウントで動くこと | Google Apps Script: Installable triggers | 2026-10-12 |
UrlFetchApp.fetch で method(post など)、contentType、payload、headers、muteHttpExceptions を指定してリクエストを送れること | Google Apps Script: Class UrlFetchApp | 2026-10-12 |
| Folder の getFiles がフォルダ直下のすべてのファイルを返すこと | Google Apps Script: Class Folder | 2026-10-12 |
管理業務報告書の記載事項と報告の時期は、法令と国土交通省の解釈・運用の考え方で確かめてください。 本記事は法令の条文で確認できた範囲を扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1288)についてのご相談はこちらから。
