時間、あるいは人生を記録するソフトウェアの設計問題 〜勤怠管理とタイムトラッキングはオブジェクト指向の夢を見るか〜
(「勤怠を自動化する技術」LT Night #kintai_auto で発表できなくなってしまったので、その代わりに文章を書きました)
いちユーザーとしては、こんなタイムトラッキング(時間計測)アプリが欲しいなーと前々から思っているんです:フルリモートワーク・裁量労働制の職場環境で、労務における勤務時間記録(勤怠管理・健康管理)と、管理会計におけるプロジェクト別工数原価計算(ABC)という2通りの要求を満たしつつ、全従業員への導入が現実的に可能なユーザビリティ。
例えばTogglのようなタイムトラッキングアプリは、勤怠管理には馴染まないんですよね。「作業時間」と「就業時間」は違う。問題領域も違う。一つのアプリで両方うまくこなせるものを見たことないのです。
そして「出勤」「退勤」「休憩」だけ記録するタイムカード的な勤怠管理ソフトウェアでは、活動ベースの原価計算ができないんですね。
そして、勤怠管理と作業時間計測を単に1つのアプリでやろうとしてくっつけると、概念や操作が複雑になってユーザビリティが下がることは想像に難くないわけですね。
なので、単にくっつけるのではなく、2つの異なるドメイン(問題領域)をどう繋げるか、ちゃんとデザインしないといけない。まあ簡単なのは勤怠管理とタイムトラッキングを別々のソフトウェアにしてしまうことですね。ぜんぜん混ぜない。それはそれで賢明です。このような方針を、エリック・エヴァンスはDDD本において「別々の道」と呼びました。
そもそも「時間」や「時刻」のようなオブジェクトが、労務ドメインと管理会計ドメインのそれぞれにおいて、どのように解釈されるべきか……いわゆるDDD本における境界付けられたコンテキストの問題です。あるいはDCIアプローチでうまく解けるのかもしれませんが。
そもそも、日本の勤怠管理ドメインは、日本の労働基準法の要件にも適合しなければならない。グローバルプロダクトがそのまま日本で通用するかどうかも疑問。ローカルな課題だから。
ちなみに、ちまたには自動計測機能を持つタイムトラッキングアプリがあります。PCなら、開いているウィンドウのアプリ名、アプリ内で開いている文書名などを記録し、さらに機械学習によってプロジェクトに自動分類するようなものはいくつか出てきた。でも、人は常にPCで作業しているわけじゃないからね。
あるいは、自動記録機能を持つ勤怠管理アプリもありますね。入退室、ジオフェンス、Wifi SSID、近接デバイスのBluetooth MACアドレス、メール、チャット、スケジューラーなど、さまざまなシグナルから勤務時間を類推するもの。しかし、フルリモートワークで裁量労働をしている状況では機能不全に陥らざるをえません。土日のスタバでPCを開いていない人は、仕事をしてない?している?決定不能ですね。PCを開いていても、でツイッターしているかもしれませんしね。そしてツイッターが仕事かもしれないわけです。あるいは、育児しながら隙間時間にPCやスマホで仕事している人の作業時間はどこまで自動計測できるでしょうね?
こうした様々な課題を踏まえると、なるべくユーザーが操作しなくても様々なシグナルによって自動記録なり入力補完なりしつつ、機械学習も活用して、それでも適合率向上には限界があるのでユーザー自身が記録を操作・編集するためのUIも重要だ、ということになるんですが、これではじつに退屈な結論と言わざるをえませんね……
こんなのは単に論理的思考というやつで、誰でも遅かれ早かれたどり着くような地点でしかないわけです。こういう思考にもとづいてタイムトラッキングアプリを作り出すのでは、レッドオーシャンまっしぐら。本質的なレベルのアイデアが必要……
そういう本質的な問題解決のアイデアが実現されたとき、人は
「そうそう、こんなのが欲しかったんだよ!」
「その発想はなかった!」
「やられた!」
といった反応をするものです。僕の知る限り、そういったものは、まだ登場してないんじゃないかな……
あと、時間の意味解釈の問題は、とても深いと思うんですね。
時間の記録って、あとからつけようとしても、詳細を忘れてしまっているものです。なるべくリアルタイムに記録するのがいい。……というのが普通の考え方ではないでしょうか。でも、本当にそれは正しいのでしょうか?
あとから振り返ってみないと、その時間の意味が明確にならないということはありませんか? べつに抽象的な話ではなくて、ある作業時間をどのプロジェクトに紐付けるかという具体的な話として。
アイデアを探してググったりツイッターしている時間はどう解釈すればいいんでしょう?
既存システムの不具合の解決策を調べているうちに新しい製品のアイデアを思いついたら、その時間は既存製品の改善に紐づくのか、新製品企画ということになるのか?
こう考えると、かならずしもリアルタイムの記録が絶対に正しいとは言えないのだということが分かってきます。数時間、数日間、数週間、あるいは数ヶ月間を経たのち振り返って解釈し直すということも普通にあるわけですね。(実際、Togglでタイムトラッキングしていると、そういう遡及編集はたまにあります)
リアルタイム、短期記憶、エピソード記憶、月単位の振り返り……複数のスケールが畳み込まれた時間性。 UX白書のような話でもあり、ハイデガーのような話でもある。時間の意味解釈を自己決定するという話であり、極めて哲学的で実存的な問題ですね。
説明するための用語、異なる期間で生じる内在的なプロセス
ある意味でユーザーの時間を支配するソフトウェアを設計する人には、人間観が問われます。ユーザーはソフトウェアや組織の論理に服従する主体(サブジェクト)であるべきか、能動的で自由に自己決定する人間であるべきか。ソフトウェアは人を自由にすることもできれば、人から自由を奪うこともできます。
ユーザーを洞窟から解放し、それぞれの創意によって本質に向かっていけるようにすること。人々が自身のやり方で意味空間を思索し、愛智者として日常を汲んでいけるようにすること。誰もが自らにとってのデザイナーとなり、世界を新たな方法で見たり感じたりできるようにすること-
それが、OOUI の目当てなのです。
やはり重要なのは、時間を記録するという営みは、客観的で科学的な物理量計測のようなことではなくて、主観的な解釈や意味生成に関わる構成主義的/構築主義的な問題なんだということです。そして、そういう風に人間主義的な立場から設計することが、人間中心設計の思想としても大事だと思うのです。
基本的に、人間は、課せられることに抵抗し、常に、自分たちの言葉で、自分たちが扱える人工物を使って、自分たち自身を自覚する機会を捉える。これは、人間中心のデザインにおける基本的な命題を示している。
デザインは、人間であることの一部をなす。
『意味論的転回−デザインの新しい基礎理論』(クラウス・クリッペンドルフ著、小林 昭世ら訳、エスアイビーアクセス、2009年)p.82
自分の人生の記録を操作し、編集し、その意味をデザインすることは、人間であることにとって重要な意味を持ち得るはずです。それは日記を書くことが人生を豊かにするのと同じような意味で、はたらく時間を記すことが職業人生を豊かにするだろうという確信です。
ユーザーが自ら世界の意味解釈をしながら、自身の世界を構築していくという考え方。ピアジェやパパートの構成主義/構築主義を参照しながらアラン・ケイが展開したオブジェクト指向プログラミングとGUIの思想です。つまり、パーソナルコンピューティングやGUIやオブジェクト指向プログラミングは、そもそも「人間を自由にする」という大きな物語の一部なんです。
自分の時間、つまりは自分の人生を、振り返り、自分はうまくやっているか、よく生きているかと内省させるようなソフトウェアによって、人間を自由にすること。これこそが時間を記録するソフトウェアのデザインの目当てではないでしょうか。
そんなこんなで語りつくせませんが、タイムトラッキングアプリの設計は深いですね。それはもう、人生と同じくらいに。
というわけで、インフォメーション・アーキテクトからは以上です。