Media > AI活用ユースケース > マーケティング > 企業イベントで撮った大量の写真から、広報に使える写真の候補を選び、写っている場面の説明とキャプションの案を付ける

企業イベントで撮った大量の写真から、広報に使える写真の候補を選び、写っている場面の説明とキャプションの案を付ける

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

イベントで撮った数百枚の写真を1枚ずつAIに見せ、場面の種類、ぶれや目つぶり、撮影NGの写り込みを見分けます。そのうえで場面ごとに広報に使える候補を絞り、場面の説明とキャプションの案を付けた選定表を作ります。

サマリー
生成AI
ChatGPT/Claude/Gemini
連携・自動化
Google Apps Script/Make/Power Automate
対象業界
IT・SaaS/不動産/広告/製造
対象部門
マーケティング
対象業務
分類・仕分け/書類作成
主な課題
人手が足りない/属人化している/確認ミスが多い
AIで行う処理
画像認識
主な効果
品質標準化/対応スピード向上/工数削減
導入難易度
★★☆☆☆
実装レベル
本格構成
費用感
API連携(中)
人間の確認
必須
現在工数
36h/月
AI導入後
12h/月
想定削減
67%
年間削減
288h
モデル条件による試算値です。実在企業の実績ではありません。

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

導入前(Before)
  1. カメラマンが撮影後に現像し、共有ドライブのイベントのフォルダに JPEG を置く
  2. PRディレクターがフォルダを開き、写真を1枚ずつ見て、使えないもの(ぶれ、目つぶり、露出の失敗)を飛ばす
  3. 使えそうなものに印を付け、場面(登壇、会場の全景、ブース、来場者との対話、集合写真、製品の寄り)ごとに頭の中で数を数える
  4. 撮影NGの来場者や、撮らない取り決めの展示台が写っていないかを、候補の写真で拡大して確かめる
  5. 候補を20枚から40枚に絞り、プログラムを見ながら登壇者の名前と肩書を確かめる
  6. 1枚ずつ場面の説明とキャプションの案を書き、スプレッドシートの選定表にまとめる
  7. 選定表とセレクトのフォルダを顧客の広報担当へ送る
導入後(After)
  1. 人イベントの前日までに、担当のディレクターがイベント台帳(スプレッドシート)に、プログラムと撮影NGの一覧、場面ごとの枚数の目安を入れる
  2. 人カメラマンが現像した JPEG を、選定用の縮小版とともにイベントのフォルダに置き、台帳の状態を「選定開始」にする
  3. 自動Google Apps Script が定時に台帳を見て、選定開始のイベントの写真を少しずつ処理する
  4. 自動写真ごとに撮影時刻を取り、プログラムと突き合わせて「その時間帯の演目と登壇者」を引く
  5. 自動Gemini API に写真と演目の情報を渡し、場面の種類、写りの不具合、撮影NGの写り込みのおそれ、場面の説明を受け取る
  6. 自動数秒以内に続けて撮られた写真を連写のまとまりにし、まとまりごとに Gemini API で写りの良い順に並べる
  7. 自動規則で候補を絞る(不具合とNGのおそれがあるものを外し、場面ごとの目安の2倍まで残す)
  8. 自動候補ごとにキャプションの案を作り、選定表に書き出す
  9. 人ディレクターが選定表と候補の写真を見て、20枚から40枚を選び、キャプションを直す
  10. 人外した写真の中に使えるものが無いかを、外した理由ごとに流し見る
  11. 人顧客の広報担当に選定表とセレクトのフォルダを送る
各工程の詳しい説明を読む
  1. カメラマンが撮影後に現像し、共有ドライブのイベントのフォルダに JPEG を置く
  2. PRディレクターがフォルダを開き、写真を1枚ずつ見て、使えないもの(ぶれ、目つぶり、露出の失敗)を飛ばす
  3. 使えそうなものに印を付け、場面(登壇、会場の全景、ブース、来場者との対話、集合写真、製品の寄り)ごとに頭の中で数を数える
  4. 撮影NGの来場者や、撮らない取り決めの展示台が写っていないかを、候補の写真で拡大して確かめる
  5. 候補を20枚から40枚に絞り、プログラムを見ながら登壇者の名前と肩書を確かめる
  6. 1枚ずつ場面の説明とキャプションの案を書き、スプレッドシートの選定表にまとめる
  7. 選定表とセレクトのフォルダを顧客の広報担当へ送る

(a)600枚を見るだけで時間が尽きる。 1枚に数秒でも、600枚なら1時間近くかかります。イベントが同じ週に重なると、翌営業日の夕方という納期に間に合わせるために、後半の写真ほど速く流し見ることになります。 後半に撮られた懇親会や集合写真から良い1枚が漏れます。

(b)選ぶ人で場面が偏る。 登壇の写真ばかりが並ぶ、ブースの写真が来場者の後ろ姿ばかりになる、といった偏りが、ディレクターごとに違う形で出ます。顧客は使い道ごとに場面をそろえたいので、「対話している場面がもう2枚ほしい」と戻ってきます。

(c)撮影NGを見落とす。 赤いリボンは胸元の小さな印で、引きの写真では数ピクセルです。候補にした写真を拡大して確かめるつもりでも、急いでいる週には漏れます。 顧客がSNSに載せてから気づくと、取り下げと来場者へのお詫びが要ります。

(d)キャプションの名前を取り違える。 登壇者が続くセミナーでは、どの写真が誰の登壇かを記憶で書くと取り違えます。

  1. 【人】 イベントの前日までに、担当のディレクターがイベント台帳(スプレッドシート)に、プログラムと撮影NGの一覧、場面ごとの枚数の目安を入れる
  2. 【人】 カメラマンが現像した JPEG を、選定用の縮小版とともにイベントのフォルダに置き、台帳の状態を「選定開始」にする
  3. 【自動】 Google Apps Script が定時に台帳を見て、選定開始のイベントの写真を少しずつ処理する
  4. 【自動】 写真ごとに撮影時刻を取り、プログラムと突き合わせて「その時間帯の演目と登壇者」を引く
  5. 【自動】 Gemini API に写真と演目の情報を渡し、場面の種類、写りの不具合、撮影NGの写り込みのおそれ、場面の説明を受け取る
  6. 【自動】 数秒以内に続けて撮られた写真を連写のまとまりにし、まとまりごとに Gemini API で写りの良い順に並べる
  7. 【自動】 規則で候補を絞る(不具合とNGのおそれがあるものを外し、場面ごとの目安の2倍まで残す)
  8. 【自動】 候補ごとにキャプションの案を作り、選定表に書き出す
  9. 【人】 ディレクターが選定表と候補の写真を見て、20枚から40枚を選び、キャプションを直す
  10. 【人】 外した写真の中に使えるものが無いかを、外した理由ごとに流し見る
  11. 【人】 顧客の広報担当に選定表とセレクトのフォルダを送る

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どうやって実装するのか

Step1

処理の起点を決める

イベント台帳の状態が「選定開始」になったことを起点にします。 写真のフォルダへの追加を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件ずつ処理します。

Step2

入力データを集める

データ中身取得元
選定用の縮小版の写真長辺2,048ピクセルの JPEG。ファイル名、撮影時刻共有ドライブのイベントのフォルダ
プログラム(時刻表)開始・終了の時刻、演目、登壇者の名前と肩書、会場(ホール・ブース)イベント台帳
撮影NGの一覧NGの目印(リボンの色など)、撮らない展示物の特徴、写してはいけない画面イベント台帳
場面ごとの枚数の目安登壇8、全景4、ブース6、対話6、集合2、製品の寄り4 などイベント台帳
キャプションの書き方顧客ごとの表記(社名、製品名の正式な書き方、敬称の付け方)イベント台帳

質を決めるのは、2行目と3行目です。 プログラムが無ければ、キャプションの名前は空欄になります。撮影NGの一覧が無ければ、AIは何を探せばよいか分かりません。どちらも顧客から受け取る資料なので、イベントの前日までに台帳に入れることを受注の条件にします。

撮影NGの一覧は、目で見て分かる特徴で書きます。 「撮影を望まない人」では探せません。「胸元に赤いリボン」「白い布をかけた展示台」「受付のノートパソコンの画面」のように書きます。

【撮影NGの一覧(例)】
NG1:胸元に赤いリボンを付けた来場者の顔がはっきり写っている
NG2:白い布をかけた展示台(発表前の試作機)が写っている
NG3:報道受付のノートパソコンの画面が読める
NG4:他社のブースのロゴが主役になっている
Step3

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

取るものどこから何に使うか
写真の一覧と撮影時刻Drive の拡張サービスで、フォルダ内のファイルの imageMediaMetadata.time撮った順の並び、時刻表との突き合わせ、連写のまとまり
写真の中身選定用の縮小版のファイルGemini API に直接入れる
演目と登壇者台帳のプログラムの表撮影時刻から演目を引き、キャプションに入れる
撮影NGと書き方台帳のイベントの行指示に埋め込む

写真は選定用の縮小版を使います。 現像した元の画像は1枚10MBを超えることがあり、指示と合わせて20MBというリクエストの上限に近づきます。 カメラマンには、現像のときに元の画像と、長辺2,048ピクセルの縮小版の2つを書き出してもらいます。 選定表から納品するときは、同じファイル名の元の画像を使います。

撮影時刻はカメラの時計に依存します。 カメラの時計が5分ずれていれば、演目の突き合わせも5分ずれます。撮影の始めに会場の時計を1枚撮ることをカメラマンの決まりにし、その1枚の撮影時刻と写っている時計の差を台帳に入れて補正します。複数のカメラマンがいれば、カメラごとに補正します(カメラの機種は imageMediaMetadata.cameraModel で分けられます)。

Step4

AIへ渡す前に整形する

  1. ファイルの形式の確認 … JPEG・PNG・HEIC 以外(RAW など)は処理せず、台帳に件数を書きます
  2. 撮影時刻の補正 … カメラごとの時計のずれを足し引きします
  3. 演目の付与 … 補正した時刻がプログラムのどの演目の時間帯に入るかを引きます。休憩や転換の時間は「演目なし」にします
  4. 連写のまとまり … 同じカメラで3秒以内に続けて撮られた写真を、1つのまとまりにします
  5. 写真の向き … imageMediaMetadata.rotation を見て、横向きのまま渡さないようにします
  6. 処理済みの印 … 処理を終えた写真のファイルIDを台帳の作業用のシートに書き、二重に処理しません

4番目の連写のまとまりが、費用と手間の両方に効きます。 登壇の場面では、同じ構図で10枚近く続けて撮ることがよくあります。まとまりごとに比べて上位の2枚だけを候補に残せば、人が見る枚数はさらに減ります。

Step5

AIに処理させる

させるのは、写真に写っている事実を決まった項目で書き出すことだけです。 写真の良し悪しの総合点は付けさせません。

見るもの見方判断できないときの扱い
場面の種類登壇/会場の全景/展示ブース/来場者との対話/集合写真/受付・看板/製品の寄り/その他迷えば「その他」
写りの不具合ピンぼけ・手ぶれ、主な人物の目つぶりのおそれ、露出の大きな失敗、主な人物の顔が切れている判断できなければ「不具合なし」にせず「要確認」
撮影NGの写り込み一覧の目印ごとに、写っているおそれがあるか。あれば写真のどこか小さくて判断できなければ「おそれあり」
写っている人数のめやす0/1〜2/3〜10/11以上数えられなければ「多数」
来場者の顔が大きく写っているか登壇者以外で、顔が画面の中で大きく判別できる人がいるか迷えば「はい」
場面の説明見えている事実だけ(壇上で1人が話している、スクリーンに製品の写真が映っている など)-

撮影NGの判断を「おそれあり」に倒すのが、この表でいちばん大事な点です。 NGの来場者が写った写真を公開すれば取り下げが要り、NGでない写真を外しても、ディレクターが外した理由の一覧から戻せます。誤りの重さが左右で違うので、迷ったら外す側に寄せます。

させないこと理由
写っている人物が誰かの判断顔から人物を当てさせない。名前は時刻表から引く
年齢・性別・表情からの印象の書き込みキャプションに不要で、写っている人に失礼な記述になりうる
公開してよいかの結論肖像と権利の判断は人と顧客が行う
写真の加工の提案NGの写り込みをぼかして使うかは顧客が決める
写っていない内容の補い製品名やブースの名前を推し量って書かない

1行目が、この構成の前提です。 キャプションに名前を入れたくなると、顔から当てさせたくなります。しかし、登壇者の名前はプログラムに書いてあり、撮影時刻で引けます。 AIに任せる理由がありません。

Step6

指示内容を固定する

あなたは広告・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が書いた場面の説明、時刻表から引いた演目と登壇者の名前・肩書、顧客ごとの表記の決まりです。「登壇者の名前は渡したものをそのまま使い、渡していない名前を書かない」「写真の説明に無いことを書かない」と指示します。

Step7

出力形式を固定する

次の形の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人が話し、スクリーンに新製品の外観が映っている | 基調講演に登壇する〇〇株式会社 代表取締役社長 △△ △△ | なし | | |
Step8

システムへ連携する

つなぎ先方式内容
共有ドライブApps Script の Drive の拡張サービス写真の一覧と撮影時刻を取る。候補のショートカットを作る
イベント台帳スプレッドシートの読み書きプログラム・撮影NG・目安を読む。処理の進み具合を書く
Gemini APIApps Script の URL の取得(/v1beta/interactions)写真を渡し、構造化出力で受け取る
選定表スプレッドシートへの書き出し候補、外した写真、キャプションの案
顧客への納品ディレクターが共有の設定をする選んだ写真の元の画像だけを納品のフォルダに入れる

写真のファイルを動かしたり消したりはしません。 候補は、元の写真へのショートカットを候補のフォルダに作るだけにします。外した写真も元の場所に残るので、戻すときに探し直す必要がありません。

顧客への納品は人が行います。 選定表がそのまま顧客に届く設定にすると、NGのおそれを見落とした写真が人の確認を経ずに渡ります。

Step9

人が確認する

この構成では、納品する写真を全件、人が選びます。 AIが出すのは候補と外した理由で、どれを納品するかは決めません。

  1. 候補を場面ごとに見る … 目安の2倍まで残っている候補から、構図と場面の伝わり方で選びます
  2. 来場者の顔が大きく写った写真を確かめる … attendee_face_prominent が true の写真は、撮影の告知の範囲で使ってよいかを確かめます
  3. キャプションの名前と肩書を確かめる … 時刻表から入った名前が、写真の場面と合っているかを見ます。転換の時間の前後は特に見ます
  4. 外した理由の一覧を流し見る … 目つぶりのおそれ、要確認のシートから、戻せるものを拾います
  5. NGのおそれの写真は戻さない … 戻すなら、NGの目印が写っていないことを拡大して確かめた場合だけにします

2番目と3番目を省かないでください。 来場者の肖像の扱いと、登壇者の名前の取り違えは、顧客の広報の信頼にそのまま響きます。

目標は、1件あたり60分です。 600枚を見る時間が、候補の数十枚と外した理由の一覧を見る時間に置き換わります。

Step10

例外に対処する

起きること対応
縮小版が無く元の画像だけが置かれたリクエストが20MBを超えうる。処理を止め、カメラマンに縮小版を頼む
RAW のファイルが混ざっている処理しない。台帳に件数を書き、現像して置き直してもらう
撮影時刻が無い写真演目を付けずに処理し、キャプションの名前は空欄にする
カメラの時計の補正が台帳に無い演目の突き合わせを行わず、キャプションの名前は人が入れる
子どもが写っている対象外のイベントの写真が混ざったおそれ。そのイベントの処理を止め、担当に知らせる
Gemini API が混み合いの応答を返した少し待って再試行し、続けば次の定時実行に回す
1回の実行が6分に近づいた処理中の写真で止め、台帳に続きの位置を書く
構造化出力の値が決めた範囲の外その写真を「要確認」のシートに入れる

5行目は、受注の段階で防ぎます。 この構成は来場者が社会人のイベントに限ります。Gemini API の規約は、18歳未満が利用するか、利用しうるサービスでの利用を認めていません。 子どもが来場しうるイベントは最初から対象外にし、従来どおり人が選びます。

2行目と3行目は、最初の数件で多く起きます。 書き出しの設定と時計の写真を、カメラマンの撮影の手順に入れておけば減ります。

Step11

記録を残す

  • イベントごとの写真のファイルIDと、Gemini API が返したJSONの全文
  • そのとき使ったプログラム、撮影NGの一覧、場面ごとの目安、時計の補正の値
  • 連写のまとまりと、比べ合いの順位
  • ディレクターが外した理由の一覧から戻した写真と、その理由
  • ディレクターが直したキャプション … 元の案と直した後の文
  • 顧客に納品した写真の一覧と、納品の日時

4行目と5行目は、指示を直す材料になります。 「目つぶりのおそれ」から戻す写真が多ければ、伏し目を目つぶりと取り違えています。直したキャプションに同じ型が続けば、顧客ごとの表記の決まりが足りません。

JSONと納品の一覧は、顧客の問い合わせに答える記録です。 「あの場面の写真は無いのか」と聞かれたときに、撮っていなかったのか、NGで外したのかを示せます。

04実装レベルの3段階

最小構成:AI Studio に写真を手で渡し、場面・不具合・NGのおそれを表にさせる / 一部の写真の一次の仕分け
半自動化:上記+Apps Script で全写真を処理し、場面と外した理由を選定表に書き出す / 全写真の仕分けと候補の一覧
本格構成:上記+撮影時刻と時刻表の突き合わせ、連写の比べ合い、目安による絞り込み、キャプションの案まで出す / 候補の絞り込みからキャプションの案まで

最小構成では、1件600枚には使えません。 指示が効くかを確かめる段階です。 半自動化で、1件180分が100分程度になります。 使えない写真を外す作業は無くなりますが、連写の中から選ぶ作業と、名前の確認とキャプションが残ります。本格構成で60分になり、これが本記事の想定です。 差が大きいのは、時刻表との突き合わせで名前の確認が速くなり、キャプションが案から始められるからです。 段階を飛ばさないでください。 半自動化の選定表を数件分見て、撮影NGの書き方と場面ごとの目安を固めてから絞り込みの規則を入れます。

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

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

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

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

AI活用について相談する

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

向いている
  1. 顧客企業の展示会・セミナー・記者発表・周年式典などの運営と撮影を請け負い、イベントの翌日から数日以内に「広報に使える写真のセレクトとキャプション」を納品している広告・PR会社。1回のイベントで数百枚の写真が届き、PRディレクターが1枚ずつ見て選んでいるため、納品が遅れたり、選ぶ人によって場面の偏りや撮影NGの見落としが出たりする場合。写真を Google ドライブで受け渡しており、イベントごとにプログラム(時刻表)と撮影NGの一覧を顧客から受け取っている場合。
向いていない
  1. 1回のイベントの写真が数十枚で、目で見て選び切れる場合。子どもが来場しうるイベント(ファミリーデー、一般向けの祭事、学校向けの催し)の写真を扱う場合(この構成では対象外にします)。報道写真のように、写真の選定そのものが表現の判断で、候補の絞り込みを機械に任せる余地が無い場合。なお、どの写真を公開してよいかという肖像と権利の判断、顧客の広報方針に合うかの判断は、この構成では代替できません。

07最小構成で試す方法

  1. 過去のイベントを1件選び、写真のうち100枚を抜き出す(撮影NGの目印が写っている写真と、目つぶりの写真を数枚ずつ含める)
  2. そのイベントで実際に納品したセレクトと、当時の選定表を用意する
  3. Google AI Studio で、撮影NGの一覧と第7章の指示を貼り、写真を10枚ずつ渡す
  4. 写真ごとの場面の種類、不具合、NGのおそれ、説明を表にまとめる
  5. 当時のセレクトと突き合わせ、AIが外した写真に、当時納品したものが入っていないかを見る

NGの目印が写った写真は必ず入れてください。 引きの写真の小さなリボンを「おそれあり」にできるかが、この構成が使えるかの分かれ目です。

出てきた内容判断
NGの目印が写った写真をすべて「おそれあり」にしたApps Script の連携に進む
当時納品した写真が「不具合」で外された指示の不具合の定義を直す。構成は有効
引きの写真の小さな目印を見落としたmedia_resolution を上げるか、縮小版の大きさを見直す

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

問題対策
引きの写真の小さなNGの目印を見落とす1枚ずつは high で渡し、迷ったら「おそれあり」と指示する
説明に登壇者の名前が混ざる「誰かを書かない」を指示の最初に置き、名前は時刻表から入れる
キャプションの名前が隣の演目の人になるカメラの時計を補正する。 転換の前後は人が確かめる
連写の比べ合いが好みで並ぶ目・ピント・ぶれの3点だけで並べると縛る
1回の実行が6分を超えて止まる1回40枚までにし、続きの位置を台帳に書く
元の画像を渡してリクエストが大きすぎる縮小版を書き出してもらう
伏し目を目つぶりと取り違える外した理由の一覧から戻せるようにし、戻した数を数える
場面の候補が偏る場面ごとの目安を台帳に持ち、目安の2倍まで残す
子どもが写った写真が混ざる対象のイベントを受注の段階で限る

上の2行が、この構成の失敗のほとんどです。 迷ったときに倒す向きと、名前の出どころを決めておけば防げます。

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

この構成で扱うデータ: 来場者と登壇者の顔が写った写真、顧客企業の発表前の製品、受付の画面や名札です。写真に写った人の顔は、個人を識別できる情報です。

  1. 無料の枠で顧客の写真を扱わない … Gemini API の規約では、無料のサービスに送った内容は製品の改善に使われ、人が読む場合があるとされ、機微な情報や個人の情報を送らないよう求めています。有料のサービスでは、プロンプトと応答を製品の改善に使わないとされています。本番は有料の利用にします
  2. 18歳未満が関わるイベントを対象にしない … 規約は、18歳未満を対象とするか、18歳未満が利用しうるサービスでの利用を認めていません。子どもが来場しうるイベントの写真は、この構成に入れません
  3. 顔から人物を当てさせない … 名前は時刻表から入れます。来場者を特定する仕組みを作らないことが、来場者への説明にもなります
  4. 撮影の告知と同意の範囲を守る … 来場者に告知した撮影の目的と、顧客の広報の使い道が合っているかは、顧客と決めます。来場者の顔が大きく写った写真は、使う前に人が確かめます
  5. 発表前の製品を外に出さない … 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技術仕様の確認日・参考情報

技術仕様確認日:2026-10-14/最終更新:2026-10-14
確認した内容情報源確認日
対応する画像の形式が PNG、JPEG、WEBP、HEIC、HEIF であること。画像を直接入れる場合、指示などと合わせたリクエスト全体が20MBまでであること。1回のリクエストに3,600枚まで画像を入れられること。位置を box_2d として [ymin, xmin, ymax, xmax] の0〜1000の座標で返すこと。例が /v1beta/interactions を使っていることGemini API: Image understanding2026-10-14
画像1枚に割り当てるトークンの上限を media_resolution で選べること(low・medium・high・ultra_high)。Gemini 3 以降の目安が low 280、medium 560、high 1120トークンであること。多くの画像の分析に high が勧められていることGemini API: Media resolution2026-10-14
構造化出力を /v1beta/interactions の response_format に mime_type: "application/json" とスキーマを入れて指定すること。enum と required が使えること。JSONとして正しくても値はアプリケーションの側で検証するよう案内されていることGemini API: Structured output2026-10-14
18歳未満を対象とするか、18歳未満が利用しうるサービスでの利用を認めていないこと。無料のサービスに送った内容が製品の改善に使われ人が読む場合があり、機微な情報や個人の情報を送らないよう求めていること。有料のサービスではプロンプトと応答を製品の改善に使わないことGemini API Additional Terms of Service2026-10-14
Apps Script の1回の実行が6分までであること。Google Workspace のアカウントで、定時実行の合計が1日6時間、URL の取得が1日10万回までであることApps Script: Quotas for Google Services2026-10-14
Drive API のファイルの情報に imageMediaMetadata があり、time が撮影日時(EXIF の DateTime)、cameraModel がカメラの機種、rotation が回転の回数であることGoogle Drive API: REST Resource files2026-10-14

どの写真を公開してよいか、来場者の肖像をどう扱うかは、顧客の広報担当と自社の責任者が決めてください。 本記事は公開されている製品の仕様で確認できた範囲だけを扱っています。

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

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

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

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