標準の List::Util から sum・max・reduce・first・any・uniq・pairs を、List::MoreUtils から zip・part・firstidx・minmax などを紹介します。集計、ログ解析、ショッピングカート、ユーザーデータの絞り込みといった実用パターンと性能の考え方付き。
PerlのMojoliciousでWebSocketを実装する完全ガイド。エコーサーバー、リアルタイムチャット、ダッシュボードを3ステップで構築。初心者でも数行のコードから始められる実践チュートリアル。
eval と $@ による例外処理の問題点を確認し、Try::Tiny の try・catch・finally に置き換えます。特定のエラーだけを捕まえる方法、再送出、リトライ、DB トランザクションや Web API 呼び出しでの使い方、eval との使い分けを解説します。
Perl の Moo と Test2 で TDD を学ぶ全5回の連載の目次です。テストを書いたことがない人が、環境構築から CI まで順に進める道筋と、各回で何ができるようになるかを案内します。
DBI での接続、プレースホルダによる SQL インジェクション対策、INSERT・SELECT・UPDATE・DELETE とトランザクションを押さえたあと、DBIx::Class のスキーマ定義・リレーション・ページネーションに進みます。両者の使い分けも整理します。
時刻や外部依存でテストしにくい、実装を変えるたびにテストが壊れる、といったつまずきと対処を扱います。テストしやすい設計、モックとスタブの使いどころ、TDD のアンチパターンを整理する最終回です。
JSON-RPC 2.0のエラーレスポンスにおけるID必須仕様について、仕様の意図、実装の注意点、他のRPCプロトコルとの比較を通じて詳しく解説します。JSON::RPC::Specの8年ぶりの修正から学んだこと。
C で実装された Time::Moment の作り方・加減算・フォーマット・タイムゾーン処理を DateTime と比べながら解説します。ログの集計、営業日計算、期間の比較、タイムゾーンをまたぐ会議時刻の調整といった実用例付き。
テストの実行し忘れを防ぐため、GitHub Actions で push と pull request のたびに Perl のテストを自動実行します。ワークフローの書き方、複数 Perl バージョンの確認、バッジの付け方まで。
bless による伝統的なオブジェクト指向の問題点から始めて、Moo の has・extends・with、Types::Standard の型制約、before・after・around のメソッド修飾子を解説します。Moo と Moose の使い分け、ユーザー管理システムの実装例、ベストプラクティス付き。
Person と Robot に同じ挨拶メソッドをコピペした状態から、テストを通したまま Moo のロールへ共通化します。テストがあると、リファクタリングで何が安心になるかを体験できます。
cpanfile で依存モジュールとバージョンを宣言し、Carton でプロジェクトごとに分けてインストールします。cpanfile.snapshot で全員の環境を同じにする方法、チームでの追加と取り込みの手順、.gitignore、GitHub Actions での利用まで解説します。
メソッドの戻り値や例外を Test2 でどう確かめるか。like・is・array・dies などの使い分けと、サブテストでテストを整理する方法を、TDD の流れで手を動かして覚えます。
PSGI はアプリとサーバーの間の取り決めで、Plack はその実装です。最小の PSGI アプリ、$env の中身、静的ファイル配信・Basic 認証・セッションのミドルウェアの重ね方、Starlet・Starman での本番運用と Mojolicious との関係まで解説します。
Perl でテストを書いたことがない人向けに、Docker で Test2 と Moo の環境を作り、失敗するテストを書いて通すまでの一周(レッド→グリーン→リファクタリング)を体験します。