続・ユビキタスの街角

ユビキタスの街角(http://tmasui.blogspot.jp/)から引っ越してきました

2013年11月

時計の短針と長針の区別が無いと困るのか? ということについて考えてみた。

上図の左側は「2:00」で、右は「0:10」であることは短針/長針から明白だが、 下図のように針に区別がなくても左側が「2:00」で右側が「0:10」であることは判別できる。 長針/短針を常に判別可能なのであれば異なる針を使う必要が無いかもしれない。

二本の針のどちらが短針なのかか判別できない場合があるのであれば 長針/短針を区別する必要があるだろう。 この可能性について計算してみた。

時刻X (e.g. 1時30分の場合 X = 1.5) の短針/長針の位置は以下のようになる。 ここでfrac(x)は実数の小数部分を計算する関数である。 (e.g. frac(1.5) = 0.5)

  • 短針位置: X * 360 / 12
  • 長針位置: frac(X) * 360
時刻Xの短針/長針位置と 時刻Yの長針/短針位置が同じになる場合、 以下の式が成立するはずである。
  • X * 360 / 12 = frac(Y) * 360
  • Y * 360 / 12 = frac(X) * 360
両辺を30で割って変形すると以下のようになる。
  • X = frac(Y) * 12
  • Y = frac(X) * 12
つまり、以下の式を満足する X が存在すれば、 時刻 X と時刻 Y (= frac(X) * 12)) の長針/短針パタンが一致することになる。
  • X = frac(frac(X) * 12) * 12
frac(x) は非線型関数なので普通にこれを解く方法を知らないのだが、
  • 0 ≤ x < 1 のとき frac(x) = x
  • 1 ≤ x < 2 のとき frac(x) = x-1
  • ...
  • 11 ≤ x < 12 のとき frac(x) = x-11
という性質があるので、 0から11までの整数 i, j のあらゆるパタンについて 以下の式を満たすものがあるかを調べればよい。
  • ((x - i) * 12 - j) * 12 = x (ただし i ≤ x < i+1, j ≤ frac(x) * 12 < j+1)
これを変形すると
  • x = (144 * i + 12 * j) / 143
となるので、これを使って以下のようなプログラムで x を計算することができる。

これを実行すると以下のような結果が得られた。

0時5.03496503496504分 と 1時0.419580419580425分 の針位置は一致
0時10.0699300699301分 と 2時0.839160839160851分 の針位置は一致
0時15.1048951048951分 と 3時1.25874125874128分 の針位置は一致
0時20.1398601398601分 と 4時1.6783216783217分 の針位置は一致
0時25.1748251748252分 と 5時2.0979020979021分 の針位置は一致
「0時10.07分」と「2時0.84分」の針の位置は一致するし、そのようなパタンは沢山ある。 やはり短針と長針は区別しなければならないようである。

ズーミングユーザインタフェース(ZUI)と呼ばれるインタラクション手法の研究が流行したことがある。 1993年、 無限にズーミング可能な二次元画面を利用して情報管理を行なえる Pad というシステムをニューヨーク大学の Ken PerlinACM SIGGRAPH で発表したのが契機となり、 パソコン画面上での新しいユーザインタフェース手法を模索していた多くの研究者が 「ポストWIMP」の最有力候補としてZUIに期待したものである。 (WIMPとは Window / Icon / Menu / Pointing deviceを用いる 一般的なグラフィカルインタフェース手法のことである)

ZUIには様々なメリットがある。

  • 無限に画面をズームして情報を書き込むことができるので無限に大きな情報を扱うことができる
  • 階層型に管理された情報は簡単に画面上に配置することができる。 たとえばディスク内のフォルダを画面上の矩形で表現し、 そのフォルダに含まれるファイルやフォルダはその矩形内の小さな矩形で表現するという単純なレイアウト方式を採用するだけで、 あらゆるファイルを画面上に並べて表示ことができる。
  • ズーミング操作は可逆的である。 ズームイン操作と完全に逆の操作でズームアウト操作を行なうことができるので、 容易にundo操作を行なうことができる。
Google Mapsのような地図サービスのズーミング操作が現在普及しているが、 あらゆる情報を地図のような二次元画面上に配置し、 地図のズーミングと同じような方法で情報を扱うことができれば 直感的な情報表現や検索が可能になることが期待されたわけである。 アイコンやメニューやウィンドウのようないわゆるGUI部品はすべて 情報の検索や管理に利用されるものであるが、 ズーミング操作だけで情報の検索や管理が行なえるのならば ほとんどのGUI部品は不要になってしまうはずである。

私もZUIの考え方は大変気に入ったので、 上の写真の「奈良観光ガイド」のような視覚化/検索システムを同僚と一緒に開発してみた。 これは1995年にSGIのワークステーション上で作った「WING」というシステムで、 マウスの左右ボタンを利用したズーミング操作だけで 三次元地図を動かしたり地名や店名などを検索したりすることができる。 CやOpenGLのような標準的なシステムを利用しているため、 20年近く前のシステムであるにもかかわらず現在のMac上でビルドして動かすことができる。 ソースコードを GitHub に置いてあるので、 Macでビルドして実際に使ってみることができる。

さて、期待されたZUIであったが、 結局WIMPを置き換えることはできず、 商品化の計画はすべて失敗したようだし、 現在ZUIを日常的に使っている人はほぼ皆無だと思われる。 ZUIが流行らなかった理由は以下のようなものであろう。

  • ズーミング可能な巨大な平面のどこに何を置いて管理すべきか考えるのは骨が折れる
  • データが存在しない場所でズームイン操作を行なうと画面が真っ黒になり、 自分がどこにいるのかわからなくなってしまう
  • ファイル管理のような仕事はWIMPでもできるので、 苦労して新しい方法に以降するメリットが無いと思われた
  • ズーミングに適したインタラクション手法が存在しなかった (マウスの中ボタンのホイールのようなものは普及していなかった)
かなり以前、 ユーザインタフェースに関する書籍で有名な Donald Norman に私のズーミングシステムをデモして見せたことがあるのだが、 「使えるズーミングシステムなんて見たことないぜ。ケッ!」 みたいな反応をされておおいにがっかりした。 確かに二次元平面に情報を配置して管理するというのは難しいし、 常用している人が現在ほとんどいないのだからNorman氏の言うことは間違いではないのだが、 前述のようなZUIの利点を保ちつつ誰でも使えるインタフェースを作ることを私はまだあきらめていない。 Web時代の大量のデータを手軽に管理したり検索したりするための新しいZUIを利用したサービスを作りたいと思っている。

ついカッとなって新しいスマホをポチってしまった。 「ブラウザ上のクリック操作によってネット上で何かを購入する」ことを最近は「ポチる」と言うわけだが、 ネット上での衝動買い行動を短く表現する見事な言葉だと思う。 「Google日本語入力」でも「ことえり」でも普通に変換できるようなので、 完全に市民権を得ているのだろう。

「ポチ」のような擬音語が動詞になるのは珍しいが、名詞に「する」をつけて動詞化するのはごく普通である。 実際、動きを含まない名詞であっても「する」をつければ何でも動詞化できるのだが、 受け入れられるかどうかは慣れに依存する。 昔は「お茶する」のような表現は無かったと思うが、 このような表現を使う人間が増えると普通の動詞のように感じられてくるものである。 若者の間では「LINEする」のような表現が普通に使われているのかもしれない。

というわけで、 「パソコン画面の一部を選択して画像ファイルとしてWebにアップロードする」ことは今後 「ギャゾる」と表現していただきたい。

このページのトップヘ