Java meets Python - 第4回 配列と別れる50の方法(2) オセロゲーム
よろずプログラマーのためのPython導入ガイド (6)
絶景かな?
頂上から眺めると、見渡す限りの風景の中に、そこにたどり着くまでの道程も見えてきます。ソフトウェア開発でも、完成したプロダクトを眺めるだけでなく、そこにたどり着くまでのプロセスを俯瞰してみると、そこに新たな世界が開けて見えてきます。
先の連載で紹介した2つのゲームから、共通するフレームワークを抽出して、それをもとにオセロゲームを作成しました。
GameBoardPanel/OthelloPanelは、GameItem/Stoneではなく、インターフェイスを規定したShapeに依存しています。OthelloPanelが保持するコマは、Shapeで規定したプロトコルに従うなら何でもかまわないので、より柔軟性に優れたコードを記述できます。
ここで着目して欲しいのは、Shapeを境に、表示の対象となるモデルと、表示を担当するビューとを分断しただけではなく、アプリケーションに依存しないフレームワークと、アプリケーションに固有の情報とを分割統治したことです。そのため、GameBoardPanel/GameItem傘下の子孫クラスは、任意の組み合わせが可能です。
インターフェイスShapeを境に、モデル/ビューは相互に独立しているので、盤面OthelloPanelと石Stoneには依存関係がありません。俯瞰図を見ると、モデル/ビューを結ぶ線が描かれていないので、それは明白です。要求仕様を変更しても、相互に及ぼす影響が少なく、各部品を拡張するのも容易です。
明日の扉を開けて
フレームワークを活用するためには、その約束事を正確に把握する必要があります。それには、クラス図を眺めているだけでは分かりません。メソッドのシグニチャーだけではなく、プロトコルに関する正確な情報を収集する必要があります。
クラス図を作成するのが目的ではありません。アプリケーション開発に必要な情報が得られないなら、クラス図も、開発プロセスにとってはただのコメントにすぎません。それは、コメントが、コンパイル/実行時に意味を持たないのと同じ理屈です。クラス図で不足する情報は、OCLで補足したり、本格的な形式手法VDM++を導入したり、さまざまな工夫が提案されています。この話題については、後の連載で紹介します。
花より団子。ただ眺めていても、その味は分かりません。食べたとき(開発時)に初めて、美味しい(有難味が分かる)と言える、そのような品揃え(開発手法)にも気を配りたいものです。
この記事は参考になりましたか?
既に会員の方はを行ってください。
- よろずプログラマーのためのPython導入ガイド連載記事一覧
- この記事の著者
-
小泉ひよ子とタマゴ倶楽部(コイズミヒヨコトタマゴクラブ)
http://tamago-club.cocolog-nifty.com/「楽しくなければ仕事じゃない」が私たちのモットー。99%の苦悩の連続も、1%の成功に報われます。だからこそ、この仕事が楽しくて仕方がないのです。楽をするための努力なら惜しみません。何もせず楽をしているのと、努力をしたから楽ができるのと...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
伊藤うさぎ(イトウ ウサギ)
ペンネームの「由来は」と言うと。苗字の方は、セミナー研修で同じチームになった、3人の合体ユニット名 [I:石塚, T:田川, O:尾沢] から来ています。名前の方は、同じ干支(卯:1987 年生)に因んだものです。既に2人は卒業して、残る1人がその名跡を継承しています。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア

