Re: B-146調査依頼: SQLチートシートの実装調査
B-146 SQLチートシート実装調査レポート
1. 既存チートシート実装パターンの確認
ファイル構成
既存チートシートは以下の2ファイル構成で統一されています。
- src/cheatsheets/{slug}/meta.ts — メタ情報定義
- src/cheatsheets/{slug}/Component.tsx — JSXで書いたコンテンツ本体
新規追加時は src/cheatsheets/registry.ts にエントリを追加するだけで自動的に一覧・個別ページに反映されます。
Component.tsx のパターン
- セクションは section タグ + h2 id="{section-id}" で構成
- コードブロックは CodeBlock language="sql" code={...} コンポーネントを使用
- 説明文は p タグ、表形式データは table タグを使用(HTTPステータスコードがテーブル例)
- Gitチートシートがコードブロック中心、HTTPステータスコードがテーブル中心の2スタイルが存在
meta.ts の必須フィールド
- slug, name, nameEn, description, shortDescription
- keywords — SEOキーワード配列
- category — "developer" | "writing" | "devops"(SQLは "developer" が適切)
- sections — 目次用セクション配列(id + title)
- publishedAt, trustLevel(SQLは "curated")
- valueProposition — 一行価値テキスト(40字以内推奨)
- relatedCheatsheetSlugs — 関連チートシートへのリンク
- faq — よくある質問3件程度
- usageExample — 利用シーンと得られる情報の例
既存チートシート一覧(参考)
- regex(developer)、git(devops)、markdown(writing)、http-status-codes(developer)、cron(devops)
2. SQLチートシートとして収録すべきSQL文の選定基準と分類方法
選定基準
競合サイトの調査(GeeksforGeeks、LearnSQL、Guru99、Laplamonなど)と日本語サイト(Qiita、note、fuwa.devなど)を比較した結果、以下の基準を推奨します。
収録する基準:
- Web開発者が実務で頻繁に使うSQL文(データ取得・操作の中核)
- 書き方を忘れやすく、リファレンスとして参照価値が高いもの
- 記述の間違いが起きやすい構文(JOIN、GROUP BY + HAVING など)
収録しない基準:
- データベース管理者向けの権限管理(GRANT、REVOKEなど)
- 特定DBMSに依存した方言(ストアドプロシージャ、トリガーなど)
- パフォーマンスチューニング(EXPLAIN等)— 初版では対象外
推奨セクション分類(8セクション)
Section ID: basics / Title: 基本のSELECT文 / 主なSQL文: SELECT, FROM, WHERE, LIMIT, OFFSET Section ID: filtering / Title: 絞り込み・条件指定 / 主なSQL文: AND/OR/NOT, LIKE, IN, BETWEEN, IS NULL, ORDER BY Section ID: aggregation / Title: 集計・グループ化 / 主なSQL文: COUNT, SUM, AVG, MIN, MAX, GROUP BY, HAVING Section ID: joins / Title: テーブル結合 / 主なSQL文: INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN Section ID: subqueries / Title: サブクエリ / 主なSQL文: IN句内サブクエリ、相関サブクエリ Section ID: set-operations / Title: 集合演算 / 主なSQL文: UNION, UNION ALL, INTERSECT, EXCEPT Section ID: data-manipulation / Title: データ操作(DML) / 主なSQL文: INSERT, UPDATE, DELETE Section ID: schema / Title: テーブル定義(DDL) / 主なSQL文: CREATE TABLE, ALTER TABLE, DROP TABLE, 主要データ型
この8セクション構成は、既存Gitチートシート(8セクション)と同規模で統一感があります。
3. 想定読者と情報量・難易度の調整
主想定読者
Web開発者(初〜中級) — バックエンドAPIからRDBにアクセスする実装者。ORMを使っていてSQLを書く機会が減ったが、デバッグや最適化時に必要になる層。 データ分析入門者 — CSVの代わりにSQLで集計する入門段階。Excelからの移行者など。
難易度調整方針
- 基本〜中級に絞る:ストアドプロシージャ、トリガー、ウィンドウ関数(ROW_NUMBER等)は対象外
- 実用例優先:抽象的な構文説明より、users/ordersなど想像しやすいテーブルを使った具体例を優先
- 方言の注意点を最小限に明示:MySQL/PostgreSQL共通を基本とし、差異がある箇所にコメントで補足(例:LIMIT vs TOP、FULL OUTER JOINのMySQL不在など)
- コードブロック中心:Gitチートシートのスタイルを踏襲し、各構文は実行可能な例をコードブロックで提示
- 説明文は簡潔に:各セクション冒頭の説明は1〜2文程度。Gitチートシートと同等の密度
4. 競合サイトのSQLチートシート構成調査と効果的な情報構成の提案
競合構成サマリー
GeeksforGeeks(英語・網羅型) 16セクション・70以上のSQL操作を網羅。DDL/DML/DCL/TCL全域をカバーする辞書的構成。初心者には情報過多で、チートシートとしての即時参照性が低い。
LearnSQL(英語・初心者向け) 7セクション。単一テーブルクエリ→フィルタリング→JOIN→集計→サブクエリ→集合演算の学習順序に対応した構成。即時参照よりも学習用途に最適化。
CockroachDB(英語・開発者向け) 5セクション。Getting Started→データ操作→インデックス→管理の流れ。開発者の業務フローに対応したシンプルな構成。
Laplace-daemon(日本語・基本編) 8セクション。SELECT中心でHAVINGまで丁寧に解説。INSERT/UPDATE/DELETEも含む。具体例付きでわかりやすいが、JOINやサブクエリが弱い。
fuwa.dev(日本語・実践型) コンパクトな構成。MySQL/MariaDB固有操作も含み、実務参照向き。
Qiita(日本語・記述順と実行順) SQLの記述順序と実行順序の違いを明示している点が独自の強み。GROUP BY + HAVING の正しい理解を促す構成。
効果的な情報構成の提案
以下の3つの工夫で既存サイトと差別化できます。
工夫1: SQLの記述順と実行順を冒頭で明示 SQLは書く順序(SELECT→FROM→WHERE→GROUP BY→HAVING→ORDER BY→LIMIT)と実行される順序(FROM→WHERE→GROUP BY→HAVING→SELECT→ORDER BY→LIMIT)が異なります。この説明を「基本のSELECT文」セクションの冒頭に置くと、初心者が躓きやすいHAVINGとWHEREの違いなどへの理解が深まります。日本語競合サイトでは数少ない強化ポイントです。
工夫2: JOINはベン図的な説明テキスト+コード例 JOINセクションでは各結合タイプの特性をコメントで明記したコードブロックを用意することで、どのJOINを使えばよいか迷うWeb開発者の実務ニーズに直結します。
工夫3: users/orders/products の統一テーブル例 全セクションを通じてusers, orders, productsという共通テーブルを前提にした例を使うことで、セクション間の一貫性が高まり、読者が各構文を組み合わせた理解を深めやすくなります。
関連ツール候補
実装時に relatedToolSlugs に設定する関連ツールとして、将来的に「SQL整形ツール」などが追加されれば連携できます。現時点では空配列で問題ありません。
関連チートシート候補
- regex(SQLのLIKEやREGEXPとの関連)
- http-status-codes(APIとDBの組み合わせ)
まとめ
SQLチートシートは「developer」カテゴリ、8セクション構成(basics / filtering / aggregation / joins / subqueries / set-operations / data-manipulation / schema)での実装を推奨します。対象読者はWeb開発者・データ分析入門者で、基本〜中級の範囲に絞った実用的な構成が適切です。既存チートシートの実装パターン(meta.ts + Component.tsx の2ファイル構成)に従って実装できます。
参考資料(調査時に確認したサイト):
- https://www.geeksforgeeks.org/sql/sql-cheat-sheet/
- https://learnsql.com/blog/sql-basics-cheat-sheet/
- https://www.cockroachlabs.com/blog/sql-cheat-sheet/
- https://laplace-daemon.com/sql-cheat-sheet/
- https://fuwa.dev/cheatsheet/sql/
- https://qiita.com/riita10069/items/f2df509c31d89eeed36e
- https://note.com/natori_dev/n/nec78a3cff6fc
- https://www.guru99.com/sql-cheat-sheet.html