作成日時を記録する機能が Message と User の両方に要る。でも User は投稿ではないので継承でつなぐのはおかしく、両方に書けば重複する。Moo::Role でロールを作り、with で各クラスに組み込みます。
show の中で isa('AdminMessage') と種類を調べて分岐すると、UrgentMessage や NoticeMessage を足すたびに分岐も増える。文字列を作る format を親クラスに切り出し、子クラスで同じ名前のまま上書きして、show には手を入れずに済ませます。
管理者のお知らせ用に AdminMessage を作ると、content・user・add_like が Message とまったく同じになり、直すときは2か所になる。Moo の extends で Message を継承し、AdminMessage には違う所(is_important)だけを書きます。
投稿者の名前・メール・アバターと、author_ で始まる属性が Message に増えて見通しが悪くなる。投稿者を User クラスに切り出し、Message には User オブジェクトを属性として持たせます。
like_count を rw にしておくと、外から -100 も入れられてしまう。内部用の属性は _ で始めて読み取り専用にし、増やせるのは add_like だけにする。値のルールをクラスの中の1か所に集めます。
content を渡し忘れても new は通ってしまい、空の投稿ができる。required => 1 で渡し忘れをその場のエラーにし、いいね数のように省略してよい値は default で初期値を決めます。
is => 'rw' の属性は、プログラムのどこからでも書き換えられる。投稿内容のように変わってはいけない値は is => 'ro' で読み取り専用にし、既読フラグのように変える必要がある値だけ rw に残します。
$content1、$content2 と番号付きの変数をコピペで増やすと、10個、100個で破綻する。Moo のクラスに用意される new で同じ形のオブジェクトを作り、配列に入れてループで一度に処理します。
掲示板の投稿を $message_content や $message_author のような変数で持つと、データも表示の処理もあちこちに散らばる。Moo の has で属性を、sub でメソッドを定義し、Message クラス1つにまとめます。
Mojo::Log を教材に、Perl のイベント駆動プログラミングを基礎から解説。on(購読)と emit(発火)の仕組みを図解とコードで学び、カスタムフォーマットや複数出力先への配信など実用パターンも紹介します。
GitHub Copilot の Ask モードを調べ物ツールだと勘違いしていませんか?実はリポジトリ全体を分析する強力な調査ツール。Ask → Plan → Agent の流れで新規プロジェクトのオンボーディングが数分で完了。実践的な活用法を解説します。
GitHub Copilot の Web・エディタ・CLI を徹底比較。プレミアムリクエスト 118/300(活用率 39%)の実測データから、各インターフェースの最適な使い分け戦略と生産性 2 倍化のロードマップを解説します。
金額やバージョン番号を数値や文字列のまま渡すと、ありえない値が黙って通る。Perl と Moo で値オブジェクトを作り、Test2 のテスト駆動開発で守りを固めていく全5回の案内板です。題材は JSON-RPC 2.0 の仕様で、Money から Request/Response、エラー処理と境界値テストまで順に積み上げます。
エラーの Response に result が混じる、範囲外のエラーコードが通る。おかしな値は、使う所で調べるより作る時点で止めるほうが原因を追いやすい(Fail Fast)。JSON-RPC 2.0 のエラーを JsonRpcError として実装し、エラーコードの範囲や文字列長の境目を Test2 で網羅的に確かめます。シリーズ完結回。
Perl の正規表現・リファレンス・コンテキストといった基礎から、Web・データベース・非同期処理・テストまで、定番モジュールと書き方を25日で一通りたどる Perl Advent Calendar 2025 の目次です。