質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

1回答

435閲覧

チャットアプリのルームIDの生成方法について

murama2

総合スコア113

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2023/01/08 10:40

編集2023/01/08 13:01

Reactの勉強中でFirebaseも使用したチャットアプリを作成しているのですが、ルームIDの取り扱いに悩んでいます。
ルームIDは、FirebaseのAuthenticationを使用しメールアドレスでユーザー登録した際に生成するマイルームIDとフレンド登録した際にフレンドとの1対1用のルームIDの2種類の使用を想定しています。

現在は、下記コードで10桁の乱数を生成し、ルームIDとして使用しているのですがいくつかの懸念点が残っており、その他で何か良い方法がないかといろいろ調べたのですが、主にフレンド機能などもない1対1のチャットアプリ解説の記事ばかりで、解決することができませんでした。

FirebaseでこういったルームIDを持たせるときのIDはどのような方法で生成するのがよいかお教え頂けますでしょうか。

■懸念点
・10桁だと処理に時間がかかりサイト表示が重くなってしまう
・練習用なので大丈夫だが、多くのユーザーが使用すると考えたとき10桁の乱数では重複が発生する可能性がある。

React

1 //10桁のRoomIDを生成 2 const roomIdNumber = []; 3 /** 最小値と最大値 */ 4 const min = 1, max = 10; 5 const intRandom = (min, max) => { 6 return Math.floor(Math.random() * (max - min + 1)) + min; 7 }; 8 9 /** 重複チェックしながら乱数作成 */ 10 for(let i = min; i <= max; i++){ 11 while(true){ 12 let tmp = intRandom(min, max); 13 if(!roomIdNumber.includes(tmp)){ 14 roomIdNumber.push(tmp); 15 break; 16 } 17 } 18 }

質問への回答

処理時間については、ネット環境が悪かったようで別の環境でためしたところ、時間はかからず処理することができたので、「処理に時間」については大丈夫そうです。
firebaseでルームIDを作成するとした場合、私が質問させていただいた方法は適切なのか不安な部分があるのですがどうでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuma.inaura

2023/01/08 12:02

乱数生成に何秒かかるんでしょう?
guest

回答1

0

UUIDかULIDかDBのAUTO_INCREMENTなid。
そんなidは自分で作らない。

「許可されたユーザーしか表示できない」ならAUTO_INCREMENTな1,2,3でも問題になることはない。

投稿2023/01/08 10:55

kawax

総合スコア10377

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

murama2

2023/01/08 11:50

回答ありがとうございます。 すみません、質問内容に漏れがあったのですがfirebaseを使用した方法についてお聞きしたいです。 確かにMySQLなどであればAUTO_INCREMENTで対応できると思うのですが、firebaseでも同様な機能があるのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問