Featured image of post Webアプリ開発が初めてでも、Mojolicious::LiteとSQLiteでPerlのURL短縮サービスを作り切る全12回【目次】

Webアプリ開発が初めてでも、Mojolicious::LiteとSQLiteでPerlのURL短縮サービスを作り切る全12回【目次】

Hello World から始め、URL を受け取るフォーム、短縮コードの生成、SQLite への保存、短縮 URL からの転送、入力のバリデーションと1回に1つずつ足し、Moo のクラスに分けて仕上げる全12回の案内板です。

Perl で、長い URL を短縮コードに変え、短縮 URL を開くと元のページへ転送する URL 短縮サービスを作る全12回の連載です。Mojolicious::Lite で Hello World を出すところから始め、入力フォーム、短縮コードの生成、SQLite への保存、転送、入力のバリデーションと1回に1つずつ足し、第12回で画面を整えて Moo のクラスに分けます。

各回は前の回のコードに足していく作りなので、通して読むなら第1回からが早道です。このページは目次を兼ねた案内板です。入口は「どこから読むか」で、困りごとが決まっているなら「困りごとから探す」で、順に追うなら「全話一覧」で選んでください。

対象は、Perl の変数・サブルーチン・リファレンスが分かり、Web アプリを作るのは初めての方です。第12回で Moo を使うので、Moo が初めてなら前シリーズ「Mooで覚えるオブジェクト指向プログラミング」の目次(このページの最後にリンクがあります)も合わせて読んでください。依存モジュールは cpanm Mojolicious DBI DBD::SQLite Data::Validate::URI Moo で入ります(Digest::SHA はコアモジュールです)。

どこから読むか

  • 第1回 — Web アプリを作るのが初めてなら。Mojolicious::Lite を入れて動かし、第2回・第3回でフォームから URL を受け取る
  • 第5回 — Web の画面は書けて、データベースが初めてなら。SQLite に接続し、第6回でテーブルを作り、第7回で登録する
  • 第8回 — URL 短縮の仕組みそのものを知りたいなら。短縮コードを受け取り、第9回で元の URL を引き、第10回で転送する
  • 第11回 — 動くものはあり、公開前に安全を確かめたいなら。転送先にしてよい URL を http と https に絞る

困りごとから探す

Perl で Web アプリを動かしたことがない

  • 第1回 — インストールして、ブラウザに文字を出すところから始めたい
  • 第2回 — HTML をコードに直書きせず、入力フォームを表示したい
  • 第3回 — フォームから送られた値を、サーバー側で受け取りたい

短縮 URL の仕組みが分からない

  • 第4回 — 長い URL から、短いコードをどう作るのか
  • 第8回 — 無数にある短縮コードを、ルート1つでどう受けるのか
  • 第10回 — 短縮 URL を開くと、なぜ元のページへ飛ぶのか(301 と 302 の違い)

データが残らない・データベースが初めて

  • 第5回 — サーバーを止めると、登録した URL が消える
  • 第6回 — 何をどんな形で保存すればいいか決まらない
  • 第9回 — 保存したデータを探して取り出し、無いときは 404 を返したい

入力をそのまま信じていて危ない

  • 第7回 — 入力を SQL 文に埋め込んでいて、SQL インジェクションが怖い
  • 第11回 — javascript: の URL まで登録でき、転送先になってしまう

動くけれど、1ファイルに全部が詰まっている

  • 第12回 — 見た目を整え、データベースと短縮の処理を Moo のクラスに分けたい

全話一覧

関連シリーズ

Moo のクラス・ロール・委譲を、掲示板アプリで1つずつ身につける(第12回の前提)

Mojolicious::Lite の1ファイルで、JSON API と WebSocket まで足す

参考リンク

comments powered by Disqus
システム開発・AIワークフローのご相談は Meetsource へ
Hugo で構築されています。
テーマ Stack は Jimmy によって設計されています。