タグ: 入力フォーム

  • 小型業務ツールで同時編集の上書きを防ぐ|更新競合と入力保持の設計

    小型業務ツールで同時編集の上書きを防ぐ|更新競合と入力保持の設計

    小型業務ツールの同時編集で上書きを防ぐには、「画面を開いたときの版」と「保存時の最新版」を照合し、途中で変更されていたら保存を止める仕組みが基本です。 その際、利用者の入力を残し、最新の内容と比べて保存し直せる画面まで用意します。

    顧客管理や案件管理を二人で使い始めたとき、「直した納期が元に戻った」「担当者を変更したのに反映されていない」といった問題が起こることがあります。

    入力ミスが原因とは限りません。別の人が古い画面を開いたまま保存すると、変更済みの値を古い値で上書きする場合があります。同じ人が複数のタブを開いている場合も同様です。

    この記事では、少人数向けの管理ツールを作る・改修する担当者に向けて、更新競合を防ぐ考え方、利用者向けの表示、依頼時の確認事項を整理します。以下の人物・案件・時刻は説明用の架空例です。

    二人が違う項目を直しても、変更が消えることがある

    案件Aの「担当者」と「納期」を別々の人が編集する場面を考えます。

    時刻 操作 保存されている内容
    10:00 佐藤さんと鈴木さんが同じ案件を開く 担当者:佐藤、納期:11月10日
    10:02 佐藤さんが納期を11月12日に変更して保存 担当者:佐藤、納期:11月12日
    10:05 鈴木さんが古い画面で担当者を鈴木へ変更して保存 対策がないと、納期まで11月10日に戻る可能性がある

    鈴木さんは納期を触っていません。しかし、画面にある全項目をまとめて保存する作りでは、古い納期も送られることがあります。

    これが更新の消失、いわゆる「lost update」の一例です。すべてのツールで同じことが起きるわけではなく、更新方法やデータの保存方式によって動作は変わります。

    「担当者同士で声を掛ける」だけでは、別タブ、休憩前から開いていた画面、自動処理による更新まで追い切れません。利用者が気づかなくても、保存先で検出できることが大切です。

    対策の基本は、保存するときの版確認

    一つの設計例は、案件ごとに更新用の版番号を持たせる方法です。

    1. 案件を開いたとき、内容と一緒に「版番号7」を受け取る。
    2. 編集後、入力内容と「版番号7」を保存先へ送る。
    3. 保存先で、現在も版番号7の案件に限って更新する。
    4. 更新できたら版番号を8へ進める。すでに8なら、競合として保存を止める。

    このように、編集の間は占有せず、保存時に変更の有無を確かめる考え方を「楽観ロック」と呼びます。

    重要なのは、版の照合と実際の更新を、ほかの更新が割り込めない形で行うことです。先に版を調べ、時間を置いて無条件で保存するだけでは、その間に別の人が更新できます。画面側の警告だけでなく、サーバーやデータベース側で一貫して判定する必要があります。

    HTTP APIには、取得した内容の識別子であるETagを、更新時のIf-Matchで照合する方法もあります。HTTPの仕様では、複数の利用者による意図しない上書きを防ぐ用途が説明されています。RFC 9110:If-Match

    ETagを使う設計では、条件不一致を412 Precondition Failedとして返す方法があります。独自の版番号方式とは実装が異なるため、API仕様に合わせて選びます。MDN:If-Match

    依頼する側は方式名を指定するより、「古い画面から保存しても、他の人の変更を黙って消さないこと」と伝える方が、目的を共有しやすくなります。

    保存を止めるだけでは、利用者が困る

    競合を検出できても、「保存できません」とだけ表示し、再読み込みで入力が消える画面では、作業のやり直しになります。

    競合時には、少なくとも次の三つを伝えます。

    • 別の更新があったため、今回の変更はまだ保存していないこと。
    • 入力中の内容を画面内に残していること。
    • 最新の内容と比べて、必要な変更を反映し直せること。

    表示例は次のようになります。

    この案件は、編集中に更新されました。今回の入力はまだ保存されていません。入力内容を残したまま、最新の内容との差分を確認できます。

    操作は「最新の内容と比較する」「入力内容をコピーする」など、次に何が起こるか分かる文言にします。比較を開いただけで入力を破棄しないことも確認します。

    画面内の保持と、ブラウザを閉じても復元できる下書き保存は別機能です。まずは競合画面を開いても入力が消えない範囲から検討できます。端末に下書きを保存する場合は、顧客情報をどこに・いつまで残すかも決めます。

    一般的な入力ミスの表示方法は、小型業務ツールのエラー文言設計で整理しています。

    差分確認は「今の値」と「自分の入力」を比べる

    競合の解消では、案件全体をただ読み直すより、変更された箇所が分かる画面が役立ちます。

    項目 開いた時点 現在の保存内容 自分の入力
    担当者 佐藤 佐藤 鈴木
    納期 11月10日 11月12日 11月10日・自分は未変更

    この例なら、「最新の納期11月12日を残し、担当者だけ鈴木へ変更する」という判断ができます。

    ただし、比較中に第三者が保存する可能性もあります。確認後の保存でも、最新の版に対する条件付き更新が必要です。一度比較画面を見たからといって、無条件の上書きを許可しないようにします。

    長い備考欄は、変更箇所だけを強調する、全文を開いて比較できるようにするなど、情報量に合わせます。金額や承認状態など重要な項目は、誰が最終判断するかも決めておきます。

    対策は、業務への影響と編集頻度で選ぶ

    方法 向いている場面 確認したい点
    保存時の版確認 通常は各自で編集し、競合時だけ確認したい 入力保持と比較後の再保存まで作る
    編集中の占有 同じ案件を同時に編集させたくない 画面を閉じた・通信が切れた場合の解除と期限
    項目単位の更新・統合 違う項目を同時に直すことが多い 項目同士の依存関係と同一項目の競合
    担当範囲・操作の分離 金額変更、承認、完了などの業務を分けたい 権限と状態遷移を保存時にも検証する

    小型ツールでは、まず重要な編集画面へ版確認と入力保持を入れ、頻繁に競合する部分だけ対策を厚くする案が考えられます。これは本稿の設計提案であり、すべての業務に共通する最適解ではありません。

    項目が違えば自動統合してよいとも限りません。数量と単価、割引と合計、開始日と終了日は、別々の変更でも組み合わせた結果が不整合になる場合があります。金額・在庫・予約枠などは、競合対策に加え、業務上の条件をまとめて検証する設計が必要です。

    編集権限の分け方は、小型業務ツールのログイン・権限設計も参考にしてください。

    変更履歴や二重送信対策とは、役割を分ける

    変更履歴は、保存された後に経緯を確認するためのものです。履歴が残っていても、保存前に競合を判定しなければ、古い内容での上書きは起こり得ます。変更履歴設計の記事と組み合わせて、予防と事後確認を支えます。

    二重送信対策は、同じ依頼を繰り返し実行しないためのものです。一方、更新競合対策は、異なる利用者・画面による変更が食い違う問題を扱います。同じフォームでも両方が必要になる場合があります。業務自動化の二重送信対策とは、対象となる失敗を分けて考えましょう。

    また、保存要求の途中で通信が切れた場合は、「保存していない」と断言できません。実際には保存済みで、画面が結果を受け取れなかった可能性があります。明確な競合の応答と、結果不明の通信エラーを区別し、後者は保存先を確認してから再実行する流れにします。

    依頼時は、二つの画面を使った確認まで含める

    「同時編集に対応してください」だけでは、警告を出すだけなのか、入力を残すところまで含むのかが曖昧です。次のように確認条件を具体化します。

    1. 同じ案件を二つの画面で開き、先の保存後に古い画面から保存する。
    2. 古い内容で黙って上書きされず、競合が表示される。
    3. 二つ目の画面の入力が残り、最新の内容と比較できる。
    4. 比較後に必要な変更だけを反映し、再保存できる。
    5. 比較中にさらに更新された場合も、再び検出できる。
    6. 別の案件同士の編集は、不必要に止めない。
    7. 同じ人の別タブ、自動処理、CSV更新も競合検出の対象にする。
    8. 編集中に削除・権限変更された場合は、入力が残っていても保存を許可しない。

    最後に、保存先の実データと履歴を見て、意図した値が残っていることを確かめます。画面に「保存しました」と出るだけでは確認が足りません。

    相談メモには、同時に使う人数、対象画面、困った操作の順番、守りたい項目、既存ツールの保存方式が分かる資料を用意します。実データを渡す前に、ダミーの顧客・案件で問題を再現すると説明しやすくなります。

    小型ツールの上書き問題を相談するには

    「二人で使うと値が戻る」「古いタブから保存できてしまう」「競合時に入力を失う」といった困りごとは、画面と保存処理を一緒に見直すきっかけです。

    YOSHIO.devでは、業務自動化・小型ツールの相談を受け付けています。まずは、対象の画面一つと、起きている操作の順番から整理できます。既存環境の制約によって対応方法・範囲は異なります。

    相談時は「何人で使うか」「どの項目が戻るか」「保存前後にどんな操作をしたか」を、分かる範囲でお知らせください。お問い合わせフォームから、現在の運用に合う改修範囲をご相談いただけます。

    よくある質問

    二人しか使わないツールでも対策は必要ですか?

    同じ案件を同時に開く可能性があれば検討対象です。一人でも別タブや別端末から編集すると競合し得ます。利用人数だけでなく、上書きされたときの影響で優先度を決めます。

    変更履歴があれば、上書き防止は不要ですか?

    変更履歴は保存後の確認に役立ちますが、それだけで競合を防ぐわけではありません。重要なデータでは、保存時の版確認と変更履歴を組み合わせます。

    画面を定期的に再読み込みすれば防げますか?

    最新状態を知る助けにはなりますが、確認してから保存するまでの間にも更新は起こります。自動再読み込みで入力を消さない配慮と、保存先での条件付き更新が必要です。

    違う項目を編集した場合は、自動で両方を残せますか?

    項目単位の更新や統合で対応できる場合があります。ただし、数量と単価など関連する項目は整合性の確認が必要です。同一項目が変わった場合の扱いも別途決めます。

    既存の業務ツールにも後から追加できますか?

    保存処理やAPI、データベースを変更できる範囲によります。画面だけの改修では十分に防げない場合があるため、既存ツールの構成と更新経路を確認して判断します。

  • 小型業務ツールのエラー文言設計|入力ミスと再入力を減らす方法

    小型業務ツールのエラー文言設計|入力ミスと再入力を減らす方法

    小型業務ツールや社内フォームを作るとき、機能そのものには注意が向きます。

    問い合わせを登録する。見積情報を保存する。CSVを取り込む。担当者へ通知する。

    しかし実務で意外と詰まりやすいのが、入力エラーが出た後の画面です。

    「エラーが発生しました」

    「入力内容を確認してください」

    このような表示だけでは、利用者はどこを直せばよいか分かりません。入力済みの内容が消えたり、画面上部に戻されたり、同じデータをもう一度入れ直す必要があると、ツールへの不信感も増えます。

    この記事では、小規模事業者や少人数チーム向けに、小型業務ツールで決めておきたいエラー文言、表示位置、再入力防止、エラーログの設計を整理します。

    結論:エラー文言は「原因・場所・直し方・次の操作」まで書く

    入力エラーで必要なのは、赤文字を出すことではありません。

    利用者が迷わず直せる情報を出すことです。

    最低限、次の4つを入れます。

    入れること例目的
    原因メールアドレスの形式が正しくありませんなぜ止まったか分かる
    場所連絡先メールどの項目を見るか分かる
    直し方name@example.com の形式で入力してください何に変えればよいか分かる
    次の操作修正後に「保存」を押してくださいどこから再開するか分かる

    反対に、次のような文言だけでは不十分です。

    • エラーが発生しました
    • 入力内容を確認してください
    • 保存できませんでした
    • 不正な値です
    • もう一度お試しください

    システム側から見ると正しい表現でも、利用者から見ると「何をすればよいか分からない」状態です。

    「入力ミス」と「処理失敗」を分ける

    エラーを全部同じ表示にすると、利用者も担当者も原因を切り分けられません。

    まずは、次のように分類します。

    エラーの種類例画面で伝えること
    入力不足必須項目が空欄どの項目が必要か
    形式違いメール、電話番号、日付、金額正しい形式の例
    範囲外期限が過去、数量が0、金額が上限超え入力できる範囲
    重複同じ受付ID、同じ顧客と日付既存データの確認方法
    権限不足編集権限がない、承認者ではない誰に依頼するか
    通信・外部連携メール送信失敗、API接続失敗入力内容は残っているか
    システム障害予期しない保存失敗問い合わせ時に伝える番号

    たとえば「保存できませんでした」だけでは、利用者の入力が悪いのか、権限がないのか、外部サービスが止まっているのか分かりません。

    「連絡先メールの形式が正しくないため保存できません」と「メール送信サービスへ接続できないため、登録は保存しましたが通知は未送信です」では、次に取る行動がまったく違います。

    エラー文言は、技術的な例外名ではなく、業務上の次の行動に合わせて分けます。

    エラー箇所は画面の上だけでなく項目の近くに出す

    画面上部に赤いメッセージを1つだけ出すと、どの項目に問題があるか探す必要があります。

    入力項目が少ないフォームならまだ対応できますが、見積、顧客登録、問い合わせ受付、CSV取り込み画面では負担が大きくなります。

    おすすめは、全体メッセージと項目ごとのメッセージを分けることです。

    表示位置役割文言例
    画面上部何件エラーがあるか伝える3か所を修正すると保存できます
    項目の下その項目の直し方を伝える郵便番号は7桁の数字で入力してください
    ボタン付近次の操作を伝える修正後にもう一度「保存」を押してください
    一覧行どの行が止まったか伝える12行目: 顧客名が空欄です

    スマホ画面では、エラー箇所まで自動でスクロールする、エラー項目にフォーカスを移す、エラー数を上部に表示するなどの配慮も必要です。

    「赤くなっているところを探してください」ではなく、「ここをこう直してください」と示す方が、問い合わせや操作説明を減らせます。

    入力済みの内容を消さない

    エラーが出たあとに入力内容が消えると、利用者は一気に離れます。

    業務ツールでは、長い備考、顧客情報、見積明細、相談内容、添付ファイル情報を入れることがあります。これが消えると、再入力だけでなく、内容の抜け漏れも起きます。

    エラー画面で守りたいことは次の通りです。

    • 入力済みの文字を残す
    • 選択済みの項目を残す
    • 添付ファイルの状態を分かるようにする
    • エラーのない項目まで入力し直させない
    • 戻るボタンで内容が消えない
    • 通信失敗でも下書き保存できる場合は保存する
    • 二重送信を防ぐため、処理中の表示を出す

    特に、問い合わせフォームや見積作成画面では「保存できなかった」だけでなく、「入力内容は保持されています」「下書きとして保存しました」「通知だけ失敗しました」のように、どこまで成功したかを分けて伝えることが重要です。

    文言は責める言い方にしない

    エラー文言は、利用者のミスを責める言い方にしない方がよいです。

    たとえば、次のような表現は避けます。

    • 入力が間違っています
    • 正しく入力してください
    • 不正な操作です
    • 無効なデータです

    業務では、利用者が悪いとは限りません。選択肢が足りない、説明が分かりにくい、古いデータが残っている、権限ルールが変わったなど、ツール側の設計が原因のこともあります。

    文言は、責任の所在よりも直し方を優先します。

    避けたい文言改善例
    入力が間違っています電話番号は数字のみで入力してください
    不正な日付です納期は今日以降の日付を選択してください
    保存できません同じ受付IDがあるため保存できません。既存データを確認してください
    権限がありませんこの項目は管理者だけが変更できます。変更が必要な場合は管理者へ依頼してください
    エラーが発生しました登録は保存しましたが、通知メールの送信に失敗しました。担当者へ手動で共有してください

    小さな違いですが、利用者の行動は大きく変わります。

    重複エラーは「止める」だけでなく確認先を出す

    小型ツールで多いのが、重複登録です。

    同じ問い合わせを2回送る。同じ顧客を別名で登録する。同じCSVをもう一度取り込む。同じ見積番号を使ってしまう。

    重複チェックを入れること自体は大切ですが、「重複しています」だけでは不十分です。

    利用者が知りたいのは、どのデータと重複しているのか、登録をやめるべきなのか、既存データを更新すべきなのかです。

    状況文言例次の導線
    同じ受付IDがある受付ID A-1042 は登録済みです既存受付を開く
    顧客名とメールが近い似た顧客が2件あります候補を確認する
    同じCSVを再取り込み同じファイル名と件数の取り込み履歴があります履歴を見る
    同じ見積を複製同じ顧客・金額・日付の見積があります複製として保存するか選ぶ

    重複の可能性が高いなら止める。似ているだけなら候補を見せる。業務上あり得る重複なら理由を書いて進める。

    この違いを決めておくと、強すぎるエラーで業務を止めることも、弱すぎる警告で重複を増やすことも避けやすくなります。

    エラーをログに残すと改善しやすい

    エラー文言は、画面だけの問題ではありません。

    どのエラーが何回起きているかを残すと、画面改善や業務ルールの見直しに使えます。

    最初は、次のような項目で十分です。

    ログ項目例見るポイント
    発生日時2026-09-06 10:20特定時間に集中していないか
    画面名見積登録どの画面が詰まりやすいか
    エラー分類入力不足、形式違い、重複、通信失敗改善先を分ける
    項目名連絡先メール、納期、受付ID分かりにくい項目を探す
    表示文言納期は今日以降の日付を選択してください文言が機能しているか
    次の結果修正後に保存、離脱、担当者対応自力で解決できたか

    ただし、入力内容そのものをすべてログに残す必要はありません。

    メールアドレス、電話番号、顧客名、相談内容、金額などをそのまま残すと、別の管理リスクが生まれます。改善目的なら、分類、項目名、件数、結果だけで足りることも多いです。

    エラー文言を直したあと、同じエラーで問い合わせが減ったか、修正後に保存まで進めているかを見ると、改善効果を確認できます。

    まず見直す5つの画面

    すべての画面を一度に直す必要はありません。

    小規模に始めるなら、次の5つから確認します。

    1. 問い合わせ登録画面
    2. 見積・請求・案件登録画面
    3. CSV取り込み画面
    4. 添付ファイルアップロード画面
    5. 承認・確認・ステータス変更画面

    これらは、入力項目が多く、後工程への影響が大きく、担当者確認が発生しやすい画面です。

    まずは「よく聞かれるエラー」「入力し直しが多い項目」「担当者が代わりに直している項目」を3つだけ選びます。

    その3つについて、原因、場所、直し方、次の操作が出ているか確認します。

    小型ツール化するときに決めること

    スプレッドシートやメール運用から小型Webツールへ移す場合は、エラー文言も要件に入れておくと後で困りにくくなります。

    相談前に次の項目を整理しておくと、画面設計が具体化します。

    • 必須にしたい項目
    • 空欄でも進めたい項目
    • 日付、金額、電話番号、メールなど形式をそろえたい項目
    • 登録前に重複確認したい項目
    • 誰でも編集できる項目と、管理者だけが変更する項目
    • 保存できなかったときに下書き保存するか
    • 外部サービス連携が失敗したとき、どこまで成功扱いにするか
    • 利用者に見せる文言と、管理者が見るログを分けるか

    機能一覧だけを決めると、正常に動いたときの画面しか見えません。

    実務では、未入力、形式違い、重複、通信失敗、権限不足のような「うまくいかない時」の設計が、日々の使いやすさを左右します。

    YOSHIO.devへ相談する前に整理したいこと

    YOSHIO.devで小型業務ツールや業務自動化を相談する場合、最初から完璧な仕様書は不要です。

    ただし、次の情報があると、エラー文言や入力画面の改善範囲を決めやすくなります。

    • 使っているフォーム、スプレッドシート、既存ツールの画面
    • よく起きる入力ミスや問い合わせ
    • 入力内容が消える、保存できない、重複するなどの具体例
    • どの項目が必須か、任意か
    • 登録後に誰が確認するか
    • エラー時に手動で戻せる運用があるか
    • 入力内容やエラーログに個人情報が含まれるか

    小型ツールは、大きな業務システムでなくても作れます。

    まずは、今あるフォームのエラー文言を直す、入力内容を保持する、重複候補を出す、エラー件数を集計するなど、小さな改善から始められます。

    「使える機能」だけでなく「失敗したときに迷わない画面」にしておくと、社内で使われ続けるツールになりやすくなります。

    よくある質問

    エラー文言はどこまで細かく書くべきですか?

    原因、場所、直し方、次の操作が分かる程度まで書くのがおすすめです。長い説明を毎回出すより、項目の近くに短い文言を出し、必要なら詳細ヘルプや既存データへのリンクを用意します。

    「入力内容を確認してください」だけではだめですか?

    入力項目が少ない場合は伝わることもありますが、業務ツールではどの項目をどう直すか分からず、問い合わせや再入力が増えやすくなります。少なくとも問題の項目名と修正例は表示した方が安全です。

    エラー時に入力内容を保存しても大丈夫ですか?

    業務内容によります。下書き保存できると再入力を減らせますが、個人情報や機密情報を含む場合は保存期間、閲覧権限、削除方法を決める必要があります。改善用ログには入力内容そのものではなく、エラー分類だけを残す方法もあります。

    重複チェックは必ず登録を止めるべきですか?

    完全一致で明らかに同じデータなら止める方が安全です。一方で、顧客名が似ているだけ、同じ会社で別案件の可能性がある場合は、候補を見せて利用者に選ばせる方が実務に合うことがあります。

    小型ツール開発の相談前に何を用意すればよいですか?

    現在の入力画面、スプレッドシート、よく起きる入力ミス、困っているエラー文言、手動で直している作業を用意すると十分です。そこから、入力チェック、エラー表示、ログ、通知、権限の範囲を小さく整理できます。

    関連リンク