このシリーズでは、弊社が開発しているLuxucomというSNSアプリを例に、Webアプリがどうやって動いているのかを、図とともにわかりやすく解説しています。
今回はその第2回。
Luxucomアプリの土台となっている「Django」について取り上げます。
Djangoとは?

Djangoは、Pythonで書かれたWebアプリケーションフレームワークです。
ユーザー認証や管理画面、フォームの作成、マイグレーションといった、Webアプリの開発に必要な機能が最初からそろっているのが特徴です。
そのため、ゼロから機能を作り込むよりも素早く、しかも安定した開発ができるのが魅力です。
Djangoを選んだ理由

LuxucomでDjangoを選んだ理由は、「開発がとにかく速い」という理由、この一択です。
実は私は、元々Javaが最も得意とする言語で、今でも現役で使っています。
JavaにはSpringという便利なフレームワークもありますが、それでも、Djangoの開発スピードは群を抜いてると感じています。
次のスライドで、私がDjangoを選んだ理由を挙げていきます。
Django(Python)とSpring(Java)の比較

ここでは、DjangoとSpringを比較しながら、LuxucomでなぜDjangoを選んだのか、その理由をお話しします。
細かい比較はキリがないので、今回は「開発速度」と「性能面」の2つに絞って解説します。
開発速度
まず、開発速度。
これはもう、Djangoの圧勝です。
最大のポイントは、マイグレーション機能ですね。
モデルを変更するたびに、自動でDDLを生成してくれるのは本当に助かります。
Springだと、毎回手作業でテーブル定義を変更しないといけないので、立ち上げ期のスピード感がまるで違います。
ちなみに、「Pythonはコードが書きやすい」ってよく言われますが、そこはJavaでも生成AIを使えばあまり差はないと感じています。
性能面
次に性能面。
確かにJavaはコンパイル言語なので、スクリプト言語のPythonよりも速いです。
ただ、Luxucomではリアルタイム性が特別求められるわけではなく、コンマ何秒の差はほとんど影響しません。
そのため、Pythonで十分と判断しました。
Luxucomで使っているDjangoの機能

Luxucomでは、Djangoがアプリ全体の土台となっていて、主にこの3つの機能をよく使っています。
ユーザー認証
まず「ユーザー認証」。
ログインやログアウトといった基本機能だけでなく、ユーザーセッションの管理までカバーされているので、認証まわりはほぼDjangoにお任せできます。
レンダリング
次に「レンダリング」。
LuxucomではDjangoのテンプレート機能を使って、サーバー側でHTMLを生成しています。
返すべき値をテンプレートに埋め込んで、動的なページをつくる形ですね。
マイグレーション
そして「マイグレーション」。
これは以前も少し話しましたが、モデルの変更に応じてマイグレーションファイルが自動生成される機能です。
Djangoを選んだ理由としても大きかったポイントです。
Djangoを軸とした他サービスとの連携

Luxucomでは、Djangoが中心となって、さまざまな外部サービスやデータストアと連携しています。
左側は「データストア系」です。
ユーザー情報やルーム情報などのメインのデータはPostgreSQLで管理。
一方で、チャットメッセージやライブ履歴などはDynamoDBに保存しています。
Redisはキャッシュや通知の一時保存に使っていて、S3はファイルアップロードなどで活躍しています。
右側は「処理系」です。
通知やリアルタイムチャットにはWebSocket、メール通知にはAmazon SES、そしてライブ配信に関する処理ではAmazon IVSと連携しています。
すべての起点はDjango。
Luxucomアプリでボタンが押されるたびに、Djangoが各サービスを制御するような構成になっています。
Djangoを使って良かった点

Djangoを実際に使ってみて、「良かったな」と感じている点を2つご紹介します。
開発の生産性が高いこと
まず1つ目は、「開発の生産性が高いこと」ですね。
初期開発の段階でも、必要な機能が最初から揃っているので、無駄な実装に時間を取られないのは本当にありがたいです。
ライブラリが豊富で使いやすく、他のサービスとの連携が容易であること
2つ目は、「ライブラリが豊富で使いやすく、他のサービスとの連携がしやすい」こと。
やりたいことが、ほんの数行のコードで実現できてしまうのは、やっぱり便利だなと感じます。
特にLuxucomのように、さまざまなAWSサービスや外部APIと組み合わせて動く構成では、こうした柔軟さはとても重要だと思っています。
Djangoを使って難しかった点

ここまでDjangoの良いところをたくさん紹介してきましたが、実際にはちょっと苦労した点もあります。
独自の仕様が多く、最初は慣れるのに苦労した
それは、Djangoのフレームワークとしての「癖」ですね。
他のフレームワークにない独自仕様が多くて、最初は慣れるのに苦労しました。
ただ、一度慣れてしまえば、生産性は爆上がりです。
ゼロからのDjango導入のチャレンジでしたが、Djangoを決断して良かったなとつくづく感じます。
さいごに
というわけで今回は、Luxucomの中核としてDjangoをどのように活用しているのか、その理由や使ってみた感想を中心にお話ししました。
Djangoはとっつきにくさはあるものの、慣れてしまえば開発がどんどん進む、頼もしいフレームワークだと感じています。
次回は、Djangoと連携しているデータベース、「PostgreSQL」について取り上げます。