シリーズで作ってきた設計がGoFのObserverパターンそのものだったことを明かします。クラス対応表とPub/Subとの比較で理解を深めましょう。
すべてのObserverを統合し、ハニーポット侵入レーダーを完成させます。ログ・スコア・リスクレベル・アラートが連動する司令室の完成コードをお届けします。
開放閉鎖の原則(OCP)を実践して、新しいRiskLevelObserverを追加します。既存コードを一切変更せずに機能拡張できることを確認しましょう。
IntrusionHubにdoes制約を導入し、IntrusionObserverロールを実装していないオブジェクトの登録を拒否します。型制約による堅牢な設計を学びましょう。
深夜帯だけアラートを有効にするなど、Observerを動的に登録・解除する機能を実装します。attach/detachを活用したランタイム制御で柔軟な運用を実現しましょう。
複数のObserverを一元管理し、侵入イベント発生時に一斉通知するIntrusionHub(司令塔)を実装します。attach/detach/notifyの基本構造を作りましょう。
Moo::Roleを使って通知担当が満たすべき契約(インターフェース)を定義します。requiresで必須メソッドを宣言し、実装漏れをコンパイル時に検出できるようにしましょう。
if/elseの増殖を解決するため、通知担当を別クラスに分離します。RadarLogObserverとThreatScoreObserverを作成し、単一責任の原則に沿った設計に改善していきます。
ハニーポット侵入レーダーに脅威スコア機能を追加しようとしたら、コードがスパゲッティ化していく様子を体験します。if/elseの増殖と単一責任の原則違反が引き起こす破綻を理解しましょう。
偽装サーバーに届く侵入イベントを可視化するハニーポット侵入レーダーを作ります。まずは侵入イベントを受け取ってコンソールに表示するシンプルな構成から始めましょう。Perl v5.36とMooを使って、イベント記録の基本を実装します。
呪われた高解像度アートを覗き見するギャラリーを作りながら、Proxyパターンの5つのバリエーション(Virtual、Protection、Caching、Logging、Remote)を学ぶシリーズの目次です。
ギャラリーの画像を外部アーカイブサーバーに移動することになった。Remote Proxyでネットワーク越しのアクセスを透過的に扱い、呼び出し側のコードを変更せずに対応します。
ギャラリーへのアクセスに監査要件が追加された。誰がいつどの絵を見たかを記録するLogging Proxyで、監査ログを一箇所に集約する方法を学びます。
高解像度の呪いの絵を何度も見ていると、毎回ロードに時間がかかる…Caching Proxyで結果をキャッシュし、2回目以降の表示を瞬時に行う方法を学びます。
鍵付きの呪いの絵が追加されたギャラリー。直アクセスでは危険なため、Protection Proxyで権限チェックを挟み、許可されたユーザーだけが閲覧できるようにします。