概要
- Django を学び始めた体験のまとめ
- Rails や他フレームワークとの比較
- Djangoの強み (明示性・管理画面・ORMなど)の紹介
- SQLiteの活用 や設定ファイルの悩みについても言及
- 今後さらに Djangoの機能 を学ぶ意欲
Djangoを学び始めて感じたこと
-
古くて枯れた技術 を学ぶ楽しさ ・20年以上使われている技術の安心感 ・過去の問題がすでに 解決済み で、すぐに作業できる利便性
-
Djangoを選んだ理由 ・RailsやLaravelにも興味があったが、DjangoでWebサイト作成を開始 ・数ヶ月使ってみて、 明示的で分かりやすい構造 に好印象
Railsとの比較:Djangoの「魔法の少なさ」
-
Rails は「魔法」が多く、久しぶりに触ると 構造を思い出すのが大変 ・例:routes.rbのresources :topicsだけではルートの詳細が分かりにくい ・Djangoは主要ファイルが明確で、プロジェクト放置後も 復帰しやすい
-
Djangoの主なファイル構成 ・urls.py, models.py, views.py, admin.py, tests.py ・HTMLテンプレートも 明示的に参照 されていて追いやすい
標準搭載の管理画面(Admin)
- Djangoの管理画面 はデフォルトで強力 ・少しのコード追加で カスタマイズ可能 ・例:list_display, search_fields, orderingなどを簡単に設定
ORMの楽しさ
- 以前は「SQL直書き派」だったが、 DjangoのORM が便利で楽しい ・__(ダブルアンダースコア)で JOINを表現 できる直感的な記法 ・複雑なクエリも 可読性が高く簡潔 ・パフォーマンスも問題なく、現状は ORMに満足
自動マイグレーション
- models.py の変更に応じて 自動でマイグレーションファイル生成 ・生成されたスクリプトをそのまま使えて 運用が楽 ・データモデルの頻繁な変更にも 柔軟に対応
ドキュメントの質の高さ
- これまで ドキュメントを読まない癖 があったが、Djangoの公式ドキュメントは 非常に分かりやすい ・Jacob Kaplan-Mossによるドキュメント文化の講演も存在 ・modelsのイントロなど、 必要な情報が整理されている
SQLiteの活用
- Postgres運用でのトラブル経験から SQLite を選択 ・小規模サイトなら VACUUM INTO で簡単バックアップ ・DjangoでのSQLite運用方法も 公式手順 に従って問題なし ・1日数百件程度の書き込みなら 十分に実用的
バッテリー同梱主義(Batteries-included)
- CSRF対策 や Content-Security-Policy、メール送信など 標準搭載 ・開発環境では メール送信をファイル保存 に切り替える設定も簡単 ・本番環境用のSMTP設定も 設定ファイル分割で管理
設定ファイル(settings.py)の悩み
- settings.py はグローバル変数を手動で設定するため、 タイプミスが不安 ・例:WSGI_APPLICATOINと書いても エラーに気付きにくい ・Python言語サーバーによる 補完やエラー検出が効かず、やや不安
今後の展望
- これまで 本格的なWebフレームワーク経験が少なかった ため、今後の学びに期待 ・Djangoの フォーム検証や認証機能 など、まだ未学習の部分が多い ・Marco Rogersに ORMの良さを教えてもらったことに感謝 ・今後も Djangoの新機能や活用法 を探求していく予定
コメント・フィードバック募集
- Mastodon上で コメント受付中 ・「あなたのお気に入りのDjango機能」をぜひ教えてほしい