リンク短縮アプリケーションの開発におけるPythonとFlaskを使用した続編を、以下に詳述します。
1. はじめに
前回の記事では、リンク短縮アプリケーションを作成するために必要な基本的なセットアップと、Flaskを用いた簡単なルーティングについて説明しました。この記事では、実際に短縮リンクを生成し、リダイレクト機能を実装する方法に焦点を当てます。
2. 必要なライブラリのインストール
まず、Flask以外に必要となるライブラリをインストールする必要があります。今回は短縮URLを保存するために、SQLiteデータベースを使用します。
bashpip install flask pip install flask_sqlalchemy pip install werkzeug
-
Flask: Webフレームワーク。
-
Flask-SQLAlchemy: データベースとの連携を容易にするライブラリ。
-
Werkzeug: URLの安全な操作に役立つツールを提供します。
3. アプリケーションの構造
アプリケーションの構造は以下のようになります。
bash/shortener-app /templates index.html /static /css style.css app.py models.py
-
app.py: Flaskアプリケーションのエントリーポイント。
-
models.py: データベースのモデルを定義。
-
templates/index.html: ユーザーインターフェース。
-
static/css/style.css: CSSスタイルシート。
4. データベースのセットアップ
models.pyでデータベースモデルを定義します。この例では、URLと短縮コードを保存するためのShortenedURLテーブルを作成します。
pythonfrom flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class ShortenedURL(db.Model):
id = db.Column(db.Integer, primary_key=True)
original_url = db.Column(db.String(500), nullable=False)
short_code = db.Column(db.String(20), unique=True, nullable=False)
def __repr__(self):
return f'{self.short_code} >'
-
original_url: 元のURL。 -
short_code: 短縮されたURLのコード(例:abc123)。
次に、アプリケーションのapp.pyでFlaskアプリケーションを設定し、データベースを初期化します。
pythonfrom flask import Flask
from models import db
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///shortener.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db.init_app(app)
with app.app_context():
db.create_all()
このコードは、SQLiteデータベースshortener.dbを使用し、アプリケーションの初期化時に必要なテーブルを作成します。
5. 短縮URLを生成するロジック
次に、短縮URLを生成するためのロジックを実装します。短縮URLのコードは、ランダムな文字列を生成し、それをデータベースに保存します。
pythonimport random
import string
def generate_short_code(length=6):
"""短縮URLコードをランダムに生成する"""
characters = string.ascii_letters + string.digits
return ''.join(random.choice(characters) for _ in range(length))
@app.route('/shorten', methods=['POST'])
def shorten_url():
original_url = request.form['url']
short_code = generate_short_code()
# データベースに保存
new_url = ShortenedURL(original_url=original_url, short_code=short_code)
db.session.add(new_url)
db.session.commit()
return f'短縮URL: {short_code}">/{short_code}'
このshorten_url関数は、ユーザーがフォームから入力した元のURLを受け取り、ランダムな短縮コードを生成してデータベースに保存します。保存後、生成された短縮URLをブラウザに表示します。
6. 短縮URLのリダイレクト機能
次に、ユーザーが短縮URLを入力したときに元のURLにリダイレクトされる機能を実装します。これには、短縮コードをURLパラメータとして受け取り、対応する元のURLをデータベースから検索してリダイレクトします。
pythonfrom flask import redirect
@app.route('/' )
def redirect_to_original(short_code):
# 短縮コードに対応するURLを検索
shortened_url = ShortenedURL.query.filter_by(short_code=short_code).first()
if shortened_url:
return redirect(shortened_url.original_url)
else:
return 'URLが見つかりません', 404
このredirect_to_original関数は、ユーザーが短縮URLを入力した際に、データベースから元のURLを検索し、それにリダイレクトします。
7. ユーザーインターフェース
最後に、ユーザーがURLを入力し、短縮URLを生成するためのインターフェースを作成します。templates/index.htmlに簡単なフォームを追加します。
htmlhtml>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>リンク短縮アプリtitle>
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
head>
<body>
<h1>URL短縮サービスh1>
<form action="/shorten" method="POST">
<label for="url">元のURL:label>
<input type="text" id="url" name="url" required>
<button type="submit">短縮button>
form>
body>
html>
8. アプリケーションの起動
すべての設定が完了したら、app.pyを実行してアプリケーションを起動します。
bashpython app.py
Flaskアプリケーションは、デフォルトではhttp://127.0.0.1:5000/で実行されます。このURLにアクセスすると、リンク短縮サービスのフォームが表示されます。
9. 結論
この記事では、PythonとFlaskを使用して、リンク短縮アプリケーションを作成する方法を説明しました。データベースとの連携を通じて、短縮URLを生成し、リダイレクト機能を実装しました。このアプリケーションをさらに発展させるためには、例えば、URLの有効期限を設定する機能や、短縮リンクの使用統計を記録する機能などを追加することができます。

