← 一覧に戻る
食品データベース大規模投入
2026年2月28日 13:26 更新
📌 一言でいうと
食品データを156品→約28,000品に大幅拡充する
🎯 なぜこれが必要なのか
今のメシテロには食品データが156品しか入っていない。「カップヌードル」「おにぎり」「サラダチキン」など、日常で食べるものを検索しても見つからないことが多く、検索ヒット率はわずか10〜15%。
食品が見つからないたびに手入力する必要があり、これがアプリの使い勝手を大きく下げている。データの充実度がUXの満足度を左右するため、3つのデータソースから一気に約28,000品を投入する。
BEFORE
- 食品データ 156品のみ
- 検索ヒット率 10〜15%
- 見つからない→手入力が必要
- バーコードスキャンは毎回通信
AFTER
- 食品データ 約28,000品
- 検索ヒット率 50%以上
- 一般食品もコンビニ商品もヒット
- 多くのバーコード商品はオフラインでも即ヒット
🏗️ 何をするのか
以下の3つのデータソースから食品情報を集めてアプリに投入する。
| データソース |
品数 |
特徴 |
| 文部科学省 食品成分表 |
約2,500品 |
ごはん、肉、魚、野菜など自炊系の一般食品。国の公式データで信頼性が高い |
| Open Food Facts(世界の食品データベース) |
約25,000品 |
コンビニ商品やスーパーの加工食品がメイン。バーコード付きなのでスキャンですぐ見つかる |
| コンビニ公式サイト |
数百品 |
最新のコンビニ商品。上の2つで足りなければ追加(オプション) |
データの流れ
作業は「準備」と「アプリへの接続」の2段階に分かれる。
【準備フェーズ】パソコンで1回だけ実行するスクリプト(自動処理プログラム)
- 文部科学省のExcelファイルを解析してJSON(データの受け渡し形式)に変換する。栄養値は100gあたりのまま、表示名に "(100g)" を付加する
- Open Food Facts のAPI(データ取得の窓口)から日本の商品データを一括取得する
【接続フェーズ】アプリ起動時に自動でデータベースに投入
- アプリのSQLite(スマホ内蔵のデータベース)に食品データを一括で書き込む
- トランザクション(まとめ書き込み)を使って25,000件でも高速に処理する
- 既にある食品と重複しても安全にスキップする仕組み
📊 ステップ
1
スクリプト基盤の構築
データ準備用のスクリプト環境を作る。アプリ本体とは分離して、お互いに影響しないようにする。
2
データの種類を拡張
アプリ内部で「この食品はどこから来たか」を区別するための分類を追加する。「文部科学省から」「Open Food Factsから」など出典を記録できるようにする。
3
データ投入の仕組みを改良
現在は1ファイルのデータしか投入できない。これをデータソースごとに分けて投入でき、かつ
トランザクション(まとめ処理)で高速化する。25,000件のデータも数秒で投入完了できるようになる。
4
文部科学省のExcelを解析
国の公式
Excelファイルには独特のクセがある(セルが結合されている、「微量」を「Tr」と書くなど)。これらを正しく読み取って、アプリで使える形に変換する。栄養値は100gあたりのまま、名前に "(100g)" を付けて分かりやすくする。
5
文部科学省データをアプリに接続
変換した約2,500品の一般食品をアプリに組み込む。「ごはん」「鮭」「味噌汁」などで検索するとヒットするようになる。
6
Open Food Facts からデータ取得
世界最大の食品データベースから、日本で販売されている商品(
バーコード・栄養情報付き)を約25,000品取得する。カップヌードル、ポカリスエット、明治のチョコなど、スーパーやコンビニでおなじみの商品が含まれる。
7
Open Food Facts データをアプリに接続
取得した商品データをアプリに組み込む。バーコードスキャン時にインターネット接続なしで即座に商品が見つかるようになる(今はスキャンのたびに通信が必要)。
8
コンビニ公式サイトからの取得(オプション)
Step 7の結果を見て、コンビニ商品が不足していれば追加で取得する。ローソンが最もデータを取得しやすい。優先度は低め。
9
データの出典表示
設定画面に「このデータは文部科学省とOpen Food Factsから提供されています」という表示を追加する。Open Food Factsは
ODbL(オープンデータライセンス)なので、出典の明記が必須。
💡 ポイント
アプリサイズへの影響: 追加されるデータは約5.9MB。通常のアプリが20〜50MBであることを考えると許容範囲。写真1枚分くらいの増加。
既存データとの共存: 今ある156品のデータや、ユーザーが手入力したデータはそのまま残る。新しいデータは「追加」されるだけで、既存データに影響しない。
バーコードの賢い仕組み: 同じ商品が「事前に入れたデータ」と「スキャンで取得したデータ」の両方に存在しても、重複しない仕組みを入れている。一度スキャンした商品は次回から通信不要で即表示される。
コスト: 文部科学省データは完全無料。Open Food Factsも無料。つまり完全無料で28,000品のデータが手に入る。
100gあたりの表記: 文部科学省のデータは100gあたりの栄養値のまま投入する。将来的にはルールベース(ごはん=150g、肉=80gなどの変換テーブル)で1人前に換算できるが、まずはデータを入れることを優先。