firebase
安全なFirebaseアプリを作成する
Firebaseはバックエンド開発を簡素化しますが、セキュリティルールとデータモデリングには漏洩やコスト超過を防ぐための専門知識が必要です。このスキルはFirebaseのベストプラクティスに関する専門的ガイダンスを提供します。
スキルZIPをダウンロード
Claudeでアップロード
設定 → 機能 → スキル → スキルをアップロードへ移動
オンにして利用開始
テストする
「firebase」を使用しています。 チームメンバーがすべてのタスクを読み取りできますが、自分のタスクのみを編集できるtasksコレクションのセキュリティルールを生成してください
期待される結果:
rules version 2;
service cloud.firestore {
match /databases/{database}/documents {
match /tasks/{taskId} {
allow read: if request.auth != null;
allow write: if request.auth.uid == resource.data.ownerId;
}
}
}
「firebase」を使用しています。 ルームとメッセージを伴うチャットアプリケーションをFirestoreでどのようにモデル化すればよいですか?
期待される結果:
推奨構造:
- rooms/{roomId}: { name, createdAt, memberIds[] }
- rooms/{roomId}/messages/{messageId}: { text, senderId, sentAt }
主要な決定事項:
1. サブコレクションによりルームドキュメントを小さく保つ
2. 権限チェックのためにmemberIdsを非正規化
3. 順序付けにはドキュメントIDではなくsentAtを使用
セキュリティ監査
安全Static analysis flagged external_commands and weak_crypto patterns, but manual review confirms these are false positives. The backtick syntax on line 57 is markdown code formatting, not shell execution. The cryptographic algorithm flags on lines 3, 15, 39, 45, 60 are triggered by generic words like 'security' and 'design', not actual weak crypto usage. This is a legitimate Firebase development skill with no security issues.
中リスクの問題 (2)
品質スコア
作れるもの
新しいFirestoreデータベースを保護する
適切な読み取り/書き込み権限を持つユーザ所有のデータコレクションの本番環境対応セキュリティルールを生成する
ソーシャルアプリデータをモデル化する
投稿、コメント、いいねを含むソーシャルフィードのFirestoreコレクションとクエリを設計する
ローカル開発環境を設定する
Firebaseエミュレータを設定して、本番環境にデプロイせずにAuth、Firestore、Functionsをテストする
これらのプロンプトを試す
usersというコレクションのFirestoreセキュリティルールを生成してください。ユーザーは自分のドキュメントのみを読み取りおよび書き込みできます
投稿、コメント、いいねを含むブログのFirestoreデータモデルを設計してください。コレクション構造とドキュメントの例を示してください
Authenticationで新しいユーザーが作成されたときにトリガーされ、Firestoreにデフォルトのプレゼンスドキュメントを作成するFirebase Cloud Functionsを作成してください
このFirestoreクエリパターンを確認し、読み取りコストを削減するための最適化を提案してください:collection('posts').where('author', '==', userId).get()ベストプラクティス
- 常にリレーションシップではなくクエリパターンに基づいてデータモデルを設計してください
- 本番環境のコレクションにデプロイする前にセキュリティルールを書いてください
- すべての開発とCIテストにFirebaseエミュレータを使用してください
回避
- クライアント側の検証のみに依存してセキュリティルールをスキップする
- 深いネストを持つリレーショナルデータベースのようにFirestoreをモデル化する
- ページネーションや制限なしにコレクション全体に特_listenerをアタッチする