Mistake #65 : Session Timeout

30分の入力が消える
「無慈悲なログイン画面」

長文の報告書を30分かけて入力。資料を確認するために少し席を外す。
戻ってきて、渾身の「送信」ボタンを押した瞬間......
そこに表示されたのは、空っぽのログイン画面でした。

📋 あなたのシステム、こうなっていませんか?
  • セキュリティ対策で「30分で自動ログアウト」を設定している
  • 長文を入力する画面なのに、「自動保存(Auto Save)」機能がない
  • セッション切れでログイン画面に戻された後、前の入力内容は消えている
  • 「戻る」ボタンを押しても「フォーム再送信の確認」エラーが出るだけ
⚠️ 危険:この仕様は、ユーザーの「努力」と「信頼」を破壊する最悪のUXです。
「使いたくないシステム」No.1の原因になります。

01. ユーザーへの裏切り行為

⌛️

Session Expired

セッションの有効期限が切れました。
再度ログインしてください。

ユーザーにとって、システムに入力する時間は「コスト」であり「労働」です。
特に日報や稟議書、事故報告書など、思考を整理しながら書く文章は、30分以上かかることも珍しくありません。
それを「セッション切れ」というシステム都合の理由で、一瞬にしてゼロにする。
これは、ユーザーの労働時間を奪う「窃盗」にも等しい行為です。

セキュリティは重要だが、
ユーザービリティを犠牲にする免罪符ではない。

「セキュリティ規定でクッキーの有効期限が決まっているから仕方ない」
開発者はそう弁明します。しかし、それは思考停止です。
セッションが切れることと、入力データを捨てることは、全く別の問題だからです。

02. データを守る「防波堤」の作り方

この悲劇を防ぐための技術的な解決策は、すでに確立されています。
なぜそれを実装しないのでしょうか?

Solution A: LocalStorageへの退避

サーバーとの通信が切れても、ブラウザ(クライアント側)は生きています。
JavaScriptを使って、入力内容をリアルタイム(または定期的に)ブラウザの `localStorage` に保存しましょう。
そうすれば、誤ってブラウザを閉じても、セッションが切れても、再訪問時に「前回の続きから復元しますか?」と提案できます。

Solution B: ハートビート通信

ユーザーがキーボードを叩いている間は、たとえ画面遷移していなくても「活動中」です。
バックグラウンドで定期的にサーバーへ通信(ハートビート)を送り、セッション有効期限を自動延長する仕組みを入れましょう。
「一生懸命入力しているのにタイムアウトとみなされる」理不尽を回避できます。

03. プロフェッショナルの設計思想

良いシステムは、ユーザーがミスをすることを前提に設計されています。
そして、ユーザーの努力(入力データ)を何よりも尊重します。
「消えたデータは戻らない」という常識を疑ってください。
技術でカバーできる不親切を放置することは、エンジニアの敗北です。

執筆:UI/UX改善チーム

「使いにくい」という感覚的な不満を、技術的な課題に翻訳して解決します。
入力フォームの離脱率改善、EFO(エントリーフォーム最適化)のスペシャリスト集団。