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
96
Django を使い続ける理由
FastAPI が流行っているなかでなぜ Django を使い続けるのか、というテーマです。
Python の事情や WEB の事情など、実体験からの個人的な感想を交えて話をします。
biwakonbu
July 12, 2024
Tweet
Share
More Decks by biwakonbu
See All by biwakonbu
爆速なPythonフレームワーク
biwakonbu
0
110
HTMX触ってみた
biwakonbu
0
120
スタートアップの技術顧問を3年間続けて発生した事と気付き
biwakonbu
0
310
プログラミングを体系的に学べる言語 Python を推したい
biwakonbu
0
100
プログラミング言語F#を学びはじめました
biwakonbu
0
220
開発の生産性を高める事を考える
biwakonbu
0
120
「プログラミングを習得する」を考えてみた
biwakonbu
0
65
Python の型事情について
biwakonbu
0
71
ESLint使ってますか?
biwakonbu
0
90
Other Decks in Technology
See All in Technology
DUSt3R, MASt3R, MASt3R-SfM にみる3D基盤モデル
spatial_ai_network
3
360
最近のSfM手法まとめ - COLMAP / GLOMAPを中心に -
kwchrk
8
1.5k
pg_bigmをRustで実装する(第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
shinyakato_
0
120
10年もののバグを退治した話
n_seki
0
110
AWS re:Invent 2024 recap
hkoketsu
0
500
メンタル面でもつよつよエンジニアになる/登壇資料(井田 献一朗)
hacobu
0
150
re:Invent をおうちで楽しんでみた ~CloudWatch のオブザーバビリティ機能がスゴい!/ Enjoyed AWS re:Invent from Home and CloudWatch Observability Feature is Amazing!
yuj1osm
0
140
【令和最新版】ロボットシミュレータ Genesis x ROS 2で始める快適AIロボット開発
hakuturu583
1
910
プロダクト組織で取り組むアドベントカレンダー/Advent Calendar in Product Teams
mixplace
0
500
LINEスキマニにおけるフロントエンド開発
lycorptech_jp
PRO
0
360
OCI技術資料 : ファイル・ストレージ 概要
ocise
3
11k
20241218_マルチアカウント環境におけるIAM_Access_Analyzerによる権限管理.pdf
nrinetcom
PRO
3
120
Featured
See All Featured
The Language of Interfaces
destraynor
155
24k
Side Projects
sachag
452
42k
Scaling GitHub
holman
459
140k
Learning to Love Humans: Emotional Interface Design
aarron
274
40k
Measuring & Analyzing Core Web Vitals
bluesmoon
5
180
Automating Front-end Workflow
addyosmani
1366
200k
4 Signs Your Business is Dying
shpigford
182
21k
The Pragmatic Product Professional
lauravandoore
32
6.3k
VelocityConf: Rendering Performance Case Studies
addyosmani
326
24k
It's Worth the Effort
3n
183
28k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
230
52k
How to Ace a Technical Interview
jacobian
276
23k
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 と比較してもディレクトリ構成の筋の良さや マイグレーションの便利さで頭抜けている感じです ❏ 部分的に細かなカスタムが出来るようになっているので後から苦しまない ❏ 初期の設計に依存しにくい作りになっているので柔軟に対応できました
宣伝:大阪プログラミングコミュニティやってます エンジニアのための学習・交流を行うコミュニティスペースを作っています 勉強したい人や人と繋がりたい人に向けてサービス提供していきます