PythonでWeb開発を始めよう:DjangoとDaphneチュートリアル

2024-11-07

このガイドでは、Django と Daphne を使用して Web アプリケーションを開発する方法を初心者向けに説明します。

前提知識

このガイドを理解するには、以下の知識が必要です。

  • コマンドプロンプトまたはターミナルの使い方
  • Django の基本的な知識
  • Python の基本的な知識

必要なもの

  • Daphne
  • Django
  • Python 3.6 以降
  1. Daphne をインストールする

    Daphne をインストールするには、次のコマンドを実行します。

    pip install daphne
    
  2. Django プロジェクトを作成する

    新しい Django プロジェクトを作成するには、次のコマンドを実行します。

    django-admin startproject myproject
    
  3. アプリケーションを作成する

    プロジェクト内にアプリケーションを作成するには、次のコマンドを実行します。

    python manage.py startapp myapp
    
  4. 設定を編集する

    myproject/settings.py ファイルを開き、以下の行を追加します。

    INSTALLED_APPS = [
        # ...
        'myapp',
    ]
    
  5. ASGI アプリケーションを定義する

    myapp/asgi.py ファイルを作成し、以下のコードを追加します。

    from django.core.asgi import get_asgi_application
    
    application = get_asgi_application()
    
  6. Daphne で開発サーバーを起動する

    プロジェクトディレクトリに移動し、次のコマンドを実行します。

    daphne myproject.asgi:application
    

    これで、開発サーバーが起動し、http://localhost:8000 でアクセスできるようになります。

  7. アプリケーションを開発する

    お好みのエディタを使用して、Django アプリケーションを開発します。

  8. 変更を反映する

    変更を加えた後、開発サーバーを再起動する必要はありません。変更は自動的に反映されます。

  • HTTPS でサーバーを起動したい場合は、--ssl-keyfile--ssl-certfile オプションを使用できます。
  • デフォルトでは、Daphne はポート 8000 でサーバーを起動します。別のポートを使用したい場合は、--port オプションを使用できます。
  • 上記の手順は、Django 4.2 と Daphne 3.0 を使用しています。


ASGI アプリケーションを定義する

from django.core.asgi import get_asgi_application

application = get_asgi_application()

このコードは、myapp/asgi.py ファイルに配置する必要があります。

設定を編集する

INSTALLED_APPS = [
    # ...
    'myapp',
]

このコードは、myproject/settings.py ファイルに追加する必要があります。

Daphne で開発サーバーを起動する

daphne myproject.asgi:application

このコマンドは、プロジェクトディレクトリから実行する必要があります。

アプリケーションビュー

from django.http import HttpResponse

def index(request):
    return HttpResponse('Hello, world!')

このコードは、myapp/views.py ファイルに配置する必要があります。

URL パターン

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index),
]

このコードは、myapp/urls.py ファイルに配置する必要があります。

ROOT_URLCONF = 'myproject.urls'
  • Hello, world! というメッセージが返される
  • myapp/views.py ファイルの index 関数が呼び出される
  • http://localhost:8000 で Django アプリケーションにアクセスする


Django で Web アプリケーションを開発する場合、Daphne は ASGI サーバーとして人気のある選択肢の 1 つですが、他の選択肢もいくつかあります。

このガイドでは、Daphne の代替となる 3 つの主要なオプションと、それぞれの長所と短所について説明します。

Uvicorn

Uvicorn は、ASGI と WSGI 両方をサポートする高速で軽量な ASGI サーバーです。

長所

  • 監視モードをサポート
  • ホットリロードをサポート
  • asyncio に基づく
  • WSGI と ASGI 両方をサポート
  • 軽量で高速

短所

  • 一部の機能はまだ開発中
  • Daphne ほど成熟していない

Gunicorn

Gunicorn は、WSGI プロトコルを使用した人気のある Python Web サーバーです。

長所

  • 多くのデプロイメント環境でサポートされている
  • 多くの機能とオプションを備えている
  • 多くの Python フレームワークと互換性がある
  • 非常に成熟しており、安定している

短所

  • Uvicorn よりも重い
  • ASGI をネイティブにサポートしていないため、ASGI アプリケーションを実行するには adapter が必要

Waitress

Waitress は、WSGI と ASGI 両方をサポートするシンプルな Python Web サーバーです。

長所

  • 使いやすい
  • 依存関係が少ない
  • 軽量でシンプル

短所

  • 開発があまり活発ではない
  • Gunicorn や Uvicorn ほど機能が豊富ではない

最適なオプションを選択する

最適なオプションは、ニーズによって異なります。

高速で軽量なサーバーが必要 な場合は、Uvicorn が良い選択です。

成熟したで安定したサーバーが必要 な場合は、Gunicorn が良い選択です。

シンプルで使いやすいサーバーが必要 な場合は、Waitress が良い選択です。

上記以外にも、ASGI サーバーにはいくつかの選択肢があります。

  • Twisted Web Server
    Python で書かれたイベント駆動型の Web サーバー
  • Erlang/OTP
    高いスケーラビリティと信頼性を備えた分散型 Web サーバープラットフォーム
  • Hypercorn
    高速で効率的な ASGI サーバー

決定を下す前に、各オプションの機能と要件を比較することをお勧めします。

上記の情報に加えて、以下の点にも注意する必要があります。

  • セキュリティ
    セキュリティ要件によっては、特定のサーバーが適している場合があります。
  • パフォーマンス
    アプリケーションのパフォーマンス要件によっては、特定のサーバーが適している場合があります。
  • デプロイメント環境
    使用しているデプロイメント環境によっては、特定のサーバーが推奨される場合があります。