ひだまりソケットは壊れない

ソフトウェア開発に関する話を書きます。 最近は主に Android アプリ、Windows アプリ (UWP アプリ)、Java 関係です。

まじめなことを書くつもりでやっています。 適当なことは 「一角獣は夜に啼く」 に書いています。

Kyoto.js #3 で 『GUI アプリケーションにおける MVC』 という発表をしました

2012 年 12 月 13 日に開催された JavaScript の勉強会 Kyoto.js #3 で 『GUI アプリケーションにおける MVC』 という発表をしました。

内容

最近は GUI アプリケーションの設計についていろいろ考えていたので、GUI アプリケーション設計の典型である MVC について話しました。 MVC の基本的なことと、デモ用に作ってみたオセロ的なゲームについて。

とりあえず基本を振り返って、何か議論できればいいなー、という感じだったので内容的には特に面白いものは何もないのですが、何か気になることなどがあれば是非意見くださいませ。 実際発表後には id:yuku_t さんといろいろ話ができて面白かったです (ありがとうございました)。

JavaScript の勉強会ですがデモ用のコードは TypeScript で書いています。

MVC についてぐだぐだと

Model と View の関係ってわかりやすいし、どの単位でクラス分けしたらいいのかもわかりやすいのだけど、Controller をどういう風に理解すればいいのかが結構悩みどころだった。 役割としては 「ユーザー操作をトリガーにして何らかの処理を行うもの」 って理解でいいと思うんだけど、複数の入力経路 (マウスクリックとキーボード入力とか) で同じ処理をさせたい場合とか、同じ入力でも状況によって違う処理をさせたい場合とか、どういう風に実装するのがいいんだろうなー、とかとか。 まあ場合によりけりだと思うのだけど。

今回のオセロ的ゲームの例だと 「単に Model が 1 個あって、それに結び付けられる View が 2 個あって」 という感じで単純だから特に難しいところはないけど、もっと複雑なアプリケーションになってくるといろいろ考えることが増えてくるので、どこで何を管理するのか明確に意識しないとぐちゃぐちゃになっちゃうなー、と思ったりしてる。 常に必要なわけではない Model をどのタイミングで生成するのかとか、生成した Model を管理するのは誰なのかとか。 そういうの難しい。

さらにサーバーと通信するアプリケーションの場合、どこでサーバーと通信すべきなのかも悩みどころだしなー。 うーん。