リアルタイムチャットができるWebアプリです
URLなど
GitHub
バックエンド: https://github.com/shake551/chat-app
フロントエンド: https://github.com/shake551/chat-app-frontend
サイト作成の動機
まず、ユーザー関連の機能についてです. ユーザー登録や、そのユーザーの権限、ログイン状態の管理といったところで、セキュリティを考えないといけないことが多いと思います.
フレームワークにはユーザー関連の機能がサポートされているものが多いかもしれません. 特に、Djangoにはユーザー登録、権限、ログイン状態の管理をしてくれる機能があります.
しかし、この部分を自分で実装して見ることでセキュリティ的に考えないといけないことなど理解が深まると思い、ユーザー関連の機能を自作したいと思い作成しました.
次に、チャット機能についてです. 最近のサービスではチャット機能がついているものが非常に多くなっていると思います.
そんな中で、チャットアプリを作ること、また、その概要を理解することは有益であると思い、チャットアプリを作りました.
また、まだ手をつけられていない機能ですが、グループチャット機能を実装することで、多対多のデータベースの設計、実装をしたいと思っています.
多対多のデータベースを実現するためのサービスはたくさん考えられると思いますが、チャットアプリにすることで1対1のシンプルなチャットから、多対多のグループチャットというように段階的に進めることができると考えました.
機能・処理等
現在の機能は以下のようなものがあります.
ユーザー関連
- ユーザーの仮登録
- メール認証をして本登録
- ログイン状態の管理(JWTを使用)
- *Djangoにはデフォルトでユーザー関連の機能が用意されていますが、今回はこれらの機能を自作しました.
チャット関連
- リアルタイムチャット
- チャットルームの一覧表示
- チャットルーム作成
使用したもの
![]() Python |
![]() Django |
![]() MySQL |
![]() NGINX |
![]() Redis |
![]() React |
技術選択理由
なぜPythonを用いたかというと、websocket通信をPythonで実装したかったからです. websocket通信について調べるとNode.jsでのものがとても多く、何か別の言語で実装したいと思っていました. そこで、当時使える技術の中で、PythonのChannelsを使って、websocketでの通信を実現しようと思い、この技術を選択しました.
今後したいこと
- グループチャットの実装
- トークルームに入っていない時の通知
- リクエスト集中時の対応