tenjin.web/5 MVC その後

id:brazilと設計やtenjin.webについて議論。

細かいところと大きなところ

設計レベルの話も重要だが、実装レベルの細かいところも重要。名前とかスコープとかインデントとかコメントとか。(参考:良いコ-ドへの道―普通のプログラマのためのステップアップガイド:連載|gihyo.jp … 技術評論社 by id:agt

そういう細かいところの積み重ねが、大きなプログラムで効いてくる。プロジェクトで実際に使うテクの大半が、細かいテク。大局的な設計の考え方も、実際にはその細かいテクの延長線上にある。

ペアプログラミングとか、グループで実装とか、コードレビューとか、細かいところもネタにしていきたい。

MVCは難しい

実装を進めていくと、どうしてもこんがらがる。VとCが融合するとでかくなるし、VとCを分けるとイベント通知やconnectが複雑になる。

GUI構築時と動作時のスコープが違うのではないか。GUI構築時は、MVC全部を知っておいてつなげて回る必要がある。そのスコープでイベントをクロージャーで実装すると、(多少汚く見えるが)非常にコンパクトに書ける。動作時はスコープが違うので、そこはGUIの複雑さがあまり出てこない。

M-V-Cでセットの部品を組み合わせるという方法がGUIでは有効、というか組み合わせてコンポーネントとして利用するなら分ける必要がないのではないか。Swingは複雑な挙動が必要なければMVCをあまり意識する必要がない。IDEフレームワークによるBindingもそういうイメージ。各部品がほぼ独立して仕事をこなす。ただし、あまり独立した部品同士がイベントで通信するようになると、MVC導入以前と同様の複雑さがでてくる。

Morphicのアプローチも参考になるかも。MorphicはMVCが基本的にセット。大量のメソッドを備えたDOMみたいなクラスのフレームワークGUI構築はプロトタイプ指向的。イベントでつながるのではなくて、Pollingで一方的につながるので複雑さが減る。

tenjin.webでやっていることは難しすぎるのか?

数時間の実習でMVCをマスターできない。むしろ中途半端ではないか。やれるつもりになってそのまま実プロジェクトで実践すると大変。空手をちょっと習って、いきなり大勢のちんぴらにけんかしに行く感じ。ぼこぼこにされてきっとひどい目にあう。

プログラミング・設計の技術は短期間では身につかない。tenjin.webだけで身には付かない。でもこれからやってみようというきっかけでいいと思う。

我流で殴り合う喧嘩しか知らなかったところに、通りがかりの赤卍(古い)の人が悪人を一撃でやっつけて(だめですよ)いったとか、こんな積分できないYOとか困っていたら複素平面で華麗に特異点をかわしていったり、銃は至近距離では不利だと思っていたらガンカタマスターが現れたとか。なんかすごい方法があって、それを使えばスマートに問題が解決できるということを知ってもらって、その後の勉強とか目標設定をするきっかけになればいいかなと。

もちろん、自分もまだまだ発展途上。いろいろな言語やフレームワークを研究してみて、よりよい設計・実装手法を探し続けていきたい。