Media > AI活用ユースケース > 総務 > 自治体のホームページの更新原稿を、画像の代替テキスト・表の作り・リンクの文言・PDFだけの掲載といったアクセシビリティの観点で公開前に校正する

自治体のホームページの更新原稿を、画像の代替テキスト・表の作り・リンクの文言・PDFだけの掲載といったアクセシビリティの観点で公開前に校正する

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

各課が Google ドキュメントで書いたホームページの更新原稿を、公開前に読み、画像の代替テキスト・表の作り・リンクの文言・PDFだけの掲載を校正します。指摘を根拠の達成基準付きの一覧にして、原稿の担当者に返します。

サマリー
生成AI
ChatGPT/Claude/Gemini
連携・自動化
Google Apps Script/Python
対象業界
医療/教育/自治体
対象部門
総務
対象業務
内容確認・チェック
主な課題
人手が足りない/属人化している/確認ミスが多い
AIで行う処理
校正
主な効果
入力漏れ削減/品質標準化/工数削減
導入難易度
★★☆☆☆
実装レベル
半自動化
費用感
API連携(中)
人間の確認
条件付き
現在工数
45h/月
AI導入後
15h/月
想定削減
67%
年間削減
360h
モデル条件による試算値です。実在企業の実績ではありません。

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

導入前(Before)
  1. 各課の職員が原稿を Google ドキュメントで書き、共有ドライブの受付のフォルダに置き、広報課にメールで知らせる
  2. ウェブの担当が原稿を開き、画像を1枚ずつ見て、代替テキストが入っているか、中身が画像に合っているかを見る
  3. 表を見て、セルの結合や、見出しの無い表、見た目を整えるための表がないかを見る
  4. リンクの文言とリンク先を見て、「こちら」だけのリンクや、PDFだけで情報を出しているものがないかを見る
  5. 「赤字の日は休館」のような色だけに頼った説明や、「氏 名」のような字間の空白がないかを見る
  6. 気づいた点をメールに書いて各課に返し、直った原稿をもう一度開く
  7. 問題がなければ CMS に入力して公開する
導入後(After)
  1. 人各課の職員が原稿を Google ドキュメントで書き、共有ドライブの受付のフォルダに置く
  2. 自動15分ごとに Google Apps Script が受付のフォルダを見て、新しい原稿を拾う
  3. 自動スクリプトが原稿の画像・表・リンク・本文を読み、代替テキストの空、セルの結合、PDF へのリンク、字間の空白を機械的に拾う
  4. 自動スクリプトが画像と代替テキストと前後の段落、リンクの文言と前後の文を Claude API に送り、中身の判定を受け取る
  5. 自動スクリプトが指摘を点検台帳のスプレッドシートに書き、原稿の担当者に一覧をメールで送る
  6. 人原稿の担当者が直し、受付のフォルダに置き直す
  7. 人ウェブの担当が、点検台帳で「要確認」の指摘と、直った原稿を確かめ、CMS に入力して公開する
各工程の詳しい説明を読む
  1. 各課の職員が原稿を Google ドキュメントで書き、共有ドライブの受付のフォルダに置き、広報課にメールで知らせる
  2. ウェブの担当が原稿を開き、画像を1枚ずつ見て、代替テキストが入っているか、中身が画像に合っているかを見る
  3. 表を見て、セルの結合や、見出しの無い表、見た目を整えるための表がないかを見る
  4. リンクの文言とリンク先を見て、「こちら」だけのリンクや、PDFだけで情報を出しているものがないかを見る
  5. 「赤字の日は休館」のような色だけに頼った説明や、「氏 名」のような字間の空白がないかを見る
  6. 気づいた点をメールに書いて各課に返し、直った原稿をもう一度開く
  7. 問題がなければ CMS に入力して公開する

(a)代替テキストの抜けが公開後に見つかる。 画像が多い原稿ほど、1枚ずつ代替テキストの欄を開く手間がかかり、急ぐと省かれます。 年に1回の試験で、公開済みのページの抜けがまとめて見つかります。

(b)「こちら」のリンクが減らない。 「申請書はこちら」「詳しくはこちら」は、原稿を書く職員にとってはいちばん自然な書き方です。毎回指摘しても、次の原稿では別の課の職員が同じ書き方をしてきます。

(c)PDFだけの掲載が止まらない。 計画書やチラシを PDF で付け、本文は「詳しくは添付の PDF をご覧ください」だけ、という原稿が届きます。スキャンした画像の PDF だと、読み上げソフトで内容を読み取れません。

(d)点検の目が担当者によって違う。 3名のうち、アクセシビリティの研修を受けた1名は表の結合まで見ますが、他の2名は代替テキストの有無で止まることがあります。 同じ市のページなのに、担当者によって基準が違います。

  1. 【人】 各課の職員が原稿を Google ドキュメントで書き、共有ドライブの受付のフォルダに置く
  2. 【自動】 15分ごとに Google Apps Script が受付のフォルダを見て、新しい原稿を拾う
  3. 【自動】 スクリプトが原稿の画像・表・リンク・本文を読み、代替テキストの空、セルの結合、PDF へのリンク、字間の空白を機械的に拾う
  4. 【自動】 スクリプトが画像と代替テキストと前後の段落、リンクの文言と前後の文を Claude API に送り、中身の判定を受け取る
  5. 【自動】 スクリプトが指摘を点検台帳のスプレッドシートに書き、原稿の担当者に一覧をメールで送る
  6. 【人】 原稿の担当者が直し、受付のフォルダに置き直す
  7. 【人】 ウェブの担当が、点検台帳で「要確認」の指摘と、直った原稿を確かめ、CMS に入力して公開する

7番目で人が見るのは、「要確認」と直った後の原稿です。 代替テキストが空、セルが結合されている、といった機械で決まる指摘は、担当者に直接返り、ウェブの担当を経由しません。 判断の要る指摘だけがウェブの担当の手元に残ります。

6番目で原稿の担当者が直すことが、(b) への答えになります。 指摘が担当者に直接届き、「こちら」のリンクがなぜだめなのかが毎回同じ説明で返るので、書く側が覚えていきます。

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

構成図
各課の職員が原稿を書く(Google ドキュメント)
   ▼ 共有ドライブの受付のフォルダに置く
【トリガー】15分ごとの時間主導型トリガー
Google Apps Script
   ├──▶ 機械で拾う:代替テキストの空/セルの結合/PDF へのリンク/
   │              「こちら」等の文言/字間の空白/色を指す語
   ▼
Claude API ── 画像と代替テキストと前後の段落、リンクの文言と前後の文を見て判定
   │   代替テキストが画像の目的を伝えているか/画像の中の文字が本文にあるか
   │   リンクの目的が文脈から分かるか/色だけに頼った説明か
   ▼
Google Apps Script ── 指摘を「要修正」「要確認」に分けて
   ├──▶ 点検台帳(スプレッドシート)に書く
   └──▶ 原稿の担当者へメール
   ▼【ウェブの担当が要確認と直った原稿を確かめる】
CMS に入力して公開
役割想定する製品代替候補
実行環境Google Apps ScriptPython
生成AIClaude API(代替テキストとリンクの文言の判定)Gemini API、OpenAI API
台帳Google スプレッドシート(点検台帳)-
通知Gmail(原稿の担当者への指摘の送付)-

新しく足すのは、Apps Script のスクリプトと Claude API の利用だけです。 原稿の受け渡しの共有ドライブ、点検台帳のスプレッドシート、メールは、Google Workspace の中にあるものを使います。

原稿を Google ドキュメントにそろえるのが前提です。 Apps Script のドキュメントの機能で、画像の代替テキストの題名と説明(getAltTitle() と getAltDescription())を取り出せ、値が無ければ null が返るとされています。表のセルの結合はセルの列の結合数と行の結合数(getColSpan() と getRowSpan())、リンクは文字の位置ごとのリンク先(getLinkUrl(offset))で取れます。Word の原稿のままだと、これらを取り出すのに一手間かかります。

生成AIに渡すのは、判断の要る箇所だけです。 代替テキストが空かどうかを生成AIに聞く必要はありません。機械で決まることを機械で決めておけば、生成AIの判定が外れても、空の代替テキストは必ず拾われます。

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

Step1

処理の起点を決める

15分ごとの時間主導型トリガーで、受付のフォルダを見ます。 Apps Script の時間主導型トリガーは、分単位の間隔を1・5・10・15・30から選ぶとされています。原稿は1日に十件前後で、届いてから15分以内に指摘が返れば、担当者はその日のうちに直せます。

「新しい原稿」は、点検台帳に無いファイル、または前回の点検より後に更新されたファイルとします。 点検台帳にファイルのIDと点検した日時を残し、ファイルの最終更新日時がそれより新しければ、もう一度点検します。 担当者が直して置き直した原稿も、同じ仕組みで拾えます。

担当者が書いている途中の原稿を拾わないように、置き場所を分けます。 下書きは各課のフォルダで書き、書き終えたら受付のフォルダに移す決まりにします。受付のフォルダに置いた原稿だけが点検の対象です。

Step2

入力データを集める

データ中身取得元
原稿見出し、本文の段落、画像、表、リンク受付のフォルダの Google ドキュメント
原稿の冒頭の記入欄担当課、担当者のメールアドレス、公開の希望日原稿の冒頭の表(様式で決める)
画像原稿に貼られた画像のデータ、代替テキストの題名と説明原稿の画像の要素
点検の手引市の点検の項目、指摘の書き方、言い換えの例Apps Script のプロジェクトに置く文書
点検台帳点検したファイル、日時、指摘、対応の状態スプレッドシート

原稿の様式を1つに決めます。 冒頭に担当課・担当者のメールアドレス・公開の希望日の表を置き、その下に本文を書きます。スクリプトは冒頭の表から送り先を読むので、様式を崩すと指摘が届きません。共有ドライブ上ではファイルの持ち主が担当者とは限らないため、送り先は様式の欄で持ちます。

点検の手引は、市の言葉で書きます。 「リンクの文言は、リンク先の内容が分かる言葉にする(例:『申請書(PDF)』)」「表は見出しの行を1行目に置き、セルを結合しない」のように、各課の職員が読んで直せる書き方にします。生成AIの判定にも、指摘の文にも、この手引の言葉を使わせます。

Step3

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

取るものApps Script での取り方何に使うか
本文の段落ドキュメントの本文から段落を順に取り、getText() で文字列にする字間の空白、色を指す語、前後の文脈
画像と代替テキスト画像の要素ごとに getAltTitle()、getAltDescription()、getBlob()代替テキストの空と中身の判定
表表のセルごとに getColSpan()、getRowSpan()、getText()結合の有無と見出しの行
リンク文字の書式の区切り(getTextAttributeIndices())ごとに getLinkUrl(offset)リンクの文言とリンク先

リンクは、書式の区切りごとに拾います。 段落の文字列だけを取ると、どこからどこまでがリンクの文言かが分かりません。 書式の区切りの位置ごとにリンク先を取り、同じリンク先が続く範囲をリンクの文言とします。

// 段落からリンクの文言とリンク先を取り出す(同じリンク先が続く区間はつなぐ)
function collectLinks(paragraph) {
  const text = paragraph.editAsText();
  const s = text.getText();
  const idx = text.getTextAttributeIndices();
  const links = [];
  for (let i = 0; i < idx.length; i++) {
    const start = idx[i];
    const end = i + 1 < idx.length ? idx[i + 1] : s.length;
    const url = text.getLinkUrl(start);
    if (!url) continue;
    const last = links[links.length - 1];
    if (last && last.url === url && last.end === start) {
      last.text += s.substring(start, end); last.end = end;
    } else {
      links.push({ text: s.substring(start, end), url: url, start: start, end: end });
    }
  }
  return links;
}

同じリンク先の区間をつなぐのは、リンクの途中で太字などの書式が変わると区切りが分かれるためです。 つながないと、「申請書(PDF)」が「申請書(」と「PDF」と「)」の3つのリンクに見え、短い文言の指摘が誤って出ます。

画像は getBlob() で取り出し、PNG か JPEG にして送ります。 Claude API が受け付ける画像は JPEG・PNG・GIF・WebP で、API に直接送る場合は1枚あたり base64 で10MBまでとされています。原稿に貼られた写真が大きいときは、送る前に小さくします。送る画像は原稿の画像だけで、リンク先のファイルの中身は送りません。

PDF へのリンクは、リンク先の拡張子と、共有ドライブ上のファイルの種類で判定します。 リンク先が PDF で、本文にその PDF の内容の概要が書かれていないものを「PDFだけの掲載の疑い」とします。概要が書かれているかの判定は生成AIに任せます(後述)。

Step4

AIへ渡す前に整形する

  1. 様式の確認 … 冒頭の表に担当者のメールアドレスがあるかを確かめます。無ければ点検せず、受付のフォルダの管理者に知らせます
  2. 機械で決まる指摘を先に拾う … 代替テキストの題名と説明がともに空、セルの結合、リンクの文言が「こちら」「ここ」「詳細」だけ、字間の空白(「氏 名」のような文字の間の空白)
  3. 画像の大きさをそろえる … 長い辺を一定の画素数に縮め、送る量を抑えます
  4. 前後の文脈を切り出す … 画像とリンクのそれぞれについて、直前と直後の段落を添えます
  5. 個人の名前が写る写真の扱い … 「イベントの様子」など人物の写った写真は、画像を送らずに代替テキストと前後の段落だけで判定する設定にできるようにします

2番目で拾った指摘は、生成AIの判定を待たずに「要修正」にします。 代替テキストが空の画像を生成AIに送って「空です」と言わせる必要はありません。機械の指摘はいつ動かしても同じ結果になり、担当者に説明しやすくなります。

5番目は、市の写真の扱いの決まりにあわせます。 広報に載せる前提で本人の了解を得た写真でも、外部のサービスに画像を送ってよいかは別の判断です。 情報政策の担当と決めた範囲で、画像を送る・送らないを切り替えます。

Step5

AIに処理させる

させるのは、画像・リンク・本文の判断の要る箇所について、市の点検の手引に照らして判定し、直し方の候補を出すことだけです。

判定するもの判定の仕方判断できないときの扱い
代替テキストの中身画像と前後の段落を見て、画像の目的が伝わるか画像が読み取れなければ「要確認」
画像の中の文字チラシ等の画像の中の日時・場所・問い合わせ先が、本文か代替テキストにあるか文字が小さく読めなければ「要確認」
装飾の画像飾りの画像で、代替テキストを空にすべきものか迷えば「要確認」
リンクの目的リンクの文言と前後の文から、リンク先の内容が分かるか前後の文が無ければ「要確認」
PDFだけの掲載PDF へのリンクの前後に、PDF の内容の概要が本文で書かれているか判断できなければ「要確認」
色だけの説明「赤字の日」「緑の部分」のように、色だけで情報を区別していないか色の語があっても文脈で分からなければ「要確認」
させないこと理由
原稿を直接書き換える直すのは原稿の担当者。何をどう直したかが担当者に残らない
JIS への適合の判断適合の判断は試験で行う。この構成は公開前の点検
画像に写る人物の特定名前を推し量らない。代替テキストに個人名を足させない
代替テキストの文案を確定させる候補は出すが、画像の目的を知っているのは担当者
原稿の内容の正しさの判断日付や金額の誤りは、この構成では見ない

2行目の「画像の中の文字」がいちばん効きます。 イベントのチラシを画像で貼り、代替テキストに「チラシ」とだけ書いた原稿は、日時・場所・申込み先が画像の中にしかありません。 生成AIが画像の文字を読み、本文と代替テキストのどちらにも無い情報を挙げれば、担当者は何を本文に書き足せばよいかがすぐ分かります。

代替テキストの文案は、あくまで候補です。 同じ公園の写真でも、イベントの案内なら「会場の〇〇公園の芝生広場」、工事のお知らせなら「工事で閉鎖する遊具の位置」と、伝えたいことによって代替テキストは変わります。 画像の目的を知っているのは原稿の担当者なので、候補は直すための手がかりとして出します。

Step6

指示内容を固定する

あなたは市のホームページの原稿を、公開前にアクセシビリティの観点で
点検する立場です。添付の点検の手引に従って判定してください。

【判定する対象】
これから渡すのは、原稿の中の画像またはリンク1つと、その前後の段落です。

【画像の場合】
- 代替テキストが、前後の段落の流れの中で、画像の目的を伝えているか。
- 画像の中に文字(日時、場所、金額、問い合わせ先など)がある場合、
  その内容が本文か代替テキストに書かれているか。書かれていない内容を挙げる。
- 飾りの画像で、代替テキストを空にすべきものか。

【リンクの場合】
- リンクの文言と前後の文から、リンク先の内容が分かるか。
- リンク先が PDF の場合、前後の本文に PDF の内容の概要があるか。

【本文の場合】
- 色だけで情報を区別している表現があるか。

【厳守事項】
- 判定は ok / needs_fix / needs_review のいずれかにしてください。
  迷ったときは needs_review にしてください。
- 根拠として、手引の項目番号を必ず付けてください。
- 画像に写る人物の名前を推し量らないでください。
- 原稿の日付・金額・内容の正しさは判定しないでください。
- 直し方の候補は、手引の言い換えの例にならって短く書いてください。
- 画像が小さい・ぼやけているなどで読み取れない場合は、
  読み取れたふりをせず needs_review にしてください。

この指示は、画像やリンク1つごとに送ります。 原稿全体をまとめて送ると、どの指摘がどの画像のものかの対応がずれます。 1つずつ送れば、出力の位置の情報をスクリプトの側で持てます。

「読み取れたふりをしない」を入れているのは、小さな画像のためです。 Claude のドキュメントは、低品質・回転した画像や200画素未満の非常に小さな画像では、誤った解釈をすることがあるとしています。チラシの縮小画像では文字が読めないことがあり、そのときは人に回します。

Step7

出力形式を固定する

Claude API の構造化出力で、次の JSON を受け取ります。 構造化出力は、リクエストの output_config.format に type: "json_schema" とスキーマを指定する形とされています。

{
  "target": "image | link | text",
  "location": "画像3(見出し「会場」の下)",
  "verdict": "ok | needs_fix | needs_review",
  "findings": [
    { "check": "image_text_missing",
      "detail": "画像の中の『申込み締切 11月15日』が本文にない",
      "guideline_ref": "手引 2.3",
      "suggestion": "本文に申込みの締切日を書き足す" }
  ]
}

1つ目の理由は、verdict で人に回すものを分けられることです。 needs_fix は担当者に直接返し、needs_review は点検台帳でウェブの担当の確認待ちにします。スクリプトは verdict を読むだけで、行き先を決められます。

2つ目は、guideline_ref で指摘の説明がそろうことです。 担当者へのメールには、手引の項目の説明文をスクリプトが添えます。同じ種類の指摘には、毎回同じ説明が付きます。

点検台帳の1行は、指摘1件です。 列は、点検日時、ファイル名、担当課、対象、位置、判定(要修正/要確認)、指摘の内容、手引の項目、直し方の候補、指摘の出どころ(機械/AI)、対応の状態です。出どころの列があると、機械の指摘とAIの指摘の当たり外れを分けて数えられます。

Step8

システムへ連携する

つなぎ先方式内容
受付のフォルダApps Script がフォルダのファイルを読む新しい原稿と直った原稿を拾う
原稿Apps Script のドキュメントの機能で読む画像・表・リンク・本文。書き込まない
Claude APIApps Script から HTTP で呼ぶ判断の要る箇所の判定
点検台帳スプレッドシートに行を足す指摘と対応の状態
原稿の担当者Gmail でメールを送る指摘の一覧と直し方

原稿には書き込みません。 Apps Script には代替テキストを設定する機能(setAltDescription())もありますが、使いません。AIの候補が原稿に入ると、担当者は自分で画像の目的を考えなくなります。

API のキーは、スクリプトのプロパティに置き、コードに書きません。 スクリプトの編集の権限は、広報課のウェブの担当に絞ります。

Step9

人が確認する

  1. 要確認の指摘を見る … 点検台帳で「要確認」を絞り込み、原稿の該当箇所を開いて判断します
  2. 要修正のうちAIの指摘を見る … 機械の指摘はそのまま返して構いませんが、AIの needs_fix は外れがないかを流し見ます
  3. 直った原稿を見る … 置き直された原稿の点検結果で、指摘が消えているかを確かめます
  4. CMS に入力した後のページを見る … CMS に入力するときに代替テキストや表の見出しが原稿どおりに入ったかを確かめます

4番目は、この構成の外にある確認です。 原稿で直っていても、CMS に入力するときに代替テキストを写し忘れると、公開されたページには反映されません。 入力の手順に「代替テキストの欄を埋めたか」の確認を入れておきます。

目標は、1件あたり5分です。 要確認の指摘を見るのに2分、AIの要修正を流し見るのに1分、指摘を返し直した原稿の確認に2分という配分です。

Step10

例外に対処する

起きること対応
原稿が Google ドキュメントでない(Word、PDF)点検せず、ドキュメントに変換して置き直すよう担当者に知らせる
冒頭の様式が崩れていて送り先が分からない点検せず、受付のフォルダの管理者に知らせる
画像が大きすぎて送れない縮めて送る。縮められなければ「要確認」
画像が小さく文字が読めないneeds_review で出る。元の画像を担当者に求める
API が応答しない・上限に達した機械の指摘だけを先に返し、AIの判定は次の回に回す
図形や描画で作った図がある画像として取れない場合がある。「図の要素あり」として要確認に出す
同じ原稿が短い間に何度も置き直される最終更新から一定の時間がたってから点検する
人物の写った写真画像を送らない設定のときは、代替テキストと前後の段落だけで判定する

5行目は、機械の指摘を先に返すことで影響を小さくします。 AIの判定が遅れても、代替テキストの空やセルの結合は必ず返ります。 2段に分けた設計が、障害のときにも効きます。

Step11

記録を残す

  • 点検台帳(指摘1件1行。点検日時、ファイル、位置、判定、出どころ、対応の状態)
  • Claude API に送った内容の概要(画像を送ったか、前後の段落の文字数)と返ってきた JSON
  • ウェブの担当が覆した判定 … どの指摘を、要修正から取り下げたか、要確認から要修正にしたか
  • 課ごとの指摘の件数の推移
  • 点検の手引の版と変更の履歴

4つ目の推移は、研修の材料になります。 「こちら」のリンクの指摘が多い課、PDFだけの掲載が多い課が分かれば、その課に向けて短い説明をするほうが、全庁の研修より効きます。

3つ目の覆した記録は、指示と手引を直す材料です。 装飾の画像を「代替テキストが足りない」と出し続けるなら、手引に装飾の画像の例を足します。

04実装レベルの3段階

最小構成:画像とリンクを手で生成AIの画面に貼り、判定させる / 判断の要る箇所の判定
半自動化:上記+Apps Script が受付のフォルダの原稿を読み、機械の指摘と Claude API の判定を点検台帳とメールにまとめる / 点検の全体と、担当者への返却
本格構成:上記+CMS の公開前のプレビューの HTML を取得し、入力後のページでも同じ点検をする / 原稿と公開前のページの両方の点検

最小構成では、件数がさばけません。 1枚ずつ貼るので、月180件には使えません。確かめるための段階です。 半自動化で、1件15分が5分程度になり、この段階が本記事の想定です。 見て回る時間がなくなり、ウェブの担当は要確認の判断と直った原稿の確認に時間を使います。 本格構成は、CMS の作りによります。 公開前のプレビューを外から取得できるか、庁内のネットワークの外にある Apps Script から届くかは、CMS と庁内のネットワークの構成によって変わり、個別の確認が必要です。

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

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

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

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

AI活用について相談する

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

向いている
  1. 各課の職員がホームページの記事の原稿を書き、広報やウェブの担当が公開前に点検している市区町村。月に百件を超える更新があり、点検が担当者の目と経験に頼っている団体。原稿を Google ドキュメントで書き、共有ドライブで受け渡しする運用ができる場合。公立の学校・病院など、同じ運用でホームページを更新している公的な機関。
向いていない
  1. 更新が月に数件で、ウェブの担当が全件を丁寧に見られる場合。原稿を CMS に直接入力しており、公開前の原稿を外に取り出せない場合(CMS の点検機能を先に使う)。外部に原稿を送ることが庁内の決まりで認められていない場合。なお、ホームページが JIS X 8341-3 に適合しているかの試験や判断は、この構成では代替できません。

07最小構成で試す方法

  1. 先月公開した記事の原稿から20件を選ぶ(画像の多いもの、表のあるもの、PDF を付けたものを混ぜる)
  2. その20件について、当時ウェブの担当が指摘した内容と、公開後に見つかった問題を書き出す
  3. 原稿の画像を1枚ずつ、手元の生成AIの画面に貼り、代替テキストと前後の段落を添えて「この代替テキストは画像の目的を伝えていますか。画像の中の文字で本文に無いものを挙げてください」と頼む
  4. 「こちら」のリンクと PDF へのリンクは、文言と前後の文を貼って同じように頼む
  5. 出てきた判定を、当時の指摘と公開後の問題と突き合わせる

画像の中の文字の拾い方を最優先で見てください。 ここが効けば、チラシの画像だけの原稿が本文のある原稿に変わります。

出てきた内容判断
当時の指摘と公開後の問題を拾えたApps Script で機械の指摘から作り始める
装飾の画像に代替テキストを求めた手引に装飾の画像の例を足す。構成は有効
チラシの文字が読めない原稿に貼る画像の解像度を決める。AIの問題ではない

最小構成では、まず機械の指摘だけでもよいと分かることがあります。 代替テキストの空と「こちら」のリンクだけで指摘の大半を占めるなら、生成AIを足す前に、スクリプトの機械の指摘だけで1か月回してみるのも一つの順路です。

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

問題対策
空の代替テキストまで生成AIに聞いている機械で決まる指摘は機械で拾う
リンクの文言の範囲が分からない書式の区切りごとにリンク先を取り、同じリンク先の範囲を文言とする
チラシの画像の文字が読めない原稿に貼る画像の解像度を様式で決める
装飾の画像に代替テキストを求める手引に装飾の画像の例を足す
指摘の送り先が分からない原稿の冒頭の表に担当者のメールアドレスを書く様式にする
書きかけの原稿を点検してしまう下書きは各課のフォルダ、書き終えたら受付のフォルダ
AIの候補をそのまま代替テキストにする原稿に書き込まない。画像の目的は担当者が決める
原稿で直っても公開ページに反映されないCMS への入力の手順に代替テキストの確認を入れる

上の2行は、作り始めてすぐに当たる問題です。 1行目は費用と確かさの両方に効き、2行目はリンクの点検の土台です。この2つを最初の1週間で片付ければ、残りは運用の決まりの話になります。

下の2行は、仕組みの外で起きる問題です。 指摘が正しくても、AIの候補を考えずに写したり、CMS に入力するときに抜けたりすれば、公開されたページの読みやすさは変わりません。 原稿の担当者とウェブの担当の手順の中に、確認を1つずつ置いてください。

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

この構成で扱うデータ: 公開前のホームページの原稿、原稿に貼られた画像(人物の写った写真を含むことがある)、原稿の担当者の氏名とメールアドレスです。

  1. 公開前の原稿を外部に送る範囲を決める … 原稿は公開を前提とした文書ですが、公開日より前に外へ出ることになります。 選挙や入札など、公開の時刻に意味がある原稿を対象から外すかを決めてください
  2. 人物の写った写真の扱いを決める … 画像を送らず、代替テキストと前後の段落だけで判定する設定を用意します。どの原稿で画像を送るかは、情報政策の担当と決めます
  3. 画像の人物を特定させない … Claude のドキュメントは、画像の人物の名前を挙げることには使えず、拒否するとしています。代替テキストに個人名を足させる指示も書きません
  4. API のキーと点検台帳の権限を絞る … キーはスクリプトのプロパティに置き、スクリプトと台帳の編集はウェブの担当だけにします
  5. 適合の判断をこの構成に任せない … 公開前の点検で拾えるのは原稿の範囲です。JIS X 8341-3 への適合は、年に1回の試験と、ウェブアクセシビリティ方針に沿った取組で確かめます

Claude のドキュメントは、アップロードされた画像をモデルの学習に使わないとしています。 API に送ったデータの扱いの全体は、利用規約とプライバシーの方針で確かめてから使い始めてください。

誤りが起きた場合のリスクは、読めないページの公開です。 機械の指摘を外す、AIの needs_review を見ずに公開する、のどちらも、誰かがそのページを読めないまま、問い合わせの電話をかけることにつながります。 要確認の指摘を見る手順だけは省かないでください。

10まず何から始めるか

1週目:原稿の様式と点検の手引を決める

原稿の冒頭の表(担当課、担当者のメールアドレス、公開の希望日)を決めます。点検の手引には、代替テキスト、表、リンクの文言、PDF だけの掲載、色だけの説明、字間の空白の6項目を、各課の職員が読んで直せる言葉で書きます。

2週目:20件で試す

先月の原稿20件で最小構成を試し、画像の中の文字の拾い方と、装飾の画像の扱いを見ます。

3週目:機械の指摘のスクリプトを作る

Apps Script で受付のフォルダを読み、代替テキストの空、セルの結合、「こちら」のリンク、PDF へのリンク、字間の空白を点検台帳に書き、担当者にメールで返すところまで作ります。この時点では生成AIを呼びません。

4週目:生成AIの判定を足す

Claude API の呼び出しを足し、画像とリンクの判定を needs_fix と needs_review に分けて台帳に書きます。

2か月目: 全課の原稿をこの流れに乗せ、ウェブの担当が覆した判定を記録します。3か月目以降: 1件15分が何分になったかを実測し、課ごとの指摘の件数の推移を見ます。「こちら」のリンクと代替テキストの空が、原稿の段階でほとんど出なくなった時点で、この構成は定着です。


11関連ユースケース

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

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

技術仕様確認日:2026-10-07/最終更新:2026-10-07
確認した内容情報源確認日
みんなの公共サイト運用ガイドラインが、公的機関のホームページ等のウェブアクセシビリティの確保・維持・向上の取組を支援する手順書であり、2024年版が近い将来の JIS 改正に向けた動向を解説していること総務省: みんなの公共サイト運用ガイドライン2026-10-07
公的機関のホームページ等に JIS X 8341-3:2016 の適合レベル AA への準拠を求め、できる限り WCAG2.2 の達成基準に基づき構築するとしていること。画像の代替テキスト(1.1.1)、表の構成とタグ付け(1.3.1)、PDF を提供する場合に同じ内容の HTML のページを併せて掲載するかアクセシビリティに対応した PDF にすること、紙をスキャンした画像の PDF を提供しないこと総務省: みんなの公共サイト運用ガイドライン(2024年版)PDF2026-10-07
達成基準 2.4.4(レベル A)が、リンクの目的をリンクの文言だけで、またはリンクの文言とプログラムが解釈できる文脈から判断できることを求めていることW3C: Understanding Success Criterion 2.4.4 Link Purpose (In Context)2026-10-07
画像の要素に getAltTitle() と getAltDescription() があり、値が無ければ null を返すこと。getBlob() で中身を取り出せること。setAltDescription() があることGoogle: Apps Script Class InlineImage2026-10-07
文字の要素に getLinkUrl(offset)、getTextAttributeIndices()、getText() があることGoogle: Apps Script Class Text2026-10-07
表のセルに getColSpan() と getRowSpan() があることGoogle: Apps Script Class TableCell2026-10-07
時間主導型トリガーの分単位の間隔が1・5・10・15・30であることGoogle: Apps Script Class ClockTriggerBuilder2026-10-07
構造化出力が output_config.format に type: "json_schema" を指定する形であることClaude Docs: Structured outputs2026-10-07
画像の形式が JPEG・PNG・GIF・WebP であること。API に直接送る場合の1枚の上限が base64 で10MBであること。低品質・回転・200画素未満の画像で誤ることがあること。画像の人物の名前を挙げることに使えないこと。アップロードされた画像をモデルの学習に使わないことClaude Docs: Vision2026-10-07

ホームページが JIS X 8341-3 に適合しているかは、試験とウェブアクセシビリティ方針に沿って確かめてください。 本記事は総務省・W3C・Google・Anthropic の公開情報で確認できた範囲だけを扱っています。

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

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

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

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