下書き 下書きの資料です。内容が変わることがあるため、検索エンジンには登録せず、ページ一覧(サイトマップ)にも載せません。内容はこのページでそのまま読めます。

商品CSVの不足・差分検査の実装資料

一つの処理だけを作る。商品CSVの必須項目の欠損を検知し、前回の結果と比べて変わった行だけをローカルのレポートに出す。外部送信と本番更新は含まない。

下書きの資料です。架空データで作った例で、実店舗では未検証です。順位や売上の改善は保証しません。読むのに登録や問い合わせは要りません。

目次

要件

商品の一覧ファイル(CSV)を読み取り、必須の項目が空の行を見つけて、行番号と項目名つきの確認レポートを手元に作る処理を一つだけ用意する。外部には送らない。本番の商品も変えない。

できあがるもの
  • 入力の決め方:列の名前、必須の項目、値の形(必須の項目は登録上required_fields)
  • 出力の決め方:空だった行番号と項目名、前回との違い
  • うまく読めなかったときの扱いと、人が確認してから進める手順
  • 受け入れテストの実行結果
  • 導入手順と戻し方
先に確かめること
  • 商品CSVの列の並びと必須の項目を、店側で先に決める
  • 通知先や本番の更新を加える場合は、別に承認を取る
  • 架空データ(synthetic fixtures)で手元の確認を先に済ませる
やらないこと・触らない範囲
  • 元のCSVファイルを上書きしない
  • サンプルに個人情報を入れない
  • 同じ入力を繰り返しても報告を増やさない
  • Makeやn8nで組む場合も、テンプレートがこの仕様に合うかを検証する
どの資料でも約束しないこと
  • SEOの順位、AIによる引用、売上の改善は保証しない。
  • Timeseekの本番ストアへの接続や書き込みは含まない。
  • 紹介リンクを使うことを条件にしない。資料を読むにも使うにも、登録や紹介リンクは要らない。

進め方別の手順

進め方は4つあります。違うのは手順だけで、要件、受け入れテスト、戻し方は共通です。

最初は「Claude Codeで作る」の手順を開いています。記事で進め方を選んでいれば、その進め方の手順が開きます。ほかの進め方は見出しを押すと開きます。

社内・既存の開発先で作る

入力、出力、例外処理、承認の仕様をそのまま渡せる。
  1. 「要件」の目的と境界を依頼書に写し、入力、出力、例外処理、承認の4点を先に合意する。
  2. 必須項目の一覧を仕様に書く。価格がnullの商品は0円に変換しない。
  3. 同じCSVを再投入したときの動き(差分だけ報告する)を完了条件に含める。
  4. 受け入れテストの4項目を完了条件にし、実行ログの提出を納品物に含める。
  5. 通知先や本番更新は後回しにする。この処理が検証を通ってから別に依頼する。

Claude Codeで作る

一つの小さな処理の実装指示。紹介リンクや契約は要らない。
  1. 処理を置く作業フォルダでClaude Codeを開き、下の指示文を渡す。CLAUDE.mdと既存の処理を読ませ、未コミットの変更は残す。
  2. 監査として、商品CSVの列と必須項目を書き出し、null(未確認)と0や空文字を区別する読み取り方を決める。
  3. 最小変更にとどめる。CSVを読み、必須項目の欠損を行番号と項目名で返す処理を一つ作る。結果はローカルのファイルに書く。
  4. 架空データの2件で欠損を検知し、同じ入力を2回処理して報告が増えないことを確かめる。受け入れテストの4項目を実行する。
  5. 差分を確認する。元のCSVは変えない。外部送信や本番更新のコードが入っていないことも確かめる。
  6. 進捗を更新する。変更一覧、実行したテスト、未検証の条件、戻し方を報告に書く。

アプリ・サービスを入れる

手元の処理で足りるなら導入しない。Makeやn8nは検証済みのテンプレートがある場合の候補。
  1. 先に手元の処理で足りるかを確認する。頻度が低いなら、短いスクリプトやスプレッドシートの関数で済む場合がある。
  2. Makeやn8nを使う場合は、架空データを入力にして、欠損の報告と再投入時の動きが仕様どおりかを試す。
  3. 確認する点は、元ファイルを書き換えないこと、実行履歴が残ること、失敗時に止まって知らせること、料金の上限の4つ。
  4. 料金と実行回数の条件は提供会社の公式ページで確認し、この資料には書かない。契約済みのサービスがあればそれを優先する。
  5. 導入後も受け入れテストの4項目で動きを確認する。

候補に挙がるサービスは公式サイトで料金と条件を確かめます。標準機能で足りるなら入れません。

Makeの公式サイトで料金と条件を確認する

確認する項目

適合
未確認
料金
未確認
解約条件
未確認
日本語サポート
未確認

運営者(Timeseek)に相談する(任意)

店舗固有の作業に合わせたワークフローの実装を、範囲を区切って依頼できる。
  1. 相談フォームに、対象の作業、頻度、失敗したときに困ることを引き継ぐ。CSVの中身や顧客データは送らない。
  2. 依頼範囲を決める。入出力の整理、処理の実装、テンプレートの検証、運用手順の作成のどこまでを頼むかを分ける。
  3. 納品物と完了条件はこの資料の納品物と受け入れテストを基準にし、見積もりの前提として共有する。
  4. 本番への接続と通知の開始は、店舗側が承認してから行う。

Claude Codeへの指示

下の文章を、店のテーマファイルを置いたフォルダで開いたClaude Codeに、そのまま貼り付けます。渡す資料はこれだけです。中身は次の5点です。

  • 目的と、守る範囲(上の要件と同じ内容)
  • 進め方の手順(「Claude Codeで作る」の6段階)
  • 受け入れテスト4件と、未実行・実環境待ちの記録ルール
  • 確認に使う架空データと、戻し方
  • 最後に変更一覧、実行したテスト、未検証の条件、戻し方を報告させる指示

# Claude Code実装指示:E1 商品CSVの不足・差分検査

この指示文だけで完結する。別に渡す資料はない。要件の境界を守ったまま、既存のコードへ最小の変更で次の実装を加える。
商品の一覧ファイル(CSV)を読み取り、必須の項目が空の行を見つけて、行番号と項目名つきの確認レポートを手元に作る処理を一つだけ用意する。外部には送らない。本番の商品も変えない。

先に既存コード、変更対象、認証経路を確認する。既存の変更は消さない。推測で埋めない。テストはローカルか検証環境で先に作り、実装が済んだら受け入れテストを実行して、結果を実行条件とログつきで残す。

## 進め方
1. 処理を置く作業フォルダでClaude Codeを開き、下の指示文を渡す。CLAUDE.mdと既存の処理を読ませ、未コミットの変更は残す。
2. 監査として、商品CSVの列と必須項目を書き出し、null(未確認)と0や空文字を区別する読み取り方を決める。
3. 最小変更にとどめる。CSVを読み、必須項目の欠損を行番号と項目名で返す処理を一つ作る。結果はローカルのファイルに書く。
4. 架空データの2件で欠損を検知し、同じ入力を2回処理して報告が増えないことを確かめる。受け入れテストの4項目を実行する。
5. 差分を確認する。元のCSVは変えない。外部送信や本番更新のコードが入っていないことも確かめる。
6. 進捗を更新する。変更一覧、実行したテスト、未検証の条件、戻し方を報告に書く。

## 守ること(対象外・境界)
- 元のCSVファイルを上書きしない
- サンプルに個人情報を入れない
- 同じ入力を繰り返しても報告を増やさない
- Makeやn8nで組む場合も、テンプレートがこの仕様に合うかを検証する

## 納品物
- 入力の決め方:列の名前、必須の項目、値の形(必須の項目は登録上required_fields)
- 出力の決め方:空だった行番号と項目名、前回との違い
- うまく読めなかったときの扱いと、人が確認してから進める手順
- 受け入れテストの実行結果
- 導入手順と戻し方

## 前提
- 商品CSVの列の並びと必須の項目を、店側で先に決める
- 通知先や本番の更新を加える場合は、別に承認を取る
- 架空データ(synthetic fixtures)で手元の確認を先に済ませる

## 受け入れテスト
1. E1-AT1 必須項目が欠けた行(DEMO-002のreferenceとprice)を、行番号と項目名で報告する。(実行状態: 未実行/必要な環境: 手元のパソコンと架空データの商品2件)
2. E1-AT2 priceがnullの商品を0円に変換せず、未確認として扱う。(実行状態: 未実行/必要な環境: 手元のパソコンと架空データの商品2件)
3. E1-AT3 同じCSVを2回処理しても、報告の件数と内容が変わらない。(実行状態: 未実行/必要な環境: 手元のパソコンと架空データの商品2件)
4. E1-AT4 処理の中に外部送信と在庫の書き換えがない。(実行状態: 未実行/必要な環境: 処理のコードを読んで確認する(実行は要らない))

未実行の項目は「未実行」、実環境が要る項目は「実環境待ち」と記録し、実行条件とログを残す。記録上の区分はnot_runとblocked_external。

## 架空データ
実店舗のデータではない。下のJSONをそのまま検証用のデータにする。
```json
{
  "data_kind": "synthetic",
  "contains_real_customer_data": false,
  "note": "架空の商品2件。priceは通貨の最小単位の整数で、nullは未確認を表す。",
  "required_fields": [
    "id",
    "title",
    "reference",
    "price",
    "currency"
  ],
  "expected_report": [
    {
      "row": 2,
      "id": "DEMO-002",
      "missing": [
        "reference",
        "price"
      ]
    }
  ],
  "items": [
    {
      "id": "DEMO-001",
      "title": "サンプル商品1",
      "reference": "REF-001",
      "price": 100000,
      "currency": "JPY"
    },
    {
      "id": "DEMO-002",
      "title": "サンプル商品2",
      "reference": null,
      "price": null,
      "currency": "JPY"
    }
  ]
}
```

## 戻し方
- 処理は元のCSVを読むだけにする。出力は別のファイルに書き、消せば戻る状態を保つ。
- 自動化サービスのシナリオを止めるときは、実行履歴を残したまま無効化する。
- 通知先や本番更新を後から加えた場合は、その部分だけを先に止める。
- 本番の切り戻しを自動で実行しない。対象環境と影響を示して承認を得る。

## 資料全体の対象外
- SEOの順位、AIによる引用、売上の改善は保証しない。
- Timeseekの本番ストアへの接続や書き込みは含まない。
- 紹介リンクを使うことを条件にしない。資料を読むにも使うにも、登録や紹介リンクは要らない。

紹介先のツールを使う義務はない。契約済みなら新規契約を促さない。外部サービスへの接続、課金、本番反映、顧客データの送信は、店舗側の承認を得てからにする。

最後に、変更一覧、実行したテスト、未検証の条件、戻し方を提示する。「動くはず」は結果にしない。

Claude Codeを使う義務はありません。同じ要件とテストを社内や既存の開発先に渡しても、結果は同じ基準で確かめます。契約済みなら新しい契約は要りません。

受け入れテスト

実装が終わったら、この表の順に確かめます。どの進め方でも同じ4件です。

受け入れテストの一覧。「実行状態」は記録上の区分で、合否ではありません。未実行はまだ誰も実行していないこと、実環境待ちは店舗の実環境や契約がないと実行できないことを表します。
ID確認すること実行状態必要な環境
E1-AT1 必須項目が欠けた行(DEMO-002のreferenceとprice)を、行番号と項目名で報告する。 未実行 手元のパソコンと架空データの商品2件
E1-AT2 priceがnullの商品を0円に変換せず、未確認として扱う。 未実行 手元のパソコンと架空データの商品2件
E1-AT3 同じCSVを2回処理しても、報告の件数と内容が変わらない。 未実行 手元のパソコンと架空データの商品2件
E1-AT4 処理の中に外部送信と在庫の書き換えがない。 未実行 処理のコードを読んで確認する(実行は要らない)

戻し方

うまくいかなかったときに、変更前の状態へ戻す手順です。実装の前に読み、本番へ反映する前にもう一度確かめます。

  1. 処理は元のCSVを読むだけにする。出力は別のファイルに書き、消せば戻る状態を保つ。
  2. 自動化サービスのシナリオを止めるときは、実行履歴を残したまま無効化する。
  3. 通知先や本番更新を後から加えた場合は、その部分だけを先に止める。
  4. 本番の切り戻しを自動で実行しない。対象環境と影響を示して承認を得る。

架空データ

確認のために作った例で、実店舗のデータではありません。Timeseekの商品、価格、顧客の情報も含みません。

注記
架空の商品2件。priceは通貨の最小単位の整数で、nullは未確認を表す。
required_fields(登録項目名)
id、title、reference、price、currency
架空データの例(expected_report、1件)。列名は登録項目名のままです。(空)は値が入っていないことを表します。
rowidmissing
2DEMO-002reference、price
架空データの例(items、2件)。列名は登録項目名のままです。(空)は値が入っていないことを表します。
idtitlereferencepricecurrency
DEMO-001サンプル商品1REF-001100000JPY
DEMO-002サンプル商品2(空)(空)JPY

出典

版 0.1.0。架空データで作ったサンプルで、実店舗では未検証。

記事と資料は、相談しなくてもそのまま使えます。依頼は当面受け付けていません。この内容で相談する(任意)