🕶️

FastAPI入門 「Hello FastAPI!」 まで。

2025/01/27に公開

https://github.com/CA01971020/fastapi

自己紹介

フロントエンドを中心に勉強している情報系の専門学生3年生(2025年1月27日現在)です。
フルスタックでWEBアプリ開発できるようになりたくてバックエンド勉強中です。
https://hii-site.vercel.app/
https://github.com/CA01971020

前提

  • Python実行環境

ディレクトリ構成

ディレクトリ構成は以下の通りです。

/
├─ api
│  └─ main.py
├─ env
├─ .gitignore
└─ README.md

FastAPIインストール

ルートディレクトリでターミナルを開き、fastapiインストール状況の確認を行います。

pip show fastapi


インストールできていない場合は上記のようなメッセージが出ます。

以下のコマンドでfastapiをプロジェクトにインストールします。

pip install fastapi[all]

main.py

apiフォルダを作成してmain.pyファイルを作成、以下を記述します。

main.py
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Hello, FastAPI!"}

FastAPI 仮想環境での実行方法

仮想環境作成

Pythonを実行するための仮想環境を作成します。
ターミナルを開き、プロジェクトのルートで以下のコマンドを実行します。

python -m venv env

仮想環境有効化

作成した仮想環境を有効化するには以下のコマンドを実行します。

.\env\Scripts\activate

実行すると、仮想環境がactivateされます。

セキュリティエラーが出た場合

このエラーはPowershellの実行ポリシーによって起こるエラーです。
下記のようなセキュリティエラーが出た場合はセキュリティーポリシーを変更する必要があります。

.\env\Scripts\activate : このシステムではスクリプトの実行が無効になっているため、ファイル \learn-fastapi\env\Scripts\Activate.ps1 を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:1
+ .\env\Scripts\activate
+ ~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : セキュリティ エラー: (: ) []、PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess
  1. 現在のポリシー確認方法
Get-ExecutionPolicy

出力

Restricted
セキュリティーポリシーの一覧とスコープ一覧

確認コマンド

Get-ExecutionPolicy -List

セキュリティーポリシーの説明(ChatGPT出力)

ポリシー名 説明
Restricted すべてのスクリプトの実行を禁止(デフォルト)
AllSigned すべてのスクリプトに信頼できる署名が必要
RemoteSigned ローカルのスクリプトは実行可、ダウンロードしたものは署名が必要
Unrestricted すべてのスクリプトを実行可能(警告あり)
Bypass すべてのスクリプトを無制限に実行(セキュリティなし)
Undefined そのスコープで実行ポリシーが設定されていない

スコープの説明(ChatGPT出力)

スコープ名 説明
MachinePolicy グループポリシーによって設定(管理者のみ変更可能)
UserPolicy ユーザーごとのグループポリシー設定
Process 現在の PowerShell セッションのみ適用(再起動するとリセット)
CurrentUser 現在のユーザーに適用(永続的
LocalMachine 全ユーザーに適用(管理者権限が必要)

デフォルトでは、全てのスクリプトの実行を禁止するRestrictedに設定されているため、セキュリティーポリシーをRemoteSignedに変更。スコープはCurrentUserを指定。(スコープの他の選択肢としてはProcessが挙げられる。Processに指定することで現在の PowerShell セッションのみ適用にセキュリティーポリシーが設定される。)

  1. 現在のユーザのセキュリティーポリシーをRemoteSignedに変更
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

上記コマンドによってセキュリティーポリシーが変更され、エラーは解消する。

パッケージインストール(uvicorn)

uvicornという、PythonのWEBサーバー(実行環境)をインストールします。

pip install fastapi uvicorn

アプリケーション実行

アプリケーションの実行には、以下のコマンドを実行します。

uvicorn api.main:app --reload

成功すると以下のような出力結果となります。

実行結果の確認

default(8000番)

http://127.0.0.1:8000

結果

補足

main.pyで記述したAPIのエンドポイントが"@app.get("/")"とルートになっているため、アクセスするだけで結果が返ってきている。通常は下記のdocsにアクセスして実行結果を確認することになる。

docs

http://127.0.0.1:8000/docs

結果

アクセスするとこのような画面が出てくる。

詳細を確認すると、レスポンスが成功していることが確認できる。

try it out ➡ Execute でレスポンスの中身(実行結果)を確認できる。
Response Body に"message": "Hello, FastAPI!"が出力されている。

redoc

よくわからないが結果が返ってきているのを確認できる。
http://127.0.0.1:8000/redoc

結果

仮想環境無効化

" control + c " で仮想環境を抜けてから、下記コマンドを実行すると仮想環境を無効化できる。

deactivate

.gitignore

.gitignore
__pycache__/
*.pyc
env/

あとがき

うまくいかなかったらごめんなさいm(__)m

編集履歴

2025年2月5日
  • fastapiのプロジェクトへのインストール方法を追記しました。
  • powershellのセキュリティーポリシーによるエラーの解決方法を追記しました。

Discussion