CSVを取り込んだら、日付がずれた。空欄で止まり、どこまで登録されたかも分からない。業務システムの取り込み画面は、ボタンを置くところより、確定前に何を見せるかが使い勝手を左右します。
「選ぶ→内容を確認する→確定する」を分けると、入力と登録結果を説明しやすくなります。以下は架空の顧客台帳の取り込み設計です。実際の顧客データや、本番で検証したシステムの紹介ではありません。
最初に、追加と更新の意味を決める
同じ顧客IDが入ったとき、新しい行を追加するのか、既存の情報を更新するのかで設計が変わります。メールアドレスが同じでも別の顧客の場合があり、名前だけでは一意に決まりません。取り込みの単位を決めるIDと、上書きを許す列を先に決めます。

| 確認すること | プレビューに出す例 |
|---|---|
| 列の対応 | 顧客番号 → 顧客ID、連絡先 → メール |
| 処理の種類 | 新規12件、更新3件、変更なし2件 |
| エラー | 8行目:顧客IDが空 |
| 上書きの範囲 | 更新対象は連絡先のみ |
| 確定後の結果 | 登録件数、処理ID、エラー一覧 |
エラーは、直す場所と理由を示す
「形式が違います」だけでは、利用者はファイルを開き直して探すことになります。行番号、列名、理由を示し、可能なら修正例も添えます。個人情報を含む場合は、画面やダウンロードするエラー一覧に必要以上の内容を出さないようにします。
行番号は、見出しを1行目とするかなど数え方をそろえます。複数行の値を含むCSVでは、単純な改行数とデータ行の番号が一致しない場合があります。ファイル上の位置と画面の表示番号を、仕様として決めておきます。
全件中止か、一部登録かを選べるようにする前に
一部だけ登録できると便利ですが、再度ファイルを取り込んだ際に同じデータを増やすおそれがあります。最初は、エラーが1件でもあれば確定できない方式にする選択もあります。部分登録を採用するなら、成功したID、失敗した行、再実行対象が区別できる記録が必要です。

プレビューと確定で、別の内容を登録しない
利用者が確認した後にファイルを差し替えたり、別タブで台帳が更新されたりすることがあります。確定時にどのファイルと条件を使うかを固定し、更新競合があれば再確認を求めます。プレビュー時点の件数だけを信じて、確定時の検証を省かないようにします。
処理ID:IMPORT-検証用番号
対象:顧客台帳
入力:ファイル名・内容の識別情報・列の対応
結果:新規/更新/変更なし/エラー件数
確定条件:エラーなし、確認内容から入力が変わっていない
再実行:同じ業務IDが増えない方針を定義
記録:実行者・日時・結果・エラー一覧
CSVの読み方と、業務上の検証は分ける
RFC 4180は、カンマや改行を含む値を引用符で扱う形式を説明しています。文字列を単純にカンマで分割する処理では、こうした値を正しく読めません。CSVを読む処理に加え、IDの先頭0、日付、必須項目、重複など、業務の検証を別に用意します。
取り込み画面を依頼するときは、成功画面だけでなく、「何行目を直せばよいか分かるか」「登録済みをもう一度入れたらどうなるか」も確認します。自動転記の重複を考えるなら、キーとロックの設計も参考になります。
参考資料・確認範囲
2026年11月2日確認。本文の例・図・ひな型は本記事用に作成したものです。以下は、設計や事例の背景として参照した一次資料です。



コメント