SHOEISHA iD

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

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

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

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

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

例外処理を導入すると、配列に伴う ArrayIndexOutOfBoundsException とさえ共存できます。確かに、この対処法は魅力的ですが、後で思わぬツケが回ってきます。今回は、ライフゲームの事例を通して、伝統的な手法から視点を移して、オブジェクト指向の立場から観察することで、これらの問題点を再考します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 伝統的な手法では配列が主役を演じ、その値は脇役として扱われてきました。主客逆転させて脇役にスポットを当てると、オブジェクト指向の世界が開けてきます。その効用は、冗長な条件判定の排除による例外の発生防止だけではありません。コードの見通しを良くすることは、バグを発見するための強力な処方箋となります。

 今回は、先に紹介したパズルゲームを参考にしながら、新たにライフゲームの作成を行います。担当は第4回に引き続き伊藤です。前回の復習を兼ねて、初心に還って解説しますのでよろしくお願いします。

注意
 今回の記事は、ゲームを作成するための一般的な手法を紹介したものではありません。伝統的な手法とは違うオブジェクト指向の発想を示すのが「目的」です。ゲームを題材に選んだのは、目的(学習)を達成する手段(教材)の一つにすぎません。

対象読者

 こんな症状を抱えているなら……。

  • 配列を扱うたび、例外 ArrayIndexOutOfBoundsException に悩まされる
    【効能】主客転倒させることで、パラダイムシフトが容易になるかも
    【副作用】まだ配列を使っているんですかと言いたくなるかも
    【おまけ】Java/C# 版のコードを、Jython 版と比較してみるのも一興かも

ライフゲームは万能マシン

 ライフゲームは、英国の数学者 John Horton Conway(1937-)が1970年に創案したとされています。ライフゲームは、万能チューリングマシンであり、マス目が無限に広がるなら、無制限の記憶容量を持つ仮想マシンに匹敵する性能が期待できます。

 話し相手もいない孤独な環境では、寂しさに耐えられず生きていけません。逆に、いつも誰かに囲まれている環境では、窮屈さに耐えられず生きていけません。そんな付かず離れずの程よい加減の環境が生物の生存には欠かせないことを、このライフゲームは物語っているかのようです。

《Tea Break》 ライフゲーム vs. 人生ゲーム
 ライフゲームと言うとボードゲームとして有名な「人生ゲーム」が思い浮かびます。どちらも英語では「Game of Life」となるので、ライフゲームを「Conway's Game of Life」、人生ゲームを「Hasbro's Game of Life」と区別して呼ぶことがあります。

次のページ
ライフゲームのルール:要求仕様

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
よろずプログラマーのためのPython導入ガイド連載記事一覧

もっと読む

この記事の著者

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

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

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

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

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

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2252 2008/06/13 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング