NewsScraperとWeatherScraperクラスをextendsで作成。extract_data()メソッドをオーバーライドして各サイトの抽出ロジックを実装します。Primitive Operationsの実装方法を学び、継承とオーバーライドの実践的な使い方を習得します。
WebScraperクラスを作成し、scrape()メソッドで処理の流れを定義。各ステップを抽象メソッドとして宣言し、Template Methodパターンの基礎を構築します。継承ベースの設計手法を実践的に学びます。
ニュース・天気予報のスクレイパーで「取得→抽出→保存」という共通の処理手順を発見。関数化して重複を削減しますが、まだ改善の余地があります。クラス設計の準備段階として処理の骨格を洗い出します。
天気予報サイトもスクレイピングしたくなった!前回のコードをコピペして対応するが、同じ処理が散在して保守性が低下。コード重複の問題に直面し、リファクタリングの必要性を認識します。
PerlとMojo::UserAgentを使ってニュースサイトから見出しを取得する基本的なWebスクレイパーを作成します。Mojo::DOMでHTMLから要素を抽出する方法を学び、Webスクレイピングの基礎を身につけます。
「Perlでハニーポット侵入レーダーを作ろう」シリーズ全10回の目次です。Observerパターンを使った通知設計を学びながら、セキュリティ監視システムを構築します。
シリーズで作ってきた設計が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の増殖と単一責任の原則違反が引き起こす破綻を理解しましょう。