@nqounetです。
このページは「PerlとMooでWebスクレイパーを作ってみよう」シリーズの目次です。
シリーズ概要
このシリーズでは、Mojo::UserAgentを使ったWebスクレイパーを作りながら、デザインパターンの一つである「Template Methodパターン」を自然に学びます。
対象読者
- Perl入学式を卒業した方
- 「Mooで覚えるオブジェクト指向プログラミング」シリーズを読了した方
- 実務で役立つモダンなPerlを使ってみたい方
学習目標
- オブジェクト指向プログラミングの原則を深く理解する
- SOLID原則(特に開放閉鎖原則OCP)を実践する
- Template Methodパターンを自然に習得する
- Hollywood Principle(制御の反転)を体験する
技術スタック
- Perl v5.36以降
- Moo(オブジェクト指向フレームワーク)
- Mojolicious(Mojo::UserAgent, Mojo::DOM)
目次
第1回: ニュースサイトから見出しを取得しよう
Mojo::UserAgentでHTTPリクエストを送信し、Mojo::DOMでHTMLから要素を抽出する基本を学びます。
第2回: 天気予報サイトも取得したい!コピペの限界
天気予報スクレイパーをコピペで作成し、コード重複の問題に直面します。
第3回: 共通の処理手順を洗い出そう
「取得→抽出→保存」という共通の処理手順を発見し、関数化で重複を削減します。
第4回: 基底クラスで処理の流れを定義しよう
WebScraperクラスを作成し、scrape()メソッドで処理の骨格を定義。抽象メソッドの概念を導入します。
第5回: サイトごとのスクレイパーを作ろう
extendsで継承し、extract_data()とsave_data()をオーバーライドして具体的な処理を実装します。
第6回: デフォルトの保存処理を用意しよう
save_data()にデフォルト実装を用意し、Hook Methodsの活用方法を学びます。
第7回: データ検証をフックで追加しよう
validate_data()フックメソッドを追加し、データ検証機能を実装します。
第8回: 新しいサイトを追加しよう
ProductScraperを追加し、既存コードを修正せずに拡張できること(OCP)を実証します。
第9回: 完成!Webスクレイパー
全機能を統合し、完成したWebスクレイパーシステムの全体像を確認します。
第10回: これがTemplate Methodパターンだ!
構築してきたものが「Template Methodパターン」だったことを明かし、Strategyパターンとの違いやHollywood Principleを解説します。
