短縮URLにアクセスされたときの処理を実装します。Mojoliciousの動的ルーティングでURLパスからパラメータを取得する方法を学びましょう。
短縮URLをデータベースに登録する方法を学びます。INSERT文とプレースホルダを使って、安全にデータを保存しましょう。
URL短縮に必要なデータ構造を設計します。SQLのCREATE TABLEでテーブルを作成し、各カラムの意味と制約を理解しましょう。
サーバー再起動でデータが消えないよう、SQLiteデータベースで永続化します。DBIを使ったデータベース接続の基本を学びましょう。
長いURLを短いコードに変換する方法を学びます。Digest::SHAを使ったハッシュ生成で、URLから一意の短縮コードを作成しましょう。
フォームから送信されたURLを受け取る方法を学びます。POSTルーティングとparamメソッドでフォームデータを取得し、送信されたURLを画面に表示してみましょう。
URL短縮サービスの入口となるフォームを作成します。Mojolicious::LiteのGETルーティングとEPテンプレートで、URLを入力できる画面を表示しましょう。
友人から「長いURLを短くしたい」と相談されたことをきっかけに、Mojolicious::LiteでURL短縮サービスを作り始めます。morboで開発サーバーを起動しHello Worldを表示するまでを解説。
シンプルなTodo CLIアプリ(全10回)の目次ページです。各回の要点と関連記事へのリンクをまとめました。
Repositoryパターンの応用演習です。既存コードを変更せずにSQLite永続化を追加し、JSON→SQLiteへの切り替えを実装。DBIとDBD::SQLiteの使い方も学びましょう。
素朴な実装から洗練された設計への変化を振り返ります。CommandパターンとRepositoryパターンの導入効果を確認し、デザインパターンの威力を実感しましょう。
Getopt::Longでコマンドライン引数を整理し、--verboseなどのオプションにも対応します。サブコマンドとオプションを組み合わせた堅牢なCLIアプリに仕上げましょう。
Command::Completeを追加し、Commandパターンの拡張性を体験します。新機能追加が既存コードにほとんど影響しない設計の威力を実感しましょう。
肥大化したif-elsif分岐をCommandパターンで解消します。各操作をCommand::Add、Command::Listなどのオブジェクトに分離し、拡張性の高い設計を学びましょう。
ファイルI/Oなしでテストできるよう、InMemoryRepositoryを追加します。同じインターフェースで実装を切り替える威力を体感し、Repositoryパターンの真価を理解しましょう。