アドレス帳データをCSVやJSONで保存したい。if/elseで形式を切り替えるシンプルな実装から始めて、Mooを使ったデータエクスポーターの基礎を学びます。
PerlとMooでテキストエディタを作りながらCommandパターンを学ぶ全10回のシリーズ記事です。Undo/Redo機能を実装し、デザインパターンの考え方を身につけます。
完成したエディタの設計が、GoFのCommandパターンだったことを明かします。パターンの構造と応用例を解説し、シリーズ全体を振り返ります。
これまで作成したEditor、コマンドクラス、History、MacroCommandを統合し、対話的に操作できるCLIベースの簡易テキストエディタを完成させます。
複数の操作を1つにまとめるMacroCommandクラスを実装します。Compositeパターンを活用し、複数操作の一括実行と一括Undoを実現します。
Historyクラスにredoメソッドを実装し、Undoした操作をやり直せるようにします。undo_stackとredo_stack間のコマンド移動を理解し、Undo/Redoの連続操作をマスターします。
操作履歴を管理するHistoryクラスを作成します。undo_stackとredo_stackでスタック管理を行い、execute_commandとundoメソッドを実装。履歴管理のカプセル化を学びます。
InsertCommandとDeleteCommandに共通のインターフェースを保証するため、Moo::Roleでrequiresを使ったCommand::Roleを作成します。コンパイル時に不足メソッドを検出できる安全な設計を学びます。
各操作に「逆操作」を定義してUndo機能を実現します。InsertCommandにundoメソッドを追加し、挿入の逆である削除を実装。DeleteCommandクラスも作成します。
「何をしたか」を記録するために、操作そのものをオブジェクトにするアイデア。InsertCommandクラスを作成し、操作のオブジェクト化を学びます。
誤って削除した文字を戻したい!直前の状態を保存する試みと、複数回の操作で破綻するケースを通じて、操作履歴の必要性を理解します。
PerlとMooでテキストを追加・削除できる簡易エディタを作成。Undo/Redo機能まで学ぶシリーズ第1回。
Perl/Mooで設定ファイルマネージャーを作りながら、Singletonパターンを自然に学べるシリーズです。全5回の記事一覧と概要をまとめています。
これまで実装してきた仕組みがGoFデザインパターンの「Singletonパターン」であることを解説。パターンの利点と注意点も紹介します。
Perl/Mooでinstance()メソッドを実装し、インスタンスを1つに統一する方法を解説。クラス変数による単一インスタンス保証の仕組みを学びます。