@nqounetです。
この連載「URL短縮サポーターを作ってみよう」では、Perlを使って実用的なURL短縮サービスを一から作っていきます。
はじめに
シリーズの概要と想定読者
この連載は、Webアプリケーション開発の経験がない方でも、Perlで動くURL短縮サービスを作れるようになることを目指しています。
想定読者は以下のとおりです。
- Perl入学式を卒業した、または同程度のPerlの基礎知識がある
- 「Mooで覚えるオブジェクト指向プログラミング」シリーズ(全12回)を読了している
- Webアプリケーション開発は初めて
前提知識
この連載では、Perlの基本的な文法(変数、サブルーチン、リファレンスなど)を理解していることを前提にしています。もしまだ学習していない場合は、まずPerl入学式の資料で基礎を固めてから戻ってきてください。
本記事のゴール
第1回である今回は、以下を達成することを目標とします。
- URL短縮サービスとは何かを理解する
- Mojolicious::Liteをインストールする
- morboで開発サーバーを起動してHello Worldを表示する
友人からの依頼
タカシさんの悩み
ある日、友人のタカシさんからこんな相談を受けました。
「最近SNSで記事をシェアしたいんだけど、URLがすごく長くて困ってるんだよね。文字数制限にひっかかるし、見た目もなんか格好悪いし…。短くできないかな?」
タカシさんが見せてくれたURLは、たしかに100文字を超えるような長いものでした。UTMパラメータやトラッキング情報が付いたURLは、特に長くなりがちです。
URL短縮サービスとは
URL短縮サービスとは、長いURLを短いURLに変換し、その短いURLにアクセスすると元の長いURLにリダイレクトしてくれるサービスです。
仕組みは意外とシンプルです。
- 元のURLをデータベースに保存する
- 短い識別子(IDやハッシュ値)を発行する
- 短縮URL(例:
https://example.com/abc123)にアクセスすると、保存してある元のURLにリダイレクトする
有名なサービスとしては、Bitly(bit.ly)やTinyURL(tinyurl.com)があります。
「Perlで作ってあげよう!」
「それ、Perlで作れるよ。しかも、そこまで難しくない」
そう答えた瞬間、タカシさんの目が輝きました。
「えっ、本当に?ぜひ教えて!」
というわけで、この連載ではタカシさんのためにURL短縮サービスを作っていくことにしました。完成形は以下のような機能を持つWebアプリケーションです。
- URLを入力するとその短縮URLを発行する
- 短縮URLにアクセスすると元のURLにリダイレクトする
- 発行した短縮URLの一覧を確認できる
では、さっそく開発を始めましょう。
Mojolicious::Liteを使ってみよう
なぜMojolicious::Liteなのか
PerlでWebアプリケーションを作るためのフレームワークはいくつかありますが、今回はMojolicious::Liteを使います。
Mojolicious::Liteを選んだ理由は以下のとおりです。
- 依存関係がゼロ(コアPerlモジュール以外に何も必要ない)
- 単一ファイルでWebアプリケーションが完結する
- 開発サーバー(morbo)が標準で付属し、ファイル変更を自動検知してリロードしてくれる
これらの特徴により、環境構築でつまずくことなく、すぐにWebアプリケーションの開発を始められます。
Mojoliciousの詳細については以下の記事も参考にしてください。
cpanmでインストールする
ターミナルを開いて、以下のコマンドを実行してください。
| |
インストールが完了したら、バージョンを確認してみましょう。
| |
以下のような出力が表示されれば成功です(バージョン番号は異なる場合があります)。
| |
Hello Worldを表示しよう
最初のコードを書く
いよいよコードを書いていきます。任意のディレクトリにapp.plというファイルを作成し、以下の内容を記述してください。
| |
コードの各行を簡単に解説します。
use Mojolicious::Lite -signatures;: Mojolicious::Liteを読み込み、サブルーチンシグネチャを有効にするget '/' => sub ($c) { ... };: ルートURL(/)へのGETリクエストを処理するルートを定義する。$cはコントローラーオブジェクト$c->render(text => 'Hello World!');: レスポンスとして「Hello World!」というテキストを返すapp->start;: アプリケーションを起動する
たったこれだけで、Webアプリケーションの基本形が完成です。
Perlでは、引数を受け取る場合、通常は sub { my $c = shift; ... } のように書きます。ですが、Perl 5.20で実験的にサブルーチンシグネチャが導入され、Mojolicious::Lite(Mojo::Baseを継承しているクラス)では-signaturesを指定することで有効化でき、 sub ($c) { ... };のように引数を受け取ることができるようになります。
morboで起動する
作成したapp.plを開発サーバーで起動してみましょう。ターミナルで以下のコマンドを実行してください。
| |
以下のような出力が表示されます。
| |
この状態でサーバーが起動しています。morboは開発用サーバーで、ファイルを編集して保存すると自動的にアプリケーションをリロードしてくれる便利な機能があります。
ブラウザで確認する
ブラウザを開いて、http://localhost:3000(またはhttp://127.0.0.1:3000)にアクセスしてみましょう。
画面に「Hello World!」と表示されれば成功です。
おめでとうございます! これがあなたの最初のPerlによるWebアプリケーションです。
まとめ
今回学んだこと
第1回では、以下のことを学びました。
- URL短縮サービスの仕組みと、この連載で作るもののイメージ
- Mojolicious::Liteの特徴(依存関係ゼロ、単一ファイルで完結)
- cpanmを使ったMojoliciousのインストール方法
- morboで開発サーバーを起動し、Hello Worldを表示する方法
次回予告
次回は「URLを入力するフォームを作る」をテーマに、HTMLフォームからURLを受け取る機能を実装していきます。タカシさんが実際にURLを入力できるようになる第一歩です。お楽しみに。
