ITEEK株式会社のロゴ

ITEEK

ブログ

Blogs

Django Ninjaとは(PyCon JP 2024)

2025-03-10

Django Ninjaとは(PyCon JP 2024)

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開発のベストプラクティスを組み合わせた選択肢として、多くの開発者から注目を集めています。

お問い合わせ

Contact

案件のご相談やお見積りなど、お気軽にご連絡ください。