この記事はハワイアンAdvent Calendar 2020 19日目の記事です。昨日はコード書いて楽しくなってたら日付回ってましたね。最近思ったんですけど、RubyMineの気持ちになってRubyでコードを書くとRubyMineがめっちゃ便利になりませんか?ちゃんと補完効くようになるし、コードジャンプもまともになるし、いやまあまだ足りないなあって思う事もあるんですけど「あれ?Ruby怖くない?Ruby楽しいかも?」ってなりました。V8の気持ちになってJavaScriptを書いてた時を思い出しますね。VSCodeの気持ちになったRubyコーディングスタイルってあるんですかね。気になります。
OOUIついて触れられた本としてオブジェクト指向UIデザイン──使いやすいソフトウェアの原理 WEB+DB PRESSって本が出ましたけど、皆さんは読みましたか。自分は正直読みづらかった…オブジェクト指向の歴史に触れる所についは「ウッそれは文脈が違うのでは…?」「な、なるほど…?そう解釈もあるのか…?」となりながら読んでましたが、その辺の食い違いはこの本においてはあんまり本質的じゃないようにも思えたのでおいといて、この本で主張したい事に着目すると、アプリケーションのビジネス要求としてクリエイティビティが必要な場面でのGUIの振る舞い、インタラクションデザイン、ナビゲーションの設計という所で一定の指針は示してくれていると思います。必読なのかは本職UIデザイナーではないので分かりませんが、自分は読んだので読んでもらえると話が早いのかもしれない。いつかGUI開発の世界に戻りたいと願いながら一生ソフトウェア設計やっている身としては、Greg YoungのTask Based UIとの対比という側面で読み進めてみるか〜という感じで、社内でやってた読書会だったりワークショップに参加していました。
わたし個人の意見ですがまあ特にかち合うこともないんじゃないかなと思いました。というのもワークショップをやれば分かるんですが、タスクからOOUIを導きだすんですよね。「結局タスクから導出するの…?」という話になって「ああ、あくまでもGUIとして適切な表現を探る為の手段としても利用できるんだな」となりました。タスクというのはプログラマーの世界ではおおよそQuery/Commandといったメッセージに置き換えられると思います。Task Based UI自体もCQRS + Event Sourcingと密に紐付いた説明がされています。その辺を踏まえると、GUIとしてタスク指向で表現するかオブジェクト指向で表現するかという所でUIドメインに閉じた話として切り分けられるものだなと捉える事ができます。まあなのでGUI開発という文脈では開発スタイルに影響のある話ではありますが、それ以外の部分は今まで通りの働き方で考えられそうだし、チームでCommandとEventの抽出に取り掛かる際にタスクに対する共通見解をもったGUI設計者がにいると意思疎通が捗って良さそうだなあ、と思います。まあただ、この辺の見解というのはOOUIにおいてもTask Based UIにおいてもまだ未成熟な所があるとは思うので引き続き追う必要がありそうです。
話はここまでですが、なんとか指向UIはEventにどう対処するのかなってのを考えてます。EventというのはCommandを実行する事による副作用、といえば伝わるのかなあ。サーバからの通知といえば伝わるのかなあ。万人に伝わる表現というのは難しいですね。本を書く人は偉い。Eventの表現についてはTask Based UIでもOOUIでもあんまり触れられていないんですよね。体験を握る重要な要素だと個人的には思ってるんですけど。その辺をもうちょっと深堀りしたいですね。