週末プログラマの日記

プログラミングメインで日記とかも書きます

おにぎりの賞味期限を管理する① Golang+PostgreSQL

皆さん、こんにちは!

今回はおにぎりの賞味期限に注目してプログラミングをしてみました。

因みにGolangの要素は今回は0です。次回、Golang要素を増やします。
(記事の内容は、私が過去に関わったお仕事とは一切無関係です。)

 

 JANコード

「商品」の発売、製造、輸送などで利用されるGTIN(商品識別コード)というものがあります。一般財団法人流通システム開発センター(GS1 Japan)が、GTINに関して登録管理、推進を行っています。

買い物の時などに見かけるバーコードは、実はJANコードというGTIN(商品識別コード)の一種です。

GTINの基本原則は、

1つの取引単位に対して1つのGTINを設定する

です。以下のようにも言い換えられます。

  1. 異なる商品には異なるGTINを設定
  2. 同じ商品でも取引単位が異なれば、異なるGTINを設定

↓以下参考になるGS1 Japanの記事のリンクです↓
GTINとは

GTINの利用形態

GTIN設定の基本原則

 

私たちが普段の生活でよく目にするバーコードはGTIN-13と定義されているものです。

JANコード(GTIN-13)の仕様は以下のように定義されています。 

JANコードには、標準タイプ(13桁)と短縮タイプ(8桁)の2つの種類があります。 
標準タイプ(13桁)は、GTIN-13、短縮タイプ(8桁)はGTIN-8と呼ばれることもあります。 
JANコード標準タイプ(13桁)は、①GS1事業者コード(9桁または7桁)、②商品アイテムコード(3桁または5桁)、③チェックデジット(1桁)で構成されています。

JANコードをどのような「商品」の単位に振るかは、商品を取り扱う業務に合わせて事業者が決めて管理をする取り決めになっています。

事業者によってユニークなJANコードとかありそうですよね。

 

おにぎり

実は今セブンイレブンで「エシカルプロジェクト」というキャンペーンが実施されています。(繰り返しますが、今回の記事は私の過去、現在のお仕事と一切関係ありません。たまたま近くにあったコンビニがセブンだったので、、、)

www.sej.co.jp

これをコンビニで見たときに、どうやって賞味期限を管理しているのかなとそのデータの持ち方に興味が湧きました。

 

では実際のおにぎりを見てみましょう

セブンイレブンでおにぎりを買ってきました。

おにぎり1

おにぎり2

おにぎり3

おにぎり

 さて、おにぎり裏側のシールの記載内容をもとに必要な情報を書き出してみました。

おにぎり情報

以下の情報が記載されています。

  • 名称
  • JANコード
  • 不明記号(Y14やN5など)
  • 原材料名
  • 塩飯(国産米仕様)、辛子明太子、海苔、調味料(アミノ酸等)、・・・
  • 保存方法
  • 内容量
  • 1個
  • 消費期限
  • 不明記号 BA44など
  • 製造者
  • 製造者名
  • 住所
  • 電話番号

今回は以下の2点に注意しました。

  1. 「商品」:JANコード=1:1
  2. 「商品」:消費期限=1:N

今回は「商品」を商品基本と販売商品の二つに分けることにしました。

以下がE-R図です。

f:id:fujita-weekend:20200520235158p:plain

 

これでとりあえずは消費期限については管理できるようになるのかなと思います。不明記号については無視してます(笑)
次回は商品の消費期限を管理する簡単なシステムを作ってみて、本当にデータに矛盾なくいろいろ出来るか試してみようと思います。