INTAGE TECH
❄️

Cortex Codeを組織で活用する際のポイント

に公開

はじめに

こんにちは!インテージの児玉です。

AIエージェントの技術進化が加速するなか、Snowflakeからも待望のAIエージェントとして 「Cortex Code」 が登場しました。

Cortex Codeは、個人の開発体験を劇的に向上させますが、組織の開発フローに組み込む際には、以下の観点が重要になります。

  • 自律実行の安全性担保と実行プロセスの透明化
  • エージェントへのドメイン知識や開発規律の反映

本記事では、私自身が感じたCortex Codeを組織で活用する際のポイントを紹介します。

Cortex Code とは

Cortex Codeは、Snowflakeにネイティブ統合された AI コーディングエージェントです。
環境内のオブジェクトを直接参照し、広範なタスクを自然言語で円滑に実行できるのが特徴です。

利用形態は、用途に合わせて以下の2種類が提供されています。

  • Snowsight版: ブラウザ上の Snowflake Workspaces に統合された直感的な Web UI
  • CLI版: ローカルの開発環境やターミナルから直接操作可能な、開発者向けインターフェース

https://docs.snowflake.com/ja/user-guide/cortex-code/cortex-code

また、他のAIエージェントと比較した特徴として、以下の4点が挙げられます。

以降のセクションでは、組織としてCortex Codeを活用する際の4つの要点を解説します。

①:ガバナンス設計とコスト制御

AIエージェントを実業務に活用する際、以下の2点が大きな課題になります。

  • データガバナンスの確保
    AIエージェントによる意図しないデータ参照や、誤った処理をいかに制御するか

  • 発生コストの高騰
    LLMへの大量リクエストや、ウェアハウスの過剰稼働によるコスト増大をいかに防ぐか

これらに対して、RBACやリソースモニターを活用することで、安全な運用が可能になります。

RBAC による権限管理

エージェントの操作範囲を最小化しながら、安全に運用するため、以下の階層構造に基づく設計を推奨します。

設計上のポイントは以下の3点です。

  • CORTEX_AGENT_USER の公開範囲を制限
    デフォルトのPUBLICロールから、SNOWFLAKE.CORTEX_AGENT_USER権限を剥奪
    特定ロールに権限を限定し、エージェントが操作可能なオブジェクトや利用ユーザーを制限

  • RBACに準拠したデータ探索範囲の厳格化
    エージェントが参照可能なデータセットを、RBACの枠組みで最小限に限定
    意図しないオブジェクト参照や誤操作を未然に防止

  • セカンダリーロールの無効化
    セカンダリーロールの有効化はロール境界の曖昧化を招くため、原則として無効化

実際のDDL例
-- ① ロール作成
USE ROLE USERADMIN;

CREATE ROLE IF NOT EXISTS [Access Role];
CREATE ROLE IF NOT EXISTS [Functional Role];

-- ② ロール階層の設定
USE ROLE SECURITYADMIN;

GRANT ROLE [Functional Role] TO ROLE SYSADMIN;
GRANT ROLE [Access Role] TO ROLE [Functional Role];
GRANT ROLE [Functional Role] TO USER [USER];

-- ③ オブジェクト権限の集約
USE ROLE SYSADMIN;

GRANT USAGE, MONITOR ON DATABASE [Database] TO ROLE [Access Role];
GRANT ALL ON ALL TABLES   IN DATABASE [Database] TO ROLE [Access Role];
-- ... VIEW / SCHEMA / STAGE など同様

-- ④ Cortex Code利用権限の付与
USE ROLE SECURITYADMIN;

REVOKE DATABASE ROLE SNOWFLAKE.CORTEX_AGENT_USER FROM ROLE PUBLIC;
GRANT DATABASE ROLE SNOWFLAKE.CORTEX_AGENT_USER TO ROLE [Functional Role];

リソースモニター によるコスト制御

Cortex Codeの利用料は、推論クレジット量とコンピューティングコストで主に構成されます。
これらは、以下の方法でそれぞれ制御が可能です。

  • Cortex Codeの推論クレジット制御[3]
    専用パラメータ(CORTEX_CODE_*_DAILY_EST_CREDIT_LIMIT_PER_USER )で、CLI/Snowsightごとに「アカウント/1ユーザーあたり推論トークンの利用上限」を日次で制御
  • コンピューティングコスト制御(ウェアハウス利用)[4]
    Resource Monitor の CREDIT_QUOTA を活用し、AIが発行したクエリ等による「ウェアハウスのコンピュート消費」を自動でモニタリング・制限
実際のDDL例
-- ① Cortex Codeの推論クレジット制御
USE ROLE ACCOUNTADMIN;

-- CLI版(アカウントレベルの制限例)
ALTER ACCOUNT SET CORTEX_CODE_CLI_DAILY_EST_CREDIT_LIMIT_PER_USER       = xx;
-- Snowsight版(アカウントレベルの制限例)
ALTER ACCOUNT SET CORTEX_CODE_SNOWSIGHT_DAILY_EST_CREDIT_LIMIT_PER_USER = xx;

-- ② コンピューティングコスト制御(ウェアハウス利用)
USE ROLE ACCOUNTADMIN;

CREATE RESOURCE MONITOR IF NOT EXISTS [Resource Monitor]
    WITH CREDIT_QUOTA    = xx
         FREQUENCY       = DAILY
         START_TIMESTAMP = IMMEDIATELY
         TRIGGERS
             ON xx PERCENT DO NOTIFY
             ON xx PERCENT DO SUSPEND
             ON xx PERCENT DO SUSPEND_IMMEDIATE;

ALTER WAREHOUSE [Warehouse] SET RESOURCE_MONITOR = [Resource Monitor];

②:AIエージェントの拡張と規律定義

AIエージェントの業務活用において、「組織独自の規律(ルール・基準)の浸透」と「プロジェクト固有のドメイン知識による拡張」 が重要になります。
これらをエージェントへ組み込むことで、属人性を排除しながら、組織としての開発基準を揃えることが可能になります。

Cortex Code 拡張機能と活用用途

Cortex Codeには、これらを具体化するための拡張機能が備わっています。

拡張機能 主な役割・活用用途
AGENTS.md エージェントへのプロジェクト基本ルールの連携
プロジェクトの全体像、AIの基本的な振る舞いを定義
Skills 定型タスクのパッケージ化
独自の専門知識や複雑なワークフローを再利用可能な形で整備
データプロファイリングやdbt操作などの複雑なタスクを自律化
Subagents マルチエージェントによる効率的な分業
レビューやリファクタリングなどの特定領域に特化したエージェントを構築
並列処理・協調動作により、高度な開発体制を実現
Hooks 動的ガードレールの設置
出力内容の検証や禁止操作の遮断など、強制力を持つガードレールを設置可能
MCP 外部システムとのセキュアな連携
Snowflake外のツールやデータとの連携操作を、安全な環境下で実現

https://docs.snowflake.com/en/user-guide/cortex-code/extensibility

プロジェクトルールの適用例

AGENTS.mdの整備を通じて、組織独自の開発規律をエージェントに反映可能です。
組織のコード規約や開発ルールが適用され、出力の一貫性と品質を安定して再現できます。

プロンプト例

売上データを主軸に、メディア投資額と販促フラグを日付キーで外部結合し、欠損値を0補完した分析用マートを作成。また、実際のDDLをddl/配下に出力してください。

アウトプット例(整備前)
USE ROLE [FUNCTIONAL ROLE];
USE WAREHOUSE [WAREHOUSE];

CREATE OR REPLACE TABLE [DATABASE].[SCHEMA].MART_SALES_MEDIA_PROMO
  COMMENT = '分析用マート:売上を主軸にメディア投資額・販促フラグをDSで外部結合(欠損値0補完)'
AS
SELECT
    s.DS,
    s.SALES,
    COALESCE(ma.MEDIA_A, 0) AS MEDIA_A,
    COALESCE(mb.MEDIA_B, 0) AS MEDIA_B,
    COALESCE(mc.MEDIA_C, 0) AS MEDIA_C,
    COALESCE(p.PROMO_X, 0)  AS PROMO_X
FROM [DATABASE].[SCHEMA].STG_SALES       AS s
LEFT OUTER JOIN [DATABASE].[SCHEMA].STG_MEDIA_A    AS ma ON s.DS = ma.DS
LEFT OUTER JOIN [DATABASE].[SCHEMA].STG_MEDIA_B    AS mb ON s.DS = mb.DS
LEFT OUTER JOIN [DATABASE].[SCHEMA].STG_MEDIA_C    AS mc ON s.DS = mc.DS
LEFT OUTER JOIN [DATABASE].[SCHEMA].STG_PROMOTIONS AS p  ON s.DS = p.DS
ORDER BY s.DS;
アウトプット例(整備後)
-- ============================================================
-- 04_create_mart.sql  分析用マート(MRT_SALES_MEDIA_PROMO)作成
-- ------------------------------------------------------------
-- 概要          : 売上データ(STG_SALES)を主軸に、メディア投資額
--                 (STG_MEDIA_A/B/C)と販促フラグ(STG_PROMOTIONS)を
--                 日付キー DS で LEFT JOIN し、欠損値を 0 で補完した
--                 分析用マート MRT_SALES_MEDIA_PROMO を作成する。
-- ============================================================

-- ============================================================
-- 1. 変数定義・初期設定
-- ============================================================
SET DB   = [DATABASE];
SET SC   = [SCHEMA];
SET ROLE = [FUNCTIONAL ROLE];
SET WH   = [WAREHOUSE];

USE ROLE IDENTIFIER($ROLE);
USE WAREHOUSE IDENTIFIER($WH);
USE DATABASE IDENTIFIER($DB);
USE SCHEMA IDENTIFIER($SC);

-- ============================================================
-- 2. 分析用マート作成
--    ※ 売上データ(STG_SALES)を主軸に、メディア投資額
--      (STG_MEDIA_A/B/C)と販促フラグ(STG_PROMOTIONS)を
--      日付キー DS で LEFT JOIN し、欠損値を 0 で補完
-- ============================================================
CREATE OR REPLACE TABLE MRT_SALES_MEDIA_PROMO (
    DS      DATE          COMMENT '週開始日(月曜)',
    SALES   NUMBER(38, 0) COMMENT '売上金額(円)',
    MEDIA_A NUMBER(38, 0) COMMENT 'メディアA 週次投資金額(円)',
    MEDIA_B NUMBER(38, 0) COMMENT 'メディアB 週次投資金額(円)',
    MEDIA_C NUMBER(38, 0) COMMENT 'メディアC 週次投資金額(円)',
    PROMO_X NUMBER(38, 0) COMMENT '販促施策X 実施フラグ(0/1)'
)
COMMENT            = '分析用マート:売上を主軸にメディア投資額・販促フラグを DS で外部結合(欠損値 0 補完)'
DATA_RETENTION_TIME_IN_DAYS = 1
AS
SELECT
    s.DS,
    s.SALES,
    COALESCE(ma.MEDIA_A, 0) AS MEDIA_A,
    COALESCE(mb.MEDIA_B, 0) AS MEDIA_B,
    COALESCE(mc.MEDIA_C, 0) AS MEDIA_C,
    COALESCE(p.PROMO_X, 0)  AS PROMO_X
FROM STG_SALES       AS s
LEFT JOIN STG_MEDIA_A      AS ma ON s.DS = ma.DS
LEFT JOIN STG_MEDIA_B      AS mb ON s.DS = mb.DS
LEFT JOIN STG_MEDIA_C      AS mc ON s.DS = mc.DS
LEFT JOIN STG_PROMOTIONS   AS p  ON s.DS = p.DS
ORDER BY s.DS;

③:Skills活用による定型タスクのパッケージ化

Skillsとは、一連の作業プロセスを再利用可能な形式でパッケージ化する仕組みです。
スラッシュコマンドでの実行はもちろん、会話の内容からエージェントが最適なスキルを自律的に判断・実行し、誰でも同じ水準の出力が再現可能になります。

バンドルスキルの利用

Cortex Code CLI には、一般的なSnowflakeワークフローの組み込みスキル(バンドルスキル)が用意されています。[5]
これらはインストールや初期設定が不要で、即座に利用可能です。

# 利用可能なスキル一覧を確認する
$ /skill


/skillコマンドによる確認結果

例えば、特定のテーブルに対して詳細なデータプロファイリングを行う/data:profiling-tablesスキルを実行すると、自動的にスキーマの解析や統計情報の抽出が行われます。

# データプロファイリングスキルの起動
$ /data:profiling-tables


実行結果①: 解析プロセスの開始


実行結果②: 詳細な統計情報の出力

カスタムスキルの利用

業務固有のドメイン知識を反映させたい場合や、独自のワークフローを自動化したい場合には、カスタムスキルが有効です。

例として、/profiling-timeseriesという「時系列データを調査し、レポートと可視化画像を生成する」サンプルスキルを作成します。

/profiling-timeseriesのワークフロー

カスタムスキルとして定義することで、専門的な分析手順がパッケージ化され、以下の実行結果を引き出せます。


実行結果①: 対象テーブルの選択


実行結果②: 分析・レポート結果の出力


実行結果③: 成果物の出力

このように、一連のワークフローを「スキル」として定義することで、個人の暗黙知に依存していたプロセスを組織の「共通資産」へと昇華できます。
個人の専門性に左右されない品質の安定化と、誰でも同等の成果を得られる再現性を実現します。

④:プランモード による安全な実行制御

AIエージェントの自律実行は、高い生産性をもたらす一方、内部プロセスがブラックボックス化しやすく、意図しない変更や手戻りが発生するリスクがあります。

プランモードは、エージェントが実動作前に 「実行計画(どのような順序で、何を行うのか)」を整理したうえでユーザーに提示し、承認を受けてから実行する 仕組みです。[7]
人間のレビューを介在することで、実行内容へのガバナンスと透明性を担保します。

プランモードの具体例

複数ステップが必要なタスクを一例に、プランモードの挙動を確認します。


プロンプトでの作業依頼内容

プランモードを有効にすると、エージェントは即座に実行に移るのではなく、まず不足情報の確認や前提条件の整理を行います。
そのうえで、具体的なアクションをステップごとに整理した「実行計画」を提示し、ユーザーの明示的な承認を待機します。


提示された実行計画

プランモードは、計画の承認プロセスの介在により、解釈の齟齬による誤操作を防止できます。
また、Snowflakeの推奨設計に準拠した実行計画のレビューは、最適な実装手順を学ぶ学習材料としても機能し、組織の教育効果も期待できます。

まとめ

本記事では、Cortex Codeを組織として導入・活用するための4つの要点を解説しました。

Cortex Codeが持つ Snowflakeネイティブな信頼性 を土台に、「組織利用の安全性確保」と「開発水準の引き上げ」 を実現するためのポイントが、冒頭で掲げた2つの観点になります。

  • 自律実行の安全性担保と実行プロセスの透明化
    RBAC制御やコスト制限による安全性確保と、プランモードによる実行プロセスの可視化

  • エージェントへのドメイン知識や開発規律の反映
    AGENTS.mdやSkillsによる、組織規律やノウハウの組み込みと、属人性を排除した品質確保

本記事が、皆さまの組織におけるCortex Code活用の一助となれば幸いです。

脚注
  1. ADE-Bench Benchmark Results ↩︎

  2. Cortex Code内での利用に加えて、Claude Codeからも公式プラグインとして呼び出し可能に ↩︎

  3. Cortex Codeのコスト制御 ↩︎

  4. リソースモニターの操作 ↩︎

  5. Cortex Code CLI bundled skills ↩︎

  6. Cortex Code Remote Skills ↩︎

  7. Snowsight版 Cortex Codeでもプランモードが解禁 ↩︎

INTAGE TECH
INTAGE TECH

Discussion