企業イベントで撮った大量の写真から、広報に使える写真の候補を選び、写っている場面の説明とキャプションの案を付ける
イベントで撮った数百枚の写真を1枚ずつAIに見せ、場面の種類、ぶれや目つぶり、撮影NGの写り込みを見分けます。そのうえで場面ごとに広報に使える候補を絞り、場面の説明とキャプションの案を付けた選定表を作ります。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Google Apps Script/Make/Power Automate
- 対象業界
- IT・SaaS/不動産/広告/製造
- 対象部門
- マーケティング
- 対象業務
- 分類・仕分け/書類作成
- 主な課題
- 人手が足りない/属人化している/確認ミスが多い
- AIで行う処理
- 画像認識
- 主な効果
- 品質標準化/対応スピード向上/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- カメラマンが撮影後に現像し、共有ドライブのイベントのフォルダに JPEG を置く
- PRディレクターがフォルダを開き、写真を1枚ずつ見て、使えないもの(ぶれ、目つぶり、露出の失敗)を飛ばす
- 使えそうなものに印を付け、場面(登壇、会場の全景、ブース、来場者との対話、集合写真、製品の寄り)ごとに頭の中で数を数える
- 撮影NGの来場者や、撮らない取り決めの展示台が写っていないかを、候補の写真で拡大して確かめる
- 候補を20枚から40枚に絞り、プログラムを見ながら登壇者の名前と肩書を確かめる
- 1枚ずつ場面の説明とキャプションの案を書き、スプレッドシートの選定表にまとめる
- 選定表とセレクトのフォルダを顧客の広報担当へ送る
- 人イベントの前日までに、担当のディレクターがイベント台帳(スプレッドシート)に、プログラムと撮影NGの一覧、場面ごとの枚数の目安を入れる
- 人カメラマンが現像した JPEG を、選定用の縮小版とともにイベントのフォルダに置き、台帳の状態を「選定開始」にする
- 自動Google Apps Script が定時に台帳を見て、選定開始のイベントの写真を少しずつ処理する
- 自動写真ごとに撮影時刻を取り、プログラムと突き合わせて「その時間帯の演目と登壇者」を引く
- 自動Gemini API に写真と演目の情報を渡し、場面の種類、写りの不具合、撮影NGの写り込みのおそれ、場面の説明を受け取る
- 自動数秒以内に続けて撮られた写真を連写のまとまりにし、まとまりごとに Gemini API で写りの良い順に並べる
- 自動規則で候補を絞る(不具合とNGのおそれがあるものを外し、場面ごとの目安の2倍まで残す)
- 自動候補ごとにキャプションの案を作り、選定表に書き出す
- 人ディレクターが選定表と候補の写真を見て、20枚から40枚を選び、キャプションを直す
- 人外した写真の中に使えるものが無いかを、外した理由ごとに流し見る
- 人顧客の広報担当に選定表とセレクトのフォルダを送る
各工程の詳しい説明を読む
- カメラマンが撮影後に現像し、共有ドライブのイベントのフォルダに JPEG を置く
- PRディレクターがフォルダを開き、写真を1枚ずつ見て、使えないもの(ぶれ、目つぶり、露出の失敗)を飛ばす
- 使えそうなものに印を付け、場面(登壇、会場の全景、ブース、来場者との対話、集合写真、製品の寄り)ごとに頭の中で数を数える
- 撮影NGの来場者や、撮らない取り決めの展示台が写っていないかを、候補の写真で拡大して確かめる
- 候補を20枚から40枚に絞り、プログラムを見ながら登壇者の名前と肩書を確かめる
- 1枚ずつ場面の説明とキャプションの案を書き、スプレッドシートの選定表にまとめる
- 選定表とセレクトのフォルダを顧客の広報担当へ送る
(a)600枚を見るだけで時間が尽きる。 1枚に数秒でも、600枚なら1時間近くかかります。イベントが同じ週に重なると、翌営業日の夕方という納期に間に合わせるために、後半の写真ほど速く流し見ることになります。 後半に撮られた懇親会や集合写真から良い1枚が漏れます。
(b)選ぶ人で場面が偏る。 登壇の写真ばかりが並ぶ、ブースの写真が来場者の後ろ姿ばかりになる、といった偏りが、ディレクターごとに違う形で出ます。顧客は使い道ごとに場面をそろえたいので、「対話している場面がもう2枚ほしい」と戻ってきます。
(c)撮影NGを見落とす。 赤いリボンは胸元の小さな印で、引きの写真では数ピクセルです。候補にした写真を拡大して確かめるつもりでも、急いでいる週には漏れます。 顧客がSNSに載せてから気づくと、取り下げと来場者へのお詫びが要ります。
(d)キャプションの名前を取り違える。 登壇者が続くセミナーでは、どの写真が誰の登壇かを記憶で書くと取り違えます。
- 【人】 イベントの前日までに、担当のディレクターがイベント台帳(スプレッドシート)に、プログラムと撮影NGの一覧、場面ごとの枚数の目安を入れる
- 【人】 カメラマンが現像した JPEG を、選定用の縮小版とともにイベントのフォルダに置き、台帳の状態を「選定開始」にする
- 【自動】 Google Apps Script が定時に台帳を見て、選定開始のイベントの写真を少しずつ処理する
- 【自動】 写真ごとに撮影時刻を取り、プログラムと突き合わせて「その時間帯の演目と登壇者」を引く
- 【自動】 Gemini API に写真と演目の情報を渡し、場面の種類、写りの不具合、撮影NGの写り込みのおそれ、場面の説明を受け取る
- 【自動】 数秒以内に続けて撮られた写真を連写のまとまりにし、まとまりごとに Gemini API で写りの良い順に並べる
- 【自動】 規則で候補を絞る(不具合とNGのおそれがあるものを外し、場面ごとの目安の2倍まで残す)
- 【自動】 候補ごとにキャプションの案を作り、選定表に書き出す
- 【人】 ディレクターが選定表と候補の写真を見て、20枚から40枚を選び、キャプションを直す
- 【人】 外した写真の中に使えるものが無いかを、外した理由ごとに流し見る
- 【人】 顧客の広報担当に選定表とセレクトのフォルダを送る
9番目が、この設計の分かれ目です。 人が見るのは600枚ではなく、場面ごとに絞られた候補の数十枚と、外した理由の一覧です。 選ぶという判断は人に残し、その前の「外す」を機械に寄せます。
10番目を省かないのも意図してのことです。 AIが「目つぶりのおそれ」と付けた写真の中に、実は伏し目がちの良い1枚があることがあります。外した理由ごとに並べてあれば、流し見るのは数分です。
02今回想定するシステム構成
イベントの前日:イベント台帳(スプレッドシート)にプログラム・撮影NG・場面ごとの枚数の目安 ▼ カメラマンが現像した JPEG(元の画像)と選定用の縮小版を共有ドライブのイベントのフォルダへ ▼【トリガー】台帳の状態が「選定開始」(10分ごとの定時実行で検知) Google Apps Script ├──▶ Drive の撮影時刻(EXIF)を取り、プログラムと突き合わせる ▼ Gemini API(写真1枚ずつ) │ 場面の種類/写りの不具合/撮影NGの写り込みのおそれ/場面の説明 ▼ Google Apps Script ── 連写のまとまりを作る ▼ Gemini API(連写のまとまりごとに複数の写真を1回で)── 写りの良い順に並べる ▼ Google Apps Script ── 規則で候補を絞る(場面ごとの目安の2倍まで) ▼ Gemini API ── 候補のキャプションの案(登壇者の名前は時刻表から) ▼ 選定表(スプレッドシート)と候補のショートカットのフォルダ ▼【ディレクターが選び、キャプションを直す】 顧客の広報担当へ納品
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 処理 | Gemini API(場面の種類と写りの不具合の見分け、撮影NGの写り込みのおそれ、説明とキャプションの案) | Claude API、OpenAI API |
| 連携 | Google Apps Script(定時の実行、撮影時刻と時刻表の突き合わせ、連写のまとまり、候補の絞り込みの規則) | Make、Power Automate |
| 保管 | Google ドライブ(共有ドライブのイベントのフォルダ) | Microsoft OneDrive、Dropbox |
| 台帳 | Google スプレッドシート(イベント台帳と選定表) | Microsoft Lists |
新しく足すのは、Gemini API の利用と、Apps Script のプログラムだけです。
画像を読むのは Gemini API です。 公式のページでは、PNG・JPEG・WEBP・HEIC・HEIF の画像を受け付け、画像を直接リクエストに入れる場合は指示などと合わせたリクエスト全体が20MBまでとされています。1回のリクエストに入れられる画像は3,600枚までで、連写のまとまりを1回で渡して比べさせる使い方ができます。
画像1枚に割り当てるトークンは media_resolution で選べます。 low・medium・high・ultra_high があり、Gemini 3 以降の目安は low が280、medium が560、high が1120トークンとされています。多くの画像の分析には high が勧められています。 赤いリボンのような小さな印を見落とさないよう、1枚ずつの見分けは high、連写の比べ合いは medium にします。
撮影時刻は Google ドライブが持っています。 Drive API のファイルの情報には imageMediaMetadata があり、time は写真の撮影日時(EXIF の DateTime)とされています。Apps Script から Drive の拡張サービスで取り出せるので、写真を開かずに、撮った順に並べ、時刻表と突き合わせられます。
03どうやって実装するのか
処理の起点を決める
イベント台帳の状態が「選定開始」になったことを起点にします。 写真のフォルダへの追加を1枚ずつ拾うと、カメラマンが現像を何回かに分けて置いたときに、途中の写真だけで候補を絞ってしまいます。カメラマンが全部を置き終えて台帳を変えた時点を、選定の始まりにします。
Apps Script を10分ごとの定時実行で動かし、台帳の状態を見ます。 Apps Script は1回の実行が6分までとされています。600枚を1回では処理し切れないので、1回の実行で40枚ずつ処理し、どこまで済んだかを台帳に書いて次の実行で続きから始めます。 600枚なら15回、2時間半ほどで一巡します。夕方にカメラマンが置けば、翌朝には選定表ができています。
上限は Google Workspace のアカウントで、定時実行の合計が1日6時間、URL の取得(外部 API の呼び出し)が1日10万回とされています。月12件・平均600枚に、連写の比べ合いとキャプションの呼び出しを足しても、1日の上限には届きません。同じ週にイベントが重なる日も、台帳の順に1件ずつ処理します。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 選定用の縮小版の写真 | 長辺2,048ピクセルの JPEG。ファイル名、撮影時刻 | 共有ドライブのイベントのフォルダ |
| プログラム(時刻表) | 開始・終了の時刻、演目、登壇者の名前と肩書、会場(ホール・ブース) | イベント台帳 |
| 撮影NGの一覧 | NGの目印(リボンの色など)、撮らない展示物の特徴、写してはいけない画面 | イベント台帳 |
| 場面ごとの枚数の目安 | 登壇8、全景4、ブース6、対話6、集合2、製品の寄り4 など | イベント台帳 |
| キャプションの書き方 | 顧客ごとの表記(社名、製品名の正式な書き方、敬称の付け方) | イベント台帳 |
質を決めるのは、2行目と3行目です。 プログラムが無ければ、キャプションの名前は空欄になります。撮影NGの一覧が無ければ、AIは何を探せばよいか分かりません。どちらも顧客から受け取る資料なので、イベントの前日までに台帳に入れることを受注の条件にします。
撮影NGの一覧は、目で見て分かる特徴で書きます。 「撮影を望まない人」では探せません。「胸元に赤いリボン」「白い布をかけた展示台」「受付のノートパソコンの画面」のように書きます。
【撮影NGの一覧(例)】
NG1:胸元に赤いリボンを付けた来場者の顔がはっきり写っている
NG2:白い布をかけた展示台(発表前の試作機)が写っている
NG3:報道受付のノートパソコンの画面が読める
NG4:他社のブースのロゴが主役になっている データの取得方法を決める
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 写真の一覧と撮影時刻 | Drive の拡張サービスで、フォルダ内のファイルの imageMediaMetadata.time | 撮った順の並び、時刻表との突き合わせ、連写のまとまり |
| 写真の中身 | 選定用の縮小版のファイル | Gemini API に直接入れる |
| 演目と登壇者 | 台帳のプログラムの表 | 撮影時刻から演目を引き、キャプションに入れる |
| 撮影NGと書き方 | 台帳のイベントの行 | 指示に埋め込む |
写真は選定用の縮小版を使います。 現像した元の画像は1枚10MBを超えることがあり、指示と合わせて20MBというリクエストの上限に近づきます。 カメラマンには、現像のときに元の画像と、長辺2,048ピクセルの縮小版の2つを書き出してもらいます。 選定表から納品するときは、同じファイル名の元の画像を使います。
撮影時刻はカメラの時計に依存します。 カメラの時計が5分ずれていれば、演目の突き合わせも5分ずれます。撮影の始めに会場の時計を1枚撮ることをカメラマンの決まりにし、その1枚の撮影時刻と写っている時計の差を台帳に入れて補正します。複数のカメラマンがいれば、カメラごとに補正します(カメラの機種は imageMediaMetadata.cameraModel で分けられます)。
AIへ渡す前に整形する
- ファイルの形式の確認 … JPEG・PNG・HEIC 以外(RAW など)は処理せず、台帳に件数を書きます
- 撮影時刻の補正 … カメラごとの時計のずれを足し引きします
- 演目の付与 … 補正した時刻がプログラムのどの演目の時間帯に入るかを引きます。休憩や転換の時間は「演目なし」にします
- 連写のまとまり … 同じカメラで3秒以内に続けて撮られた写真を、1つのまとまりにします
- 写真の向き …
imageMediaMetadata.rotationを見て、横向きのまま渡さないようにします - 処理済みの印 … 処理を終えた写真のファイルIDを台帳の作業用のシートに書き、二重に処理しません
4番目の連写のまとまりが、費用と手間の両方に効きます。 登壇の場面では、同じ構図で10枚近く続けて撮ることがよくあります。まとまりごとに比べて上位の2枚だけを候補に残せば、人が見る枚数はさらに減ります。
AIに処理させる
させるのは、写真に写っている事実を決まった項目で書き出すことだけです。 写真の良し悪しの総合点は付けさせません。
| 見るもの | 見方 | 判断できないときの扱い |
|---|---|---|
| 場面の種類 | 登壇/会場の全景/展示ブース/来場者との対話/集合写真/受付・看板/製品の寄り/その他 | 迷えば「その他」 |
| 写りの不具合 | ピンぼけ・手ぶれ、主な人物の目つぶりのおそれ、露出の大きな失敗、主な人物の顔が切れている | 判断できなければ「不具合なし」にせず「要確認」 |
| 撮影NGの写り込み | 一覧の目印ごとに、写っているおそれがあるか。あれば写真のどこか | 小さくて判断できなければ「おそれあり」 |
| 写っている人数のめやす | 0/1〜2/3〜10/11以上 | 数えられなければ「多数」 |
| 来場者の顔が大きく写っているか | 登壇者以外で、顔が画面の中で大きく判別できる人がいるか | 迷えば「はい」 |
| 場面の説明 | 見えている事実だけ(壇上で1人が話している、スクリーンに製品の写真が映っている など) | - |
撮影NGの判断を「おそれあり」に倒すのが、この表でいちばん大事な点です。 NGの来場者が写った写真を公開すれば取り下げが要り、NGでない写真を外しても、ディレクターが外した理由の一覧から戻せます。誤りの重さが左右で違うので、迷ったら外す側に寄せます。
| させないこと | 理由 |
|---|---|
| 写っている人物が誰かの判断 | 顔から人物を当てさせない。名前は時刻表から引く |
| 年齢・性別・表情からの印象の書き込み | キャプションに不要で、写っている人に失礼な記述になりうる |
| 公開してよいかの結論 | 肖像と権利の判断は人と顧客が行う |
| 写真の加工の提案 | NGの写り込みをぼかして使うかは顧客が決める |
| 写っていない内容の補い | 製品名やブースの名前を推し量って書かない |
1行目が、この構成の前提です。 キャプションに名前を入れたくなると、顔から当てさせたくなります。しかし、登壇者の名前はプログラムに書いてあり、撮影時刻で引けます。 AIに任せる理由がありません。
指示内容を固定する
あなたは広告・PR会社で、イベントの写真から広報用の候補を選ぶ前の
一次の仕分けをする立場です。渡された写真1枚と、下のイベントの情報だけを見てください。
【イベントの情報】
イベント名:{event_name}
撮影時刻の時間帯の演目:{program_slot}
撮影NGの一覧:{ng_list}
【書き出す項目】
1. scene:次のどれか1つ。stage(登壇)/venue(会場の全景)/booth(展示ブース)/
conversation(来場者との対話)/group(集合写真)/signage(受付・看板)/
product(製品の寄り)/other
2. defects:該当するものをすべて。blur(ピンぼけ・手ぶれ)/eyes_closed(主な人物の目つぶりのおそれ)/
exposure(露出の大きな失敗)/cropped_face(主な人物の顔が切れている)/needs_check(判断できない)
3. ng_hits:撮影NGの一覧の番号ごとに、写っているおそれがあれば、その番号と、写真のどこか(box_2d)
4. people_count:none/1-2/3-10/11+/many
5. attendee_face_prominent:登壇者以外で顔が大きく判別できる人がいるか(true/false)
6. description:見えている事実だけを、40字以内で
【厳守事項】
- 写っている人物が誰かを書かないでください。名前、所属、肩書を推し量らないでください。
- 年齢、性別、体形、表情からの印象を書かないでください。
- 撮影NGの目印が小さくて判断できないときは、写っているおそれがあるとしてください。
迷ったときに、写っていないとしないでください。
- 写りの不具合を判断できないときは needs_check を入れてください。
迷ったときに、不具合なしとしないでください。
- スクリーンや看板の文字は、読めた文字だけを description に書いてください。
読めない文字を補わないでください。
- 公開してよいか、良い写真かどうかは書かないでください。
「誰かを書かない」を最初に置いているのは、何も言わないと書くからです。 登壇の写真に演目の情報が付いていると、AIはその演目の登壇者の名前を説明に入れます。名前を入れるのは後段の規則で、時刻表から入れます。 AIの説明に名前が混ざると、どちらが根拠か分からなくなります。
連写の比べ合いでは、別の指示を使います。
次の写真は、同じ場面を数秒以内に続けて撮ったものです。
主な人物の目が開いているか、ピントが主な人物に合っているか、手ぶれが無いかの3点だけで、
良い順に並べてください。構図や好みでは並べないでください。
3点で差が無ければ、同じ順位にしてください。
撮影NGの一覧に当たるおそれがある写真は、順位を付けずに ng としてください。
「3点だけで並べる」と縛るのは、好みで並べさせないためです。 構図の良し悪しはディレクターが決めます。AIには、目・ピント・ぶれという、誰が見ても同じ答えになる点だけで比べさせます。
キャプションの案は、候補に残った写真だけに作ります。 渡すのは、AIが書いた場面の説明、時刻表から引いた演目と登壇者の名前・肩書、顧客ごとの表記の決まりです。「登壇者の名前は渡したものをそのまま使い、渡していない名前を書かない」「写真の説明に無いことを書かない」と指示します。
出力形式を固定する
次の形のJSONで受け取ります。 Gemini API の構造化出力で、/v1beta/interactions の response_format に mime_type: "application/json" とスキーマを指定します。
{
"file_id": "",
"scene": "stage | venue | booth | conversation | group | signage | product | other",
"defects": ["blur | eyes_closed | exposure | cropped_face | needs_check"],
"ng_hits": [
{ "ng_no": "NG1", "box_2d": [0, 0, 0, 0] }
],
"people_count": "none | 1-2 | 3-10 | 11+ | many",
"attendee_face_prominent": false,
"description": ""
}
1つ目の理由は、規則で候補を絞れることです。 defects が空で、ng_hits が空のものだけを候補にし、scene ごとに目安の枚数の2倍まで残します。規則は Apps Script の側にあるので、顧客ごとに目安を変えても指示は変わりません。
2つ目は、外した理由を残せることです。 選定表には、候補だけでなく、外した写真を defects と ng_hits の種類ごとに並べたシートを付けます。ディレクターは「目つぶりのおそれ」のシートだけを流し見て、戻すものを拾えます。
3つ目は、NGの場所が分かることです。 box_2d は、公式のページで [ymin, xmin, ymax, xmax] の順に、画像の大きさに対して0〜1000に正規化された座標とされています。元の画像の大きさに戻せば、ディレクターは写真のどこを拡大すればよいかが分かります。 公式のページは、JSONとして正しくても値は正しいとは限らず、アプリケーションの側で検証するよう案内しています。 座標が範囲外のときや、scene が決めた値以外のときは「要確認」に回します。
選定表に書き出す列は次のとおりです。
【選定表(候補のシート)】
| No | ファイル名 | 撮影時刻 | 場面 | 演目 | 場面の説明 | キャプションの案 | 来場者の顔 | 採否 | 直したキャプション |
| 12 | DSC_0412 | 13:05:22 | 登壇 | 基調講演 | 壇上で1人が話し、スクリーンに新製品の外観が映っている | 基調講演に登壇する〇〇株式会社 代表取締役社長 △△ △△ | なし | | | システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 共有ドライブ | Apps Script の Drive の拡張サービス | 写真の一覧と撮影時刻を取る。候補のショートカットを作る |
| イベント台帳 | スプレッドシートの読み書き | プログラム・撮影NG・目安を読む。処理の進み具合を書く |
| Gemini API | Apps Script の URL の取得(/v1beta/interactions) | 写真を渡し、構造化出力で受け取る |
| 選定表 | スプレッドシートへの書き出し | 候補、外した写真、キャプションの案 |
| 顧客への納品 | ディレクターが共有の設定をする | 選んだ写真の元の画像だけを納品のフォルダに入れる |
写真のファイルを動かしたり消したりはしません。 候補は、元の写真へのショートカットを候補のフォルダに作るだけにします。外した写真も元の場所に残るので、戻すときに探し直す必要がありません。
顧客への納品は人が行います。 選定表がそのまま顧客に届く設定にすると、NGのおそれを見落とした写真が人の確認を経ずに渡ります。
人が確認する
この構成では、納品する写真を全件、人が選びます。 AIが出すのは候補と外した理由で、どれを納品するかは決めません。
- 候補を場面ごとに見る … 目安の2倍まで残っている候補から、構図と場面の伝わり方で選びます
- 来場者の顔が大きく写った写真を確かめる …
attendee_face_prominentがtrueの写真は、撮影の告知の範囲で使ってよいかを確かめます - キャプションの名前と肩書を確かめる … 時刻表から入った名前が、写真の場面と合っているかを見ます。転換の時間の前後は特に見ます
- 外した理由の一覧を流し見る … 目つぶりのおそれ、要確認のシートから、戻せるものを拾います
- NGのおそれの写真は戻さない … 戻すなら、NGの目印が写っていないことを拡大して確かめた場合だけにします
2番目と3番目を省かないでください。 来場者の肖像の扱いと、登壇者の名前の取り違えは、顧客の広報の信頼にそのまま響きます。
目標は、1件あたり60分です。 600枚を見る時間が、候補の数十枚と外した理由の一覧を見る時間に置き換わります。
例外に対処する
| 起きること | 対応 |
|---|---|
| 縮小版が無く元の画像だけが置かれた | リクエストが20MBを超えうる。処理を止め、カメラマンに縮小版を頼む |
| RAW のファイルが混ざっている | 処理しない。台帳に件数を書き、現像して置き直してもらう |
| 撮影時刻が無い写真 | 演目を付けずに処理し、キャプションの名前は空欄にする |
| カメラの時計の補正が台帳に無い | 演目の突き合わせを行わず、キャプションの名前は人が入れる |
| 子どもが写っている | 対象外のイベントの写真が混ざったおそれ。そのイベントの処理を止め、担当に知らせる |
| Gemini API が混み合いの応答を返した | 少し待って再試行し、続けば次の定時実行に回す |
| 1回の実行が6分に近づいた | 処理中の写真で止め、台帳に続きの位置を書く |
| 構造化出力の値が決めた範囲の外 | その写真を「要確認」のシートに入れる |
5行目は、受注の段階で防ぎます。 この構成は来場者が社会人のイベントに限ります。Gemini API の規約は、18歳未満が利用するか、利用しうるサービスでの利用を認めていません。 子どもが来場しうるイベントは最初から対象外にし、従来どおり人が選びます。
2行目と3行目は、最初の数件で多く起きます。 書き出しの設定と時計の写真を、カメラマンの撮影の手順に入れておけば減ります。
記録を残す
- イベントごとの写真のファイルIDと、Gemini API が返したJSONの全文
- そのとき使ったプログラム、撮影NGの一覧、場面ごとの目安、時計の補正の値
- 連写のまとまりと、比べ合いの順位
- ディレクターが外した理由の一覧から戻した写真と、その理由
- ディレクターが直したキャプション … 元の案と直した後の文
- 顧客に納品した写真の一覧と、納品の日時
4行目と5行目は、指示を直す材料になります。 「目つぶりのおそれ」から戻す写真が多ければ、伏し目を目つぶりと取り違えています。直したキャプションに同じ型が続けば、顧客ごとの表記の決まりが足りません。
JSONと納品の一覧は、顧客の問い合わせに答える記録です。 「あの場面の写真は無いのか」と聞かれたときに、撮っていなかったのか、NGで外したのかを示せます。
04実装レベルの3段階
最小構成では、1件600枚には使えません。 指示が効くかを確かめる段階です。 半自動化で、1件180分が100分程度になります。 使えない写真を外す作業は無くなりますが、連写の中から選ぶ作業と、名前の確認とキャプションが残ります。本格構成で60分になり、これが本記事の想定です。 差が大きいのは、時刻表との突き合わせで名前の確認が速くなり、キャプションが案から始められるからです。 段階を飛ばさないでください。 半自動化の選定表を数件分見て、撮影NGの書き方と場面ごとの目安を固めてから絞り込みの規則を入れます。
05工数削減シミュレーション
導入後 12件 × 60分 ÷ 60 = 12 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 顧客企業の展示会・セミナー・記者発表・周年式典などの運営と撮影を請け負い、イベントの翌日から数日以内に「広報に使える写真のセレクトとキャプション」を納品している広告・PR会社。1回のイベントで数百枚の写真が届き、PRディレクターが1枚ずつ見て選んでいるため、納品が遅れたり、選ぶ人によって場面の偏りや撮影NGの見落としが出たりする場合。写真を Google ドライブで受け渡しており、イベントごとにプログラム(時刻表)と撮影NGの一覧を顧客から受け取っている場合。
- 1回のイベントの写真が数十枚で、目で見て選び切れる場合。子どもが来場しうるイベント(ファミリーデー、一般向けの祭事、学校向けの催し)の写真を扱う場合(この構成では対象外にします)。報道写真のように、写真の選定そのものが表現の判断で、候補の絞り込みを機械に任せる余地が無い場合。なお、どの写真を公開してよいかという肖像と権利の判断、顧客の広報方針に合うかの判断は、この構成では代替できません。
07最小構成で試す方法
- 過去のイベントを1件選び、写真のうち100枚を抜き出す(撮影NGの目印が写っている写真と、目つぶりの写真を数枚ずつ含める)
- そのイベントで実際に納品したセレクトと、当時の選定表を用意する
- Google AI Studio で、撮影NGの一覧と第7章の指示を貼り、写真を10枚ずつ渡す
- 写真ごとの場面の種類、不具合、NGのおそれ、説明を表にまとめる
- 当時のセレクトと突き合わせ、AIが外した写真に、当時納品したものが入っていないかを見る
NGの目印が写った写真は必ず入れてください。 引きの写真の小さなリボンを「おそれあり」にできるかが、この構成が使えるかの分かれ目です。
| 出てきた内容 | 判断 |
|---|---|
| NGの目印が写った写真をすべて「おそれあり」にした | Apps Script の連携に進む |
| 当時納品した写真が「不具合」で外された | 指示の不具合の定義を直す。構成は有効 |
| 引きの写真の小さな目印を見落とした | media_resolution を上げるか、縮小版の大きさを見直す |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 引きの写真の小さなNGの目印を見落とす | 1枚ずつは high で渡し、迷ったら「おそれあり」と指示する |
| 説明に登壇者の名前が混ざる | 「誰かを書かない」を指示の最初に置き、名前は時刻表から入れる |
| キャプションの名前が隣の演目の人になる | カメラの時計を補正する。 転換の前後は人が確かめる |
| 連写の比べ合いが好みで並ぶ | 目・ピント・ぶれの3点だけで並べると縛る |
| 1回の実行が6分を超えて止まる | 1回40枚までにし、続きの位置を台帳に書く |
| 元の画像を渡してリクエストが大きすぎる | 縮小版を書き出してもらう |
| 伏し目を目つぶりと取り違える | 外した理由の一覧から戻せるようにし、戻した数を数える |
| 場面の候補が偏る | 場面ごとの目安を台帳に持ち、目安の2倍まで残す |
| 子どもが写った写真が混ざる | 対象のイベントを受注の段階で限る |
上の2行が、この構成の失敗のほとんどです。 迷ったときに倒す向きと、名前の出どころを決めておけば防げます。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 来場者と登壇者の顔が写った写真、顧客企業の発表前の製品、受付の画面や名札です。写真に写った人の顔は、個人を識別できる情報です。
- 無料の枠で顧客の写真を扱わない … Gemini API の規約では、無料のサービスに送った内容は製品の改善に使われ、人が読む場合があるとされ、機微な情報や個人の情報を送らないよう求めています。有料のサービスでは、プロンプトと応答を製品の改善に使わないとされています。本番は有料の利用にします
- 18歳未満が関わるイベントを対象にしない … 規約は、18歳未満を対象とするか、18歳未満が利用しうるサービスでの利用を認めていません。子どもが来場しうるイベントの写真は、この構成に入れません
- 顔から人物を当てさせない … 名前は時刻表から入れます。来場者を特定する仕組みを作らないことが、来場者への説明にもなります
- 撮影の告知と同意の範囲を守る … 来場者に告知した撮影の目的と、顧客の広報の使い道が合っているかは、顧客と決めます。来場者の顔が大きく写った写真は、使う前に人が確かめます
- 発表前の製品を外に出さない … NGの展示物が写った写真は候補から外し、納品のフォルダにも入れません
誤りが起きた場合のリスクは、撮影NGの写真を公開することと、キャプションの名前を取り違えることの2つです。 前者は迷ったら外す向きと人の確認で、後者は時刻表を名前の出どころにすることで防ぎます。
10まず何から始めるか
1週目:受注の決まりを作る
イベントの前日までに、プログラム、撮影NGの一覧(目で見て分かる特徴で)、場面ごとの枚数の目安を顧客から受け取ることを、受注の決まりにします。子どもが来場しうるイベントは対象外にすることも決めます。
2週目:100枚で試す
過去のイベントの写真100枚を AI Studio に渡し、場面・不具合・NGのおそれを表にさせます。NGの目印が写った写真をすべて「おそれあり」にできたかを最優先で見ます。
3週目:カメラマンの手順を変える
縮小版の書き出しと、撮影の始めの時計の1枚を撮影の手順書に入れます。社外のカメラマンにも伝えます。
4週目:Apps Script で全写真を処理する
台帳の状態を見て写真を40枚ずつ処理し、場面と外した理由を選定表に書き出すところまで作ります。この段階では、候補の絞り込みは人が行います。
2か月目: 撮影時刻と時刻表の突き合わせ、連写の比べ合い、目安による絞り込みを足します。3か月目以降: キャプションの案を足し、1件180分が何分になったかを実測します。外した理由の一覧から戻す写真が減り、イベントの翌朝に候補がそろうようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
対応する画像の形式が PNG、JPEG、WEBP、HEIC、HEIF であること。画像を直接入れる場合、指示などと合わせたリクエスト全体が20MBまでであること。1回のリクエストに3,600枚まで画像を入れられること。位置を box_2d として [ymin, xmin, ymax, xmax] の0〜1000の座標で返すこと。例が /v1beta/interactions を使っていること | Gemini API: Image understanding | 2026-10-14 |
画像1枚に割り当てるトークンの上限を media_resolution で選べること(low・medium・high・ultra_high)。Gemini 3 以降の目安が low 280、medium 560、high 1120トークンであること。多くの画像の分析に high が勧められていること | Gemini API: Media resolution | 2026-10-14 |
構造化出力を /v1beta/interactions の response_format に mime_type: "application/json" とスキーマを入れて指定すること。enum と required が使えること。JSONとして正しくても値はアプリケーションの側で検証するよう案内されていること | Gemini API: Structured output | 2026-10-14 |
| 18歳未満を対象とするか、18歳未満が利用しうるサービスでの利用を認めていないこと。無料のサービスに送った内容が製品の改善に使われ人が読む場合があり、機微な情報や個人の情報を送らないよう求めていること。有料のサービスではプロンプトと応答を製品の改善に使わないこと | Gemini API Additional Terms of Service | 2026-10-14 |
| Apps Script の1回の実行が6分までであること。Google Workspace のアカウントで、定時実行の合計が1日6時間、URL の取得が1日10万回までであること | Apps Script: Quotas for Google Services | 2026-10-14 |
Drive API のファイルの情報に imageMediaMetadata があり、time が撮影日時(EXIF の DateTime)、cameraModel がカメラの機種、rotation が回転の回数であること | Google Drive API: REST Resource files | 2026-10-14 |
どの写真を公開してよいか、来場者の肖像をどう扱うかは、顧客の広報担当と自社の責任者が決めてください。 本記事は公開されている製品の仕様で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1494)についてのご相談はこちらから。
