コンテンツにスキップ

シリーズ紹介 × 対象読者#

2024 iThome鉄人レース

これはDjango Ninjaチュートリアルシリーズの第1回です。

この30日間のシリーズ記事では、Django Ninjaの基礎実装について詳しく探求します。テキストによるチュートリアルサンプルプロジェクトのコードを通じて、この強力で柔軟なDjango API開発フレームワークに少しずつ慣れていただけるように導きます。

Djangoエコシステムの新星(2020年誕生)として、Django NinjaはDjangoの安定性とFastAPIのモダンな特性——Pythonの型ヒント(Pydanticによる実装)を融合させています。この強力な組み合わせにより、開発者に堅牢で効率的、かつ直感的なAPI開発体験を提供します。

経験豊富なDjango開発者であれ、API開発分野に入ったばかりの初心者であれ、このシリーズは実用的なDjango Ninjaの実践経験とテクニックを提供します。

背景の紹介や基本概念から始め、Django Ninjaの各部分を徐々に深く探求し、このモダンなAPI開発ツールを素早くマスターできるようにお手伝いします。

GitHubサンプルプロジェクト#

👉 Django-Ninja-Tutorial


推奨される前提スキル#

本シリーズの位置づけは「入門レベル」ですが、ここでいう入門とは、Django Ninjaフレームワークの入門を指します。

そのため、チュートリアルの内容とサンプルプロジェクトのコードを最大限に活用するために、読者には以下のスキルを備えておくことをお勧めします。

  • Pythonの基礎知識:Pythonの構文に精通していること。Pythonでの開発経験があるとなお良いです。
  • Djangoの基礎:ORM、Views、MTVアーキテクチャなど、Djangoの基本的な構成を理解していること。ただし、Templatesの部分を理解している必要はありません。なぜなら、私たちが開発するのはAPIだからです。
  • HTTPとWeb APIの概念:HTTP、Web API、フロントエンドとバックエンドの分離とは何かを知っており、RESTful APIの設計原則についての基本的な理解があること。
  • バージョン管理:サンプルプロジェクトを活用し操作できるように、Git、GitHubの基本操作に精通していること。

これらのスキルを備えていると、本シリーズの内容をより良く理解し応用する助けになります。もし一部の概念にあまり馴染みがなくても心配しないでください。必要な時にはある程度の解説を行います。


対象読者#

本シリーズは以下の読者に「特に適しています」。ご自身がどれに当てはまるか見てみてください。

一、Pythonバックエンドの初心者#

Pythonのバックエンド開発、特に高品質なAPIを構築する方法について知りたい方。

二、Django開発者#

フルスタックであれバックエンドであれ、すべてのDjango開発者が本シリーズの対象読者です。

三、FastAPI開発者#

すでにFastAPI開発の基礎がある読者にとって、Django Ninjaを使い始めるのは非常に簡単なはずです🤚

四、API開発の効率を向上させたい開発者#

Django Ninjaは、シンプルで高速なAPI開発手法を提供します。

その大きなセールスポイントの一つは、「PydanticとPython型ヒントを通じてAPIドキュメントを自動生成する」ことです。これにより、質の高いAPIドキュメントをどのように書くかで頭を悩ませる必要がなくなります。

自動生成されたAPIドキュメント

Python開発者ではないものの、小規模なプロジェクトでそれほど大きくない機能を実装したい場合、Django Ninjaは非常に魅力的な選択肢を提供します。

五、型ヒントに慣れたいPython開発者#

私はかつて〈《Robust Python》ノート:型ヒントを効果的に導入する方法〉で次のように言及しました。

Django Ninja(またはFastAPI)を書くとき、正確で合理的なAPIドキュメントを生成するために、本来大量の型ヒントを書く必要があります。そのため、カスタム関数やクラスなど、プロジェクトの他の部分に型ヒントを追加するように求めることは、相対的に抵抗がずっと小さくなります。

私の見解では、Pydanticフレームワークを採用することによってもたらされるこのような効果は、自転車の補助輪のようであり、型ヒントを使い始めたばかりの時に、明らかなポジティブな誘導効果を持っています。

Python型ヒントは、実際の応用シーンが欠けていると、しばしばこれらを書くのが辛く、少し余計にさえ感じるものです。それは人情というものです。

そして最も効果的なのは、ツール自体の仕組みによって型ヒントを書くことになり、そこから直接メリットを得られる場面です。Django Ninjaはまさにそれに当たります。


方向性と取捨選択#

本シリーズでは、Django Ninjaのコア機能と実際の応用に焦点を当て、開発者がAPI開発を素早く始め、実装できるようにすることを目的としています。

コンテンツの実用性とターゲット性を確保するために、内容にいくつかの取捨選択を行いました。

  • API開発に集中:Django Ninjaを使用してルーティングを定義し、リクエストとレスポンスを処理する方法など。これらの機能は実際のアプリケーションで最も一般的なニーズであり、初心者が優先的にマスターすべき部分でもあります。
  • 同期操作に焦点を当てる:Django Ninjaは非同期操作(async)をサポートしていますが、Django自体の非同期サポートはまだ段階的に改善されている途中です。
  • 初心者が不必要な技術的詳細に混乱するのを避けるため、同期操作のみをカバーします。
  • これにより、開発プロセスが簡素化されるだけでなく、現在の主流なDjangoの利用習慣と一致させることができます。
  • API開発とは無関係な部分を省略:Djangoは包括的なフレームワークとして、国際化(i18n)やテンプレートエンジンなど、API開発の範囲を超える多くの機能を含んでいます。
  • これらの機能は一部のアプリケーションシナリオでは重要ですが、本シリーズのテーマとの関連性が低いため、省略することを選択します。
  • 単体テスト、デプロイ、コンテナ化などの部分は、要点を選んで触れるにとどめ、完全な紹介は行いません。
  • APIドキュメントの作成と品質に特に重点を置く:明確で高品質なAPIドキュメントは、現代のソフトウェア開発に不可欠な部分であり、特にチームでの協力やサードパーティへのAPI公開時には極めて重要です。
  • Django Ninjaには「コードからAPIドキュメントを自動生成する」機能があります。私たちはこの機能をいかに効果的に利用するかを深く探求します。
  • 深くとは? APIドキュメントが自動生成されるだけでなく、高い可読性と正確性を備えていることを保証することです——フロントエンドの担当者も安心です。

コードから鮮やかで読みやすいAPIドキュメントへ


小括#

シリーズの全体的な方向性を理解したところで、次は本シリーズの構成と各章の配置を紹介します。最初から各章の要点を把握し、Django Ninjaのコア機能を段階的にどのように学んでいくかを理解できるようにします。

次の記事では、各章の主軸と要点を具体的に紹介し、シリーズ全体の構成を把握し、今後の学習への準備を整えるお手伝いをします。