Avatar

設計パターンを疑え

名前の嘘を暴き、意図で設計を語る

  1. Home
  2. About
  3. お仕事のご依頼
  4. Archives
  5. Search
  6. Links
  7. プライバシーポリシー
  8. お問い合わせ
    1. ダークモード

アーカイブ

2026 583
2025 87
2024 1
2023 1
2022 1
さらに見る

タグ

Perl Moo Design-Pattern Refactoring Life Social Code-Detective Design-Patterns Series-Toc Web Movabletype Mojolicious Favorites Yapc Ai Game Git Perl-Advent-Calendar-2025 Perl-Entrance Python
Featured image of post 毎回全ファイルをコピーして遅い。更新時刻の比較で差分だけ処理する

毎回全ファイルをコピーして遅い。更新時刻の比較で差分だけ処理する

更新時刻 (mtime) を比べて、変更のないファイルをスキップする。1,500 ファイルの 2 回目の実行が約 5 秒から 0.08 秒になる。一方で while ループの if が増え始める問題も見えてくる。

30, 2026
読了時間: 3分
Featured image of post Perl でバックアップツールを自作したい。再帰コピーで動く最小版を作る

Perl でバックアップツールを自作したい。再帰コピーで動く最小版を作る

Path::Tiny で再帰的にファイルをコピーするバックアップツールを作る。同じディレクトリを2回続けて実行し、毎回全ファイルをコピーしてしまう弱点を数字で確かめる。

30, 2026
読了時間: 4分
Featured image of post 【目次】Perl/Mooでテキスト処理パイプライン(全6回)

【目次】Perl/Mooでテキスト処理パイプライン(全6回)

Perl と Moo でテキスト処理パイプラインを作りながら、Chain of Responsibility と Decorator を学ぶ全6回の連載。目次を兼ねた案内板で、読む順と各回の内容をまとめています。

30, 2026
読了時間: 2分
Featured image of post フィルターを足すたびに本体を直したくない。プラグインで外から読み込む【OCP】

フィルターを足すたびに本体を直したくない。プラグインで外から読み込む【OCP】

自作のフィルターを、既存のコードを変えずに外から読み込めるプラグイン機構を作る。開放閉鎖の原則 (OCP) を実装で確かめ、全6回のパイプラインを仕上げる。

30, 2026
読了時間: 6分
Featured image of post アクセスログから Top 10 の URL を出したい。作ったフィルターを組み合わせる【Perl】

アクセスログから Top 10 の URL を出したい。作ったフィルターを組み合わせる【Perl】

Apache のアクセスログを解析する。ログのパース、ステータスコードでの絞り込み、上位 N 件の抽出を新しいフィルターとして足し、これまでの部品を組み合わせて Top 10 URL や IP 別の件数を出す。

30, 2026
読了時間: 7分
Featured image of post パイプラインの最後に行数と統計を出したい。集約処理のフィルターを足す【Moo】

パイプラインの最後に行数と統計を出したい。集約処理のフィルターを足す【Moo】

行を絞る処理とは別に、全行を見てから1つの結果を返す集約処理を足す。CountFilter と StatsFilter を作り、タイムスタンプが集計に混ざる問題を ExtractFilter で直す。

30, 2026
読了時間: 6分
Featured image of post フィルターを逆順に作る手間をなくしたい。メソッドチェーンで組み立てるビルダー【Moo】

フィルターを逆順に作る手間をなくしたい。メソッドチェーンで組み立てるビルダー【Moo】

フィルターを繋げるには最後の1つから逆順に作る必要があった。PipelineBuilder を作り、メソッドチェーン (Fluent Interface) で読んだ順に組み立てられるようにする。

30, 2026
読了時間: 5分
Featured image of post ソートと重複排除を足したいが、既存のフィルターは触りたくない。基底クラスで重ねる【Decorator】

ソートと重複排除を足したいが、既存のフィルターは触りたくない。基底クラスで重ねる【Decorator】

GrepFilter に SortFilter と UniqFilter を足すため、共通の基底クラスを作って機能を重ねられるようにする。Decorator の考え方と、繋げたときに見つかる問題を確かめる。

30, 2026
読了時間: 5分
Featured image of post cat | grep を Perl で再現したい。正規表現フィルターを連鎖できる形で作る【Moo】

cat | grep を Perl で再現したい。正規表現フィルターを連鎖できる形で作る【Moo】

Unix の cat | grep を Perl と Moo で再現する。正規表現で行を絞るフィルターを作り、2つ繋げて動かしながら Chain of Responsibility の入口に立つ。

30, 2026
読了時間: 5分
Featured image of post 【目次】PerlとMooで航空管制シミュレーターを作ろう(全8回)

【目次】PerlとMooで航空管制シミュレーターを作ろう(全8回)

Perl と Moo で航空管制シミュレーターを作りながら Mediator パターンを学ぶ全8回の連載。目次を兼ねた案内板で、読む回の選び方と各回の内容をまとめています。

30, 2026
読了時間: 3分
Featured image of post ここまで作ってきた設計の名前は Mediator パターンだった。管制塔の役割を整理する

ここまで作ってきた設計の名前は Mediator パターンだった。管制塔の役割を整理する

ここまで作った「管制塔が機体同士のやり取りを仲介する」設計は、GoF の Mediator パターンだった。登場人物の対応表と、チャットなど他の応用例を整理する。

30, 2026
読了時間: 5分
Featured image of post 燃料切れの機体まで順番待ちさせてしまう。緊急機をキューの先頭に回す

燃料切れの機体まで順番待ちさせてしまう。緊急機をキューの先頭に回す

燃料切れの機体も、先着順のキューでは順番を待たされる。緊急宣言した機体を待機列の先頭に入れ、通常の機体より先に着陸させる。Perl と Moo で実装する。

30, 2026
読了時間: 6分
Featured image of post 滑走路が空くのを待つ機体が取り残される。着陸待ちキューで先着順に処理する

滑走路が空くのを待つ機体が取り残される。着陸待ちキューで先着順に処理する

滑走路が使用中だと、着陸を断られた機体は二度と着陸できない。管制塔に待機キューを持たせ、先に要求した機体から順に着陸させる (FIFO)。

30, 2026
読了時間: 5分
Featured image of post 滑走路を使えるのは同時に1機だけ。使用中かの管理を Runway クラスに分ける

滑走路を使えるのは同時に1機だけ。使用中かの管理を Runway クラスに分ける

管制塔のフラグ1つで滑走路を管理するのをやめ、Runway クラスに切り出す。使用中かの判定、占有、解放を滑走路自身に持たせ、同時に1機しか使えないようにする。

30, 2026
読了時間: 4分
Featured image of post 機体の種類が増えても管制塔のコードは変えない。Moo::Role で共通の約束を決める

機体の種類が増えても管制塔のコードは変えない。Moo::Role で共通の約束を決める

旅客機・貨物機・小型機が増えても、管制塔は同じ呼び方で通信したい。Moo::Role で requires を使い、航空機が守るべきメソッドを決めておく。

30, 2026
読了時間: 5分
1 … 21 22 23 … 103
© 2000 - 2026 設計パターンを疑え
システム開発・AIワークフローのご相談は Meetsource へ
Hugo で構築されています。
テーマ Stack は Jimmy によって設計されています。