AI Session Notes - 2026-03-02
NoSQL データベースの基礎知識
学んだこと
- NoSQL(Not Only SQL)は RDB とは異なるデータモデルを持つデータベースの総称
- 主な種類は4つ:キーバリュー型(Redis, DynamoDB)、ドキュメント型(MongoDB, Firestore)、カラム指向型(Cassandra)、グラフ型(Neo4j)
- RDB との主な違いはスキーマの柔軟性、水平スケーリングのしやすさ、トランザクションモデル(ACID vs BASE)
- RDB の代替ではなく補完的な選択肢("Not Only SQL")
NoSQL マネージドサービスのコスト特性
学んだこと
- DynamoDB や Firestore が安く感じるのは従量課金モデルのため。RDB のマネージドサービス(RDS 等)はインスタンス常時稼働で固定費がかかるが、NoSQL 系はアクセスがなければほぼ $0
- 無料枠が大きい(DynamoDB: 25GB + 月2.5億読み取り、Firestore: 1GB + 日5万読み取り)
- サーバーレス構成(Lambda + DynamoDB、Cloud Functions + Firestore)と組み合わせるとインフラ全体が従量課金になる
- ただしスケールすると意外と高くなる場合がある。特に Firestore は設計が悪いと読み取り回数が爆発するので注意
NoSQL だけでサービスを構築できるか
学んだこと
- NoSQL のみでユーザー向けサービスを構築することは可能(Netflix は Cassandra 中心、Firebase だけの個人開発も多い)
- ただし RDB が得意な領域を捨てる覚悟が必要:
- 複雑な JOIN → アプリケーション側で複数回クエリして結合
- ユニーク制約 → アプリ側でチェックロジックを実装
- 複雑な検索 → Elasticsearch 等の追加が必要
- NoSQL が向くケース:SNS、チャット、ゲームスコアなどリレーションがシンプルなもの
- RDB が欲しくなるケース:EC サイトのような複雑なリレーション、金融・決済の厳密なトランザクション、集計・分析クエリ
NoSQL のローカル開発環境
学んだこと
- DynamoDB も Firestore も公式のローカルエミュレータが提供されている
- DynamoDB Local:
docker run -p 8000:8000 amazon/dynamodb-local で起動し、SDK の endpoint を http://localhost:8000 に向けるだけ
- Firestore Emulator:
firebase emulators:start --only firestore で起動。ブラウザ UI 付き(http://localhost:4000)で他の Firebase サービスもまとめてエミュレート可能
- RDB を Docker で立てるのとほぼ同じ手軽さで使える
- ただしエミュレータは本番と完全に同じ挙動ではない(IAM 認証、スロットリング等は再現されない)。CRUD レベルの開発・テストには十分
NoSQL 入門の学習リソースと進め方
学んだこと
- 初めて NoSQL を触るなら Firestore → DynamoDB の順がスムーズ。DynamoDB はキー設計(パーティションキー・ソートキー)の概念が独特なので、Firestore で NoSQL の感覚を掴んでからの方が理解しやすい
- Google Codelabs はステップ形式のハンズオン学習プラットフォーム。画面右上に推定所要時間が表示され、進捗に応じて残り時間が減る仕組み
- Firebase Emulator Suite の公式 Codelab(約47分)では、エミュレータのセットアップ → アプリ実行 → セキュリティルール作成 → Cloud Functions テストまで段階的に学べる
- Codelab にはソースコードの clone 手順が含まれているため、事前にリポジトリを用意する必要はなく指示に従って進めればよい
Discord vs Slack の Bot 開発比較
学んだこと
- 個人開発・学習目的なら Discord の方がとっつきやすい
- テスト環境のハードルがゼロ(自分で Discord サーバーを作って Bot を招待するだけ)
- 認証がシンプル(トークン1つで動く)
- 全機能が無料で使える
- Slack は手順が多い(App 作成 → スコープ設定 → OAuth 認証 → ワークスペースにインストール)
- 無料プランだとメッセージ履歴90日などの制限あり
- テスト用ワークスペースの用意も必要
- 主要ライブラリ:Discord は discord.js / discord.py、Slack は公式の Bolt(JS/Python/Java)
- リアルタイム通信の違い:Discord は WebSocket がデフォルト(常時接続)、Slack はイベント API(HTTP)が基本で Socket Mode は追加設定が必要
- 使い分けの指針:「Bot 開発を学びたい」なら Discord、「業務ツール連携・ワークフロー自動化」なら Slack
参考リンク
メタ情報
- ツール: Claude Code
- 関連技術: NoSQL, DynamoDB, Firestore, AWS, GCP, Firebase, Docker, Google Codelabs, Discord Bot, Slack Bot