Featured image of post Mooは書けて、設計パターンは初めて。Perlで天気ツールを作りながらAdapterパターンにたどり着く全5回【目次】

Mooは書けて、設計パターンは初めて。Perlで天気ツールを作りながらAdapterパターンにたどり着く全5回【目次】

天気を返す Moo のクラスを1つ作り、メソッド名も戻り値も違うサービスを足し、包んで同じ呼び方に揃え、3つを1つのループで回す。最後にそれが GoF の Adapter パターンだと名前を付ける全5回の案内板です。

Perl と Moo で天気情報ツールを作りながら、Adapter パターンにたどり着く全5回の連載です。天気を返すクラスを1つ作り、メソッド名も戻り値も違う古い API を足して困り、その API を包んで同じ呼び方に揃え、3つ目のサービスも足して1つのループで回します。第5回で、作ってきた橋渡しクラスが GoF の Adapter パターンだったと名前を付けます。

各回は前の回のコードに足していく作りなので、通して読むなら第1回からが早道です。このページは目次を兼ねた案内板です。入口は「どこから読むか」で、困りごとが決まっているなら「困りごとから探す」で、順に追うなら「全話一覧」で選んでください。

対象は、Perl 入学式を卒業し、Moo で has とメソッドを書いたことがある方です。Moo が初めてなら、前シリーズ「Mooで覚えるオブジェクト指向プログラミング」の目次(このページの最後にリンクがあります)から読んでください。Perl v5.36 以降の signatures を使い、依存モジュールは cpanm Moo で入ります。天気データはコード内の固定値で、外部の API にはつなぎません。

どこから読むか

  • 第1回 — Moo のクラスを1つ作るところから始めたいなら。第2回で、形の違う API を足して困る
  • 第2回 — 同じ目的なのに呼び方が違うクラスを、並べて扱えずに困っているなら。何が食い違うかを先に整理する
  • 第3回 — 古いコードを変えずに新しい呼び方で使いたいなら。包んで変換するクラスを作り、第4回で3つに増やす
  • 第5回 — Adapter パターンの名前と構造だけ確かめたいなら。4役と、Facade・Decorator・Proxy との違い

困りごとから探す

Moo のクラスを実際の題材で書いたことがない

  • 第1回 — 都市名を渡すと天気を返すクラスを、signatures で書きたい

同じ目的のクラスなのに、呼び方がばらばら

  • 第2回 — メソッド名も戻り値の形も違い、呼び出し側で書き分けている
  • 第3回 — 古い API のコードに手を入れずに、同じメソッド名で呼びたい

サービスが増えるたびに、呼び出し側が膨らむ

  • 第4回 — 引数も戻り値も違う3つ目を足し、配列に入れて1つのループで回したい

やったことに名前を付けて、ほかでも使いたい

  • 第5回 — 橋渡しクラスを GoF の Adapter パターンとして整理し、似たパターンと比べたい

全話一覧

関連シリーズ

Moo のクラス・ロール・委譲を、掲示板アプリで1つずつ身につける(この連載の前提)

本物の天気 API を HTTP::Tiny で呼び、Adapter パターンで2つの API を揃える

困ったコードを直しながら、Adapter を含む GoF の23パターンをたどる

参考リンク

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