30分の入力が消える
「無慈悲なログイン画面」
長文の報告書を30分かけて入力。資料を確認するために少し席を外す。
戻ってきて、渾身の「送信」ボタンを押した瞬間......
そこに表示されたのは、空っぽのログイン画面でした。
- セキュリティ対策で「30分で自動ログアウト」を設定している
- 長文を入力する画面なのに、「自動保存(Auto Save)」機能がない
- セッション切れでログイン画面に戻された後、前の入力内容は消えている
- 「戻る」ボタンを押しても「フォーム再送信の確認」エラーが出るだけ
「使いたくないシステム」No.1の原因になります。
01. ユーザーへの裏切り行為
Session Expired
セッションの有効期限が切れました。
再度ログインしてください。
ユーザーにとって、システムに入力する時間は「コスト」であり「労働」です。
特に日報や稟議書、事故報告書など、思考を整理しながら書く文章は、30分以上かかることも珍しくありません。
それを「セッション切れ」というシステム都合の理由で、一瞬にしてゼロにする。
これは、ユーザーの労働時間を奪う「窃盗」にも等しい行為です。
ユーザービリティを犠牲にする免罪符ではない。
「セキュリティ規定でクッキーの有効期限が決まっているから仕方ない」
開発者はそう弁明します。しかし、それは思考停止です。
セッションが切れることと、入力データを捨てることは、全く別の問題だからです。
02. データを守る「防波堤」の作り方
この悲劇を防ぐための技術的な解決策は、すでに確立されています。
なぜそれを実装しないのでしょうか?
Solution A: LocalStorageへの退避
サーバーとの通信が切れても、ブラウザ(クライアント側)は生きています。
JavaScriptを使って、入力内容をリアルタイム(または定期的に)ブラウザの `localStorage` に保存しましょう。
そうすれば、誤ってブラウザを閉じても、セッションが切れても、再訪問時に「前回の続きから復元しますか?」と提案できます。
Solution B: ハートビート通信
ユーザーがキーボードを叩いている間は、たとえ画面遷移していなくても「活動中」です。
バックグラウンドで定期的にサーバーへ通信(ハートビート)を送り、セッション有効期限を自動延長する仕組みを入れましょう。
「一生懸命入力しているのにタイムアウトとみなされる」理不尽を回避できます。
03. プロフェッショナルの設計思想
良いシステムは、ユーザーがミスをすることを前提に設計されています。
そして、ユーザーの努力(入力データ)を何よりも尊重します。
「消えたデータは戻らない」という常識を疑ってください。
技術でカバーできる不親切を放置することは、エンジニアの敗北です。