Skip to Content
ファストAPI
book

ファストAPI

by Bill Lubanovic
March 2025
Intermediate to advanced
280 pages
3h 20m
Japanese
O'Reilly Media, Inc.
Content preview from ファストAPI

第18章. ゲーム

この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com

プレビュー

この章では、簡単なゲームと、ウェブエンドポイントが複数のステップにわたってユーザと対話する方法を示します。 このプロセスは、これまで見てきたような、ワンショットのリクエスト/レスポンスのウェブエンドポイントとは異なります。

Pythonゲームパッケージ

もし本当にゲーム用のPythonを使いたいのなら、便利なツールをいくつか紹介しよう:

しかし、この章ではどれも使うつもりはない。 サンプル・コードは非常に大きく複雑になり、本書の目的である、FastAPIでWebサイト(APIと従来のコンテンツ)をできるだけシンプルに作成することを覆い隠してしまうからだ。

ゲームロジックを分割する

誰が何をするのか、誰が何をどこに保管するのか。クライアントなのか、サーバなのか。ウェブはステートレスなので、クライアントがサーバを呼び出すたびに、サーバは合計記憶喪失になり、このクライアントは見たことがないと言い張る。 だから、どこかにステートを保持する必要がある。ゲームのステップをまたいで保持されるデータで、それらをひとまとめにするのだ。

クライアント側で完全にJavaScriptでゲームを書いて、すべての状態をそこに保持することもできる。 もしJavaScriptをよく知っているなら、それは良い解決策だが、もし知らないなら(Pythonの本を読んでいるのだから、その可能性はある)、Pythonにも何かできることを与えよう。

極端な話、サーバーを多用するアプリケーションを書くこともできる。最初のウェブ呼び出しで、この特定のゲームのための明確なIDを生成し、その後のゲームステップでそのIDを他のデータとともにサーバーに渡し、変化するすべての状態をデータベースのようなサーバー側のデータストアで管理する。

最後に、いわゆるシングルページアプリケーション(SPA)において、クライアントとサーバーのWebエンドポイント呼び出しのシーケンスとしてゲームを構成することもできる。 SPAを記述する場合、通常、JavaScriptがサーバーにAjaxコールを行い、Webレスポンスでページ全体を表示するのではなく、ページの一部をリフレッシュすることを目標とする。 クライアントのJavaScriptとHTMLが作業の一部を行い、サーバーがロジックとデータの一部を処理する。

ゲームデザイン

まず、どんなゲームなのか?簡単なWordleのようなゲームを作るが、cryptid.dbデータベースの生物の名前だけを使う。 これで、Wordleよりもかなり簡単になる。特に、カンニングして付録Bを見ればわかる。

私たちは、上記の最終的でバランスの取れたデザインアプローチを採用する:

  1. クライアントには、ReactやAngular、あるいはjQueryのような有名なJavaScriptライブラリの代わりに、バニラJavaScriptを使おう。

  2. 新しいFastAPIエンドポイント、GET/game がゲームを初期化する。これは暗号データベースからランダムなクリーチャーの名前を取得し、それをHTML、CSS、JavaScriptのJinjaテンプレートファイルに隠し値として埋め込んで返す。 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

GitHubアクションを学ぶ

GitHubアクションを学ぶ

Brent Laster
仕事ではじめる機械学習 第2版

仕事ではじめる機械学習 第2版

有賀 康顕, 中山 心太, 西林 孝

Publisher Resources

ISBN: 9798341624658