SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

よろずプログラマーのためのPython導入ガイド

Java meets Python - 第6回 配列と別れる50の方法(3) ライフゲーム

よろずプログラマーのためのPython導入ガイド (8)

絶景かな?

 頂上から眺めると、見渡す限りの風景の中に、そこにたどり着くまでの道程も見えてきます。ソフトウェア開発でも、完成したプロダクトを眺めるだけでなく、そこにたどり着くまでのプロセスを俯瞰してみると、そこに新たな世界が開けて見えてきます。

今回の設計を俯瞰する
今回の設計を俯瞰する

 LifeGamePane は、Lifeではなく、インターフェイスを規定したShapeに依存しています。LifeGamePanelが保持する生命体は、Lifeだけとは限りません。Shapeで規定したプロトコルに従うなら何でもかまわないので、より柔軟性に優れたコードを記述できます。この話題については、後の連載で紹介します。

 ここで着目して欲しいのは、Shapeを境に、表示の対象となるモデルと、表示を担当するビューとを分断したことです。モデルの立場からは、特定のビューに束縛されたくありません。ビューの立場からは、先の連載第2回で紹介したPuzzlePanelを再利用できたのではと悔やまれます。なぜなら、多くの部分を模倣して作成したからです。

 モデルとなるLife/Tileの違いは、クラス自身と結ぶ関連を持つことです。この関連neighborは、隣接する生命体と対話をするのに必要です。

《読者への課題》要求仕様の変更
 ライフゲームには、いくつもの変種が存在します。今回は、境界条件を扱うのが学習目的なので、有界にしています。例えば、上下左右の領域を繋げてリング状にすると、閉じた空間を表現できます。左右を捻ってメビウスの環のようにすると、興味深い特徴を観察できます。中空にしたドーナツ状のトーラス面も形成できます。皆さんの理解度を確かめる意味でも、果敢に挑戦してみてください。

おわりに:予告編

 アジァイル開発の流儀「1度目は見過ごしても、2度目は見過ごすな」に従うなら、ここはリファクタリングの好機です。後の連載では、パズルゲームとライフゲームに共通する特徴を抽出して、フレームワークを構築する方法を紹介します。これによって、新たなゲーム(オセロゲーム)を作りたいという要求に備えます。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
よろずプログラマーのためのPython導入ガイド連載記事一覧

もっと読む

この記事の著者

小泉ひよ子とタマゴ倶楽部(コイズミヒヨコトタマゴクラブ)

http://tamago-club.cocolog-nifty.com/「楽しくなければ仕事じゃない」が私たちのモットー。99%の苦悩の連続も、1%の成功に報われます。だからこそ、この仕事が楽しくて仕方がないのです。楽をするための努力なら惜しみません。何もせず楽をしているのと、努力をしたから楽ができるのと...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

伊藤うさぎ(イトウ ウサギ)

ペンネームの「由来は」と言うと。苗字の方は、セミナー研修で同じチームになった、3人の合体ユニット名 [I:石塚, T:田川, O:尾沢] から来ています。名前の方は、同じ干支(卯:1987 年生)に因んだものです。既に2人は卒業して、残る1人がその名跡を継承しています。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/2252 2008/06/13 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー