技術詳細:『明日は晴れるかな』開発ドキュメント(バイブコーディング × WordPress)

本ページは、地域イベントプラットフォーム『明日は晴れるかな』の技術仕様をまとめたドキュメントです。WordPress(SWELL子テーマ)を基盤に、AIレビュー、施設自動取得、地域リンク集パイプライン、Wikiモジュールなどの主要機能と内部構造を体系的に解説します。本ページは バイブコーディング実践例 と対になる技術詳細ページです。


1. システム全体構成

『明日は晴れるかな』は、WordPressを中核とし、AI処理モジュール、施設自動取得、Wiki、地域リンク集AIパイプラインなど多数のカスタムモジュールが連携して動作するプラットフォームです。

システム全体構成図

上図はシステム全体像を示し、左に AI実装 × 人間検証(バイブコーディング)、中央にWordPress本体、右にAIパイプライン・施設自動取得・Wikiなどの主要モジュールを配置しています。


2. カスタム投稿タイプと地域タクソノミー

本システムは複数のカスタム投稿タイプ(CPT)を中心として構成されています。

  • event(イベント)
  • shop(店舗・施設)
  • wiki(地域Wiki)
  • sandbox(テスト投稿)

地域分類は「地方 → 県 → 地方圏 → 市町村」の4階層で構成され、イベント・施設・Wiki・AIパイプラインの基盤データとして機能します。


3. 施設自動取得(Google Places API)

イベント投稿時に入力された「会場名」をもとに Google Places API を呼び出し、以下の情報を自動取得します。

  • 住所(Google応答データ内の日本語表記を優先)
  • 地図URL
  • 電話番号(国際形式)
  • 公式サイトURL
  • place_id

※補足:住所の日本語変換(facility-utils.php)は現在未使用です。Google API応答内に日本語住所が含まれるため、それを優先利用しています。


4. 地域Wikiモジュール(wiki/)

Wikiは、イベント・施設の補完情報を蓄積し“地域辞書”として機能します。「アクセスキー × セッション」による認証により、一般ユーザーでも安全に編集できます。

  • 画像修復ツール
  • 不要画像削除
  • 元イベントとの親子紐付け
  • 施設ページとの相互参照

5. AIパイプライン(地域リンク集自動収集)

地域ページ(/region/xxx/links/)を自動構築するために、AIと Google Search API を組み合わせたパイプラインを実装しています。

  • Step0:カテゴリ別検索クエリ生成
  • Step1:Google Search API によるURL収集
  • Step2:重複排除・県境誤抽出フィルタ・正規化
  • Step3:AIによる要約と属性付与
  • Step4:JSON化し地域ページへ反映

全国自治体への拡張が可能な柔軟な構造となっています。


6. AIレビュー(AI Review Pipeline)

event / shop 投稿はバックグラウンドで AI によるレビューが行われ、結果はメタ情報として保存されます。施設データとの整合性や分類判断に活用されます。

■ レビュー目的

  • 入力漏れの検出
  • 施設データとの矛盾チェック
  • 地域分類の推奨
  • 危険性・NGワード判定
  • SEO向け要約の生成

レビュー結果の例:

  • 住所欄が空欄 → 施設データから補完候補を提示
  • 開始日 > 終了日 → 入力誤りとして警告
  • タイトルに地名なし → 地域分類の候補(例:会津若松市)を提案

補足:通常フォーム入力の文章からの「自動補完」は未実装ですが、フライヤー画像投稿(AI OCR)でタイトル・日付・会場名などを抽出し、自動補完する機能を今後統合予定です。

■ 保存されるAIメタ情報

  • _ai_review_status
  • _ai_review_score_step2
  • _ai_review_summary
  • _ai_risk_flags
  • _ai_region_detect
  • _ai_facility_match

7. セキュリティ・認証設計

event / shop / wiki / sandbox の全投稿タイプで共通の「アクセスキー × セッション」方式を採用しています。

  • 22桁アクセスキー(_access_key22)
  • メール認証(wiki_owner_email)
  • セッション編集権限
  • Passcode Gate(passcode-gate.php)

8. loader.php v2.0(モジュールロード順の統括)

WordPressでは「読み込み順序」が非常に重要です。誤った順序で読み込むと、関数未定義・セッション破壊・ファイルパス誤認識などの重大エラーが発生します。

loader.php v2.0 は以下の順序を保証し、依存関係の事故を防ぎます。

  • Ajax → Upload → Form → Handler → Mail → Taxonomy → Wiki
  • セッション保護処理を冒頭で実行
  • 全モジュールへ作成日・更新日・バージョンを付記

AIとの協働開発プロセスや背景については、バイブコーディング実践例で解説しています。技術仕様とあわせて読むことで、プロジェクト全体の理解が深まります。

Google Places API や AI レビュー処理の運用コストと負荷対策は、 コスト・運用Tips に詳しくまとめています。

開発者プロフィール

Rさん(障がい者施設 支援員/地域情報サイト運営/元エンジニア)
福島県会津で福祉現場に従事しながら、余暇時間を使ってChatGPTとの共同開発を推進。
「人は検証と指示、AIはコーディング」という役割分担を確立し、短期間で多機能な地域プラットフォームを構築。

本ページの内容は、2025年9月〜11月にかけてRさんとChatGPTが実際に構築した「明日は晴れるかな」プロジェクトの開発記録に基づいています。