「あることに気づいて、愕然とした。うちのめされた」
「なんだい?」
「WPFにはコマンドという機能がある。機能を抽象化したものだ」
「それがどうした?」
「UIを改変しやすくするには、このコマンドという機能があると良いわけだ」
「どうして?」
「ある機能を発動するトリガをいくらでも変更できるからだ。ボタンは嫌だからメニューにするような改変も簡単で、インパクトも小さい」
「それで?」
「だから、抽象化されたUIレイヤーは持つといいことあるよ。ということだ」
「それに今更気づいたってこと?」
「そうじゃない。ここで言いたいのはもっと別のことだ」
「というと?」
「ANGFはWPFアプリではないが、最初から持っていたんだよ。抽象化されたUIレイヤーを」
「なぜ?」
「うん。理由は散文的で単純だ。ユーザー入力をジャーナリングしてプレイバックできるというのが開発目標にあってね」
「つまり。ユーザー入力とジャーナリングファイルからの入力をどちらも受け付けたいわけだね」
「そうだ。そこで、UIを抽象化して差し替え可能にした」
「それが、気づいたらMVVMだったという理由の1つだね?」
「まあな。だからさ。実際に昔からAbstractUIってクラスはあるし、UIが抽象化されているから変更も簡単だ」
「たとえば?」
「メニュー選択は現在独自に描画される選択画面を出すのだが、これを普通のダイアログボックスに変えるのも簡単で、それでアプリ本体に修正は必要無い。UIレイヤーだけの修正で終わる」
「それってANGFをバージョンアップするだけでよくて、1980オタクのヒデオはバージョンアップしないでいいってことだね?」
「そうだ。それがUIを抽象化するという意味だ」