SlideShare a Scribd company logo
1 of 13
Download to read offline
Pythonフレームワーク
Django & DRFの便利機能
山田創介
自己紹介
経歴
勤怠管理システムのSaasの開発経験後、2019年8月フリーランスとして起業。2022年1月に株式会社 coroutineの取締
役に就任。フリーランスと役員を兼業
業務ではバックエンドを軸とし、Laravel(PHP) や DRF(Python)などの経験を主にする。
また、React.jsをはじめとしたフロントエンド開発やGitHub Actionsを利用したCI/CDの整備なども行っている。
現在は 女性下着を販売する会社でDXを行うプロジェクトにPGとして参画中
山田創介(@yamasaw44)
フリーランス / 株式会社 coroutine 取締役
スキル
DRF(Python)/Laravel/Nuxt.js
React.js/Cypress.js/Storybook/Tailwind CSS
Go lang/ AWS
その他
eSportsの大会を運営したりしています。趣味はゲームや登山です
PythonのWebフレームワーク Django
DjangoはPythonで開発を行う、フルスタックなフレームワークです。ユーザ管理や認証
機能などがあります。Djangoの特に大きな特徴はO/Rマッパーとしての機能が豊富であ
り、Modelの定義を元にマイグレーションファイルの作成やリクエストバリデーション等を
行う事ができます。
また公式ドキュメントも日本語に言語対応がされており、またチュートリアルも存在する
ため学習も容易に行う事ができます。
https://docs.djangoproject.com/ja/4.0/
Djangoフレームワークのメリット・デメリット
メリット
フルスタックなフレームワークではあるが、Modelをベースに様々な機能を実装していけるため
コード記述量が少なくすみかつ、コードの管理コストが減る。
デメリット
PHPに比べるとユニットテストを実施するライブラリがあまり良くない。品質がよくないというより
PHPのライブラリの方が洗礼されている感がある。
フルスタックなフレームワークではあるが、フロントエンドの部分が弱い。
jsファイルを利用するた
めにDjangoの専用コマンドを実施する必要がある。templateをコンポーネント化しづらい。etc…
Modelからmigrationファイルを自動生成
Modelの定義を元にmigrationファイルを作成する事ができます。migrationファイルの
作成にはDjangoのコマンドを利用し作成する事が可能です。また、すでにmigrationファ
イルを作成したModelを変更した場合の変更差分もmigrateする事が可能です。
PHPのフレームワークLaravelではmigrationファイルの生成コマンドは存在するが、
Model内に定義されたものを全てmigrationファイルに記述する機能ではなく空の
migrationファイルを作成し定義していくと言うものなので、Djangoで実装された
migrationファイル作成機能の方が利便性が高い
migrationファイルのジェネレート
左のModelの定義から右のmigrationファイルが作成される
ModelからER図(クラス図)を作成
Djangoの拡張ライブラリ django-extensionsと図形描画用のライブラリgraphvizとそれ
をPythonで利用でき事を可能にするpygraphvizの3つを利用します。
django-extensionsとpygraphvizはpipによりインストールする事が可能であるが
graphvizは別途brewなどを利用しインストールする必要がある
pygraphvizによるER図のジェネレート
左のコードから右の図のようなER図が生成されます
Djangoは便利ではあるがデメリットも多い
Djangoフレームワークはフルスタックであるがフロントエンドに関わる機能が全体的に
弱い。
- Datetime型などプリミティブな型以外はjson dumpする事はできず、独自でjson
encodeの処理を実装しないとかなり使いにくい。
- Djangoのコマンド(collectstatic)js,cssなどの静的ファイルを再配置しなければ利
用できない。
- templateがコンポーネント化しづらいコンポーネントの中にコンポーネントを差し込
めない(Vueで言うSlot)など
Djangoのデメリットを解決したものがDRF
Djangoのフロントエンド部分が弱いという欠点をなくせるものがDRF(Django REST
framework)になります。名称通りDjangoを利用してRESTfulにAPIを提供する事ができ
るようになるライブラリです。特徴としてDjangoで作成したModelを元にRESTfulなAPIを
作成する事がで来ます。
プロダクトコードからAPI仕様書を作成
drf-spectacularを利用すると、DRFで記載したコードを元にAPI仕様書を作成する事が
可能になるなります。
このライブラリを組み合わせる事で、Modelの定義を行うだけでAPIの作成、API仕様書
の作成、Requestバリデーションの実装、migrationファイルの作成といった大部分の開
発を実現する事ができます。
プロダクトコードからAPI仕様書を作成
左のコードをジェネレートすると右のようなAPI仕様書になる
ご清聴ありがとうございました!
Twitter: @yamasaw44

More Related Content

Similar to PythonフレームワークDRFの便利機能

エンジニアのお仕事.pdf
エンジニアのお仕事.pdfエンジニアのお仕事.pdf
エンジニアのお仕事.pdfshumashimo1
 
DartPad+CodePenで、Flutterを体験してみよう
DartPad+CodePenで、Flutterを体験してみようDartPad+CodePenで、Flutterを体験してみよう
DartPad+CodePenで、Flutterを体験してみようcch-robo
 
関数プロキシを使って REST APIっぽくを使ってみる
関数プロキシを使って REST APIっぽくを使ってみる関数プロキシを使って REST APIっぽくを使ってみる
関数プロキシを使って REST APIっぽくを使ってみるNoriaki Sakata
 
Leapmotionとp5.js:DEMOと解説
Leapmotionとp5.js:DEMOと解説Leapmotionとp5.js:DEMOと解説
Leapmotionとp5.js:DEMOと解説光吉 浜谷
 
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」Serverworks Co.,Ltd.
 
Things to consider early before RPA expansion_ver1.2.pdf
Things to consider early before RPA expansion_ver1.2.pdfThings to consider early before RPA expansion_ver1.2.pdf
Things to consider early before RPA expansion_ver1.2.pdfRYUTAHATAKEYAMA
 
ペアプロはリモートでもできる!
ペアプロはリモートでもできる!ペアプロはリモートでもできる!
ペアプロはリモートでもできる!Tatsuya Deguchi
 
「AROW」お披露目(導入編)
「AROW」お披露目(導入編)「AROW」お披露目(導入編)
「AROW」お披露目(導入編)Drecom Co., Ltd.
 
Ha4goもくもく報告2016年11月分
Ha4goもくもく報告2016年11月分Ha4goもくもく報告2016年11月分
Ha4goもくもく報告2016年11月分Masayuki KaToH
 
html5とcss3実例紹介とデモ
html5とcss3実例紹介とデモhtml5とcss3実例紹介とデモ
html5とcss3実例紹介とデモAkihiro Sugiyama
 
事業会社で働くエンジニアのマインドセット - DevLOVE関西
事業会社で働くエンジニアのマインドセット - DevLOVE関西事業会社で働くエンジニアのマインドセット - DevLOVE関西
事業会社で働くエンジニアのマインドセット - DevLOVE関西Tomoyuki Sugita
 
Django で始める PyCharm 入門
Django で始める PyCharm 入門Django で始める PyCharm 入門
Django で始める PyCharm 入門kashew_nuts
 
くまあず平日夜の勉強会#4
くまあず平日夜の勉強会#4くまあず平日夜の勉強会#4
くまあず平日夜の勉強会#4Noriaki Sakata
 
Pythonにおけるデバッガツールpdbについて
PythonにおけるデバッガツールpdbについてPythonにおけるデバッガツールpdbについて
PythonにおけるデバッガツールpdbについてRyota Sakamoto
 
[db tech showcase Tokyo 2016] B15: サイバーエージェント アドテクスタジオの次世代データ分析基盤紹介 by 株式会社サイ...
[db tech showcase Tokyo 2016] B15: サイバーエージェント アドテクスタジオの次世代データ分析基盤紹介 by 株式会社サイ...[db tech showcase Tokyo 2016] B15: サイバーエージェント アドテクスタジオの次世代データ分析基盤紹介 by 株式会社サイ...
[db tech showcase Tokyo 2016] B15: サイバーエージェント アドテクスタジオの次世代データ分析基盤紹介 by 株式会社サイ...Insight Technology, Inc.
 
WordPressの進化とWordPress名古屋コミュニティの進化
WordPressの進化とWordPress名古屋コミュニティの進化WordPressの進化とWordPress名古屋コミュニティの進化
WordPressの進化とWordPress名古屋コミュニティの進化takashi ono
 
何を自動化するのか
何を自動化するのか何を自動化するのか
何を自動化するのか暁 三宅
 
RLSにおけるプロダクト:プロジェクトマネジメント
RLSにおけるプロダクト:プロジェクトマネジメントRLSにおけるプロダクト:プロジェクトマネジメント
RLSにおけるプロダクト:プロジェクトマネジメントItsuki Sakitsu
 

Similar to PythonフレームワークDRFの便利機能 (20)

エンジニアのお仕事.pdf
エンジニアのお仕事.pdfエンジニアのお仕事.pdf
エンジニアのお仕事.pdf
 
DartPad+CodePenで、Flutterを体験してみよう
DartPad+CodePenで、Flutterを体験してみようDartPad+CodePenで、Flutterを体験してみよう
DartPad+CodePenで、Flutterを体験してみよう
 
関数プロキシを使って REST APIっぽくを使ってみる
関数プロキシを使って REST APIっぽくを使ってみる関数プロキシを使って REST APIっぽくを使ってみる
関数プロキシを使って REST APIっぽくを使ってみる
 
LIGでのDocker活用
LIGでのDocker活用LIGでのDocker活用
LIGでのDocker活用
 
Leapmotionとp5.js:DEMOと解説
Leapmotionとp5.js:DEMOと解説Leapmotionとp5.js:DEMOと解説
Leapmotionとp5.js:DEMOと解説
 
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
 
Visasq
VisasqVisasq
Visasq
 
Things to consider early before RPA expansion_ver1.2.pdf
Things to consider early before RPA expansion_ver1.2.pdfThings to consider early before RPA expansion_ver1.2.pdf
Things to consider early before RPA expansion_ver1.2.pdf
 
ペアプロはリモートでもできる!
ペアプロはリモートでもできる!ペアプロはリモートでもできる!
ペアプロはリモートでもできる!
 
「AROW」お披露目(導入編)
「AROW」お披露目(導入編)「AROW」お披露目(導入編)
「AROW」お披露目(導入編)
 
Ha4goもくもく報告2016年11月分
Ha4goもくもく報告2016年11月分Ha4goもくもく報告2016年11月分
Ha4goもくもく報告2016年11月分
 
html5とcss3実例紹介とデモ
html5とcss3実例紹介とデモhtml5とcss3実例紹介とデモ
html5とcss3実例紹介とデモ
 
事業会社で働くエンジニアのマインドセット - DevLOVE関西
事業会社で働くエンジニアのマインドセット - DevLOVE関西事業会社で働くエンジニアのマインドセット - DevLOVE関西
事業会社で働くエンジニアのマインドセット - DevLOVE関西
 
Django で始める PyCharm 入門
Django で始める PyCharm 入門Django で始める PyCharm 入門
Django で始める PyCharm 入門
 
くまあず平日夜の勉強会#4
くまあず平日夜の勉強会#4くまあず平日夜の勉強会#4
くまあず平日夜の勉強会#4
 
Pythonにおけるデバッガツールpdbについて
PythonにおけるデバッガツールpdbについてPythonにおけるデバッガツールpdbについて
Pythonにおけるデバッガツールpdbについて
 
[db tech showcase Tokyo 2016] B15: サイバーエージェント アドテクスタジオの次世代データ分析基盤紹介 by 株式会社サイ...
[db tech showcase Tokyo 2016] B15: サイバーエージェント アドテクスタジオの次世代データ分析基盤紹介 by 株式会社サイ...[db tech showcase Tokyo 2016] B15: サイバーエージェント アドテクスタジオの次世代データ分析基盤紹介 by 株式会社サイ...
[db tech showcase Tokyo 2016] B15: サイバーエージェント アドテクスタジオの次世代データ分析基盤紹介 by 株式会社サイ...
 
WordPressの進化とWordPress名古屋コミュニティの進化
WordPressの進化とWordPress名古屋コミュニティの進化WordPressの進化とWordPress名古屋コミュニティの進化
WordPressの進化とWordPress名古屋コミュニティの進化
 
何を自動化するのか
何を自動化するのか何を自動化するのか
何を自動化するのか
 
RLSにおけるプロダクト:プロジェクトマネジメント
RLSにおけるプロダクト:プロジェクトマネジメントRLSにおけるプロダクト:プロジェクトマネジメント
RLSにおけるプロダクト:プロジェクトマネジメント
 

PythonフレームワークDRFの便利機能