MooX::Cloneを導入してclone()メソッドを追加!ベースモンスターを1体作れば、あとはclone()で量産し放題。コードが劇的に短くなる魔法を体験しよう。
スライムを10体作りたい!でもnew()で毎回全属性を指定するのは面倒すぎる。もっと効率的にモンスターを量産する方法はないの?
Mooを使ってローグライクゲームの通知システムを作りながら、Observerパターンを自然に学ぶ全10回のシリーズ目次です。
作ってきた設計が「Observerパターン」だったことを明かします!Pub/SubやMediatorとの違いも解説し、デザインパターンの世界へ誘います。
全機能を統合してローグライク通知システムを完成!対話的なCLIでダンジョン探索を体験。実績、サウンド、統計が連動する様子を確認。
敵撃破数やダメージ統計を記録するStatisticsObserverを追加。既存コードを変更せずに拡張する開放閉鎖原則(OCP)を体感します。
間違ったオブジェクトがObserverとして登録されないよう、does制約で型チェック。PerlとMooでの安全な実装パターンを学びます。
ゲーム中にサウンドをON/OFFしたい!Observerを実行時に追加・削除できる仕組みを実装。動的な設定変更に対応するコードを書きます。
Observerリストを保持し、イベント発生時に全Observerへ通知するGameEventEmitterを作成。attach/detach/notifyの実装方法を解説。
全Observerがupdateメソッドを持つ約束をMoo::Roleで定義。requiresでインターフェースを設計し、統一的な通知の仕組みを構築します。
ログと実績をそれぞれ独立したクラスに分離。通知を受け取るupdateメソッドを持たせ、責務分離の基礎を学びます。PerlとMooで実装。
実績システムを追加したい!ログと実績の両方に通知するコードが複雑化。if/elseの増殖問題を体感し、設計改善の必要性を学びます。
ローグライクゲームで敵を倒したらログに記録する簡単な仕組みを作成。Perlのsayで直接出力する素朴な実装から始めます。Mooでのクラス設計入門。
シリーズ記事「Perlで作るブルートフォース攻撃シミュレータ」の全5回の目次と概要です。Perl入学式卒業程度の読者を対象に、Iteratorパターンを自然に学びます。
完成した攻撃ツールを振り返り、これが「Iteratorパターン」であることを解説。大量のデータをメモリに展開せずに扱う「遅延評価」の重要性を学びます。