読書活動 – Information Dashboard Design Ch 4, Ch 5.

Chapter 4: Fundamental Considerations

Dashboard を作るときって色々気にすべきことあるよね

  • Update frequency – daily, hourly, realtime
  • User expertise – novice to expert
  • Audience size – one person, sharing the same purpose, having different purposes
  • Technology platform – Web, etc.
  • Screen Type – Large to small
  • Data Type – Quantitative Non-Quantitative

だからどうしろという話はこの章にはナシ。

Chapter 5: Tapping Into The Power of Visual Perception

  • The limits of working emory
  • Encoding data for rapid perception
  • Gestalt principles of visual perception

人間の知覚の特性を議論する。たとえば working memory みたいなよく知られた概念・・・がある故に、なぜスクロールがダメかを議論したり、データのエンコード先を分類し、それぞれが何に適しているかを議論したりする。

  • Color – hue, intensity
  • Form – line length, line width, orientation, size, shape, added marks, enclosure
  • Position
  • Motion

これらのうち人間が際を正しく判断できるのは line length と position だけであり、色、大きさ、角度とかは「違う」というのはわかっても「どのくらい違う」は誤解しがち (だから bar chart はダメ)だそうな。たしかに。countour とか色でがんばってるけど、あれは連続的に変化しているからなんとかなっているのだろうか。

Gestalt principle:

  • Proximity
  • Similarity
  • Enclosure
  • Closure
  • Continuity
  • Connection

Gestalt principle は、要するに見えないはずのものが見える人間の知覚の特徴みたいな話。こういうのを生かすと arrangement が subtle でも表示に意味を与えることができる。たとえばわざわざ枠を書かなくても距離を調節することでグルーピングを表現したりとか。

この章はよかった。どう現実に適用していくのか後の章が楽しみ。

読譜活動 – ZetaSQL – execute_query

朝起きるとコンパイラが死んでいた。昼休みにちょこちょことなんとかする試み。

  • メモリが足りないのでしょう、ということで wsl.config で 6GB だったキャップを 12GB に拡大したところビルドは成功。メモリ買うかな・・・。
  • execute_query のバイナリができたので README にあるとおり execute_query “select 1 + 1” を実行したら、なにかが返ってきた。
$ bazel-bin/zetasql/tools/execute_query/execute_query "select 1 + 1"
+---+
|   |
+---+
| 2 |
+---+
  • execute_query –helpfull をするといろいろフラグがある。最近の ABSL flags はフラグを定義しているファイル名が表示されるようになっており、ちょっと便利。 
$ bazel-bin/zetasql/tools/execute_query/execute_query --mode=explain "select 1 + 1"
RootOp(
+-input: ComputeOp(
  +-map: {
  | +-$col1 := Add(ConstExpr(1), ConstExpr(1))},
  +-input: EnumerateOp(ConstExpr(1))))
  • –mode=explain するとこのような実行計画的なのが表示されるのだが、SQL のパーサなのに実行計画とは?というかそもそもなぜ SQL を評価できるのか、不思議といえば不思議。なんらかの参照実装的なのが入っているんだろうけれど。
$ bazel-bin/zetasql/tools/execute_query/execute_query "create table hello (foo integer)"
ERROR: INVALID_ARGUMENT: Statement not supported: CreateTableStatement [at 1:1] [type.googleapis.com/zetasql.execute_query.ParserErrorContext='\n create table hello (foo integer)']
  • テーブル定義すらできないが、そもそも式を評価できる時点で不思議なので別にいいといえばいいです。はい。

次回はもうちょっとコード読みます。