ひとことで言うと「放置されたら自動で終わる仕組み」
アイドルタイムアウト(idle timeout)は、一定時間なにも操作・通信がなかったときに、接続やセッションを自動的に終了する仕組みのことです。「アイドル(idle)」は英語で「何もしていない・遊んでいる」という意味。つまり「ヒマな状態が続いたら切る」というルールですね。
身近な例で言うと、銀行のATMが分かりやすいと思います。カードを入れて画面を出したまま、あなたが何もせずぼーっと立っていると、しばらくして「操作がありませんでした」と表示されてカードが戻ってきますよね。あれがまさにアイドルタイムアウトです。誰かが後からやって来てあなたの口座を勝手に操作できたら困るので、放置されたら自動でログアウトする。安全のための仕掛けです。
スマホの画面が数十秒で暗くなってロックされるのも、発想としては同じです。使っていないなら閉じておこう、という考え方。
なぜ「放置したら切る」必要があるのか
理由はだいたい3つに整理できます。
1. セキュリティ
ログインしたままの画面を放置すると、その場を離れた隙に他人に触られる可能性があります。時間で強制的に切ってしまえば、そのリスクを小さくできます。ネットバンキングや管理画面のように、扱う情報が重いものほどタイムアウトは短めに設定されがちです。
2. リソースの節約
サーバー側から見ると、接続が1本つながっているだけでメモリや接続枠を消費します。誰も使っていない接続が延々と残り続けると、本当に使いたい人が入れなくなる。レストランで、注文もせず席だけ何時間も占領されているようなものです。だから「動きがなければ席を空けてもらう」わけです。
3. 壊れた接続の掃除
ネットワークの世界では、相手のPCがいきなり電源を落としたりWi-Fiが切れたりすると、「切断しました」という挨拶なしに通信が途絶えることがあります。サーバー側は待ち続けてしまうので、一定時間なにも来なければ「もう相手はいないな」と判断して片付ける。この掃除役としてもアイドルタイムアウトは働きます。
「制限時間」とは違う
ここが初学者のつまずきどころなんですが、アイドルタイムアウトは「使い始めてから◯分で切れる」という意味ではありません。あくまで「最後に何かしてから◯分」です。何か操作するたびにカウンターはゼロに戻ります。
アイドルタイムアウト
最後の操作からの経過時間で判定。使い続けている限り切れない。例:「30分操作がなければログアウト」
絶対的な有効期限
開始時刻からの経過時間で判定。どれだけ使っていても時間が来れば切れる。例:「ログインから8時間で再認証」
実際のサービスでは、この2つを組み合わせていることも多いです。「30分放置で切れる、かつ最長でも12時間」みたいな設定ですね。
どこで出てくる言葉?
ひとつの機能名というより、いろんな場所に登場する一般的な概念です。たとえばこんな場面で見かけます。
- Webサービスのログインセッション(放置するとログアウトされる)
- SSHなどのリモート接続(無操作が続くと切断される)
- データベースやHTTPの接続プール(使われない接続を閉じる)
- クラウド環境やコンテナ(使われていないインスタンスを停止してコストを抑える)
いずれも「無操作の時間」を測って、しきい値を超えたら終了、という同じパターンです。名前が微妙に違う(idle timeout / session timeout / inactivity timeout など)ことはありますが、考え方は共通です。
短すぎても長すぎても困る
設定値の決め方は、けっこう悩ましいところです。短くすれば安全ですが、少し席を立って戻ってきただけで作業内容が消えていた、なんてことになるとユーザーは怒ります。逆に長くすれば快適ですが、放置された接続やセッションが溜まりやすくなる。
実務では「扱う情報の重さ」と「使われ方」の両方を見て決めます。社内の閉じた管理ツールなら長めでもいいけれど、お金を扱う画面なら短く、といった具合です。もし自分でアプリを作るなら、タイムアウトで切れたときにユーザーに何が起きたかちゃんと伝える(「一定時間操作がなかったためログアウトしました」と出す)ところまでセットで考えておくと、親切な作りになります。
いきなり画面が真っ白になって理由が分からない、というのが一番イライラするパターンなので。
このページは役に立ちましたか?