Deta SpaceでFastAPIアプリケーションをホストする方法

約2年前にFastAPIのドキュメントを読んでいた時、スポンサーの一つにdeta.shがありました。今もFastAPIのスポンサーリストに載っています。好奇心旺盛な私はそのリンクを開いてサイトを見てみました。当時、彼らのデザインはミニマリストでした。

その時はまだアプリをGUIで管理する機能はなく、CLIを使ってデプロイやアプリ操作を行うだけでした。登録やログイン、ドキュメントぐらいしかなかったと思います。幾つかのアプリをデプロイしようとしましたが、失敗してしまいました。で、detaのクラウドを離れて他のことを試みました。

しかし昨日、同じサイトを見てみたら新バージョンになっていてびっくりしました。まだベータ版ですがDeta Spaceという名前で、現代のプラットフォームにあるようなGUIによるアプリ管理、ログビュー、充実したドキュメント、そしてDeta Spaceにデプロイされたユーザーが作ったアプリを見つけるページなどがあります。だから、サンプルのFastAPIアプリケーションをデプロイしてみることにしました。以前私のブログでRender上でFastAPIアプリケーションをデプロイする方法を述べたのと同じリポジトリを使います。

Deta Spaceアカウントの作成

他のサイトと同じく、Deta Spaceでアプリをホストするためにはアカウントが必要です。第三者のサインアップ方法は提供されておらず、古い良いメールアドレスとパスワードを使う必要があります。ユニークなユーザーネームを選ぶ必要があるようで、おそらくサブドメイン割り当てのためだと思いますが、まだ確信はありません。このリンクからサインアップできます。

ログイン後、ダッシュボードにリダイレクトされ、こんな感じになるはずです。

CLIのセットアップ

サイトはGUI機能が豊富になっていますが、まだデプロイオプションはありません。だから、CLIツールをセットアップする必要があります。CLIのセットアップ - Space Docsでやり方が見られます。インストール後、以下のコマンドを使うことでログインができます。

space login

正しくインストールされていれば、このように表示されます。次に必要なのがDeta Spaceからの認証トークンです。

Deta Spaceからトークンを取得する

ログイン後、ダッシュボードにリダイレクトされ、コマンドパレットを使います。設定を探して、新しいトークンを生成をクリックします。

トークンをコピーして、ターミナルページに戻ってきたら、ターミナルにペーストします。

これでCLIのセットアップは成功です。次は、コードをDeta Spaceにプッシュする部分に進みましょう。

FastAPIのコードの書き方やインストール方法は、私の古いブログ投稿を読んでください。

あなたも私のGitHubリポジトリでプロジェクトのコードを見ることができます:akashrchandran/simple-api

.spaceignoreファイルの作成

特定のファイルやディレクトリをspace pushの際にアップロードから除外するためには、.spaceignoreファイルを使います。それは.gitignoreファイルと似ており、ファイル中のそれぞれの行がパターンを指定します。パターンにマッチする全てのファイルやディレクトリがプッシュから除外されます。

たとえば、space pushを実行する時に以下の内容を含む .spaceignore ファイルは、testdocs パスを無視します。

test
docs

私たちのプロジェクトにはフォルダを無視するために以下を使います。

venv
__pycache__

Deta Spaceへデプロイする

全ての大変な作業が終わり、今からどこでもアクセス可能にしましょう。ビジュアルスタジオコードなどのIDEを開き、ターミナルを横に開くか、VSコードの統合ターミナルオプションを使います。

Space CLIがインストールされ認証されていることを確認し、以下のコマンドを実行して、現在のディレクトリに新しいSpaceプロジェクトを作成します。

space new

Spacefileの編集

これでルートディレクトリに Spacefile が作成されます。そこには v:0 とドキュメントへのコメントがテキストとしてあります。ここでランタイムエンジンやその他の要件を定義します。具体的な内容は、Spacefile - Space Docsで確認することができます。FastAPIアプリを実行するには、Spacefileでいくつかの要件を定義する必要があります。必要な行を追加した後のファイルは以下のようになります。

## Spacefile Docs: https://go.deta.dev/docs/spacefile/v0
v: 0
icon: ./icon.png
app_name: "Simple FastAPI APP"
micros:
  - name: simple-fastapi
    src: ./
    engine: python3.9
    dev: .venv/bin/uvicorn main:app --reload

アプリのデプロイ

デプロイするためには、コマンドを入力し、自動的にデプロイが行われ、出力のURLが表示されます。

space push

おめでとうございます、アプリはライブです🥳🥳。ダッシュボードでアプリケーションを見ることができるようになります。私のデプロイされたバージョンはこちらで見ることができます。

まとめ

これはDeta SpaceにFastAPIアプリケーションをデプロイする方法を説明したシンプルなブログでした。プロジェクトに追加できるものはたくさんありますが、これは一例です。ドキュメンテーションはかなり素晴らしく、ほとんど全ての部分がドキュメント化されていて、Getting started - Space Docsで読むことができます。

全体的に他のサービスと比べてかなり簡単だといえます。いくつかのサービスは人気がありますが、そのサービスにアプリをデプロイするのは難しいです。Deta Spaceはあまり有名ではありませんが、アプリをデプロイするのは簡単でした。またこのサービスを使ってアプリをホストすると確信しています。

Deta Spaceはまだ構築中であり、日々発展し続けています。それにより、バグやその他の問題に脆弱になる可能性があります。何かで行き詰まったらまずはドキュメントを読んでください。それでもなお行き詰まったら、Discordサーバーに参加して疑問や問題を投稿できます。

コミュニティは小さいかもしれませんが、活動的で、出された疑問にほぼ答えてくれます。フィードバックを提供するとプラットフォームの構築が早く、より良く進むので、Discordであなたのレビューを共有してください。

最後に、このブログを読んでくれてありがとう。このプラットフォームについての見解と知識を共有する良い経験でした。素晴らしい一日を!

こちらの記事はdev.toの良い記事を日本人向けに翻訳しています。
https://dev.to/akashrchandran/how-to-host-fastapi-application-on-deta-space-3c7l