❄️

Snowflake開発の「コピペ地獄」を脱出!Git Integrationで試す「Snowsight vs VS Code」

に公開

🥶 Frosty Fridayで感じた「コピペ地獄」

最近、Snowflakeの実践的なスキルアップのために Frosty Friday に取り組んでいます。

課題自体は非常に面白く勉強になるのですが、回を重ねるごとに ある「面倒な作業」 にストレスを感じるようになりました。

私の普段の作業フローはこうです。

  1. Snowsight (ブラウザ) で試行錯誤しながらSQLを作成・実行する。
  2. 完成したクエリをコピーして、ローカルPCのテキストファイルに貼り付ける。
  3. VS Code を開き、GitHubへCommit & Pushする。

「...なんで毎回コピペしてるんだっけ?」

SnowsightのUIは優秀でSQLが書きやすい。でも、コード管理はGitHubでやりたい。
その板挟みで発生する 「SQLの手動コピペリレー」
これをどうにかして自動化・効率化できないか?

そこで今回は、この状況を打破するために、以下の2つのアプローチを試してみました。

  1. SnowsightからGitを直接操作する(Workspaces機能)
  2. VS CodeからSnowflakeを直接操作する(VS Code Extension)

🐙 前提:Snowflake Git Integration とは?

どちらのアプローチを取るにせよ、まずは 「SnowflakeとGitHubを接続する」 設定が必要です。
これを実現するのが Git Integration 機能です。

これまでは、GitにあるSQLを実行するには「ローカルに落としてコピペ」が必要でしたが、この機能を使えば、Snowflakeが GitHub上のファイルを直接参照・実行 できるようになります。

🛠️ 準備編:SnowflakeとGitHubを繋ぐ

まずは共通の下準備として、Snowflake側に「Gitリポジトリ」を認識させます。
(今回は、GitHubのプライベートリポジトリを想定します)

1. シークレットを作成

まず、GitHubにアクセスするための認証情報をSnowflakeに登録します。
ここで登場するのが SECRET(シークレット) というオブジェクトです。

今回は、GitHubで発行した Personal Access Token (PAT) をシークレットに格納します。

-- GitHubのアクセストークンを格納
CREATE OR REPLACE SECRET my_github_token
    TYPE = PASSWORD
    USERNAME = 'my_github_username'
    PASSWORD = 'ghp_xxxxxxxxxxxxxxxxx'; -- ここにPATを入れる

2. API統合を作成

SnowflakeとGitHubを繋ぐ「架け橋(API Integration)」を作ります。
ここで、先ほど作成した SECRET の使用を許可します。

-- API統合を作成
CREATE OR REPLACE API INTEGRATION my_git_api_integration
    API_PROVIDER = git_https_api
    API_ALLOWED_PREFIXES = ('https://github.com/my-org') -- 組織やユーザーのURL
    ALLOWED_AUTHENTICATION_SECRETS = (my_github_token) -- ★ここでSECRETを使用
    ENABLED = TRUE;

3. Gitリポジトリ・オブジェクトを作成

いよいよ、Snowflakeの中に「リポジトリ」を定義します。
このオブジェクトは、後述する デプロイ(EXECUTE IMMEDIATE) の際に使用します。

-- Gitリポジトリを作成
CREATE OR REPLACE GIT REPOSITORY my_repo
    API_INTEGRATION = my_git_api_integration
    GIT_CREDENTIALS = my_github_token -- ★重要:プライベートリポジトリの場合は必須
    ORIGIN = 'https://github.com/my-org/my-project-repo.git'; -- リポジトリURL

準備はこれだけです。
ここから、私が試した2つの改善パターンを紹介します。

🅰️ パターン1: SnowsightでGitを見る (Workspaces)

「SQLを書くなら、やっぱり補完も優秀なSnowsightのUIがいい!」という場合のアプローチです。
Snowflakeの Workspaces 機能を使うと、Snowsight上でGit操作が可能になります。

手順と使用感

  1. Snowsightの左メニュー 「Projects」 > 「Workspaces」 へ移動。
  2. 「+ New Workspace」 > 「From Git Repository」 を選択。
  3. 設定画面では以下のように入力します。
    • Repository URL: GitHubのリポジトリURLを入力
    • API Integration: 先ほど作成した my_git_api_integration を選択
    • (GitHubの場合はOAuth認証を選択することも可能です)
  4. すると、ブラウザ上にVS Codeライクなエディタが立ち上がり、GitHubのファイルツリーが表示されます。

ここが良かった!

  • 画面遷移ゼロ: SQLを書いて実行し、そのまま画面内のGitタブから「Commit & Push」ができます。
  • 環境構築不要: ブラウザさえあれば、どこからでも同じ開発環境にアクセスできます。

「Frosty Fridayの回答を書いて、そのままPush」というフローが、Snowsightだけで完結するようになりました。

実際の設定後の画面(Github連携が出来ています!):

🅱️ パターン2: VS CodeからSnowflakeに繋ぐ (Extension)

「いや、普段使い慣れたVS Codeのエディタ機能(ショートカットやCopilot)を手放したくない!」という場合のアプローチです。
公式VS Code拡張機能 を導入します。

手順と使用感

  1. VS Codeのマーケットプレイスで 「Snowflake」 公式拡張機能をインストール。
  2. サイドバーのSnowflakeアイコンからサインイン(アカウント名、ユーザー、パスワード等を入力)。
  3. SQLファイルを作成し、Cmd + Enter (Mac) / Ctrl + Enter (Win) でクエリを実行。

ここが良かった!

  • 最強のエディタ機能: マルチカーソルや置換、Copilotなど、VS Codeの強力な機能をそのままSQL記述に使えます。
  • Git操作が慣れた手つきで: VS Code標準のGit機能を使えるので、ブランチ操作やDiff確認がスムーズです。

結果ウィンドウも見やすく、クエリ履歴やオブジェクトブラウザもVS Code内に統合されているため、「開発(Coding)」においてはSnowsightを開く必要がない レベルまで作り込まれています。
(※ダッシュボードやグラフ可視化などを行いたい場合は、Snowsightの方が適しています)

実際の設定後の画面(VSCode上からSnowflakeに接続をしてSQLが実行できています!):

🚀 結論:どっちがおすすめ?

両方試してみた結果、それぞれのスタイルに合わせて使い分けるのが良さそうです。

  • Snowsight (Workspaces) がおすすめな人

    • 手軽に始めたい。
    • PCに依存せず、ブラウザだけで完結させたい。
    • Snowflake特有の可視化機能やデータプレビューを重視する。
  • VS Code (Extension) がおすすめな人

    • エディタのカスタマイズ(テーマ、キーバインド)にこだわりがある。
    • GitHub CopilotなどのAI支援をフル活用したい。
    • Pythonやdbtなど、SQL以外のコードも同じプロジェクトで管理している。

私の場合、今後Frosty Fridayは VS Code 取り組んでいく形に落ち着きそうです!

⚡ おまけ:本番デプロイはコマンド一発

どちらの方法で開発しても、コードはGitHubに集約されます。
本番環境へ適用(デプロイ)する際は、Snowflake上から以下のコマンドを実行するだけです。
ここで、準備編で作った my_repo オブジェクトが活躍します。

-- 1. 最新のコードをGitHubから取得
ALTER GIT REPOSITORY my_repo FETCH;

-- 2. リポジトリ内のファイルを直接実行!
EXECUTE IMMEDIATE FROM @my_repo/branches/main/scripts/deploy.sql;

これで、「コピペミスで古いSQLを実行してしまった…」という事故ともおさらばです。

😌 おわりに

「Frosty Fridayの回答をGitにあげるのが面倒くさい」
そんな些細なストレスから始まった検証でしたが、結果として Snowflake Git Integration の便利さに気付くことができました。

「手動コピペ」という トイル(労苦) をなくすことは、DevOpsの第一歩です。
みなさんも、ご自身の開発スタイルに合わせて、
「ブラウザでGit」「エディタでSnowflake」 か、
ぜひ試してみてください!

📚 参考出典

Discussion