深海からの喚声

眠りの深淵へと誘うまじないの言葉。 「てぃんくる てぃんくる げーむぷろぐらみんぐ よりよくなーれ」 登場人物(敬称略) 続きを読む
1
でふ @defplus

語るというとたいていいつも過去のことなのだけど、そればっかりだと、こう身も心もまさにオッサンそのものであるので、今日は未来のことを話すんよ。

2011-01-06 02:53:39
でふ @defplus

こないだ @irgaly さんと遊んできたんですよ。ついったーで知り合って遊ぶという初めての体験だったわけですけど、おもろかった。音ゲーなど共通の趣味があったというのもあるけど、プログラムのことについて「直接あって話す」ということができたというのが特に面白かった。

2011-01-06 03:03:03
でふ @defplus

自分でも特に話すわけではなかったけれども、これからゲームを作るときなどにプログラム的にどういうことがおもしろいトピック(関心事)になりそうか、というようなことを自然と語ってしまった。たぶん、なんとなく考えていたけれど、言語化されていなかったものが噴出したというか……。

2011-01-06 03:04:29
でふ @defplus

ただ、自分の中で「こんなことを問題視しているのは自分だけで杞憂だろう」と思っていたことに、irgalyさんが自然な問としてもっていたことに、多少勇気づけられて、そのときアドリブ的予言的に「これからはこうなる!」的なことを話してきたのよ。

2011-01-06 03:06:27
でふ @defplus

で、もう3日もすると忘れてしまいそうだから。その予言的なものをここについーとしておくことにするよ。はじまりはじまり

2011-01-06 03:07:00
でふ @defplus

一番大きな話が「ゲームにおけるプラガブルMVC実現の鍵」についてで、これを中心に「プログラム言語は無限に細分化する」「ゲーム画面のレイアウトにマークアップ言語/スタイルが使われる」「タグづけによってゲームオブジェクトはメソッドの連鎖から解放される」とくっつく。

2011-01-06 03:17:09
あおいたく @aoitaku

プラガブルMVCの話の前にまずMVCの話をしなきゃいけないので、MVCのことから。MVCというのは、Model-View-Controllerの頭文字を取った言葉。ソフトウェアをこの三つの構成要素に分けて設計しましょう、ということです。

2011-01-06 14:57:40
あおいたく @aoitaku

ざっくり言うと、Modelはデータ。ViewはUIへの出力。Controllerはユーザの入力を処理するもの。

2011-01-06 15:02:01
あおいたく @aoitaku

ゲームでModelは何に当たるかというと、ゲームによるのだけど、RPGならプレイヤーキャラだとかモンスターだとかアイテムだとかマップだとかイベントだとかとにかく全部これに当たる(であってるかな)。

2011-01-06 15:07:48
あおいたく @aoitaku

これらのデータを実際に画面に出力するのがViewで、方向キー入力したらキャラクターが上下左右に動くみたいのはControllerの仕事。より正確には、方向キー入力したらキャラクターが上下左右に動きますよ、ということをModelやViewに通知するのがControllerの仕事。

2011-01-06 15:08:42
あおいたく @aoitaku

これらを分けて設計すると、メンテナンス性が向上したりして、幸せになれるでしょう。

2011-01-06 15:10:58
あおいたく @aoitaku

ここでやっとプラガブルMVCの話。MVCのうち、ユーザと直接接点があるのはView(出力)とController(入力)。VCはMから独立したペアになっていて、MをVCにくっつけることでMVCとして機能するように作りましょう、というのがプラガブルMVC。

2011-01-06 15:16:33
あおいたく @aoitaku

MVCはCがMの面倒まで見るような作りもありますが、これはCの負担がすごく大きいので、もはやCはMの面倒を見なくてもいいんだよ、というのが、プラガブルMVC(……であってるかな、違ってたらごめんなさい)。

2011-01-06 15:17:57
あおいたく @aoitaku

つまりプラガブルMVCっていうのは、ModelをView-Controllerにplugして使えるMVCですよ、という意味で、pluggableなのです。

2011-01-06 15:20:01
でふ @defplus

今に始まったことではないけれどもC++やJavaが重い。重いというのは政治的に重い。2011になってしまったけどC++0x 、クロージャ見送りもまだ正式にリリースされないJRE7.0、誰もが使える中核的な言語であるからこそ慎重になりすぎてプログラマの進化についていけてない

2011-01-06 03:23:56
でふ @defplus

じゃあ、RubyやScalaやなんやら(あなたのお気に入りの言語が出てこなくてもケンカしないでね)そういったものが、C++やJavaを置き換えることになるかというとそうは思わないただひたすらに求められるそのときどきで便利な言語がこれから次々と出て、そこを「波乗り」していくような

2011-01-06 03:27:35
でふ @defplus

つまり複数言語を使いわけることがこれまで以上にもっと当たり前になっていくようになると思う。具体的には、履歴書には〇〇言語が使えるということの意味が薄れて、◯◯パラダイムに慣れているということが重視され、新しく言語を覚えるノビシロが当たり前のようにプログラマに要求されるようになると

2011-01-06 03:30:24
でふ @defplus

この過程で、いままでプログラマだった人に「既存とは質の違う新しい」仕事が求められるようになると思っていて、それが「限定的な言語をつくること」「書いたプログラムが動くことが自明であることの証明」

2011-01-06 03:34:14
でふ @defplus

「限定的な言語を作ること」というのは、目的別に細分化していくプログラムの細分化の一端を、各プログラマが業務の一環として携わることになるだろうということ。荷が重い話に聞こえるかもしれないけど、まずはXMLを独自拡張したりすることやインタプリタをつくる程度のことから始まるから、

2011-01-06 03:37:33
でふ @defplus

最初はそういう意識なしに始まるかもしれない。そのうち、言語の雛形みたいなのがかなりゆるいライセンスで出て、言語仕様同士を混ぜたりして目的のものをつくるようになる。このようなことが起きる理由はこれをできるかできないかで生産性の違いが顕著で隠しきれなくなるから。

2011-01-06 03:41:29
でふ @defplus

しかし、そうなると、世界で1つしかない言語の保守を、君が死んだら誰がやるんですかというような話になっていくので、これとセットで「自己証明的」な書き方がより求められていくだろうということ、これはいまで言うところの「テストケース」のようなもの。

2011-01-06 03:44:18
でふ @defplus

そして言語ではなくてこの「証明」の形式のほうがW3Cみたいなところで公的に統一化されていくようになるでしょう。

2011-01-06 03:44:59
でふ @defplus

ここまでで3分の1(なげー) やっとゲームできれいなMVCを書くときにどうしますかというような話題。まず一般的なMVCが、フォームとかあるGUIの実装みたいなところから始まっているから、なかなかゲームでやろうとしたときにうまく翻訳できないで大変ねという。

2011-01-06 03:47:48