バージョン | 日付 | 変更要件 | 担当者 |
---|---|---|---|
0.1.0 | 2023-04-28 | 最初の要件定義を行いました。 | @1uf3 |
0.2.0 | 2023-05-01 | 要件定義書の詳細化を行いました。 | @1uf3 with ChatGPT |
0.3.0 | 2023-05-01 | 機能要件の外部インターフェースに音声・画像配信の通信定義を追加しました。 | @1uf3 |
SlackやDiscordなどと同じような音声通話と文字でのコミュニケーションを融合したアプリケーションを作成する。
- クライアント: デスクトップアプリケーション、ウェブアプリケーション、アンドロイドアプリケーション
- サーバ: Goを使用したバックエンドサーバ・MongoDBを使用したデータベース
クライアントアプリケーションはサーバと通信してメッセージやチャンネルの情報などを取得・操作します。 また、アプリケーションのアップデートが存在する場合にはGithubからアップデート情報を取得し、デスクトップアプリケーションを自動アップデートします。
現在のRCCでは主にSlackを使用して会内連絡を行っている。 しかし、Slackは2022/09/01から有料プランでないと30日で会話の履歴が消えてしまうといったアプリケーションになってしまった。 しかし、現在のRCCはSlackを使い続けており、かつ、Discordも使っているため、分散してしまっている。 集約することで2つのアプリケーションを管理する必要がなくなるため、運用のコストを下げることにもつながる。
よって新たなアプリケーションを使用し始めたい。 OSSでの同様なアプリケーションとしてZulipやRocketChatが存在する。 他にも東京工業大学のサークルが作ったTraQが存在する。
上記のアプリケーションを採用しても良かったが、自分たちで開発することによって技術力や保守力を身につけたいし、 新しい技術を用いて開発を行いたかったため、制作することに至った。
- 要件定義
- デザインモックの作成
- プロトタイプ開発
- テスト
- 本番環境へのリリース
- フィードバック収集と改善
- 開発チーム: ?人
- 対象ユーザー: RCC部員
- 開発期間: 3ヶ月
- 総工数: 1000時間
- 80%以上の満足度を維持
- システム可用性: 99.9%以上
- 音声通話機能
- 画面共有機能
- テキストメッセージ機能
- カスタム絵文字の追加
- メッセージへのリアクション機能
- ユーザ管理機能
- ユーザグループ管理
- ユーザグループの権限管理機能
- チャンネル管理機能
- テキストチャット(グループチャット)
- プライベートチャット
- チャンネル作成と管理
- ユーザ招待と管理
- ユーザグループ管理と権限管理
- 音声通話
- 画面共有
- ファイル送信と共有
- メッセージ検索
- 通知設定
- botの追加
DiscordのGuildが存在しないZulip見たいな感じ
- ログイン画面
- ユーザー登録画面
- メイン画面
- サイドバー(チャンネル一覧、プライベートチャット一覧)
- チャット画面
- ユーザープロファイル画面
- チャンネル作成・編集画面
- ユーザー招待画面
- 設定画面
- 音声通話画面
- 画面共有画面
- gRPC over QUIC: デスクトップアプリケーションとの通信
- REST API (HTTP/3): ウェブアプリケーションとの通信
- WebRTC: 音声や映像配信
- レスポンシブデザイン: ウェブアプリケーションの表示がデバイスに適応
- キーボードショートカット: 効率的な操作をサポート
- クライアント・サーバーアーキテクチャ
- 最大同時接続数: 50人
- 最大ユーザー数: 100人
- メッセージ遅延: 1秒以内
- 音声通話遅延: 500ms以内
- 画面共有遅延: 1秒以内
- システム可用性: 99.9%以上
- 将来的な機能追加や拡張が容易に行える設計
- 既存のデータとの互換性を維持しつつ、新機能を追加できるようにする
- 開発チームが交代しても、プロジェクトの継続が容易に行えるようにする
- データ暗号化: 通信データおよび保存データの暗号化
- 認証・認可: ユーザーのアクセス制御
- セキュリティアップデート: 定期的な脆弱性チェックとパッチ適用
- サーバ: LinuxベースのOS
- デスクトップアプリ: Windows, macOS, Linux
- スマホアプリケーション: Android
- ウェブアプリ: モダンブラウザ対応 (Google Chrome, Firefox, Safari, Microsoft Edge)
- 単体テスト
- 統合テスト
- システムテスト
- 負荷テスト
- 既存のコミュニケーションツールからのデータ移行
- 新システムの導入と運用開始
- 旧システムのシャットダウン
プロジェクト要件で記載したようにドキュメントをきれいにまとめることになっているため、ドキュメントを確認する。 ドキュメントを確認してもわからない場合は、上会生に聞く。
- チームメンバーへの新システムの使い方のトレーニング
- 開発・保守に携わるメンバーへの技術教育
- システムの監視とアラート対応
- 定期的なデータバックアップ
- システムのアップデート・パッチ適用
- バグ修正
- パフォーマンスチューニング
- 機能追加・改善のためのアップデート