オープンソースの良いところは、オープンデータも兼ねるところ。
東京備蓄ナビの要は、対象者に合わせた備蓄推奨品データ。
「東京備蓄ナビ」のソース内を品目で全文検索(grep)すると、
stockpile.config.js というJavaScriptのプログラム内にJSONデータになっているものが見つかりました。
こちらを下記のような変換プログラムを書いて、Denoで動かしCSVデータにします。
import { CSV } from "https://js.sabae.cc/CSV.js";
import { fix0 } from "https://js.sabae.cc/fix0.js";
import { stockpileList, petStockpileList } from "../stockpile.config.js";
console.log(stockpileList);
const conv = (list, imgpath, imgoffset = 0, pet = "") => {
  return list.map(s => {
    return {
      id: s.id,
      item_ja: s.item.ja,
      unit_ja: s.unit?.ja,
      category_ja: s.category.ja,
      image: imgpath + "/img-" + fix0(s.id - imgoffset, 2) + ".png",
      description_ja: s.description.ja,
      item_en: s.item.en,
      unit_en: s.unit?.en,
      category_en: s.category.en,
      description_en: s.description.en,
      infantsMale: s.required?.infantsMale,
      infantsFemale: s.required?.infantsFemale,
      child1Male: s.required?.child1Male,
      child1Female: s.required?.child1Female,
      child2Male: s.required?.child2Male,
      child2Female: s.required?.child2Female,
      adultMale: s.required?.adultMale,
      adultFemale: s.required?.adultFemale,
      agedMale: s.required?.agedMale,
      agedFemale: s.required?.agedFemale,
      pet: pet,
      url_yahoo: s.url?.yahoo || "",
      url_rakuten: s.url?.rakuten || "",
      url_amazon: s.url?.amazon || "",
    }
  });
};
const base = "https://code4fukui.github.io/tokyobichikunavi/";
const data = conv(stockpileList, base + "src/assets/images/tool/result/stockpile");
const data2 = data.concat(conv(petStockpileList, base + "src/assets/images/tool/result/stockpile/pet", data.length, 1));
await Deno.writeTextFile("stockpile_list.csv", CSV.stringify(data2));
ペット用のデータも統合するのに一工夫。
画像つきの備蓄オープンデータのCSVオープンデータができました!

「東京備蓄ナビ 備蓄推奨品オープンデータ」
早速、手軽な派生プロダクト、ブラウザ上からサクッと全文検索アプリ!

「備蓄推奨品検索」オープンソース on GitHub
活用しましょう、オープンソース&オープンデータ!
links
- 備蓄推奨品オープンデータを使ってアドベンチャーゲーム風「備蓄ナビ」