querying-soql について
querying-soql は、Salesforce の SOQL/SOSL クエリを作成・最適化するスキルです。クエリ設計、選択性や安全性の確認を支援し、実行や実装は関連スキルに引き継ぎます。
主な機能
- 01自然言語からのクエリ生成
- 02リレーション・集計クエリのパターン
- 03選択性とパフォーマンスの確認
- 04SOQL/SOSL 構文のガイダンス
- 05セキュリティとガバナ制限への配慮
活用シーン
- 01要件から Salesforce クエリを作成
- 02リレーション・集計クエリの確認
- 03クエリの選択性と安全性の改善
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ forcedotcom/ sf-skills --skill querying-soqlインストール後、Claude Code で/querying-soqlを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
CREDITS.mdREADME.mdassets/aggregate-queries.soqlbasic-queries.soqlbulkified-query-pattern.clsoptimization-patterns.soqlrelationship-queries.soqlselector-class.clsreferences/anti-patterns.mdcli-commands.mdfield-coverage-rules.mdquery-optimization.mdselector-patterns.mdsoql-reference.mdsoql-syntax-reference.mdscripts/post-tool-validate.py詳細
querying-soql:Salesforce SOQL クエリーのエキスパート
ユーザーが SOQL/SOSL の作成や最適化(自然言語からのクエリー生成、リレーションクエリー、集計、クエリープラン分析、Salesforce クエリーのパフォーマンスや安全性の改善)を必要としている場合に、このスキルを使用します。
このスキルが担当するタスク
次の作業には querying-soql を使用します。
.soqlファイル- 自然言語からのクエリー生成
- リレーションクエリーと集計クエリー
- クエリーの最適化と選択性分析
- SOQL/SOSL の構文とガバナ制限を考慮した設計
次の場合は、別のスキルに委任します。
- 大量データ操作を行う → handling-sf-data
- より広範な Apex 実装にクエリーロジックを組み込む → generating-apex
- クエリーの形状ではなくログを使ってデバッグする → debugging-apex-logs
まず確認する必須コンテキスト
次の情報を確認するか、推測します。
- 対象オブジェクト
- 必要な項目
- フィルター条件
- 並べ替え/件数制限の要件
- 表示、自動化、レポート形式の分析、Apex での使用のどれが目的か
- パフォーマンスや選択性がすでに懸念事項となっているか
推奨ワークフロー
1. 最もシンプルで正確なクエリーを生成する
次を優先します。
- 必要な項目のみを指定する
- 明確な WHERE 条件
- 適切な場合は妥当な LIMIT を設定する
- リレーションの階層は必要な深さにとどめる
2. 適切なクエリー形式を選ぶ
| 必要なデータ | デフォルトのパターン |
|---|---|
| 子から親のデータ | 子から親への参照 |
| 親から子のレコード | サブクエリー |
| 件数/ロールアップ | 集計クエリー |
| 関連レコードがある/ないレコード | セミジョイン/アンチジョイン |
| オブジェクトをまたいだテキスト検索 | SOSL |
3. 選択性と安全性を最適化する
次を確認します。
- インデックス付き/選択性の高いフィルター
- 不要な項目がないこと
- 避けられるワイルドカードやスキャン負荷の高いパターンがないこと
- セキュリティ適用に関する要件
4. 必要に応じて実行パスを検証する
ユーザーが実行時の検証を希望する場合は、実行を次に引き継ぎます。
重要なルール
SELECT *のような考え方は決して使わず、必要な項目だけをクエリーします- Apex のコンテキストでは、ループ内でクエリーを実行しないでください
- Apex で後からフィルターするより、SOQL でフィルターすることを優先します
- 不要なレコードを読み込む代わりに、件数やグループ化した概要には集計を使用します
- ワイルドカードの使用は慎重に評価します。先頭のワイルドカードはインデックスの効果を損なうことがよくあります
- クエリーを Apex に組み込む際は、セキュリティモード/項目アクセスの要件を考慮します
出力形式
完了時には、次の順序で報告します。
- クエリーの目的
- 最終的な SOQL/SOSL
- この形式を選んだ理由
- 最適化またはセキュリティに関する注意事項
- 必要に応じた実行の提案
推奨形式 — 正確な構文については references/soql-syntax-reference.md を使用します。
Query goal: <summary>
Query: <soql or sosl>
Design: <relationship / aggregate / filter choices>
Notes: <selectivity, limits, security, governor awareness>
Next step: <run in handling-sf-data or embed in Apex>
スキル間の連携
| 必要な作業 | 委任先 | 理由 |
|---|---|---|
| 組織に対してクエリーを実行する | handling-sf-data | 実行とエクスポート |
| サービス/セレクターにクエリーを組み込む | generating-apex | 実装コンテキスト |
| ログから遅いクエリーの症状を分析する | debugging-apex-logs | 実行時の証拠 |
| クエリーに基づく UI を組み込む | generating-lwc-components | フロントエンドとの統合 |
スコアガイド
| スコア | 意味 |
|---|---|
| 90+ | 本番環境向けに最適化されたクエリー |
| 80–89 | 良好なクエリー。軽微な改善の余地あり |
| 70–79 | 機能するものの、パフォーマンス上の懸念が残る |
| < 70 | 本番環境で使用する前に修正が必要 |
参考ファイル一覧
| ファイル | 読むタイミング |
|---|---|
references/soql-syntax-reference.md | 構文、演算子、日付リテラル、リレーションクエリのパターン |
references/query-optimization.md | 選択性のルール、インデックス戦略、ガバナ制限、セキュリティパターン |
references/soql-reference.md | クイックリファレンス — 演算子、日付関数、集計関数、WITH 句 |
references/anti-patterns.md | よくある SOQL の間違いと修正方法 — クエリを確定する前に必ず読んでください |
references/selector-patterns.md | Apex セレクターレイヤーのパターン — Apex クラスにクエリを埋め込む場合に読んでください |
references/field-coverage-rules.md | フィールドカバレッジの検証 — Apex コード内で使用する SOQL を生成する場合に読んでください |
references/cli-commands.md | sf CLI によるクエリ実行、一括エクスポート、クエリプランのコマンド |
assets/basic-queries.soql | よく使用されるオブジェクト向けの基本的なクエリ例 |
assets/relationship-queries.soql | 親から子および子から親へのリレーションクエリのパターン |
assets/aggregate-queries.soql | COUNT、SUM、GROUP BY、ROLLUP クエリのパターン |
assets/optimization-patterns.soql | 選択的なフィルターとインデックスを考慮したクエリのパターン |
assets/bulkified-query-pattern.cls | トリガーコンテキスト向けの Apex Map ベースの一括クエリパターン |
assets/selector-class.cls | セレクタークラスの完全な実装テンプレート |
scripts/post-tool-validate.py | 書き込み後のフック — .soql ファイルの編集後に静的 SOQL 検証とライブクエリプラン分析を実行します |
コメント
Markdown 対応