独自のフィルターを外部から動的に読み込む「プラグイン機構」を構築します。OCP(開放閉鎖原則)に従い、既存コードを変更せずに機能を拡張できる、柔軟なテキスト処理システムを完成させます。
Apache/Nginxのアクセスログを解析する実践的なパイプラインを構築します。URLやステータスコード別の集計を行い、ログ解析ツールの自作を通して学んだパターンの有効性を実感します。
パイプラインにAggregator(集約処理)を追加し、行数カウントや統計情報を出力できるようにします。CountFilterやStatsFilterの実装を通して、データ集計のパターンを学びます。
Fluent Interface(流暢なインターフェース)を使ったパイプラインビルダーを作成します。メソッドチェーンで直感的にフィルターを組み立てる、モダンなPerlコーディングスタイルを習得します。
Chain of Responsibilityに加えてDecoratorパターンを導入し、パイプラインを強化します。SortFilter(ソート)とUniqFilter(重複排除)を追加しながら、機能の動的な重ね合わせを学びます。
PerlとMooでUnixの「cat | grep」を再現。Chain of Responsibilityパターンを使ってテキスト処理パイプラインの基礎を学びます。正規表現フィルターの実装を通して、オブジェクト指向によるツール作成の第一歩を踏み出しましょう。
PerlとMooで航空管制シミュレーターを作りながら、Mediatorパターン(仲介者パターン)を学ぶシリーズ全8回の目次です。
作ってきたものがGoFの「Mediatorパターン」だったと明かします。パターンの構造と他の応用例を解説。
燃料切れなど緊急事態の航空機を優先する機能を追加。優先度付きキューで緊急処理を実装します。
複数機が着陸待ちの場合、順番に処理するキュー機能を追加。先着順で公平に処理します。
滑走路の排他制御を実装。1つの滑走路に同時に1機しか使えないリソース管理の仕組みを作ります。
全航空機クラスに共通のインターフェースをMoo::Roleで定義。Aircraft::Roleを作成し、統一的な操作を実現します。
管制塔(ControlTower)クラスを導入し、航空機同士が直接通信せずに安全に着陸できる設計に変更します。
2機の航空機が同時に着陸を要求すると衝突の危険が!オブジェクト間の直接参照が引き起こす問題を体験します。
PerlとMooを使って航空機シミュレーターを作成します。まずは飛行機を飛ばす基本的なクラスから始めましょう。