2025/04/27 20:09 My takeaways from DjangoCon EU 2025

やっほー、ロボ子!今日のITニュースも盛りだくさんじゃぞ!

こんにちは、博士。今日も色々と教えてくださいね。

まずはデータベースの話じゃ。`select_for_update`でDB行をロックして、データの整合性を保つのは基本中の基本じゃな。

`select_for_update`、同時実行環境では特に重要ですね。それから、プライマリーキーはBigIntかUUIDを使うべきとのことですが、テーブルが21億エントリに近づいている場合は負の値も使えるんですか?

そうそう、負の値も使えるんじゃ。テーブルが巨大になることを見越して、最初からBigIntにしておくのが賢明じゃな。

なるほど。それと、外部キーには`db_index`を明示的に設定するんですね。デフォルトでもインデックスが作成されるのに、さらに最適化が必要なんですね。

その通り!明示的に設定することで、より効率的なインデックスが作れる場合があるんじゃ。PostgreSQLはNULL値のインデックスも作るけど、条件を追加すればインデックスサイズを大幅に削減できるらしいぞ!最大99%も!

99%削減ですか!それはすごいですね。インデックスの条件、私も見直してみます。

それから、パフォーマンスを保つために、DBにデータをロードしてビューの所要時間を計測するテストを書くのが大事じゃぞ。クラウド環境で速度が低下する場合は、ディスク速度をチェック!

クラウドディスクの速度とラップトップのディスク速度を比較するんですね。ボトルネックがハードウェアかI/Oかを見極める、と。

そういうことじゃ!あと、25リクエスト/秒とか、1コールあたり40ms程度のボトルネックなら、TCP_NODELAYを疑ってみるのもありじゃな。

TCP_NODELAYですか。Nagleアルゴリズムを無効化することで改善する可能性があるんですね。環境変数で設定できる、と。

おー、さすがロボ子、理解が早い!ツールも色々紹介されてるぞ。`strace`はシステムコールを検査するのに便利じゃし、`django-auto-prefetch`はDBクエリを削減してくれる優れものじゃ。

`django-auto-prefetch`、使ってみたいです!関連オブジェクトを自動的にプリフェッチしてくれるんですね。それから、`django-csp`はContent Security Policy、Django coreにマージ予定なんですね。

そうなんじゃ!セキュリティもどんどん強化されていくぞ。Face IDや指紋ログインを有効にする`django-otp-webauthn`も気になるな。

パスキーサポートですね!便利になりそうです。それと、`silence-lint-error`は、リンティングルールを段階的に導入するのに役立ちそうですね。

ベストプラクティスも重要じゃぞ。GitHub Actionsで`sqlmigrate`の内容を出力させて、生成されたSQLを開発者が見るように強制するのは良いアイデアじゃ。

テストごとのクエリ数をカウントして、閾値を超えたら失敗させるのも、過剰なDBクエリを防ぐのに有効ですね。

その通り!Djangoの機能提案がGitHub issuesで議論されるようになったのも、コミュニティの活性化に繋がりそうで良いことじゃ。

Rustで記述されたDjangoテンプレートレンダリングバックエンドも開発中なんですね。パフォーマンスが向上するかもしれません。

モデリングの話も興味深いぞ。ユーザーが独自のモデルを定義するアプリには、汎用的なEAVシステムが役立つんじゃな。

EAV(Entity-Attribute-Value)システム、スキーマ対応EAVモデリングですね。柔軟なデータ構造を扱えるのが魅力です。

DivioはDjangoプロジェクトを簡単にホストできるプラットフォームらしいぞ。Django Static Site Generatorsも色々あるんじゃな。

`django-distill`や`calico-ssg`ですね。静的サイトジェネレーターも選択肢が増えてきましたね。

最後に、Djangoのプロジェクトとしてのガバナンスについて議論があるみたいじゃな。もっと多くの人が参加してくれると良いんじゃが。

そうですね。コミュニティの活性化は重要ですね。博士、今日もたくさんのことを教えていただき、ありがとうございました。

どういたしまして!最後に一つ、データベースの最適化は、まるで部屋の片付けみたいなものじゃ。最初は面倒だけど、終わった後はスッキリするぞ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。