Perl と Moo で作るテキストのローグライクに、通知の仕組みを育てていく全10回の連載です。敵を倒したらログに残すだけの素朴な実装から始め、実績を足したところで if/else が膨らむ困りごとを確かめ、通知を受け取るクラスの分離、update の約束(Moo::Role)、通知先を管理する Emitter、実行中の付け外し、型チェックと進めて、統計の追加と対話的な CLI で完成させます。最後の第10回で、作ったものが Observer パターンだったと名前を付けます。
各回は前の回のコードに手を足していく作りなので、通して読むなら第1回からが早道です。このページは目次を兼ねた案内板です。入口は「どこから読むか」で、困りごとが決まっているなら「困りごとから探す」で、順に追うなら「全話一覧」で選んでください。
どこから読むか
- 第1回 — 最初から順に作るなら。敵を倒したらログに残す処理を、say で直接出力する素朴な実装で書く
- 第2回 — 機能を足すたびにコードが膨らむ困りごとを、先に体感したいなら。ログに実績を足して、if/else が増える様子を確かめる。前提は第1回のコード
- 第10回 — Observer パターンの役割と、Pub/Sub・Mediator との違いから知りたいなら。第9回までに作ったクラスを、パターンの役割に対応づける
困りごとから探す
機能を足すたびに、1つのメソッドが膨らむ
通知を受け取るクラスの書き方を揃えたい、間違いを早く見つけたい
実行中に通知先を切り替えたい
- 第6回 — ゲームの実行中に、サウンドを ON/OFF したい
既存のコードに触れずに、機能を足したい
全話一覧
対象読者
- Perl入学式を卒業したばかりの入門者
- 「Mooで覚えるオブジェクト指向プログラミング」シリーズを読了した方
- デザインパターンを実践的に学びたい方
- ゲームを作りながらプログラミングを学びたい方
前提知識
- Perlの基本文法(変数、配列、ハッシュ、サブルーチン)
- Mooによるクラス定義(
has、sub、new)
これらは前シリーズ「Mooで覚えるオブジェクト指向プログラミング」で学べます。
デザインパターンの名前は、第10回まで出しません。必要になる順に作ってから、最後に名前を付けます。
