ログと実績をそれぞれ独立したクラスに分離。通知を受け取るupdateメソッドを持たせ、責務分離の基礎を学びます。PerlとMooで実装。
実績システムを追加したい!ログと実績の両方に通知するコードが複雑化。if/elseの増殖問題を体感し、設計改善の必要性を学びます。
ローグライクゲームで敵を倒したらログに記録する簡単な仕組みを作成。Perlのsayで直接出力する素朴な実装から始めます。Mooでのクラス設計入門。
シリーズ記事「Perlで作るブルートフォース攻撃シミュレータ」の全5回の目次と概要です。Perl入学式卒業程度の読者を対象に、Iteratorパターンを自然に学びます。
完成した攻撃ツールを振り返り、これが「Iteratorパターン」であることを解説。大量のデータをメモリに展開せずに扱う「遅延評価」の重要性を学びます。
英単語リストを使った辞書攻撃機能を追加。Iteratorインターフェースを守ることで、ブルートフォースと辞書攻撃を自由に切り替えるポリモーフィズムを学びます。
Mooを使って「次のパスワード候補」を生成するクラスを作成。複雑なループ構造をオブジェクトの中に隠蔽し、スッキリとしたコードを実現します。
パスワードの桁数が増えるとfor文のネストでは対応できません。可変長のループ処理における問題点と、再帰処理の難しさを体験します。
Perlで3桁のパスワードを特定する単純なスクリプトを作成。for文のネストで総当たり攻撃(ブルートフォースアタック)の基本を学びます。
PerlとMooで学ぶデザインパターン実践シリーズ。RPGのセーブ/ロード機能を作りながら、状態管理の本質とMementoパターンを自然に習得できる全10回の連載です。
作ってきたものが「Mementoパターン」だったことを明かします。Commandパターンとの違い、Originator-Memento-Caretaker構造を解説。
全機能を統合してセーブ機能付きRPGを完成。対話的なCLIでゲームプレイのデモを行い、完成コードを確認します。
3つのセーブスロットから選んでロードできる機能を追加。複数履歴の管理と選択インターフェースを実装します。
セーブデータを外部から変更できないよう保護。Mooのis=>'ro'によるアクセス制御で、不正なデータ書き換えを防止します。
ボス戦前・エリア移動時に自動でセーブする機能を追加。auto_saveフラグと自動セーブロジックでゲーム体験を向上させます。