Web APIを実装する環境を作ろう
以下では、Pythonの環境にDjango REST frameworkをインストールして、Web APIのプロジェクト・アプリケーションを構築する手順を、順を追って説明していきます。Pythonは公式ページからダウンロードしたインストーラーを実行してインストールしておきます。
仮想環境の作成と有効化
Web APIのプロジェクトでは、Django REST frameworkをはじめさまざまなライブラリを利用しますが、特に意識しないとそれらはシステム自体にインストールされるため、複数プロジェクトで異なるバージョンのライブラリを使い分ける場合に問題になります。
そこでPythonでは、ライブラリをインストールするための「仮想環境」を作成し、そこにライブラリをインストールして利用できます。仮想環境を作成するコマンドはリスト1の通りです。
py -m venv myvenv
「py」は、Windowsにインストールされている適切なPythonを実行する「Pythonランチャー」です。「-m venv」はvenvモジュールを意味し、「myvenv」は作成する仮想環境の名前です。このコマンドで、myvenvフォルダーに仮想環境が生成されます。
作成した仮想環境はコマンドで有効にする必要があります。コマンドラインにPowerShellを利用している場合、リスト2のコマンドを実行します。なおコマンドラインにコマンド プロンプト(cmd)を利用している場合は「Activate.ps1」の代わりに「activate.bat」を実行します。
myvenv\Scripts\Activate.ps1
仮想環境が有効になると、コマンドラインの先頭に仮想環境の名前「(myvenv)」が表示されます。
なお、Windowsのセキュリティ設定でリスト2の実行がエラーになる場合は、管理者権限で実行したPowerShellで「Set-ExecutionPolicy RemoteSigned」コマンドを実行すると実行できるようになります。詳細はPowerShellに関するマイクロソフトのドキュメントを参照してください。
ライブラリのインストールとプロジェクトの作成
次に仮想環境に、Web APIに必要なライブラリをインストールしていきます。リスト3のコマンドで、Django REST frameworkをインストールします。pipはPythonで利用できるパッケージマネージャーのコマンドです。
pip install djangorestframework
実行後、Django REST frameworkが依存するWebフレームワーク「Django」が提供する、django-adminコマンドが利用できるようになります。このコマンドをリスト4の通り実行して、p001basicプロジェクトと、その内部にp001basicappアプリケーションを作成します。
django-admin startproject p001basic cd p001basic django-admin startapp p001basicapp
Djangoのプロジェクトは複数のアプリケーションを保持できますが、p001basicプロジェクトには1つのアプリケーションp001basicappを追加しました。プロジェクトおよびアプリケーションを構成する各ファイルの説明は、サンプルコードのreadme.mdファイルに記述しているので参考にしてください。
Django REST frameworkを利用する指定
プロジェクトがDjango REST frameworkを利用する設定を、p001basic/settings.pyのINSTALLED_APPSに、リスト5の通り行います。
INSTALLED_APPS = [ 'django.contrib.admin', (略) 'rest_framework', # この行を追加 ]
マイグレーション(初期データの作成)
プロジェクトに含まれるmanage.pyはプロジェクト管理用のスクリプトで、プロジェクトに関するさまざまな処理を行えます。ここではリスト6のコマンドを実行して、マイグレーション(プロジェクトが利用するデータベースの初期化)を行います。この処理により、プロジェクトに必要なデータを含むSQLiteファイル(db.sqlite3)が生成されます。SQLite以外のデータベースを利用する方法は後述します。
python manage.py migrate
[補足]仮想環境を有効化したらpyコマンドは使わない
リスト6では、リスト1で利用したPythonランチャーpyは使わず、pythonコマンドを直接利用しています。これは、仮想環境の内部には仮想環境で利用するpythonコマンドが含まれており、仮想環境を有効化するとそのpythonコマンドに実行パスが設定されるためです。