お問い合わせ

Webアプリはどう動いてる?-Djangoで作るSNSの土台-【Luxucomを支える技術 #2】

このシリーズでは、弊社が開発している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」について取り上げます。