メールフローのビジュアル化をMindMap(Mindjet MindManager for Mac)を用いて行ってきたが(Mail Flow Visualizer)、年末にかけて未曾有の超巨大スレッドがMLに立ち、これに対処する方策について(勝手に1人で)検討してきた。
当初、活発に発言しているメンバーのうち上位5人について自動検知して色分けするという改良を発案した。すでに、オリジナルの発言者については色をつけていたのだが、これに加えてオリジナル発言者以外の5人についてカラーラベリングを行うようにしてみた。
この改良はなかなかよかったのだが、それだけでは済まない新たな動きがML上で観測された。
あまりに急速かつ頻繁に議論が展開した結果、同一メールスレッド内でサブジェクト(題名)を変更してスレッド内のテーマの細分化を図る動きが活発化したことである。親スレッドの一部から派生したことと、より先鋭化したテーマにフォーカスを当てる「サブスレッド」を起こそうという動きが活発化したのだ。
これまで作ってきたメールフローのビジュアルでは、同一スレッド内であれば親スレッドだろうが子スレッドだろうが、すべて同じスレッド内の発言として処理してきた。だが、発言数が増え、議論が細分化されていく中で、親スレッドの内容と子スレッドの内容を同一レベルで取り扱ってはいけないのではないかと考えるようになった。
そこで、試験的に子スレッドのパーティショニング……いうなれば、「区別」をつけるために、子スレッドを枠線で囲んでみることにした。そのために、AppleScriptで自由に枠線をつけられるよう下調べなどを行ってきたのだが……すぐにすべての機能を実装することはできなかった。
横浜への小旅行に出かけている途中で、いろいろと良いアイデアが出てきてはいたのだが、あいにく自分のMacを持って歩いていなかったので、ホテルで夜中に実装するとかいったことはできなかった。ちょっと残念。
そして、帰宅して夜中にいろいろアイデアを反芻して、プログラムの試作品をいろいろ作ってみたところ……子スレッドの検出ができた。小旅行に出かける前には煮詰まっていた処理が、おっそろしくあっけなく美しいアルゴリズムで実装できてしまった。
さらに、試作品の内容をメールフロー・ビジュアライザのAppleScriptに追加し、機能が衝突することのないように調整を行い、実際に動かしてみたところ…………ビンゴ! 子スレッドの存在を明示的にビジュアル化することができ、かなり実用性が高まった。
目下、子スレッド中で「親スレッドのサブジェクトの一部」をサブジェクトに含めた状態で使っていたのが、途中から「親スレッドのサブジェクトの一部」を省略化して使うようになる現象への対応が行えていない。そのため、子スレッドの途中でさらに孫スレッドが発生したかのように見えてしまうのだが…………おそらく、これについても、有効な対策手段を講じることができるようになっていくことだろう。