Featured image of post コピペで増えたスクレイパーを、継承で1つの設計にまとめる全10回【目次】

コピペで増えたスクレイパーを、継承で1つの設計にまとめる全10回【目次】

サイトを足すたびにコピペで増えていく Web スクレイパーを、Perl と Moo の継承で1つの設計にまとめていく全10回の案内板です。関数化・基底クラス・オーバーライド・フックメソッドと順に積み上げ、最後にその設計が Template Method パターンだったことを確かめます。

Perl と Mojo::UserAgent で Web スクレイパーを作り、サイトが増えるたびにコピペで膨らむコードを、Moo の継承で1つの設計にまとめていく全10回の連載です。最後の回で、作ってきた設計が GoF の Template Method パターンだったことを確かめます。

1本のコードを第1回から少しずつ育てていく連載なので、基本は第1回から順に読む作りです。ただし、どこで困っているかによって入口を変えられます。このページは目次を兼ねた案内板です。入口は「どこから読むか」で、困りごとが決まっているなら「困りごとから探す」で、順に追うなら「全話一覧」で選んでください。

対象は、Perl の基本文法が分かり、Moo でクラスを書いたことがある方です。Moo が初めてなら、先に「関連シリーズ」の「Mooで覚えるオブジェクト指向プログラミング」をどうぞ。実行には Perl v5.36 以降、Moo、Mojolicious(Mojo::UserAgent・Mojo::DOM)を使います。

どこから読むか

  • 第1回 — スクレイピングを初めて書くなら。HTML の取得と CSS セレクタでの抽出、アクセスのマナーまでを押さえる回
  • 第4回 — 継承は書けるが、処理の流れをどこに置くかで迷っているなら。基底クラスに流れを1つだけ持たせる回。第2〜3回のコピペと関数化の行き詰まりが前提なので、ざっと目を通してから
  • 第10回 — Template Method パターンの名前と Strategy との違いだけを知りたいなら。前の回のコードを引きながら整理する回

困りごとから探す

似たスクリプトをコピペで増やしている

  • 第2回 — コピペで2本にしたら、直す場所が2倍になった
  • 第3回 — 関数に切り出しても、保存方法の切り替えが入らない
  • 第4回 — 処理の順番をスクリプトごとに書いている

継承したのに、子クラスに書くことが多い

  • 第5回 — サイトごとに違う所だけを書き分けたい
  • 第6回 — 同じ保存処理を子クラスごとに書かされる

足したら壊れる・壊れても気づかない

  • 第7回 — サイトの構造が変わっても、空のデータを黙って保存する
  • 第8回 — サイトを1つ足すたびに既存のクラスを直している

全話一覧

関連シリーズ

前提シリーズ

同じく Perl と Moo でデザインパターンにたどり着く連載

Template Method を困ったコードの側から読む

comments powered by Disqus
システム開発・AIワークフローのご相談は Meetsource へ
Hugo で構築されています。
テーマ Stack は Jimmy によって設計されています。