Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Django を使い続ける理由
Search
biwakonbu
July 12, 2024
Technology
0
98
Django を使い続ける理由
FastAPI が流行っているなかでなぜ Django を使い続けるのか、というテーマです。
Python の事情や WEB の事情など、実体験からの個人的な感想を交えて話をします。
biwakonbu
July 12, 2024
Tweet
Share
More Decks by biwakonbu
See All by biwakonbu
爆速なPythonフレームワーク
biwakonbu
0
120
HTMX触ってみた
biwakonbu
0
130
スタートアップの技術顧問を3年間続けて発生した事と気付き
biwakonbu
0
310
プログラミングを体系的に学べる言語 Python を推したい
biwakonbu
0
110
プログラミング言語F#を学びはじめました
biwakonbu
0
230
開発の生産性を高める事を考える
biwakonbu
0
120
「プログラミングを習得する」を考えてみた
biwakonbu
0
66
Python の型事情について
biwakonbu
0
73
ESLint使ってますか?
biwakonbu
0
92
Other Decks in Technology
See All in Technology
12 Days of OpenAIから読み解く、生成AI 2025年のトレンド
shunsukeono_am
0
1k
開発生産性向上! 育成を「改善」と捉えるエンジニア育成戦略
shoota
2
830
DevFest 2024 Incheon / Songdo - Compose UI 조합 심화
wisemuji
0
250
AWS re:Invent 2024 ふりかえり勉強会
yhana
0
700
TypeScript開発にモジュラーモノリスを持ち込む
sansantech
PRO
3
870
Opcodeを読んでいたら何故かphp-srcを読んでいた話
murashotaro
0
360
Storage Browser for Amazon S3を触ってみた + α
miura55
0
100
生成AIによるテスト設計支援プロセスの構築とプロセス内のボトルネック解消の取り組み / 20241220 Suguru Ishii
shift_evolve
0
180
The future we create with our own MVV
matsukurou
0
1.4k
型情報を用いたLintでコード品質を向上させる
sansantech
PRO
2
220
【令和最新版】ロボットシミュレータ Genesis x ROS 2で始める快適AIロボット開発
hakuturu583
2
1.4k
OPENLOGI Company Profile
hr01
0
57k
Featured
See All Featured
Embracing the Ebb and Flow
colly
84
4.5k
Become a Pro
speakerdeck
PRO
26
5.1k
Product Roadmaps are Hard
iamctodd
PRO
50
11k
Into the Great Unknown - MozCon
thekraken
34
1.6k
How to Ace a Technical Interview
jacobian
276
23k
We Have a Design System, Now What?
morganepeng
51
7.3k
Code Review Best Practice
trishagee
65
17k
A Tale of Four Properties
chriscoyier
157
23k
RailsConf 2023
tenderlove
29
960
The Power of CSS Pseudo Elements
geoffreycrofte
74
5.4k
Visualization
eitanlees
146
15k
Making the Leap to Tech Lead
cromwellryan
133
9k
Transcript
Django を使い続ける理由 株式会社coroutine 東川 諒央
自己紹介 1 Django (Python) の選定理由と功罪 3 Django で困った事 4 Django?
FastAPI じゃなく? 2 5 まとめ
自己紹介 1 株式会社 coroutine 東川 諒央 @biwakonbu 大学教員 ゲームバックエンド フリーランス
経歴 Go Python 実績言語 Ruby 技術顧問 エンジニア教育 業務 設計 プログラミング インフラ etc… Rust Haskell TypeScript 趣味言語 Lisp F#
> Django? FastAPI じゃなく?
Django? FastAPI じゃなく? 2 ❏ はい、Django です ※ 個人の感想です ❏
Django を使いたい理由 ❏ フルスタックでかつプラグインが豊富 ❏ マイグレーションが便利 ❏ admin site を標準でサポートしている ❏ 静的ファイルのデプロイもやってくれる (django command でできる) ❏ ディレクトリ構成が好き (機能毎に構成する) ❏ ドキュメントやノウハウが豊富
Django? FastAPI じゃなく? 2 ❏ じゃあ FastAPI を使わない理由は? ❏ 仕事で
SaaS 開発を立ち上げからやる事は殆どない ❏ 相談にのっても Rails 使ったりで、現場に合わせて対応するため ❏ 業務系でスクラッチでやるなら FastAPI より Django の方が利が多い ❏ そもそも Python 自体が実行速度は良くないため、 FastAPI のメリットが薄い ❏ どうしても Python じゃないとダメなチームが選択するとかかな、と
Django? FastAPI じゃなく? - フレームワーク別ベンチマーク 2 大体450req/sec
Django? FastAPI じゃなく? - 言語別速度比較 2 引用: 宇宙の晴れ上がり: プログラミング言語の実行速度比較(2023/4)
Django? FastAPI じゃなく? 2 Python やフレームワークが高速化されるのは嬉しい が、ライブラリをごちゃごちゃ入れ変えて高速化するのを Python で目指したくない 自分が
Python に求めるのは楽に開発、運用ができる事だけ
> Django 事例
Django 事例 3 ❏ ブラウザゲーム (2015~2016) ❏ DAU 2 万前後
❏ スマホネイティブゲーム (2016~2017) ❏ 開発途中で開発チームごと移籍 ❏ 社労士向けサービス PoC 開発 (2017~2018) ❏ PoC で終了 ❏ 基幹システムリプレース (2019~現在) ❏ DX チームの組成とシステムリプレース、現在運用中
Django 事例 3 ❏ 高負荷アプリについて ❏ app server のコストが高めなものの、ほぼ困るポイントは無し ❏
DB アクセスが課題になるのでフレームワークレベルの話にならない ❏ ゲームの時は RDB + Redis で 90% くらいの負荷を対策していた ❏ アクセス自体についても uvicorn で複数ワーカー立てればある程度捌ける ❏ PoC について ❏ 技術選定コストがほぼない (FastAPI も厳密にはだいたい毎回固定になるが ...) ❏ マイグレーションファイルを手書きしなくていいのが本当に楽 ❏ Template 毎に仕様を変えれるので最初泥臭く作っても影響範囲は狭くできる ❏ 素の Django で API 作ってから DRF を導入して両方動作なども可能
> Django で困った事
Django で困った事 4 ❏ 標準の Paginator が遅い ❏ 実装が何故か悪いので件数が多い一覧にページネーションを入れるなら カスタムページネータを実装して差し替える
❏ 標準のままだと一覧実装でフィルタの実装が面倒 ❏ django-filter を使うと簡単になるので入れれば解決
Django で困った事 4 ❏ 標準の機能で API を作るのはちょっと面倒が多い... ❏ Django REST
Framework (DRF) がおすすめです (Django Ninjaも良さそう) ❏ Django の問題じゃないけどパッケージ管理とかランタイム管理が面倒だった ❏ 今は rye があるのでこれ 1 本で大丈夫 ❏ Django の問題じゃないけど formatter, linter の導入が面倒 ❏ 今は ruff があるのでこれ 1 本で大丈夫 ❏ 標準機能でデバッグする時はちょっと不便 ❏ django-debug-toolbar, django-extensions を入れれば大体解決します ❏ API は django-debug-toolbar と DRF の SwaggerUI がおすすめ ❏ アプリの実動作で toolbar が使いたいなら chrome の拡張がいいかも
Django で困った事 4
まとめ 5 ❏ 速さを求めていないので困らなかった ❏ 速さを求めるなら正直 Go のとかの方がいいんじゃないかと ... ❏
そもそも Python 遅いし... ❏ 個人的には速さやパフォーマンスの為に FastAPI を使いたくなかったです ❏ 着手開始からのプロダクト生産性は Django は高い ❏ フルスタックの強みです ❏ Rails や Laravel と比較してもディレクトリ構成の筋の良さや マイグレーションの便利さで頭抜けている感じです ❏ 部分的に細かなカスタムが出来るようになっているので後から苦しまない ❏ 初期の設計に依存しにくい作りになっているので柔軟に対応できました
宣伝:大阪プログラミングコミュニティやってます エンジニアのための学習・交流を行うコミュニティスペースを作っています 勉強したい人や人と繋がりたい人に向けてサービス提供していきます