1
/
5

#11 Django Ninjaとは(PyCon JP 2024)

DjangoNinjaで高速なAPI開発を実現する

Django Ninjaとは

Django Ninjaは、Djangoのエコシステムを活用しつつ、Fast APIライクなAPIを構築することができるWebフレームワークです。
Djangoと組み合わせて使うコントローラー層をサポートしてくれるライブラリで、リクエストのルーティングや入出力のスキーマの定義が簡単にできます。

Django Ninjaの主な特徴

  • シンプルな設計と高速なパフォーマンス
    • Pydanticと非同期サポートにより、非常に高いパフォーマンスを実現します。
    • Django REST Frameworkだと1秒に約500リクエストまでしか処理できないところをDjango Ninjaでは約750リクエスト処理することが可能です。
    • async/await を使用することで非同期ビューを使用することできます。
  • 型ヒント対応による自動バリデーションとドキュメント生成
    • 型ヒントと自動ドキュメントにより、ビジネスロジックのみに集中できます。
    • SwaggerUIを使ったAPI仕様書を自動で生成可能です。
  • Djangoとのシームレスな統合
    • Djangoの機能やエコシステムと深く統合されています。
    • DjangoのORMを使用しているため、既存のモデルやDBとのやりとりもスムーズです。
    • ミドルウェアや認証システムもDjangoと完全に互換性があるため、既存の仕組みから拡張することが可能です。

使用例

以下は、Django Ninjaを使用したシンプルなAPIの例です。

from ninja import NinjaAPI, Schema

api = NinjaAPI()

class User(Schema):
name: str
age: int | None = None

@api.get("/hello")
def hello(request):
return "Hello world"

@api.post("/users")
def create_user(request, user: User):
# ユーザー作成ロジック
return {"success": True, "created_user": user}

この例では、GETリクエストで"Hello world"を返すエンドポイントと、POSTリクエストで新しいユーザーを作成するエンドポイントを定義しています。

まとめ

Django Ninjaは、型ヒントとスキーマ定義を活用することで、入力バリデーションやドキュメント生成を自動化し、開発者がビジネスロジックに集中できるようサポートします。また、DjangoのORMやその他の機能と組み合わせて使用できるため、既存のDjangoプロジェクトにも容易に導入することができます。

Django Ninjaは、高速で直感的なAPI開発を可能にし、Djangoの強力な機能と最新のAPI開発のベストプラクティスを組み合わせた選択肢として、多くの開発者から注目を集めています。


If this story triggered your interest, why don't you come and visit us?
幹部候補|高い技術力が強みのWEB制作会社で法人営業を募集!
ITEEK株式会社's job postings
2 Likes
2 Likes

Weekly ranking

Show other rankings
Like 上川 諒也's Story
Let 上川 諒也's company know you're interested in their content