脱、GUI依存
![]() |
GUIアプリケーション開発の基本: GUIに依存するな!
|
![]() |
VBたん:
GUIの説明なのにいきなり暴論ねー。 View(表示部分)とModel(処理の中核)の分離の話かしら。 |
![]() |
ええ、そういうことなんですが、今回は用語の説明は抜きで。
モデルとか言われてもプラモデルかグラビアモデルしか思い浮かばない! |
デスクトップアプリケーションにしろWebアプリケーションにしろ、GUIアプリケーション開発の基本は、GUIへの依存部分を極力少なくすることです。処理の中核となる部分は、グラフィカルなものや文字だけのものなど、どんな種類のアプリケーションでも使いまわせるように作ります。
- ソースコード: Program.cs
ということで、今回の15パズルも、GUIだけでなく文字ベース(CUI)でも動くように作っています。
動画の最後の部分を抜粋してみましょう。
4 5 6 7 8 9 11 14 12 13 10 * d 0 1 2 3 4 5 6 7 8 9 11 * 12 13 10 14 r 0 1 2 3 4 5 6 7 8 9 * 11 12 13 10 14 u 0 1 2 3 4 5 6 7 8 9 10 11 12 13 * 14 l 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 * クリア!
要するに、文字でコマンドを打ち込んで、パズルのセルを動かしていきます。* 記号の部分が空セルで、0~14のセルをこの順序で並べられればゲームクリアです。
ちなみに、今回の実装で受け付けているコマンドは以下の通り(このアプリケーションのヘルプから抜粋)。
? : ヘルプを表示します。 q : 終了します。 i : 盤面をランダムに初期化します。 l : 空セルの右のセルを左に移動します。 r : 空セルの左のセルを右に移動します。 u : 空セルの下のセルを上に移動します。 d : 空セルの上のセルを下に移動します。 0 : 0行0列のセル移動を試みます。 1 : 0行1列のセル移動を試みます。 中略… 14 : 3行2列のセル移動を試みます。 : 盤面の状態を表示します。
![]() |
ゲームとしての操作性は最悪ですけどね…
|
![]() |
このアプリケーション自体には意味がないんですが、文字ベースのコマンド操作でも使えるように中核処理部分を作るということが大事です。以下のような理由によります。
|
-
ユーザーインターフェイスは陳腐化が激しい:
- 同じ機能でユーザーインターフェイスだけ作り直したいという要求が出やすいです。
-
GUIはテストの自動化が難しい:
- GUIのテストは手動になりがちで、大変です。
- GUIに依存する部分を減らすことでテストを楽にします。