尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗らいすぴあ 品質判定AI / Marketing Studio
近藤米穀店「らいすぴあ」のための、ビルド不要の静的Webアプリです(Vercel:https://ricepia-judge.vercel.app/ で公開)。
| ファイル | 内容 |
|---|---|
index.html | 精米品質AI判定(写真→12項目採点・グレード判定・レシート印刷) |
marketing.html | らいすぴあ Marketing Studio(AIマーケティング統合ツール) |
nishio-go.html | にしおさんぽGO(西尾市のお散歩ポイントラリー)。地図上のスポット(神社・お寺・公園・史跡・駅など)に歩いて近づくとチェックインでき、ポイント・レベル・バッジが貯まる |
tsunagu.html | つなぐ。店舗どうしをビデオ通話でつなぐだけのページ。開くだけで最大5台がひとつの部屋に入る(設定・ID・パスワード不要) |
meeting.html | らいすぴあ ミーティング(Zoomのようなビデオ会議)。発言を自動で文字起こしし、AIがお客様のニーズを抽出して開発バックログ・GitHub Issue・開発依頼書につなげる |
guide/ | お米の品質ガイド(解説記事。guide/index.html が一覧。SEO/LLMO 用) |
meta-ads.html | Meta(Facebook / Instagram)広告の成果診断(社内用。noindex で検索対象外)。広告マネージャのCSVを読み込み、CPA・ROAS・CTR・フリークエンシー・前後半の推移から「増額/維持/要改善/停止/データ不足」を判定し、AIが改善策と次の広告案を提案 |
| 区分 | 機能 | 概要 |
|---|---|---|
| 概要 | ホーム | 要アクション(期限切れの予定・未入力の設定など)、らいすぴあAIの診断(入力データからの自動診断・AI利用料なし)、売上・客数・LINE友だち・今月の発信、チャネルの調子(規模・増減7日・発信7日・前週比)、日別発信数、今後の予定、季節の販促ヒント。「サンプルで試す」で全体の見え方を確認できます |
| 概要 | 今週の改善 | 要アクションと診断の一覧、AI経営アドバイザー(今月の打ち手を文章で提案) |
| 概要 | 売上と配信 | 月次KPI(売上・客数・客単価・EC注文・LINE友だち・Instagram・販促費)の入力とグラフ |
| つくる | コンテンツ生成 | Instagram / X / LINE / Googleビジネス / ブログ / EC商品ページ / POP / チラシ / メルマガ / プレスリリース / ギフト文面。チャネル別の文字数・書式ルール、複数案、写真添付、修正指示、品質判定結果からの投稿作成 |
| つくる | コピー診断 | 6観点の採点、景品表示法・食品表示・米トレーサビリティ法などの表示リスク指摘、改善版3案 |
| つくる | 口コミ対応 | ★評価に応じた店主らしい返信文/複数口コミの傾向分析(テーマ・強み・改善点・打ち手) |
| 計画する | キャンペーン設計 | 目的・予算・期間から、コンセプト・ペルソナ・KPI・予算配分・スケジュール・制作物・リスクまで一括設計。カレンダーへ連携 |
| 計画する | 販促カレンダー | 月表示の予定管理(状態:アイデア/下書き/予約済み/完了)、季節行事の表示、AIで1ヶ月分の発信計画 |
| 分析する | 顧客分析(RFM) | CSV取り込み→RFMスコア→7セグメント分類。セグメント別の施策とLINEメッセージをAIが作成(AIには集計値のみ送信) |
| 分析する | 市場リサーチ | Claudeのweb検索ツールで最新の米価・トレンド・事例を調査し、出典付きでまとめ |
| 管理 | ライブラリ / ブランド設定 / 設定・データ | 生成物の保管・検索・CSV出力、店舗プロフィールと商品マスタ(全AI生成の前提知識)、モデル選択・AI利用料の概算と月予算、バックアップ/復元 |
tsunagu.html)店舗どうしをビデオ通話でつなぐだけのページ。設定・ID・パスワード・リンクの受け渡しは不要で、各端末で https://ricepia-judge.vercel.app/tsunagu.html を開くだけ(ホーム画面に追加推奨)。
https://zoom.us/j/5440010563)を開く。⚙ で pwd= 付きの招待リンクを入れるとパスコード入力が不要になる(その端末にだけ保存)。つながらないまま30秒たつと待機画面にも案内つなぐ の印)に保存され、そこから要望分析・録音の再生ができる(自動処理は動かさない)。録音は7日、文字起こしは60日で自動削除。ページを急に閉じても、録音はミーティングを開いたときに復元されるmeeting.html)の機能| 区分 | 機能 | 概要 |
|---|---|---|
| 会議 | ビデオ会議 | ブラウザだけで参加できるビデオ通話(目安6人まで)。招待リンクをLINE・メールで送信、ミュート・カメラ・画面共有・チャット・参加者一覧。参加の希望が来ると主催者に「許可/拒否」が出て、許可するまで映像・音声・会議の記録は送らない |
| 会議 | 自動文字起こし | 参加者それぞれの端末が自分の発言をブラウザの音声認識で文字にし、話者名・参加区分(当社/お客様)つきで全員に共有。字幕表示、ミュート中は自動停止、開始・停止は全員に通知 |
| 会議 | 録音 | 「⏺ 録音」で全員の音声をミックスして録音し、押した人の端末(IndexedDB)に保存。録音中は全員の画面に表示 |
| 会議 | AIメモ | 会議の途中で「ここまでの要望」と「次に聞くとよいこと」をAIが整理(聞き漏らし防止)。手書きメモも記録に残る |
| 分析 | 要望分析 | 文字起こしから明示・潜在ニーズを抽出し、根拠の発言(時刻つき)、優先度(Must/Should/Could)、ユーザーストーリー、受け入れ条件、開発メモ、確認事項、次のアクションを整理。議事録(Markdown)とお客様への確認メール文面も作成 |
| 分析 | 取り込み | Zoom・Meet・Teams などの文字起こし(.vtt / .srt / .txt)と録音ファイルを取り込んで同じように分析 |
| 分析 | 聞き直し・修正 | 文字起こしの各発言と「お客様の声」の引用から録音をその位置で再生。誤変換の修正、話者の区分(お客様/当社)の切り替え。修正後は再分析を案内 |
| 開発 | 開発バックログ | 会議をまたいでニーズを蓄積。同じ目的の要望はAIが既存項目に統合し、言及数・優先度・影響からスコア順に並べる。状態管理(新規→検討中→開発中→リリース済み) |
| 開発 | お客様の声レポート | 分析済みの全会議を横断し、よく出る困りごと・お客様のタイプ別の違い・新しい機会・開発ロードマップ案・次のヒアリングの仮説をAIがまとめる |
| 開発 | リリースのお知らせ | 項目を「リリース済み」にすると、要望してくれたお客様ごとに「いただいたご要望に対応しました」という文面案を作成(コピー・LINE送信・連絡済み管理) |
| 開発 | ⚡ 自動化 | 会議が終わると自動で「要望分析 → 開発バックログ → GitHub Issue(Must など対象を選べる)」まで進める。Claude Code への開発の依頼(Issue に claude-dev ラベル)は自動ではせず、Issue の文を確かめてから、バックログの「🤖 開発を依頼」で1件ずつ頼む。設定は「開発バックログ」の「⚡ 自動化」。GitHub は Issues の読み書きだけを許可した fine-grained トークンを使い、その端末にだけ保存(バックアップには含めない)。公開リポジトリには、お客様の名前と発言の引用を載せない。同じ要望が別の会議で出たら既存の Issue にコメント。途中で失敗しても「⚡ 自動処理を実行」で続きから再開 |
| 開発 | Claude Code による開発 | .github/workflows/claude-dev.yml:Issue に claude-dev ラベルが付くと Claude Code(anthropics/claude-code-action@v1)が受け入れ条件に沿って実装し、ブランチと結果を Issue に報告。コメントで @claude と書くと追加の指示に答える。取り込み(マージ)は人が確認して行う。リポジトリに Actions シークレット ANTHROPIC_API_KEY と Claude GitHub App が必要 |
| 開発 | GitHub Issue / 開発依頼書 | 項目からお客様の声・受け入れ条件つきのIssueを作成(GitHubの新規Issue画面を開く)。選んだ項目から開発依頼書(Claude Code へそのまま渡せる依頼文つき)をAIが作成 |
[email protected]、既定は公開サーバー)。自社のPeerServerを使う場合は meeting.html?peerhost=ホスト&peerport=443&peerpath=/ で開く(peersecure=0 で http)。rmt_)、録音は IndexedDB(rmt_audio、バックアップ対象外)。AI分析を実行したときだけ文字起こしを Anthropic API に送信。APIキーは Marketing Studio と共通(rpm_key)。claude-opus-5-5(effort high、分析は JSON Schema の構造化出力)、会議中のAIメモは claude-sonnet-5-5(effort low)。marketing.html(https://ricepia-judge.vercel.app/marketing.html)を開き、右上の「🔑」から Anthropic APIキーを設定(console.anthropic.com)。marketing.html + mkt/(style.css, core.js, charts.js, data.js, studio.js, plan.js, insight.js, home.js)。外部ライブラリなし。claude-opus-5-5(設定で claude-sonnet-5-5 に切替可)、effort 指定、拒否時の fallbacks: "default"、リサーチは web_search_20260209(pause_turn の継続にも対応)。rpm_)。APIキーは既定でセッション内のみ保持。index.html が最新の判定結果を ricepia_last_judge に保存し、コンテンツ生成画面で利用。nishio-go.html)ポケモンGOのポケストップのように、西尾市内のスポットへ実際に歩いて行くとポイントが貯まるゲームです。
遊べる範囲:西尾市と、となりの市町(岡崎市・安城市・碧南市・高浜市・幸田町・蒲郡市)、それに近藤米穀店(本店)から半径15km(刈谷・知立・半田・東浦・阿久比・武豊など。game.js の CFG.home)。市町の境界は nishio-go/region.js(tools/bake-region.js・.github/workflows/bake-region.yml が国土数値情報「行政区域データ」(N03・愛知県)から作り、約60mに間引いたもの。取れないときは OpenStreetMap の行政界から。OpenStreetMap の西尾市と安城市の境は米津町のあたりが粗く、本店が安城市に入ってしまうため)。歩く地図の区画はこの境界から約300m以内か、本店から15km(+約300m)の円にかかるものだけ作り、せかいちずには市町の境を白い点線で描きます。となりの市町にも、注目スポット69か所(岡崎20・安城13・碧南15・高浜8・幸田10・蒲郡3)、話しかけられる人26人、毎年の行事28件、名物10件(八丁味噌・額田のお米「たべりん」・日本デンマークの農業・安城の梨・碧南のにんじん・本みりん・三州瓦と鬼瓦・筆柿など)を入れ、西尾の人と となりまちの人がおたがいを紹介します(お米・田んぼの話でつながる)。各項目の出典は src。バッジは「○○制覇」が市町ごと、「となりまちの名物めぐり」「となりまちの顔なじみ」は西尾と別。
地図:国土地理院の地理院タイル(淡色地図)+ Leaflet 1.9.4(unpkg、SRI付き)。
スポット:OpenStreetMap(Overpass API)から 西尾市の行政区域内 の神社・お寺・史跡・公園・博物館・展望所・図書館・駅・海岸を自動取得(端末に7日間キャッシュ)。取得できないときは注目スポットだけで動きます。
注目スポット:nishio-go/spots.json に84か所(西尾34・一色6・佐久島9・吉良21・幡豆14。当店2か所を含む)。すべて座標つき(Wikipedia・マピオン・NAVITIME、2026年10月に西尾市観光協会のスポット紹介と「西尾の秋まつり」から足した22か所は、紹介ページの住所を国土地理院の住所検索で座標にしたもの。OpenStreetMap・Wikidata でも確かめた)。match の名前で OSM の同じ名前の場所を探し、確かな座標なら300m、概算(approx: true)なら1km以内で見つかればその位置に補正します。normal: true はふつうのスポット(OpenStreetMap にない社寺を Wikidata から足したもの)。
ふつうのスポット(nishio-go/osm-spots.json):神社・お寺・公園・史跡・博物館・展望地・駅・海岸・庭園・山頂・滝・支所などを、GitHub Actions(.github/workflows/bake-spots.yml・tools/bake-spots.js)が OpenStreetMap から作り、毎週作り直します(問い合わせはゲームと共通の nishio-go/osm-query.js)。ゲームはまずこのファイルを使うので、Overpass が混んでいても全部のスポットが出ます。
西尾の人たち(nishio-go/npcs.js):注目スポットのそばに30人。実在の人ではなく、その場所にいそうな人(茶畑のおじいさん、魚屋のおかみさん、観光ボランティアガイドなど)。話す中身は地区ガイド・スポットの説明・行事・ricepia.jp に書いてある事実だけで、ことばは三河弁を少し。ドット絵の地図ではぶつかるかタップ、ふつうの地図では絵文字をタップで話しかけます(操作して移動は30m、あるいて移動は60m以内)。はじめて話すと +10pt、その場所の今月・来月の行事も教えてくれます。
ポイント:スポット10pt(注目30〜50pt)、初訪問 +30pt(注目 +100pt)、その日最初のチェックイン +20pt+連続日数ボーナス、100m歩くごとに1pt(1日100ptまで。ページを開いて画面がついている間だけ数える)。同じスポットは60分ごと。数値は nishio-go/game.js 冒頭の CFG で調整できます。
不正対策(簡易):チェックインは約40m以内+GPS誤差の上乗せ(最大25m)、GPS精度80m超は不可、時速約30km超の移動を検知すると2分間は歩いた距離を数えない(乗り物=電車・バス・同乗の車での移動中も、チェックイン・たからばこ・行き先に着くことはでき、運転している人は操作しないよう知らせる)、更新が3分以上途切れた間の移動は歩数に数えない。
今日のおさんぽクエスト:毎日3つのお題(ちがうスポットを2か所・神社かお寺・500m歩く・たからばこを2つ・はじめてのスポット・その日の地区の注目スポット、ときどき当店に寄る・今月の行事の会場に行く)。日付だけで決まるので同じ日はだれでも同じお題(その日の地区は船のいらない西尾・一色・吉良・幡豆から)。3つぜんぶでボーナス50pt。進み具合は「きろく」と地図の下の案内に出ます。
西尾のおまつり・行事(nishio-go/events.js):西尾市観光協会「年間イベントスケジュール」「西尾の秋まつり」と西尾市公式ウェブサイトから、毎年の行事41件(月・日付・会場・ゲームのスポット)。「きろく」に今月・来月の行事、スポットの説明にその場所の行事、地図の下に「きょうは○○」を出し、今日のクエストにときどき「今月の○○の会場に行く」(佐久島以外)が出ます。説明文はたからばこのまめちしきにも入ります。日付が決まっている年は を書き足します(クエストを日付だけで決めるため、読み込みを待たない .js にしてあります)。
llms.txt / llms-full.txt … AI検索・LLM向けのサイト要約と本文全文。robots.txt / sitemap.xml / ogp.png … クローラー・SNS共有用docs/seo-llmo-analysis.md … 分析レポートと改善の進捗。docs/REVIEW-codex.md … レビュー記録。docs/store-information-sources.md … 店舗情報の根拠.claude/skills/kokoku-shindan/ … 広告診断スキル(Meta広告CSVの判定スクリプト scripts/diagnose_meta_ads.py + SEO/LLMO チェックリスト)ビルド工程が無いため、日付は手書きです。内容を更新したら以下をまとめて直す。
index.html:JSON-LD の "dateModified"、footer の <time datetime> と表示日付sitemap.xml:更新したページの <lastmod>llms.txt:「最終更新」行。FAQ・品種・グレード基準を変えたら本文側(index.html の #about、JSON-LD の FAQPage)と文言を一致させるllms-full.txt:python3 scripts/generate_llms_full.py で再生成するguide/*.html:JSON-LD の dateModified、<time>、article:modified_time(datePublished は初出日なので変えない)index.html の本文・JSON-LD・llms.txt・guide/ の記述を全て揃えるpython3 scripts/generate_llms_full.py --check
python3 -m unittest discover -s tests -v
git diff --check
このリポジトリ(すべての履歴と、まだコミットしていない変更)を restic で暗号化してバックアップする。スクリプトは tools/restic-backup.sh。保存先はクラウドと外付けSSDの2か所にする(GitHub とあわせて3か所。3-2-1ルール)。
.github/workflows/restic-backup.yml が毎日 3:17 に動く。GitHub のシークレットに RESTIC_REPOSITORY(例 s3:https://<アカウントID>.r2.cloudflarestorage.com/<バケット>)と RESTIC_PASSWORD、保存先の鍵(R2・S3 は RESTIC_AWS_ACCESS_KEY_ID・RESTIC_AWS_SECRET_ACCESS_KEY、B2 は B2_ACCOUNT_ID・B2_ACCOUNT_KEY)を入れる。入れるまでは何もしないbrew install restic
security add-generic-password -s restic-ricepia -a "$USER" -w # パスワードをキーチェーンに保存(聞かれたら入力)
export RESTIC_REPOSITORY=/Volumes/<SSDの名前>/restic-ricepia
export RESTIC_PASSWORD_COMMAND="security find-generic-password -s restic-ricepia -w"
bash tools/restic-backup.sh # はじめての時は保存先も作る。2回目からは変わったところだけ
restic snapshots で一覧、restic restore latest --target ./restore で取り出す(.git ごと戻るので、履歴もそのまま)dateたからばこ:400m四方ごとに1〜2個、日付で決まる場所に現れます(ドット絵の地図とふつうの地図の両方)。「操作して移動」では道や小道の上、「あるいて移動」では実際に歩いて行くので道や小道(地図データでは車道や私有地の通路と見分けられない)には置かず、スポットになっている公園・神社・お寺・城跡・海岸・展望地そのものに置きます(地図の下の案内に「たからばこが近くにある!(伊文神社・120m)」のように出ます)。近づくと開いて10〜30ptと「西尾まめちしき」(地区の豆知識・紹介文と注目スポットの説明から)が手に入り、「きろく」に集まります。
文字を少なく(ふだん):上のバー・下のタブ・案内・ごほうびの画面・こよみの札は、文字のかわりにドット絵(nishio-go/icons.js、12×12 の絵が28個)。歩く地図には町名・駅名・お店の看板を出さず(当店の札は出す)、せかいちずは市町・海の大きな名前だけ。ごほうびの まちメモ の文は きろく で読めます。絵が主役:はじめの画面に西尾ドット絵帳の絵を3枚、ごほうびではドット絵を金の額縁で大きく出し、めずらしさの星(西尾にしかない題材★3・名物や産地★2、虹・雪・満月は+1)とはじめての絵に NEW のリボン。案内には行き先の名所の絵、地図の上のボタンは丸く。せってい の「📝 文字を多めに出す」で、いままでどおりの文字の表示にもどせます。
Blender で作るドット絵:とくてん の品物(お米の袋)、使えるポイントのコイン、11地区の名物(西尾=抹茶・一色=うなぎ・吉良=温泉・幡豆=三ヶ根山のあじさい・佐久島=黒壁の島・岡崎=お城・安城=稲の束・碧南=にんじん・高浜=鬼瓦・幸田=筆柿・蒲郡=竹島。areas.json の名物から。地区の窓と きろく の一覧に出す)、こよみを開いたときの田んぼの1年(冬の田んぼ・田おこし・田植え・青田・稲刈り)と天気(晴れ・くもり・雨・雪)、おまかせ強化(スニーカー・リュック・家)とたからばこ、バッジのメダル(リボンつきの金のメダル。まだのバッジは灰色)、人と話す窓の顔(町の人10種類の胸から上)、下のタブ(地図・ノート・プレゼント・歯車)と上のバー(お城・お茶わん)、きろく の数字の札10個(コイン・星・本・人・旗・ピン・足あと・ほのお・メダル・たからばこ)、今日のクエストの巻物と あしたのおたのしみの札、地図の上の丸いボタン(地球・軽トラ・主人公・方位磁石)、行事のカレンダーとドット絵帳のカード、スポットの窓・人と話す窓・ごほうび・交換所の札(吹き出し・目ざまし時計ほか)、ドット絵帳のまだ見つけていない題材の錠前、クーポンの券、はじめての絵のきらめき、スポットの種類14(鳥居・はす・ほこら・天守・石碑・博物館・山と朝日・像・カメラ・木とベンチ・本・電車・市役所・パラソル)(タブ・バー・札・巻物・ボタンは 32×32)は、Blender で立体を作って 48×48 のドット絵に焼いた PNG(nishio-go/art/)。作り直すときは pip install bpy(Blender 5.1 の Python 版。Python 3.13)のあと python tools/blender/pixel-art.py(ひとつだけなら python tools/blender/pixel-art.py ricebag)。Cycles で4倍の大きさに描き、明るさを3段に分けて材質ごとの3色に置きかえ、黒くふちどります。特典の絵は nishio-go/rewards.json の art。
離脱を減らす(docs/retention.md):はじめの画面のボタンをスクロールなしで見える所に、はじめの1分で「ようこそ」のごほうび(操作して遊ぶは約40m先の ようこそ たからばこ)、位置情報が使えない・範囲外なら1タップで操作して遊ぶへ、きろくに「あしたのおたのしみ」、ごほうび2回で「ホーム画面に追加」(nishio-go.webmanifest)。はじめてのごほうびまでの秒数・何日目か・遊んだ時間を GA4 に送ります。
プレイの確認:node tools/playtest.js 出力フォルダ で、ヘッドレス Chromium が通しでプレイして(操作して移動でたからばこと3か所めぐり → 当店の案内 → せかいちず → きろく → 呼びとめ → あるいて移動)、スクリーンショットと結果(playtest.json)を残します。
X の発信から直す(Grok → Claude → Codex):.github/workflows/x-cycle.yml が毎週、Grok(xAI の x_search)で農家さんや西尾の人の X の発信をさがし、Claude Code が トラクターのゲーム・にしおさんぽGO に取り入れ、Codex がレビューして(must の指摘は Claude が直す。2回まで)PR にする。Secrets の XAI_API_KEY と、ANTHROPIC_API_KEY か CLAUDE_CODE_OAUTH_TOKEN(Claude の Pro・Max の契約)が要る(OPENAI_API_KEY は無ければレビューなし)。行き先を marketing にすると、ゲームではなく今週の投稿案(X・Instagram・LINE)と企画の週報を docs/marketing-weekly/ に書く(自動では投稿しない。表示のルールは Codex が見る)。Grok に調べてもらうだけの「Grok research (X)」(.github/workflows/grok-research.yml。トラクターの 3D 車体・田んぼの作業・西尾の話題)もある。docs/x-cycle.md
AI が遊んでは直す:tools/ai-play.js(AI が操作して遊ぶ)・.github/workflows/play-improve.yml(遊ぶ→1つ直す→確かめる を回数ぶんまわして PR に)・tools/gb-play.py(ゲームボーイのゲームを Claude に遊ばせ、持ちこめるしくみをまとめる)。手順と記録は docs/play-improve.md
音楽:nishio-go/bgm/ の mp3 を流します(ふだんの曲・せかいちずの曲・チェックインとレベルアップの効果音)。ふだんの曲は時間と天気で変わり(朝・昼・夕方・夜・雨)、その時間の曲を1曲ずつ順に流します。曲はもとの10曲に、アルバム「西尾の音」100曲(nishio-go/bgm/s/・一覧 nishio-go/bgm/list.json。昼60・朝10・夕方10・夜10・雨10。どれも明るい曲:ヨナ抜きの長調の旋律を篠笛・三味線・琴に似せた音と矩形波で鳴らし、長調の和音のはずむ伴奏と祭りの太鼓を合わせる。夜は夜まつり、夕方は盆おどり、雨は雨あがり。題名は西尾の名所・名物・祭りから。その土地の実際の音楽ではないオリジナル)を足した110曲(アルバムが読めたら、朝・夕方・夜・雨は もとの静かな曲を外して明るい曲だけ)で、「せってい」に いまの曲名と「次の曲」ボタンがあります。どれも python3 tools/make-sound.py(アルバムは python3 tools/make-sound.py album)で作るオリジナルのファミコン風の音で、お店の宣伝にも使えます。Suno AI の曲に差し替えるときの指示文と使ってよい条件は nishio-go/bgm/README.md。「せってい」で消せます。
遊びかたは2つ:「🚶 あるいて移動」(位置情報で実際に歩く)と「🎮 操作して移動」(ドット絵の地図ではスティック/矢印キー、ふつうの地図ではタップした所へ移動)。はじめの画面でえらび、地図の下の切り替えボタンや「せってい」でいつでも切り替えられます。ポイントと記録はモードごとに別に保存し、お店のとくてんは「あるいて移動」でだけ使えます。
特典(ポイント交換):nishio-go/rewards.json に登録。"active": true の特典だけ本番の「とくてん」タブに表示されます(特典が1つも有効でなければタブ自体が出ません)。いまはサンプル1件(100円引き)を active: false で入れてあり、「操作して移動」でだけ試せます。交換するとポイントが減り、店頭で見せるクーポン画面(動く時計・残り時間・番号)が出ます。店員さんが確認して「使用済みにする」を押します。perDay で1日の交換回数、validMin で有効時間を設定できます。クーポンの有効時間は特典ごとに validMin(分)で短くできます(100円引きは10分・お米1袋につき1回まで・売り出し期間中は使えない・LINE のクーポンとは併用不可・ほかのクーポン・割引とも併用不可。条件は特典の札にタップなしでいつも出て、クーポン画面にも出ます)。使っていない有効なクーポンがある間は、ほかの特典と交換できません(いっしょに使えないように)。
ドット絵の地図(👾ボタンで切り替え、nishio-go/pixel.js):OpenStreetMap の道・建物・田畑・森・公園・川・海岸線などを 8m 四方のマスに塗り分け、16×16 のドラクエ風ドット絵タイルで表示(航空写真・Googleマップは使いません)。主人公は勇者のドット絵(ふつうの地図の現在地マーカーも同じ絵)、スポットは城・鳥居・お寺・町・宝箱で表示し、注目スポットは大きくきらきら。約1km四方ごとに Overpass API から取得して端末に30日保存(最大60区画)。「操作して移動」ではスティック/矢印キーで1マスずつ歩け、水と建物には入れません。地面をタップすると、そこまで道を探して歩きます(行き先に黄色い四角。建物や水をタップしたら そのそばまで。人のマスは通らず、地図の外(スティック・ボタン・こよみの札・タブ など)をさわる・矢印キーを押す・ほうびの知らせやダイアログで地図が隠れる、のどれかでやめる。車のときはスティックで)。西尾らしさのために、田んぼ・畑・茶畑(crop=tea)・ビニールハウス・工場地帯・神社やお寺の境内・墓地を描き分けます。山・丘・海は国土地理院の標高タイル(dem_png ズーム14=約8m)から作り、標高35m以上の草地を丘、150m以上を山にし、斜面に陰影を付けます。海は海岸線(右側が海)から塗ります。海岸線が通らない区画は、地図データが何もなく標高データの大半が「データなし」のときだけ海とみなします(標高の欠損だけで陸を海にしない)。水辺には波打ち際を描きます。標高が取れないときは地図データだけで描きます。
田んぼと市街地は実際の配置(nishio-go/landuse.json):国土数値情報「土地利用細分メッシュデータ」(国土交通省・令和3年度・100mメッシュ。利用規約に基づくオープンデータ、商用可)を tools/bake-landuse.js(.github/workflows/bake-landuse.yml)で遊べる範囲の表にしたものです(範囲を広げただけで前の範囲の中身が同じときは、歩く地図は新しい区画だけ作ります)。歩く地図とせかいちずは、OpenStreetMap に何も描かれていない所をこの表で塗ります(田→田んぼ、その他の農用地→畑、森林→森、建物用地→家並み、その他の用地・道路・鉄道→町の地面、ゴルフ場→芝生、海浜→砂浜)。OpenStreetMap の「作物の分からない農地」も、田のメッシュなら田んぼ、その他の農用地なら畑になります。これまでの「道の多い草地に家を並べる」作り方(下の街並み)は、土地利用で塗る前の古い区画だけに使います。地図の右下に「国土数値情報を加工」、せってい の出典に「国土数値情報(土地利用細分メッシュデータ・行政区域データ)(国土交通省)を加工して作成」と出しています。
街並み(nishio-go/pixel.js):道はアスファルトの灰色、国道・県道は白線と黄色の中央線つき。西尾の OpenStreetMap は家がまだ一部しか描かれていないので、まわり7×7マスに道や建物が多い草原だけを住宅地にし、道に面したマスに瓦屋根の家を並べます(歩けるマス。田畑・公園・森は変えません)。名前のあるお店(コンビニ・スーパー・ドラッグストア・町の八百屋や酒屋・お茶屋・和菓子屋など)・つくっているところ(craft)・ガソリンスタンド・銀行・郵便局・飲食店・カフェなどの目印(nishio-go/landmarks.json:tools/bake-spots.js がスポットと一緒に OpenStreetMap から作り、毎週作り直し)を店の形のドット絵で置き、名前を看板(その店らしい色:ファミリーマートは緑、スギ薬局は青、など)で出します(引いて見たときは大きなお店だけ)。せかいちずの町名(町・字)を青い町名の札で、駅を白い駅名標で出し、左上の こよみ の札に「📍米津町」のように いまいる町名(タップで市町も)、町が変わるとまん中に「〜 町名 〜」と出します。
当店の2店舗は、本物の外観(お店から受け取った外観の写真)に近づけた専用のドット絵(32×32):らいすぴあ・秀幸は赤と白の建物に白いどんぶりと「米」のマーク・白い看板・赤い「米のドライブスルー」の屋根と「ドライブスルー IN」の看板、近藤米穀店は クリーム色の建物に大きな赤い「米」・1階の看板とガラス戸・緑のひさし・左の「米のドライブスルー」の屋根。地図の札は「当店」ではなく、看板と同じ色の店名(白地に赤い字/クリーム地に黒い字)。
名所も本物の見た目に:注目スポットのうち133か所(当店2店舗と、名所131か所)は、専用のドット絵(名所は pixel.js の LANDMARK_ART。絵は130種類で、佐久島の西港と東港は同じ港の絵)。名所の絵はすべて 48×48 で、Wikimedia Commons の自由に使える写真を見て、色は写真から測り、比率も写真に合わせ、日の当たる面と影の面を分けて描いたもの(西尾城・岩瀬文庫・金蓮寺・刈宿の大仏・岡崎城・八丁味噌の樽・デンパーク・碧南水族館・竹島の八百富神社など。歩く地図ではふつうの名所の1.5倍の大きさ)。参考にした写真の作者とライセンスは docs/landmark-photos.md、せってい の出典にも一行出しています。写真が見つからない所や、写真が別の場所だった所(西尾市資料館・トンボロ干潟・三ヶ根観音など)は、ふつうの名所の絵のままです。Googleストリートビューの画像は、利用規約で画像をもとにした作品づくりが認められていないため使っていません。道から見た写真は Mapillary(CC BY-SA 4.0)から集められます:リポジトリのシークレット MAPILLARY_TOKEN(Mapillary の Client Token)を入れ、作業ブランチで Actions の「Research Mapillary photos」を動かすと、tools/mapillary-probe.js が当店と専用の絵がない西尾市内の注目スポットの写真を reference/mapillary/ に入れます(絵を描いたら消し、main には入れません)。
街並みの目印も Blender の絵:コンビニ・スーパー・ドラッグストア・ホームセンター・ガソリンスタンド・銀行・郵便局・飲食店・カフェ・ふつうのお店・病院・学校・図書館・交番・消防署・役所・駅の17種類を、立体で作って 32×32 に焼いた絵(tools/blender/poi.py → nishio-go/art/poi.png)。看板の文字やお店のマークは描かない、どのお店にも使えるふつうの形。読めるまでは前の手描きの絵。
おみやげ袋・キラの絵・今週のテーマ(docs/location-game-essence.md):位置情報ゲームの面白さの本質(歩くこと自体が前へ進む・当たりの大きさが毎回ちがう・同じ週に同じことをする)から足した。おみやげ袋は たからばこ(4回に1回。その遊びかたではじめては必ず1km)・はじめての注目スポット・今週のテーマの名所でもらえ(3つまで)、先頭の袋が 1km・2km・5km 歩くと開いてポイントとドット絵(まだ持っていない題材を先に)。ドット絵は 1/32 で金色の「キラ」になる。今週のテーマ(神社・お寺・公園・史跡と城・海と展望・アートと資料館が週ごとに回る。日本時間の月曜に変わる)の名所はポイント2倍とおみやげ袋。絵帳の まだの題材は、ぼんやりした絵と「〇〇の 海辺で 見つかる」の手がかり。ようこそ たからばこ では はじめの1枚を3枚から えらぶ。7日連続ごとに めずらしい天気のキラの絵、きろく に先週のさんぽ(距離・チェックイン・新しい絵)、毎週土曜の10時台は キラが2倍。
名所の種類ごとの絵も Blender の絵:専用の絵がない ふつうの名所は、これまで ぜんぶ同じ手描きの「たからばこ」の絵で、道ばたのたからばこと見分けがつかなかった。公園(4通り:木とベンチ・すべり台・ブランコ・ジャングルジム。名所の id で決まる)・史跡(石碑と石灯ろう)・展望(さくと双眼鏡)・名所(屋根つきの案内板)・アート(銅像)・海岸(パラソル)・資料館(柱の建物)と、注目スポットの型の 鳥居・お寺・城・町(町家とのぼり旗)を、立体で作って 24×24 に焼いた絵(tools/blender/spots.py → nishio-go/art/spots.png)。ふつうの名所は1.5マス(マスと同じ細かさ)で描き、そのほかの種類は案内板。歩く地図では多くの名所に特大の絵があるので、おもに せかいちず・チェックインの札・きろく の一覧の小さな絵と、特大の絵が読めるまでの間に使う。読めるまでは前の手描きの絵。
歩く地図の人も Blender の絵:主人公と西尾の人たち10種類(おじいさん・おばあさん・男の人・女の人・子ども・学生・漁師さん・お店の人・ガイドさん・お坊さん)を、2頭身の立体で作って 16×16 に焼いた絵(tools/blender/people.py → nishio-go/art/people.png。歩く2コマ、主人公は下・上・横の3方向で左は横を反転)。色は前からの人の色(NPC_COLORS)と同じで、杖・おだんご髪・帽子・えり・はちまき・エプロン・旗・袈裟の小物つき。ふつうの地図の現在地マーカーも同じ絵。読めるまでは前の手描きの絵。
線路も Blender の絵:枕木・レール・バラスト(砕石)を立体で作り、となりの線路のマスへつながる向き16通り(縦・横・ななめ・分かれ道・十字)と角へ向かう10通りを 16×16 に焼いた絵(tools/blender/maptiles.py rail → python3 tools/blender/maptiles-sheets.py rail → nishio-go/maptiles/rail.png)。これまでは横に走る線路でもレールが縦に描かれていた。斜めに走る線路はマスの階段になるので、曲がりのマスは2つの端のまん中を結ぶ ななめの線にして、つながると1本のまっすぐな線路に見えるようにした。45度くらいの線路でマスが角だけで接する所は、角へ向かう10通り(角から角・辺のまん中から角)の絵を使う。角が2つ以上ある分かれ道など、どの1枚にもない つながりは、バラストだけの絵の上に「まん中から1つの端へ」の部品(8方向)を重ねて描く(pixel.js の railIndex)。複線や駅の構内で線路のマスが2〜3マスの帯になっている所は、まわり5×5の並ぶ向きから横・縦・ななめのまっすぐな線路を描き、平行な複線に見えるようにする(ななめのときは、となりの線路が角をかすめる分も描いた絵。railBandIndex・railBandSpill)。帯の向きは、線の両端のマスも同じ向きの帯か ふつうの線路のときだけ使い、帯が曲がる所は部品を重ねてつなぐ。線路・道・水べの絵はマスごとに覚えておき、地図のまとまりを読むたびに作り直す(nbrCache)。道に上書きされて線路が切れている踏切(道が3マス以内で、両がわに同じ向きへ続く線路がある所)は、道の上にレールを重ねる(railCrossing)。読めるまでは前の手描きの絵。
道も Blender の絵:ふつうの道(明るいアスファルト)・大きな道(国道・県道。こいアスファルト)・小道(土)の3つを、となりの道のマスへつながる向き16通りごとに 16×16 に焼いた絵(tools/blender/maptiles.py road → python3 tools/blender/maptiles-sheets.py road → nishio-go/maptiles/road.png、32×3)。道でないマスとの境には、ふつうの道は縁石とL字の側溝、大きな道は縁石と白い外側線、小道は草のへりを描く(線路のマスとは、そのマスが その向きの踏切のときだけ つながっているとみなす。線路と並んで走る道の ふちは消さない)。ところどころにマンホール・補修のあと・小道の水たまり(pixel.js の roadIndex)。交差点や曲がり角の内がわ(となり合う2辺がつながっていて、そのあいだのななめのマスが道でない角)には、角の縁石・白線・草を重ねる(kado.png、ROAD_CORNERS)。大きな道のまん中の黄色い破線は、これまでどおり画面で描く。読めるまでは前の手描きの絵。
水べと橋も Blender の絵:陸と接する水のマスは、岸の種類ごとの絵(nishio-go/maptiles/shore.png、32×3)。町なか(家・建物・町・工場・道・線路)と接していればコンクリートの護岸、田畑・草地・森なら草の土手と白い波、砂浜なら浅瀬と寄せる波(2コマ)。陸がある辺16通りごと(pixel.js の shoreIndex)。ふつうの道・大きな道で水と接する辺には、橋の欄干(手すりと柱、rankan.png)を重ねる。1マス幅のななめの用水路のように、水のマスが角だけで接する所は、その角を まん中に ななめの水路(両がわに護岸・土手、砂浜なら浅瀬)を重ねてつなぐ(kawakado.png、drawWaterCorners。せかいちずも)。tools/blender/maptiles.py road(道・角の縁石・欄干・建物の前の壁・水べ・水・角の水路をまとめて描く)→ python3 tools/blender/maptiles-sheets.py road。読めるまでは前の白い波打ち際。
建物の前の壁も Blender の絵:建物のマスの下のふち(下のマスが建物でない所)に、窓・戸口・シャッターと看板・ガラスの店先と日よけ・アパートの手すり・倉庫の大きな戸の6通り × 壁の色5の絵を重ねる(tools/blender/maptiles.py road → python3 tools/blender/maptiles-sheets.py road → nishio-go/maptiles/facade.png、6×5)。4×4マスのまとまりごとに形を決め、道に面していれば お店が多め(pixel.js の facadeType)。読めるまでは前の手描きの壁。
せかいちずの線路・道・水べ:せかいちず(1マス100m)でも、歩く地図と同じ決め方で、線路はつながる向き、道はふちの縁石・白線、岸は護岸・土手・浜、水と接する道は欄干の Blender の絵にする(pixel.js の drawLinked。描くあいだだけ gridAt を せかいちずのマスに切りかえる)。
あしあと・はじめての道・自己ベスト・きょうのさんぽ:歩いたマス(8m)が歩く地図に足あととして残り、せかいちずでは歩いた100mのマスが もも色になる(pixel.js の trailWalk・drawFoot。記録はモード・版ごとに localStorage の 記録のかぎ+_trail)。はじめて歩いたマスが50ふえるごとに +5pt(1日50ptまで。game.js の addTrail)。いちばん歩いた日をこえたら知らせる(walkBest)。きろく のいちばん上に きょうのさんぽ のカード。話しかけた人の頭に気持ちの吹き出し(npcEmotes)。ほかのドット絵ゲームを遊んで足したもの(docs/location-game-essence.md の第3弾)。
町を走る電車・車・船(Blender の絵):歩く地図の線路には赤い電車(4両)、道には乗用車(白・赤・青・銀・黄)、ひろい水の上には漁船が走ります。Blender で立体を作って 16×16 に焼いた4方向の絵(tools/blender/maptiles.py train car boat → python3 tools/blender/maptiles-sheets.py vehicles → nishio-go/maptiles/vehicles.png)。画面の外のふちに出てマスに沿って走り、これまで進んだ向きに近い向きを選ぶので、ななめの線路や道でも行ったり来たりしません(電車は線路のマスを好み、踏切の道のマスも通れる)。ただの景色で、主人公や名所とはぶつかりません。電車1編成・車6台・船3そうまで。動きをへらす設定(prefers-reduced-motion)のときは出しません(pixel.js の TRAFFIC・updateTraffic・drawTraffic)。
代表的な名所は特大のドット絵:西尾城(丑寅櫓)・岡崎城・岩瀬文庫・金蓮寺弥陀堂・名鉄 西尾駅・刈宿の大仏(常福寺)・佐久島のおひるねハウス・黒壁集落・稲荷山茶園の9か所は、Blender で立体を作って焼いた 96×96 の絵(tools/blender/giant.py → nishio-go/art/giant/。形と色は、写真を見て描いた 48×48 の絵に合わせた)を、歩く地図で名所のまわり6×6マスに大きく描きます(pixel.js の GIANT_ART。地面が名所の場所にくるように上へずらし、タップできる所も絵に合わせる。再チェックイン待ちは灰色。読めるまではいつもの絵)。
となりの市町の注目スポットも、手で形を作った特大のドット絵(65か所):岡崎19(大樹寺の山門・カクキューの味噌桶・伊賀八幡宮の随身門と反り橋・南公園の D51 など)・安城13(デンパークの風車・堀内公園の大観覧車・本證寺の鼓楼と堀・二子古墳など)・碧南13(海浜水族館・臨海公園のクジラ・九重味淋の蔵など)・高浜7(高浜港駅の大鬼瓦・大山緑地のたぬきの像と桜など)・幸田10(本光寺のあじさい・筆柿の畑の道の駅・菱池の排水機場など)・蒲郡3(竹島と竹島橋など)。西尾市の9か所と同じく、1か所ずつ Blender で立体を組んで 96×96 に焼き(tools/blender/giant-neighbors.py → nishio-go/art/giant/<spots.json の id>.png)、形と色は写真を見て描いた 48×48 の絵(pixel.js の LANDMARK_ART とその説明)と、スポットの説明文に合わせた。前の型で作った絵の代わりに GIANT_ART で描く
西尾市の注目スポットも、手で形を作った特大のドット絵(74か所。西尾市の注目スポットすべて):旧近衛邸・尚古荘・伊文神社・久麻久神社・八ツ面山・抹茶ミュージアム 和く和く・実相寺・三河工芸ガラス美術館・西尾市役所・平原の滝・一色さかな広場・一色港・佐久島の西港と東港・カモメの駐車場・大浦海水浴場・華蔵寺・黄金堤・東条城跡・尾﨑士郎記念館、2回目に 吉良吉田駅・正法寺古墳・塩の里・吉良ワイキキビーチ・幡頭神社・愛知こどもの国(白い汽車)・上永良神明社の大シイ・円融寺の五本松・勝楽寺のお地蔵さま、3回目に 合掌造りの無の里・西福寺の鐘楼・トンボロ干潟と前島・穴弘法の八十八ヶ所・中畑八幡社のおまんと・高倉神社の天狗 など(48×48 の絵がない所は説明文から形を決めた)。となりの市町と同じく1か所ずつ Blender で立体を組んで 96×96 に焼き(tools/blender/giant-nishio.py → nishio-go/art/giant/<spots.json の id>.png)、形と色は 48×48 の絵(LANDMARK_ART)とスポットの説明文に合わせた。看板に字やロゴは入れない。前の型で作った絵(f-<id>.png)と list.json・giant-list.json の行は消し、giant-list.py も型で上書きしないように除く
となりの市町ののこりの注目スポットと、OpenStreetMap の名所も手作りの特大のドット絵に(60か所):2回目に 半田・武豊・東浦の駅と名所(半田赤レンガ建物・半田市立博物館・知多半田駅・武豊駅の記念碑・和志山古墳 など)と、岡崎への名鉄の駅(矢作橋・宇頭・岡崎公園前・美合・男川など)・三河武士のやかた家康館・本宗寺・野田八幡宮の30か所。1回目:注目スポットののこり3か所(碧南の西方寺・あおいパークのにんじん畑、高浜の人形小路)は説明文から、48×48 の手描きの絵がある OpenStreetMap の名所117か所のうち西尾に近い27か所(西尾口駅・福地駅などの名鉄の駅・三河鳥羽駅の赤い駅舎・碧南市民図書館・西心寺・上地八幡宮・勝鬘寺・亀崎駅・旧中埜半六邸・六名駅の高架 など)は 48×48 の絵に合わせて、1か所ずつ Blender で組んだ(tools/blender/giant-osm.py)。OpenStreetMap の名所は前の型の絵と同じ nishio-go/art/giant/<id>.png に上書きする
ほかの名所と、のこりのスポットも特大のドット絵(2041か所):2回目に、まだ特大の絵がなかったスポット1229か所(ふつうの公園934・駅前広場や駐車場4(公園の絵にせず、しきつめた広場・駐車場の絵)・運動場18・池のある公園41・緑地46・庭園・史跡・山・灯台など。giant-list.py --rest。公園は名前で分け、遊具(すべり台・ぶらんこ・ジャングルジム・砂場・シーソー・鉄棒)の組み合わせ・ベンチ・トイレ・時計・木を名所ごとに変える)も足した。1回目:上の9か所のほか、地図に専用の絵や型の絵が出る名所すべて(と、絵がまだなかった注目スポット20か所)にも、Blender の型で作った 96×96 の特大の絵(tools/blender/giant-gen.py → nishio-go/art/giant/<id>.png、一覧は list.json)。tools/blender/giant-list.py が名所ごとに形の種類(神社・稲荷・お寺・駅・城跡・博物館や役所・史跡・古墳・見どころ・山・教会・公園・海水浴場・像・温泉・水族館。名前の「古墳」「稲荷」「海水浴場」なども見る)と色(写真から測った屋根・壁・差し色。型の絵のデータか、いまの絵から測る)を決めて giant-list.json に書き、型に名所ごとの乱数(id から)で 大きさ・木や灯籠の数と場所・三重塔や鐘つき堂・山門・拝殿のあるなし・鳥居の色・電車の両数 などを変えるので、1枚ずつ全部ちがう絵です。駅の電車は 名鉄は赤、JR は銀にオレンジの帯、愛知環状鉄道は銀に黄緑の帯。画面に入りそうな名所の絵だけ読みます。
西尾市の外の名所1000か所は、まわりの本当の地図に合わせた特大のドット絵:型の絵(上の2041か所)のうち、西尾市の外にある神社・お寺・史跡・館・駅・古墳・池や緑地など1000か所(遊具の公園を除き、西尾駅に近い順。tools/blender/giant-site-list.py → giant-site.json)を作り直した。名所ごとに、歩く地図の区画データ(OpenStreetMap と、国土地理院の建物・空中写真の屋根の色)から名所のまわり 7×7 マス(約56m四方)を読み、名所からつながる境内・公園・敷地のマスを絵の地面にする(形は本当の敷地のまま)。建物のマスのかたまりに本殿・本堂・館・駅舎を置き(かたまりに入るいちばん大きな長方形の大きさ。屋根は空中写真の色。正面は敷地の広がる側=参道の側)、森のマスに木、水のマスに池、墓地のマスにお墓、入口に鳥居・山門・門、駅は線路のマスに合わせた1本の線路とホームと電車、古墳は森のかたまりの大きさの墳丘を置く(tools/blender/giant-site.py → nishio-go/art/giant/<id>.png。手前の木で建物がかくれないように、参道の上と建物の手前には木を植えない。作った物がぜんぶ入るようにカメラの範囲を決める)
街の主な建物も特大のドット絵(500か所):学校193(小・中・高校・大学)・郵便局90・交番と警察署70・病院55・消防署41・役所27・図書館24を、西尾駅に近い順に選び(tools/blender/giant-poi-list.py。歩く地図の区画データの目印から、名前のあるもの。同じ建物の重なりは1つにし、ほかの絵から4マス以内のものは選ばない)、Blender の型で 96×96 の絵にする(tools/blender/giant-gen.py --poi → nishio-go/art/giant/poi-*.png、一覧は nishio-go/art/giant/poi.json)。学校は長い校舎と時計・体育館・校庭とゴール(小・中学校はプール、小学校は鉄棒、大学は校舎が多い)、病院は白い高い建物と窓の帯・玄関のひさし・駐車場・救急車(屋上にヘリポートのことも。赤十字の印は描かない)、交番は赤いランプとパトカーと自転車(警察署は大きな建物にアンテナとパトカー何台も)、消防署は車庫の赤い消防車・訓練の塔・はしご車、郵便局は赤い帯と丸いポスト・配達の赤い車とバイク。歩く地図では、その目印を4マスの大きさで描きます(読めるまではいつもの目印の絵)。
名所の絵は1000か所:注目スポットの名所131か所に加えて、OpenStreetMap の名所(神社・お寺・駅・城跡・博物館・図書館・役所・史跡・見どころなど)のうち117か所は、日本語版ウィキペディアの記事の代表画像(Commons。記事の位置がスポットから1.5km以内のものだけ)を見て手描きした 48×48 の絵(LANDMARK_ART に OpenStreetMap の id で入れている)。さらに752か所は、種類ごとの型(神社・お寺・駅・城跡・今の建物・史跡・見どころ・教会、それぞれ4つの形)でつくる絵で、tools/make-landmark-gen.js が注目スポットと重ならない所を選んで(数えるのも選ぶのも、ゲームの地図に本当に出るスポットだけ。tools/dump-spot-ids.js がゲームを開いて書き出した一覧を使う) nishio-go/landmark-gen.js に書き出す(写真がある所は屋根・壁・差し色を写真から測り、ない所は種類の基本の色。形は名前と id で決める)。型の絵は見えたときに作って覚えておき、地図では注目スポットと同じ2マスで描く。
ミニゲーム「にしおジャンプ」(nishio-go/runner.js):名所(注目スポット。当店はのぞく)でチェックインした日に、そのスポットの窓と「きろく」から遊べる横スクロールのドット絵アクション。主人公を左右に動かしてジャンプし、コインを集め、米俵のブロックを下からたたくとコイン、カラスは上からふむ。石灯籠・茶畑の段・石垣をこえ、穴に落ちないように西尾城の旗をめざす(3回までやりなおせる。まん中の旗から)。画面の ◀ ▶「ジャンプ」(長く押すと高く跳ぶ)、キーボードは ← → と スペース。ごほうびは1日1回、コイン1まい1pt+クリア10pt(30ptまで)。絵は Blender で作った横向きのドット絵(主人公の立つ・走る2コマ・ジャンプ、はばたくカラス、回るコイン、草の地面・土・石垣・米俵(たたく前とあと)・茶畑の段、石灯籠、まん中ののぼり、ゴールののぼりと西尾城。tools/blender/runner.py → nishio-go/art/runner.png。左向きは反転。読めるまでは手描きの絵)
ミニゲーム「コンバインで稲刈り」(nishio-go/harvest.js):ドット絵の地図で田んぼのマス(またはすぐとなり)にいるとき、右上の列に出るコンバインのボタンから遊べる(あるいて移動でも、操作して移動でも)。黄金色の田んぼを、コンバインで1マスずつ刈る(◀▲▼▶・矢印キー・WASD)。成功は ①刈り残しがない ②刈ったあとのマスを走らない(むだ走り0) ③曲がった回数が目安+2回まで、のすべて。目安は、回り刈り(右回り・左回り)と往復刈り(たて・よこ)で数えたいちばん少ない曲がる回数で、ちょうどなら「名人」★★★。田んぼは3枚(5×4・7×5・9×6)で、成功すると次へ。ごほうびは成功したとき1日1回、10pt+星1つ5pt。田んぼ・コンバイン・軽トラの絵は Blender(nishio-go/maptiles/、地図のボタンは nishio-go/art/btn-combine.png)
ミニゲーム「段丘をのぼる」(nishio-go/dankyu.js):ドット絵の地図で急な坂のマス(標高の陰影がいちばん強いマス。山・丘・海と、まわりに山・丘のマスが多い所や、急な坂が面に広がる丘の斜面はのぞく=線になった段丘のへりの崖)のそばにいるとき、右上の列に出る ⛰️ のボタンから遊べる。下の田んぼ(氾濫平野)から、小さな段・自然堤防の集落をへて、地層の帯の段丘崖のでっぱりをジャンプで上り、上の台地の旗をめざす(◀ ▶「ジャンプ」、← → と スペース)。崖の途中の白い「露頭」にさわるとまめちしき、落ちてくる小石にあたると ♥ がへる(3つ)。時間切れか ♥ がなくなると不成功。段丘は3つで、名前は西尾の自然の本(shizen.js の出典)で市内の碧海台地を分けた地区:a・b 地区の碧海台地(八ツ面山の西〜矢作川ぞい)→ c・d 地区の碧海台地 → e 地区の段丘(幡豆山地のふもと。碧海層相当層)。でっぱりは日ごとに変わり、どれも1回のジャンプで届く(tools/playtest.js で確かめる)。★はのぼりきった・露頭をぜんぶ見た・時間が3分の1以上のこった。ごほうびはのぼりきったとき1日1回、10pt+星1つ5pt。主人公と地面の絵は「にしおジャンプ」の Blender の絵
らいすぴあの特大の絵・お店のなか(tools/blender/giant-shop.py):運営者が撮ったお店の写真4枚から、歩く地図の特大の絵(店・米のドライブスルー・軽トラ・コイン精米所)と、名所の窓の「お店のなか」(お米の売り場)。字・値段・となりのお店・車のナンバーは描かない。
ミニゲーム「肥料山の草刈り」(nishio-go/hiryoyama.js):丘・山のそばの 🌿 から。草を刈って田んぼへ運ぶ(60秒)。とちゅうで山の持ち主が「返して」と来るので、1948年の方針どおり「知事の許可がいる」と答える。
イベント「本のできごと」(nishio-go/bookev.js):本に出てくる場所に近づくと、そのできごと(西尾町が市になる・合併の話し合い・佐久島の世論調査・製糸会社の報告書・肥料山・吉良町の観光の計画・紅樹院の茶園 など9つ)が起き、問いに答える(正解 +20pt)。中身は運営者から受けとった本のページ(sangyo.js の出典)。
イベント「古い地図が出てきた」(nishio-go/oldmap.js):町に入ると、その町が明治39年(1906年)ごろ どの村だったかの地図が出る(村ごとに1回、+15pt、11の村をぜんぶでバッジ)。村の地図は、本の地図をなぞらず、町名の位置(OpenStreetMap)を本で読みとった村ごとに色分けして描いた おおよその形。
米づくりの まちメモ(nishio-go/kome.js):運営者から受けとった農文協の米づくりの本(2ページ「種籾」)から、種もみと芽出しの話を3つ。写真はとりこまず文の中身だけ(出典はファイルの頭)。田んぼを15歩 歩くと1日1回、イベント「芽出しの見きわめ」(nishio-go/medashi.js):3つの種もみ(伸び過ぎ・ギリギリOK・OK)から いちばんよいものを えらぶ(OK +20pt)。
水べのイベント「虫の名前あて」(nishio-go/mushi.js):ドット絵の地図で水べを15歩 歩くと1日1回。虫の名前が出て、3びきの絵から その虫を えらぶ(3問。名前の中に見た目のヒント:ミスジ=3本のすじ など)。当たった数で 0・6・12・20pt と、西尾の自然の本(331ページ)にのっている虫の まちメモ(shizen.js の mushi)。名前は本のとおり、絵は写真をなぞらず名前があらわす見た目だけを描いた。
イベント「雲母石を探せ」(nishio-go/kirara.js):八ツ面山・寺部・愛知こどもの国の近くに来ると(場所ごとに1回)、20個の石から ときどき きらっと光る雲母石を探す。見つけると +15pt(1回目なら +20pt)と雲母の まちメモ、3か所ぜんぶで もう +30pt。話は西尾市の資料(八ツ面山で雲母がとれた・吉良荘の名前のもと という言い伝え)と、西尾の自然の本の地質図の凡例(岩の名前に「黒雲母」)だけ。地質図の絵はなぞらない。
イベント「八ツ面山の昆虫さがし」(nishio-go/yatsumushi.js):八ツ面山(久麻久神社も)の近くで1日1回。「きょうの虫」(季節に合うもの)を、林の5つの場所(地面・草むら・樹液の木・倒木のキノコ・木の上)から3回までで探す。えらんだ場所で本に書かれている虫がわかり、虫手帳(14ひき)に入る。見つけたら +15pt、はじめての虫 +5pt、八ツ面山の虫の まちメモ。中身は西尾の自然の本 335〜336ページ「八ツ面山」の本文だけ。
前回のさんぽ・バッジの達成率と もうすぐ・同じ知らせを重ねない・稲刈りの ↶ もどす・ミニゲームの自己ベストと つづき:日がかわって はじめて開いたときに前に遊んだ日のまとめ(game.js の prevDayStat)。バッジの見出しに達成率、まだのバッジで いちばん進んでいる2つを「もうすぐ」に。同じ知らせは重ねない(toast・toastAfter)。稲刈りは1マスずつ もどせる(harvest.js の undo)。稲刈り・段丘は面ごとの自己ベストを残し(miniBest)、まだ成功していない面から始まり、結果の画面で面をえらべる。農場のゲームと倉庫番を遊んで足したもの(docs/location-game-essence.md の第4弾)。
めぐりの れんさ・歩いた道の節目:30分以内に ちがう名所へチェックインすると れんさがつながり、名所の点が ×1.2・×1.5・×2 に(game.js の chainStep)。これまでに歩いた道が 500m・1km・2km…と倍ずつの節目をこえるたびに ポイント(trailMiles)。きろく に「つぎの節目まで あと何m」。落ちものパズルと 2048 を遊んで足したもの(docs/location-game-essence.md の第5弾)。
はじめての出会いは かならず・のこりの数・位置を待つ間の まちメモ:生きものに まだ会っていなければ 25歩目で、会ったことがあっても 100歩で かならず出会う(pixel.js の critterStep)。田んぼ・水べに入ると「まだ会っていない生きもの 3」(critterCount)。あるいて移動で 位置を待つ間は、下のパネルに まちメモの おさらい(game.js の waitLine)。マインスイーパーと ブロックくずしを遊んで足したもの(docs/location-game-essence.md の第6弾)。
ガイドさんの記録・遠いほど めずらしい・路地の行き止まり・しるしの2枚・殿堂入りの場所の札・水べで じっと見る・100歩たんけん:その日はじめの100歩で はじめての道を何マス歩けるか(hundred、自己ベスト)。水の となりで 4秒 止まると 水の生きもの(pixel.js の waterWatch、1日2回)。しるしを もらうと 2枚から1枚を キラで(sealPickCheck)。せかいちずの西尾城跡に「👑 しるし ○/5」(pixel.js の goalTag)。西尾城跡のガイドさんが 次のレベルまで あと○pt と しるしの進み具合を話す(game.js の guideRecord)。西尾城跡から 4km で キラ 1.5倍・8km で 2倍(kiraFar)。歩く地図で 道が終わるマスに入ると まちメモ(alleyFind・pixel.js の alleyEnd)。昔のドット絵RPG と NetHack の しくみ(docs/play-improve.md の 夜の開発)。
西尾ドット絵帳(74000枚):西尾市の中で、たからばこを開けたり、スポットにチェックインしたりすると、西尾ならではのドット絵(48×48 の景色)が1枚もらえる(nishio-go/dots.js)。題材は37(実相寺=西尾茶のはじまり・覆いをかけたてん茶の茶畑・抹茶と和菓子・石臼・てんてこ祭・うなぎの養殖池と水車・うな重・炭火のかば焼き・えびせんべい・三河湾のあさり・一色さかな広場・佐久島への船・佐久島の黒壁の家並み・幡豆の海と沖の島・西尾城の丑寅櫓・城下町の町家・名鉄の電車・吉良の赤馬・黄金堤・饗庭塩の塩田・西尾祇園祭・鳥羽の火祭り・三河一色の大提灯・三ヶ根山のあじさい・西尾の田んぼ・八ツ面山・西尾城の鍮石門・旧近衛邸の茶室・岩瀬文庫の古い本・カーネーションの温室・稲荷山茶園・一色の海苔ひび・吉良温泉と三河湾・華蔵寺の山門・一色の干潟の水鳥・金蓮寺弥陀堂・三河万歳)× 季節と時間帯16 × 置き方・小物25 × 天気5(晴れ・くもり・雨・霧・冬は雪/夜は満月/ほかは虹)= 74000枚で、全部ちがう絵になることを確かめてある。題材は、西尾市を調べなおした結果(docs/nishio-research.md)で「西尾ならでは」か確かめてあり(docs/dots-nishio.md)、根拠の弱かった5題材(防霜ファンの茶畑・抹茶ソフト・漁港・手筒花火・八ツ面山の桜)は入れかえた(No.1〜10000 の番号は変えず、その番号の絵と名前がかわる)。どの題材が出るかはその場所の地区(注目スポットはその地区、ほかは いちばん近い注目スポットの地区)と土地利用(海辺の題材は海から約300m以内でも)、季節と時間帯はもらったときの日本時間、天気は気象庁の今の天気(weather.js。朝は霧のことも、晴れの日はたまに虹や満月。雨が降っている間はいつも雨の絵で、今の天気とちがう絵にはしない)。集めた絵は「きろく」の西尾ドット絵帳で、題材ごとに見られる。目標は「題材 n/37」と「題材×天気 n/185」(74000枚ぜんぶは目標にしない。置き方のちがいは見つけるたびの楽しみ)。絵には事実の説明をつけない。74000枚ぜんぶ、Blender で題材ごとに立体の景色を作り(置き方は見る向きと小物、季節で木や茶や田んぼの色と形がかわる)、48×48 のドット絵に焼いた絵(tools/blender/dots3d.py で材質と明るさの段を描き、tools/blender/dots3d-sheets.py で季節の色・時間帯の色あい・空と天気をのせて nishio-go/dots3d/ の2960枚のシートにする。シートは題材・季節・時間帯・天気ごとに 48×48 が 5×5。74000枚ぜんぶちがう絵になることを確かめてある)。ゲームはシートを読んで切り出し、読めないあいだは前からの描き方で描く
地図の家と森(Blender・家は1万マス):ドット絵の地図の住宅地の家と森の木は、Blender で立体を作って 16×16 に焼いた絵(tools/blender/maptiles.py で材質と明るさの段を描き、tools/blender/maptiles-sheets.py で色をのせて nishio-go/maptiles/ のシートにする)。家は 形5(切妻・寄棟・2階建て・陸屋根・L字)× 庭の小物5(なし・庭木・車・自転車と植木鉢・屋根の太陽光パネル)× 向き2 = 50の立体に、屋根の色10 × 壁の色5 をかけた2500通りを、季節4つ(桜のころ・ふだん・紅葉のころ・冬。庭木の色と、地面の花びら・落ち葉・霜がかわる)ぶん = 10000マスで、全部ちがう絵になることを確かめてある。マスの場所ごとに決まった家が建つので、町を歩くと1軒ずつちがう家が並ぶ。森の木は 10の立体(広葉樹・松・杉・竹・植えこみ など)× 葉の色3 で、2コマで風に葉がゆれる(となりの木と少しずつずれて、風がわたるように)。芝生(公園のほか湿地・運動場なども同じマスなので、遊具は置かず草・花・植えこみ・桜の木)・ビニールハウス(南北に長いハウスが上下のマスにつながる)・墓地・工場の敷地(コンテナ・タンク・トラック・パレット・のこぎり屋根の小屋・フォークリフト)・丘・山も、それぞれ6つの立体 × 色5 = 30通りを季節4つぶん(nishio-go/maptiles/misc-<季節>.png。公園の桜は桜のころだけ花、紅葉のころは山も色づく)。田んぼも Blender の絵で、こよみの田んぼのようす5つ(青田・黄金色の稲・田植えの水田・田おこしの土・刈田とわら)× 9通り(nishio-go/maptiles/paddy-<ようす>.png)。景色をマスの大きさでくり返して描くので、となりのマスとすきまなくつながる。青田と黄金色の稲は2コマで、ななめに風の波がわたるようにゆれる。茶畑(丸く刈りこんだ茶の木の列)・畑(キャベツ・ねぎ・にんじん・マルチ。8×8マスのまとまりで同じ作物)・砂浜(貝・小石・海草・流木・足あと)・境内の砂利(ほうきの目・飛び石・石灯籠)・草地(草の株と花。2コマで風にそよぐ)も Blender の絵(nishio-go/maptiles/field-<季節>.png、12通りずつ)。水(海・川・池)はさざ波の列が2コマで動く Blender の絵(water.png)、町なかの地面はたいてい何もなく、8マスに1つくらいマンホール・植木鉢・自販機・電柱・自転車(town-<季節>.png)。地図の建物(OpenStreetMap の建物のマス)の屋根も Blender の絵で、瓦(5色)・金属の波板(5色)・陸屋根(3色。室外機・給水タンク・点検口つきも)の32通り(roofs.png)。4×4マスのまとまりで同じ屋根になるので、大きな建物は1枚の屋根に見え、建物の下の辺には窓のある壁を描いて建物が立って見えるようにしている。どの季節のシートかは pixel.js の mapSeason(こよみの桜・紅葉の見ごろに合わせる)。シートが読めないあいだは、前からの描き方で描く
地図の小物(Blender・ちがう絵で99840枚):ドット絵の地図のところどころに、Blender で作った小物を置く(tools/blender/deco.py で題材130 × ポーズ・置き方6 × 向き4 = 3120の立体を描き、tools/blender/deco-sheets.py で色8通り × 季節4 をのせて nishio-go/deco/deco-<季節>.webp(劣化しない WebP。PNG の4割ほどの大きさ)。99840枚ぜんぶちがう絵になることを確かめてある)。題材は 鷺(白鷺・青鷺など8種)・小鳥(すずめ・せきれい・かわせみ など8種)・鴨(かるがも・まがも など8種)・かもめ・猫・犬(毛の色8通り)・かえる・ちょうちょ・かかし・はざかけ・わらぐろ・農家の人・子ども・つり人・お地蔵さま・ほこら・石灯籠・道しるべ・野の花・あじさい・ひまわり・コスモス・切り株ときのこ・岩・ベンチ・植木鉢・自転車・自販機・ちょうちん・ごみの分別箱・三輪車・ビーチパラソル・漁船・小舟・ブイ・はす・かに・砂の城・ピクニック・たぬきの置物・水門・からす、西尾らしい物(茶つみ・うなぎ池の水車・三河一色の大ちょうちん・吉良の赤馬・一色の海苔ひび・カーネーション・野点・うなぎののぼり・祇園祭の屋台)、季節の物(こいのぼり・門松・たこあげ・すいか・お月見・柿の木・桜・もみじ)、トラクター(田おこし)とコンバイン(黄金色の田んぼ)、きじ・つばめ・のうさぎ・ほたる・池のこい・はくちょう(冬)・ふくろう・りす、ヨット・消波ブロック、物干し・ふうせん・バス停・盆栽・ジョギング・犬の散歩、こま犬・絵馬・おみくじ、みつばちの巣箱、とめてある軽自動車・原付・自転車に乗る人・手おし車のおばあさん・ランドセルの子ども・鬼ごっこ・無人の野菜売り場・カヤック・白鳥のボート・水上バイク・ビーチボール・サーフィン・貝ひろい・野生のたぬき・いたち・山歩きの人・巣箱、雨のときだけ かさをさす人、きつね・とんび・にわとり・うし・せみ・かぶとむし・ざりがに・もぐら・金魚、菜の花・つくし・梅・お花見・七夕・盆おどり・彼岸花・すすき・ハロウィン・いちょう・クリスマス・焼きいも、田植え・手で稲刈り、道の工事・宅配のバン・かき氷・虫とり・ゆかた など。マスの種類ごとに置く物を決め(田んぼは田んぼのようすで、水田には鷺や鴨、黄金色の田にはかかし、刈田には はざかけ。町なかには猫や自転車、水の上には鴨や舟、浜には かにや かもめ)、ひまわりは7〜8月・コスモスは9〜10月のように月でも変わる。季節のシートで、足もとに花びら(春)・草(夏)・落ち葉(秋)・雪(冬。上の面に雪がつもる)。生きものは2つのポーズで少し動く(pixel.js の DECO_PLACE・drawDeco)
Godotで地図を描く(試作):せってい でオンにすると、ドット絵の歩く地図をゲームエンジン Godot 4.3 で描く(godot/・nishio-go/godot-field.js)。ゲームのしくみと絵はいままでの JavaScript のまま、pixel.js の描く命令を Godot に渡して描き、Godot では雨と雪のつぶ・時間帯の色あいを足す。約8MB(gzip)を、オンにしたときだけ読みこむ。くわしくは godot/README.md
西尾市版(提案用デモ):nishio-go.html?ed=city で開くと、西尾市が「歩いてまちを知ってもらう」ためにつくった観光のゲーム、と仮定した版になります(nishio-go/edition.js)。西尾市に見てもらうための試作で、西尾市の公式ではないため、画面の上に「🏛 西尾市版(提案用デモ)」の札をいつも出し、はじめの画面・せってい・シェア画像にも「提案用のデモで、西尾市の公式のものではありません」と書きます(市章やマスコットは使いません)。お店の要素(当店の2店舗とその店員さん・「当店に寄る」クエスト・特典・キャンペーン・当店HPのボタン)を外し、西尾市役所に「市役所の観光担当の職員さん」(2011年の一色町・吉良町・幡豆町との合併や、てん茶・うなぎ・佐久島の話をして、西尾城跡のガイドさんと一色さかな広場のおかみさんをすすめる)を置きます。記録(ポイント・めぐった所・行き先)は版ごとに別に保存し(nsg_state_city など)、お店の版の記録は持ちこみません。えらんだ版は localStorage(nsg_edition)に残り、?ed=shop か せってい の「お店の版にもどす」で戻ります。ふつうに開いた人には、いままでどおり お店の版が出ます。
西尾市のご担当者さまむけの提案資料:nishio-go/city.html(西尾市版の せってい からも開ける。検索には出さない noindex)。QR コード(nishio-go/city-qr.svg)で西尾市版を開いてもらい、遊びかた・西尾市にとっての3つのよいこと・いま入っているもの(名所・まちの人・行事の数は ゲームのデータから開いたときに数える)・ご相談したいこと(案)・安心して使っていただくために・お問い合わせ を のせる。印刷すると A4 2枚の配りもの。費用や約束ごとは書かない。「西尾市の公式のものではありません」を上と下に。画面写真(nishio-go/shots/city-*.webp)は node tools/make-city-shots.js で西尾市版から撮りなおせる。プレイテスト cityPage
面白さの核:みちしるべ(くわしくは docs/fun-core.md):次の行き先は、まちの人の話(話の最後にすすめてくれる「📜 イベント」)と環境(天気・季節の見ごろ・今月の行事・まだ話していない人・まだ行っていない名所)がすすめます。少しだけ自分でも選べて、みちしるべの札をひらくと ほかの候補(2つまで)に変えられます(選ばなければ すすめのとおり)。注目スポットが遠い所(半田・刈谷など)では、まだ行っていない ふつうの名所(神社・お寺・史跡・駅など)をすすめます。着いたら +5pt(1日5回まで)、そこでまた次が決まります。
画面はシンプルに:地図の画面は、左上のこよみの札・右の🌏と拡大縮小・スティックと🚗🧭・下の案内(次の行き先、1行の知らせ、チェックインのボタン)だけ。知らせは気をつけること(車・範囲外・GPS)があればそれを、なければ まちメモとクエストの数。あるいて/操作しての切り替え・ドット絵の地図/ふつうの地図・音楽は「せってい」、バッジと称号は「きろく」の下。
こよみ(日付と季節)(nishio-go/season.js):地図の左上に「10/18(日)🍁☀️ 📍錦城町」の1行の札(タップで 二十四節気(おおよその日付で「〇〇のころ」)・田んぼのようす・天気・いまいる市町)。季節の見ごろ(梅・桜・茶摘み・バラ・あじさい・海水浴・筆柿・紅葉・碧南のにんじん。どれも spots.json・events.js・npcs.js に出典つきで書いてある事実から)の場所が、みちしるべの行き先になります。ドット絵の田んぼは月で色が変わり(田おこし・田植え・青田・稲刈り・刈田)、森は紅葉のころ、公園は桜のころの絵になります。話しかけると時間帯のあいさつ、土用の丑の日はうなぎの話。
天気(nishio-go/weather.js):気象庁の防災情報 JSON(アメダスの最新の観測と、名古屋地方気象台の天気予報)をブラウザから直接読みます(CORS 可。現在地はどこにも送らず、近い観測所と予報の地域を選ぶだけ)。いま雨がふっていれば雨(気温1℃以下なら雪)、ふっていなければ きょうの予報の晴れ・くもり。こよみの札に天気と気温(タップで観測所・予報・出典)、ドット絵に雨・雪・くもり、雨の日は みちしるべが屋根のある所へ、人は天気のひとこと。10分ごとに取り直し、取れないときは天気なしで動きます。
広告・マーケティング(くわしくは docs/marketing.md):広告・QRのリンク(?utm_*・?play=1 ですぐ操作して遊ぶ・?spot= でそのスポットへ・?c= キャンペーン・?from= チラシやPOP)を landing イベントで数えます。「きろく」から X・LINE・Facebook・画像(1200×630、その人のきろくと当店の名前入り)でシェア(utm_source=share)。キャンペーン(nishio-go/campaigns.json:期間・当店チェックインのボーナス・くわしいページ。いまはサンプルだけ)と協賛スポット(spots.json の sponsor)。広告用の縦長動画(9:16・mp4)と画像(Google・Meta・LINEヤフー広告の各サイズ、LINE リッチメニューのマス)は tools/make-promo.js(Actions「Make Nishio promo」)が ほんとうのゲーム画面から作ります。いまの広告への出し方は docs/ads-game-kit.md(Google広告のサイトリンク・コールアウトは tools/google-ads-game-2026-10.js、ゲーム専用キャンペーン(一時停止で作る・game_start で入札)は tools/google-ads-game-campaign-2026-10.js)。累計プレイ人数は GA4 の game_start の数で、tools/ga4-stats.js(Actions「Count Nishio players」、Secrets が要る)が毎日 nishio-go/stats.json に数え、100人をこえたら はじめの画面に出します。
まちを知る:まちメモ:地区の豆知識・注目スポットの説明・行事・名物に、本店から15kmの円に入る まわりのまち(刈谷市・知立市・半田市・東浦町・阿久比町・武豊町・大府市・豊田市。nishio-go/machi.js、出典は各市町の公式ウェブサイトなど)の話を加えた「まちメモ」を、たからばこ・チェックイン・おまかせ歩き・るすばん で集めます(7市町の外にいるときは、そのまちの話から。どのまちにいるかは region.js の around=国土数値情報の市町の境界で決める)。きろくの「📖 まちメモ」で読み返せ、10こ・50こでバッジ。(米屋の仕事=籾集め・選別・精米・米袋は、なくしました。当店は名所のひとつ・特典のお店として残っています)
西尾の名物(nishio-go/meibutsu.js):西尾の抹茶・一色産うなぎ・三河一色えびせんべい・三河湾のあさり。西尾市観光協会の特集ページと市の資料に書いてある事実だけを入れています。ゆかりの注目スポットの説明に名物の一言を出し、たからばこの「まめちしき」にも入ります(ゆかりのスポットの近くでは、その名物の話が先に出ます)。4つの名物にゆかりの場所をそれぞれ訪ねると、バッジ「西尾の名物めぐり」がもらえます。
イベントと おまかせ歩き(操作して移動・ドット絵の地図、nishio-go/pixel.js):市民に話しかけると、その人の話で行き先が決まり「📜 イベント」(みちしるべのカードも📜)。着くと「🎉 イベント達成」。スティックのとなりの🧭(おまかせ歩き。はじめはオン)がオンなら、主人公がみちしるべの行き先まで道を探して自動で歩きます(A*。道を通りやすく、水・建物・山・ほかの人のマスは通らない。まだ読み込んでいない所は通れるとみなし、近づいたら探し直す)。人に着いたら話しかけて話を読み進め(その人の話で次のイベント)、名所に着いたらチェックイン(とちゅうの まだ行っていない所も)するので、ほぼ放っておいてもゲームが進みます。スティック・矢印キーをさわると8秒休み、🧭でオフにできます(端末に覚える)。せかいちずを開いている間と、スポットやお店の説明を開いている間も休みます(人の話だけ自動で読み進める)。車に乗っていたら降りて歩きます。行き先は みちしるべの札から ほかの候補に変えられ、スティックで寄り道もできます(少しだけ自分で操作する)。
放置で遊べる・放置で まちを知る(操作して移動、nishio-go/game.js の IDLE):アプリを閉じていた間(10分から、上限4時間)も主人公が西尾や まわりのまちをさんぽして、開いたときに「おかえりなさい!」で ポイント(1時間に 60+レベル×6pt)・まちメモ(1時間に1つ、最大3つ)・西尾ドット絵(2時間に1枚、最大2枚)を渡します。ポイントは きろく の「🧭 おまかせ強化」に使えます(👟はやあし:おまかせ歩きが速くなる/🎒おおきなリュック:るすばんのポイントが1.5〜2.5倍/🏠るすばん上手:上限が2時間ずつのびて、まちメモとドット絵も1つずつ多く持ち帰る。各3段階。値段は300〜4500pt で、自分で操作して集めたポイントで放置を強くする目標)。3つの遊び方の釣り合い:自分で操作がいちばん多く集まり(たからばこを自由に探せるのは自分で動かしたときだけ)、おまかせ歩きはその半分くらい(すぐ近くのたからばこだけ寄り道)、るすばんは遊んでいる間ほどではないが閉じていてもゼロにならない(docs/fun-core.md に測った数字)。おまかせ歩きで約150マス進むごとに「📖 まちメモ」(まだ知らないものを、いまいる所の近くの話から)、チェックインしたところでも その場所の話が1つ増えます。
車(操作して移動・ドット絵の地図):スティックのとなりの🚗で、白い軽トラに乗り降りします。道(灰色の道路)の上かとなりで乗れて、道だけを倍の速さで走れます(人がいると止まる)。乗っている間は歩いたポイント・チェックイン・たからばこ・話しかけはお休みで、降りるとできます。地図のタップなどで道の外へ移動したときは自動で降ります。
せかいちず(ドット絵の地図の🌏ボタン):西尾市と となりの市町(岡崎・安城・碧南・高浜・幸田・蒲郡)、本店から15km(西は半田・武豊まで)を1マス100mのドラクエ風フィールドマップで表示。はじめて開く人は、このダンジョン風のせかいちずから始まります。海・丘・山は国土地理院の標高タイル(ズーム12)から、川・国道・県道・線路・森・町なみと地名・駅名は OpenStreetMap から作り、注目スポット(名所57か所すべて)と大きな建物をドット絵で重ねます(寄ると名所の名前も表示。中くらいの縮尺から川の名前(水色)、いちばん寄ると町名(灰色の小さな文字)も出します。めぐった名所には金色の✓が付き、左上に「めぐった名所 n/全体」を表示。駅が名所になっている所は駅名を重ねて出さない)。地図データは「地名・駅・大きな建物」1回と、範囲を4×4に分けた16回(自分に近い区域から順)に分けて取り込み、取れた区域から順に道や川が描き足されます(左上に「ちずを くわしくしています… n/16」)。1回で全域を取ると無料サーバーで時間切れになりやすいためです。引いて見ると1マス=色のブロックの全体図、寄るとドット絵タイル。いちばん寄ってさらに拡大すると歩く地図に、歩く地図をいちばん引いてさらに縮小するとせかいちずに切り替わります。ドラッグで移動、アイコンをタップで説明。作った地図は端末に30日保存(取れなかった区域があれば1日で作り直し)(この縮尺では海岸線を使わず、標高データのない所を海とみなし、地図データで森や町なみがある所は陸にします)。
せかいちずの地図データ(nishio-go/world.json):GitHub Actions(.github/workflows/bake-world.yml)が、ゲームと同じ pixel.js をヘッドレスのブラウザで動かして、実際の OpenStreetMap と国土地理院の標高タイルから作ります。このときは川・道・線路・森・町なみに加えて、田んぼ・茶畑・畑・工場・境内・墓地・公園・学校・砂浜・干潟・養鰻池なども、範囲を8×8に分けて取り込みます(歩く地図と同じ分け方)。ゲームはまずこのファイルを読むので、開いてすぐ西尾市全体の地図が出ます(端末に7日保存)。ファイルがない・大きさが合わないときだけ、ブラウザで軽い地図データを取って作ります。作り直すときは、Actions の「Bake Nishio world map」を手動で実行するか、tools/world-version.txt の数字を上げてプッシュします(せかいちずの作り方を変えたときも)。
家と建物は本物の場所に(版3から):区画を作るとき、tools/gsi-buildings.js が国土地理院のベクトルタイル(experimental_bvmap の建物。基盤地図情報 1/2500 の建物の形)から、西尾の建物を1軒ずつ置きます。250㎡までの建物は、その中心のマスに家の絵(Blender の家)、大きい建物は形どおりに屋根を塗ります(30㎡より小さい物置と、小さな屋根だけの小屋は描きません)。屋根の色は、国土地理院の空中写真(全国最新写真(シームレス)、ズーム17)で建物の内側を49点見た色の中央値から、瓦(灰・黒・茶・青・赤茶)・金属(青・赤・緑・銀・黄土)・陸屋根(白・明るい灰)のいちばん近いものを選び、区画データの r に入れます(家は白い屋根なら陸屋根の家、ほかは同じ色の屋根の家)。建物用地で建物のない所は町の地面、家のまわりは庭(草と植木)です。国土地理院の建物がある区画では、OpenStreetMap の建物と「建物用地に家を並べる」作り方は使いません。出典は区画の README と、地図の右下の「地理院タイル」。
歩く地図の区画データ(nishio-go/chunks/区画.json):GitHub Actions(.github/workflows/bake-chunks.yml)が tools/bake-chunks.js で、遊べる範囲(西尾市と となりの市町、本店から15km)にかかる1km四方の区画をすべて、実際の OpenStreetMap(2×2区画ずつまとめて取得)と国土地理院の標高から、ゲームと同じ rasterize() で作ります(ランレングスで保存)。ゲームはまずこのファイルを読み、なければブラウザで地図データを取ります。ふだんは まだない区画と、作ったときの版(ファイルの cv)が tools/chunks-version.txt より古い区画だけを作るので、作り直すときは数字を上げてプッシュします(1回の実行は4時間まで。残りがあれば、作った分をコミットしたあと自動でもう一度起動します。nishio-go/region.js が変わったときも、区画を作り直します)。
地区ガイド(nishio-go/areas.json):西尾市を西尾・一色・吉良・幡豆・佐久島の5地区に分け、特徴・名物・人口・面積・豆知識を出典付きでまとめたもの(2026年10月調査)。せかいちずに地区の札(めぐった名所の数)を出し、タップで地区ガイドを表示。spots.json の各注目スポットの area で地区を決め、きろくの「地区ごとのめぐり具合」と「○○制覇」バッジに使います。
タイトルロゴ(nishio-go/logo.svg):python3 tools/make-logo.py で生成するドット絵のSVG。文字は太い丸ゴシック M PLUS Rounded 1c Black(SIL OFL。tools/fonts/m-plus-rounded-1c/ にライセンスと、使う分のフォントだけ)を ぼかさずにドットで描き、黒ふち・深い緑の影をつけています。かなは お米の白から稲穂の金色へ、1文字ごとに上下にずらして転がる感じに。GO の O は主人公のお米(art/rice-logo.png の にっこり顔)で、頭から芽が出ています。大きさは 272×40(2倍の 544×80 で表示)。ricepia.jp のお知らせ欄・OGP(node tools/make-ogp.js)も同じ絵を読みます。
アイコン(nishio-go/icon-512.png・icon-192.png。ホーム画面・Google広告のロゴ):python3 tools/make-icon.py で生成。タイトルロゴの O と同じ お米と芽を、深い緑とクリーム色の上にドットのまま描きます(丸く切り抜かれても欠けないよう、まん中の8割に収める)。
主要な建物:市役所・支所、病院、学校、図書館、警察・交番、消防署、郵便局、スーパー・ショッピングモール、駅を、OpenStreetMap の位置にドット絵の建物アイコンで表示(タップで名前。チェックインはしない)。せかいちずには市役所・支所・病院・図書館・消防署・ショッピングモールなど大きな建物だけを出します。西尾市役所は注目スポット(20pt)。
いまのGPS:「せってい」に現在地の座標を表示・コピーできます(お店などのスポットを登録するときに、その場で座標を取るのに使えます)。
データ:記録はブラウザの localStorage(キー接頭辞 nsg_)。現在地は外部に送信しません。
アクセス解析・広告の計測(nishio-go/analytics.js):ricepia.jp と同じ Google アナリティクス(G-3R0SBHBEW4)・Google 広告(AW-18316764348)・LINEヤフー広告の計測タグを、公開しているドメイン(go.ricepia.jp・ricepia-judge.vercel.app)でだけ読み込みます。送るのは画面とボタン操作だけ(game_start・checkin・shop_checkin・quest_complete・quest_all・chest_open・mode_switch・当店のサイト/道案内のリンクを押した shop_link)で、現在地の座標は送りません。Meta ピクセルは CFG.meta にデータセットIDを入れると動きます。Google広告のゲーム専用キャンペーンのコンバージョンは、CFG.adsGameStart にラベルを入れると game_start のときに送ります。「せってい」の「📊 アクセス解析」でオフにできます。
プライバシーポリシー:nishio-go/privacy.html(外部送信の一覧つき)。
共有用の画像(OGP):nishio-go/ogp.png(1200×630)。node tools/make-ogp.js でゲーム画面を撮って作り直せます。
自社ドメイン:https://go.ricepia.jp/ で公開。vercel.json で、go.ricepia.jp/ を go.ricepia.jp/nishio-go.html へ、古いアドレス ricepia-judge.vercel.app/nishio-go.html も go.ricepia.jp/nishio-go.html へ転送します(クエリ文字列=utm などはそのまま)。トップに別のアプリの index.html があり、Vercel では同じ場所にファイルがあると rewrite が効かないため、転送にしています。DNS はさくらのレンタルサーバのコントロールパネル →「ドメイン/SSL」→ ricepia.jp の「設定」→「DNSレコード設定」に go の CNAME(Vercel が示す値)を登録してあります(2026-10-16)。
注意:ポイントは端末内で計算しているため、改ざんは防げません。特典は「動く時計が出ていること(スクリーンショットでないこと)」と残り時間を店頭で確認する運用が前提です。高額な特典にする場合はサーバー側での検証(ログイン・チェックイン記録の照合)を追加してください。