素朴な実装から洗練された設計への変化を振り返ります。CommandパターンとRepositoryパターンの導入効果を確認し、デザインパターンの威力を実感しましょう。
Getopt::Longでコマンドライン引数を整理し、--verboseなどのオプションにも対応します。サブコマンドとオプションを組み合わせた堅牢なCLIアプリに仕上げましょう。
Command::Completeを追加し、Commandパターンの拡張性を体験します。新機能追加が既存コードにほとんど影響しない設計の威力を実感しましょう。
肥大化したif-elsif分岐をCommandパターンで解消します。各操作をCommand::Add、Command::Listなどのオブジェクトに分離し、拡張性の高い設計を学びましょう。
ファイルI/Oなしでテストできるよう、InMemoryRepositoryを追加します。同じインターフェースで実装を切り替える威力を体感し、Repositoryパターンの真価を理解しましょう。
Repositoryパターンを導入し、メインロジックから永続化コードを分離します。TaskRepository::RoleとTaskRepository::Fileの実装で、保存形式の変更に強い設計を学びましょう。
プログラム終了後もタスクを保持するため、JSONファイルでの永続化を実装します。PerlのJSONモジュールを使った読み書き方法を解説。タブ区切りからJSONへの移行で、より堅牢なデータ管理を実現しましょう。
TodoアプリのデータをMooでクラス化します。Taskクラスを定義してid・title・is_doneを管理し、mark_done()メソッドでタスク完了を実装。素朴な配列管理からオブジェクト指向への第一歩を踏み出しましょう。
Perlで実践的なCLIアプリを作ってみませんか?if-elsif分岐でadd・list・completeの3つのサブコマンドを持つTodoアプリを実装。配列でタスクを管理するシンプルな構成から始め、動くアプリを通じて拡張性の課題を体感します。
「Mooを使ってディスパッチャーを作ってみよう」シリーズ(全12回)の目次記事です。各回へのリンクと短い説明をまとめています。
実は作ってきたものが「Strategy パターン」だったことを明かします。デザインパターンの世界への入口と、次のステップを紹介します。
これまで作ってきた機能を統合し、完成したディスパッチャーをBBSに組み込んで動作確認します。シリーズの集大成をお楽しみください。
URLパターンでハンドラーを振り分ける機能を追加します。正規表現マッチングを使った、より実践的なルーティングの仕組みを学びましょう。
アクション名から自動でハンドラーを選択・生成する仕組みを実装します。Factory的な生成パターンで、より柔軟なディスパッチャーを作りましょう。
複数のハンドラーを登録して管理する仕組みを作ります。レジストリパターンを使って、名前でハンドラーを管理する方法を学びましょう。