FastAPI

FastAPI CLI のインストールと fastapi dev コマンド完全ガイド

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

FastAPI CLI のインストールと fastapi dev の概要

FastAPI アプリのローカル開発では、公式が提供する fastapi‑cli を利用すれば fastapi dev コマンドで即座にサーバを起動できます。
本節では、インストール手順・依存関係の確認方法と、コマンドの基本的な使い方を解説します。

インストール方法と依存関係の確認

fastapi[all] には fastapi‑cli が含まれていることが公式ドキュメントで明記されています(Installation – FastAPI)。このオプションを使うと、FastAPI 本体に加えて推奨されるすべての依存パッケージが一括でインストールされます。

  • 補足情報
  • fastapi-cli の実装は公式リポジトリの fastapi/cli ディレクトリにあります → https://github.com/tiangolo/fastapi/tree/master/fastapi/cli
  • Qiita の実装例だけでなく、FastAPI の公式チュートリアルでも同様の手順が紹介されています。

fastapi dev の基本的な使い方

インストール後にターミナルで fastapi --help を実行すると、dev サブコマンドが一覧に表示されます。最もシンプルな起動例は次の通りです。

このコマンドは内部で uvicorn を呼び出し、コード変更時に自動リロード(--reload)がデフォルトで有効になります。


エントリポイントの指定方法とベストプラクティス

FastAPI アプリをパッケージ化した場合やテスト環境で複数モジュールを利用する際は、エントリポイントを明示的に指定することが推奨されます。ここではファイル単体の起動例と --entrypoint オプションの使い方を比較します。

ファイル単体での起動例

シンプルなスクリプト(例: main.py)だけで構成されたプロジェクトは、ファイル名をそのまま渡すだけで起動できます。公式チュートリアルでも同様の記述があります【最初のステップ – FastAPI】。

--entrypoint オプションでモジュールパスを指定

プロジェクトがサブディレクトリに分割されている場合や、FastAPI インスタンスの名前が app 以外の場合は package.module:object 形式でエントリポイントを指示します。

この指定により、モジュール探索パスが変わっても正しくインポートできるため、Docker や CI 環境でも安定した挙動が期待できます。


開発サーバーの設定オプション(リロード・ホスト・ポート)

ローカル開発ではコード変更のたびに自動で再起動させたり、外部からコンテナへアクセスできるようにホストやポートを調整したりすることが頻繁です。fastapi dev はそれらをフラグと環境変数で柔軟に制御できます。

リロード機能の制御

自動リロードはデフォルトで有効(--reload)ですが、必要に応じて無効化できます。以下の表は主なフラグとその既定値を示します。

フラグ デフォルト
--reload / --no-reload 有効 (--reload) fastapi dev main.py --no-reload
--host 127.0.0.1 fastapi dev main.py --host 0.0.0.0
--port 8000 fastapi dev main.py --port 8080

ホスト・ポートの指定と環境変数連携

Docker や社内ネットワークで外部からアクセスさせる場合は、ホストを 0.0.0.0 に設定し、必要に応じてポート番号も変更します。環境変数 FASTAPI_HOSTFASTAPI_PORT と組み合わせると、スクリプトの可搬性が向上します。


複数エントリーポイントやパッケージ構成での運用指針

大規模プロジェクトでは、アプリ本体をサブモジュールに分割し、テストコードから同一インスタンスを参照するケースが増えます。ここでは推奨されるディレクトリ構造とエントリポイント設定のベストプラクティスを示します。

ディレクトリ構造例とエントリポイント設定

以下は典型的な FastAPI パッケージ構成です。app/main.pyFastAPI インスタンスを定義し、サブパッケージのルーターを組み込みます。

myproject/app/main.py

起動コマンドは次のように記述します。

テストコードとの統一

テストからも同じインスタンスを利用すれば、開発サーバとテスト環境で挙動が一致します。pytest での典型的な書き方は以下です。

エントリポイントを絶対モジュールパスで指定することで、実行ディレクトリが変わってもインポートエラーが発生しにくくなります。


Docker 環境で fastapi dev を活用する方法

コンテナ内開発ではボリュームマウントとホットリロードが鍵です。fastapi dev はそのまま Dockerfile に組み込めるため、ローカルと同様の体験が可能です。

Dockerfile の作成例

以下は最小構成の Dockerfile です。fastapi[all] をインストールすることで fastapi-cli が自動的に含まれます。

docker‑compose.yml とボリュームマウント設定

docker compose を使うと、コード変更が即座にコンテナ内サーバへ反映されます。

起動手順は次の通りです。

この状態でローカルの app/main.py を編集すると、コンテナ内の開発サーバが自動リロードされます。


トラブルシューティングと uvicorn との比較

fastapi dev は便利ですが、環境依存のエラーに遭遇することもあります。本節では代表的な問題例と対処法、そして uvicorn --reload との選択基準をまとめます。

よくあるエラーと対処法

エラー 主な原因 推奨対策
fastapi: command not found PATH に ~/.local/bin が含まれていない、またはインストールが失敗している pip install "fastapi[all]" を再実行し、export PATH=$HOME/.local/bin:$PATH
ImportError: cannot import name 'app' from 'main' エントリポイント指定ミスや相対インポートの誤り --entrypoint main:app の形式で正しく指す。パッケージ化している場合は絶対モジュールパスに変更
Address already in use (ポート競合) 同一ホストで別プロセスが同ポートを使用中 --port を別番号に変えるか、lsof -i:8000 で占有プロセスを特定し停止

公式ドキュメントのエラーページ(FastAPI – Troubleshooting)でも同様の情報が提供されています。

fastapi devuvicorn --reload の選択基準

条件 推奨コマンド
手早くシンプルなスクリプトを起動したい fastapi dev main.py
カスタム uvicorn オプション(ログレベルやバックグラウンドタスク)を細かく制御したい uvicorn app.main:app --reload --log-level debug
複数エントリーポイント・Docker 環境で一貫した CLI を使いたい fastapi dev --entrypoint package.module:app

fastapi dev は内部的に uvicorn をラップしているため、基本的な機能は同等です。プロジェクトの規模や運用方針に合わせて使い分けると良いでしょう。


参考リンク

  • FastAPI 公式インストールガイド
    https://fastapi.tiangolo.com/ja/tutorial/installation/#install-fastapi-with-all-dependencies

  • fastapi‑cli ソースコード(GitHub)
    https://github.com/tiangolo/fastapi/tree/master/fastapi/cli

  • FastAPI チュートリアル – 最初のステップ
    https://fastapi.tiangolo.com/ja/tutorial/first-steps/

  • トラブルシューティングページ
    https://fastapi.tiangolo.com/ja/troubleshooting/

  • Qiita 実装例(参考)
    https://qiita.com/zumax/items/7684e7f06b06e8960702


以上で、fastapi-cli のインストールから Docker 環境での活用、エラー対処までを網羅的に解説しました。公式ドキュメントと GitHub リポジトリを随時確認しながら、プロジェクトに最適な開発フローを構築してください。

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-FastAPI