7月5日(水)、「世界に認められたAIスタートアップが、Djangoを使って感じる良さとは?」に参加しました。
「Djangoの特徴とRevCommにおける選定理由」
資料: https://speakerdeck.com/revcomm_inc/djangonote-zheng-torevcommniokeruxuan-ding-li-you
スピーカーは小門 照太さん。
RevCommさんが運営しているサービス「MiiTel」のバックエンドで採用しているDjangoの利点についての解説でした。
RevCommさんは2019年頃にDjangoを導入していて、マイクロサービス化されており、Djangoアプリケーション数は約40とのことです。
Djangoの利点として、以下を挙げていました。
- セキュリティ対策が標準でサポートされている
- O/Rマッパー、マイグレーション管理が便利
- エコシステムの充実
- チーム開発のしやすさ
セキュリティ対策が標準でサポートされている
XSS, CSRF, SQLインジェクションなど、はじめからセキュリティ対策が用意されている点が魅力的とのことです。
ここはフルスタックフレームワークならではの利点ですよね。
小さなフレームワークには好きなライブラリを組み合わせて利用できる良さはあるかと思いますが、ウェブサービスでよくあるセキュリティ問題について、Djangoを導入しておけばとりあえず対策が取れるのは大きな魅力だと思います。
O/Rマッパー、マイグレーション管理が便利
SQLAlchemyのような他のO/Rマッパーと比べても処理を簡潔に書けて楽に開発できるのが良いとのことです。
ただし、SQLAlchemyの目的はDjangoのO/Rマッパーとは異なる部分があり、DjangoのO/Rマッパーにはない機能も多数存在するため、単純にコードの記述量だけで優劣を決めることはできないとも強調されていました。
また、python manage.py shell
で対話モードでO/Rマッパーの操作を行える点、マイグレーションの仕組みが最初から用意されている点も利点として挙げられていました。
エコシステムの充実
INSTALLED_APPS
に値を追記するだけでサードパーティライブラリで機能を拡張できるため、必要な機能を早く実装できる点も利点とのことです。
Djangoの便利な拡張はawesome-djangoで公開されているので、興味がある方は一度チェックしてみてはいかがでしょうか。
チーム開発のしやすさ
Djangoプロジェクトはアプリケーション単位で分離でき、似たようなディレクトリ構成になりやすいのでチームでの開発と相性が良いとのことです。
また、テストはデフォルトでテストケース間のデータを独立して扱える(テストメソッドごとにDBトランザクションが独立している)のも良いとのことです。
「快適なテスト体験を実現する、Djangoのテスト思想と工夫」
資料: https://speakerdeck.com/revcomm_inc/kuai-shi-natesutoti-yan-woshi-xian-suru-djangonotesutosi-xiang-togong-fu
スピーカーは近藤 智哉さん。
Djangoテスティングライブラリの基本的な考え方と、RevCommさんで実践されているテストの工夫についてのお話でした。
まず、django.test.TestCase
を使ったテストクラスの実行の流れについて。
django.test.TestCase
はPython公式のunittest.TestCaseを継承しているので基本的な流れはunittest.TestCase
と同じですが、独自の機能も存在するので、それらがどのタイミングで呼ばれるのか把握しておいたほうがよいとのことでした。
また、テスト実行時にtest
コマンドのオプションで以下を指定する工夫もされているそうです。
-
--keepdb
で毎回マイグレーションが走らないようにしてDB初期化処理を高速化 -
--reverse
、--shuffle
オプションで実行順を変える
テスタビリティの高いコード書き、テスティングライブラリの制限によりテストを実行できないことがないようにすることも重要とのことでした。
最後に
久々にDjango関連のイベントに参加できて楽しかったです。
どんなフレームワークにも言えることですが、フレームワーク作者の意図や慣例に反した設計にすると、そのフレームワークの利点を損なってしまうことがよくあります。開発する際は、今日のお話にあったようなDjangoの良い点を意識した上で、それを損なわないようにするにはどうするべきかを考えることが大事なのではないかな、と思いました。
また、今年は10月7日にDjangoCongress
JP 2023というオフラインイベントが開催されますが、RevCommさんからスピーカーとして登壇される方がいらっしゃるかもしれませんね!