人は日常生活において、無意識下のうちに多くの大小さまざまな選択と決断を繰り返しています。小さな選択と決断を減らすことで、生活におけるより重要な選択と決断に注力することが可能となるのです。
.
.
.
突然どうした? ビジネス書にでも影響されたのか? と思われるかもしれませんが、魔が差しただけです。お察しください。
本題
さて、トイレのお話です。
前提
まずは前提となる環境について。
私が所属しているWeb事業部の執務スペースはLIGビルの3Fフロアにあり、男性用トイレは前室付きの個室が1つのみです。
このトイレは前室と個室の照明が共通のスイッチとなっています。
事例
先日、残業をしていたときのことです。
尿意をもよおした私はトイレに向かったのですが、前室の扉を開くと照明がついていました。
.
.
.
心理1:誰か入っているのかな?
個室の鍵がかかっているか目視します。鍵はかかっていないようです。
心理2:空いているのかな? でも、もしかしたら鍵をかけ忘れているのかもしれない
念のためノックをします。ちょっと待機し、返答がないことを確認します。
心理3:どうやら誰も入っていないようだ
ここでやっと個室の扉を安全に開くことができました。
.
.
.
照明が消してあれば個室の扉を開いた時点で誰も入っていないことがわかるのに……。照明が点いていることによって、個室に入るまでにいくつかのステップが必要となりました。
私たちは人間なのです
もっと効率的にこの流れを進めることはできないだろうか、もっとシステマチックにすれば改善できるのではないだろうか。エンジニアの職業病なのか、どうしても効率化を求めてしまうため、そんなことを考えました。
しかし、私たちは人間なのです。照明が点いていても、何も考えずにドアを開くという処理に進むことも可能です。
しかし、過去に発生したアンラッキースケベイベントの経験から、可能性がある限りできるだけ慎重に扉を開くようにしたいと考えています。
私たちは人間なのです。
鍵をかけ忘れてしまうことだってあります。
また、鍵がかかっているのか確認せずにノックをすることも可能です。
しかし、入っている側からすると鍵かかってるのに何故ノックするんだ? 早く出ろというプレッシャーか? と心理的な負担が発生してしまいます。
私たちは人間なのです。
トイレの時間くらい穏やかな気持ちで過ごさせてください。
.
.
.
そう、私たちは人間なのです。でも、だからこそ現状を整理することから始めて、解決策を導き出すこともできるのではないでしょうか。
整理してみる
そういったわけで、トイレが使えるのか判断するまでの流れを可視化するために canUseToilet()
という関数を書きました。
function canIUseToilet() {
if (照明 === 'off') {
return true;
} else {
if (鍵 === 'lock') {
return false;
} else {
if (ノック === 'reply') {
return false;
} else {
return true;
}
}
}
}
改善策
状況を可視化することができました。
さて、改善できることはないだろうか…………
そう考えた私は、Slack のエンジニアチャンネルにこのコードを投下してみました。数人の優秀なエンジニアたちから、すぐにリアクションがありました。
- もっと判定部分をシンプルに書けるぞ!
- ノック実行後、タイムアウト処理が必要だ
……などなど、効率化やコードの読みやすさについての意見があがりました。
しかし、私たちは人間なのです。機械のように正確に処理を進めることは難しいのです。
さて、ここで可視化するために書いた関数を眺めてみましょう。
そうです、そもそも照明が消えていれば以降の判定処理に進む必要はないのです。
トイレから出るときは照明を消しましょう。節電にもなります。
.
.
.
私たちは人間なのです。自分以外の人間の気持ちだって想像することができるはずです(あっているのかは別として)。
おわりに
人のルーティンワークは、関数化することで見直すことができ………るかもしれません。日々、繰り返している行動を関数化し、無駄な処理が発生していないか確認を行い改善をしてみてはいかかでしょうか。
……っえ? IoTで解決すれば、そもそもトイレまで足を運ばなくて済むって?
その話はまた別の機会に。
トイレからは以上です。