プログラミング

Pythonでリンク短縮アプリ作成

リンク短縮アプリケーションをPythonとFlaskフレームワークで構築する方法

はじめに

リンク短縮サービスは、長いURLを短くし、簡単に共有できるようにする便利なツールです。例えば、TwitterやFacebookでURLを共有する際に、短縮されたリンクは視覚的にも簡潔で扱いやすくなります。この記事では、PythonのFlaskフレームワークを使用して、リンクを短縮する簡単なWebアプリケーションを作成する方法を解説します。このアプリケーションでは、ユーザーが長いURLを入力すると、そのURLを短縮し、短縮されたリンクを返します。

必要なツールとライブラリ

まず、アプリケーションを作成するために必要なツールとライブラリをインストールする必要があります。

  1. Python: 最新バージョンのPythonがインストールされていることを確認します。

  2. Flask: Flaskは軽量なWebフレームワークで、非常にシンプルにWebアプリケーションを構築することができます。

  3. SQLite: リンクを保存するためのデータベースとして、軽量で組み込み型のSQLiteを使用します。

これらのツールは以下のコマンドでインストールできます。

bash
pip install Flask pip install Flask-SQLAlchemy

ステップ1: プロジェクトのセットアップ

まず、プロジェクトのディレクトリを作成します。ターミナルで以下のコマンドを実行してください。

bash
mkdir link_shortener cd link_shortener

次に、Flaskアプリケーションを作成するための基本的なファイル構造を作成します。

bash
link_shortener/ ├── app.py ├── templates/ │ └── index.html ├── static/ │ └── style.css └── database.db

ステップ2: Flaskアプリケーションの設定

次に、app.pyというファイルを作成し、Flaskアプリケーションの基本的な設定を記述します。

python
from flask import Flask, render_template, request, redirect, url_for from flask_sqlalchemy import SQLAlchemy import random import string # Flaskアプリケーションの設定 app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app) # リンクデータベースのモデルを定義 class Link(db.Model): id = db.Column(db.Integer, primary_key=True) original_url = db.Column(db.String(2048), nullable=False) shortened_url = db.Column(db.String(10), unique=True, nullable=False) # データベースを作成 with app.app_context(): db.create_all() # ルートページの設定 @app.route("/", methods=["GET", "POST"]) def index(): if request.method == "POST": original_url = request.form["url"] shortened_url = generate_shortened_url() # 新しいリンクをデータベースに追加 new_link = Link(original_url=original_url, shortened_url=shortened_url) db.session.add(new_link) db.session.commit() return render_template("index.html", shortened_url=shortened_url) return render_template("index.html") # リダイレクトのための短縮URLの処理 @app.route("/") def redirect_to_original(shortened_url): link = Link.query.filter_by(shortened_url=shortened_url).first_or_404() return redirect(link.original_url) # 短縮URLを生成する関数 def generate_shortened_url(length=6): characters = string.ascii_letters + string.digits return ''.join(random.choice(characters) for _ in range(length)) # アプリケーションの実行 if __name__ == "__main__": app.run(debug=True)

コードの説明

  1. Flaskアプリケーションの設定: FlaskSQLAlchemyをインポートし、Flaskアプリケーションのインスタンスを作成します。また、SQLiteデータベースを使用するための設定を行います。

  2. データベースモデルの定義: Linkクラスを定義して、リンクのデータベーステーブルを作成します。各リンクは、元のURLと短縮されたURLを持ちます。

  3. ルートページ(/: ユーザーがURLを入力すると、そのURLを短縮して表示します。POSTリクエストでフォームが送信されると、短縮されたURLが生成され、データベースに保存されます。

  4. リダイレクトの処理: ユーザーが短縮されたURLをクリックすると、そのURLに対応する元のURLにリダイレクトされます。

  5. 短縮URL生成関数: generate_shortened_url()関数は、ランダムに文字列を生成して短縮URLを作成します。

ステップ3: HTMLテンプレートの作成

次に、templates/index.htmlというファイルを作成し、ユーザーインターフェースを作成します。

html
html> <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='style.css') }}"> head> <body> <div class="container"> <h1>リンク短縮サービスh1> <form method="POST"> <input type="text" name="url" placeholder="長いURLを入力してください" required> <button type="submit">短縮するbutton> form> {% if shortened_url %} <p>短縮URL: <a href="{{ url_for('redirect_to_original', shortened_url=shortened_url) }}" target="_blank">{{ shortened_url }}a>p> {% endif %} div> body> html>

コードの説明

  1. ユーザーがURLを入力するフォームを作成します。

  2. フォームが送信された後、短縮されたURLが表示され、そのURLをクリックすると元のURLにリダイレクトされるリンクが表示されます。

ステップ4: CSSの追加

static/style.cssファイルを作成し、簡単なスタイリングを追加します。

css
body { font-family: Arial, sans-serif; background-color: #f4f4f4; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; } .container { text-align: center; padding: 20px; background-color: white; border-radius: 8px; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); width: 100%; max-width: 400px; } input[type="text"] { width: 80%; padding: 10px; margin: 10px 0; font-size: 16px; } button { padding: 10px 20px; font-size: 16px; background-color: #007bff; color: white; border: none; border-radius: 5px; cursor: pointer; } button:hover { background-color: #0056b3; }

ステップ5: アプリケーションの実行

すべてのファイルを作成したら、ターミナルで以下のコマンドを実行してアプリケーションを開始します。

bash
python app.py

アプリケーションが正しく起動すると、ブラウザで http://127.0.0.1:5000 にアクセスすることで、リンク短縮サービスを利用できるようになります。

まとめ

このチュートリアルでは、PythonのFlaskフレームワークを使用して、リンク短縮サービスを作成しました。ユーザーが長いURLを入力すると、そのURLが短縮されて表示され、さらに短縮URLをクリックすると元のURLにリダイレクトされる機能を実装しました。これにより、Webアプリケーションの基本的な作成方法を学ぶことができました。次回は、より多機能なリンク短縮サービスを作成する方法について説明します。

Back to top button