Snowflake開発の「コピペ地獄」を脱出!Git Integrationで試す「Snowsight vs VS Code」
🥶 Frosty Fridayで感じた「コピペ地獄」
最近、Snowflakeの実践的なスキルアップのために Frosty Friday に取り組んでいます。
課題自体は非常に面白く勉強になるのですが、回を重ねるごとに ある「面倒な作業」 にストレスを感じるようになりました。
私の普段の作業フローはこうです。
- Snowsight (ブラウザ) で試行錯誤しながらSQLを作成・実行する。
- 完成したクエリをコピーして、ローカルPCのテキストファイルに貼り付ける。
- VS Code を開き、GitHubへCommit & Pushする。
「...なんで毎回コピペしてるんだっけ?」
SnowsightのUIは優秀でSQLが書きやすい。でも、コード管理はGitHubでやりたい。
その板挟みで発生する 「SQLの手動コピペリレー」 。
これをどうにかして自動化・効率化できないか?
そこで今回は、この状況を打破するために、以下の2つのアプローチを試してみました。
- SnowsightからGitを直接操作する(Workspaces機能)
- 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操作が可能になります。
手順と使用感
- Snowsightの左メニュー 「Projects」 > 「Workspaces」 へ移動。
- 「+ New Workspace」 > 「From Git Repository」 を選択。
- 設定画面では以下のように入力します。
- Repository URL: GitHubのリポジトリURLを入力
-
API Integration: 先ほど作成した
my_git_api_integrationを選択 - (GitHubの場合はOAuth認証を選択することも可能です)
- すると、ブラウザ上にVS Codeライクなエディタが立ち上がり、GitHubのファイルツリーが表示されます。
ここが良かった!
- 画面遷移ゼロ: SQLを書いて実行し、そのまま画面内のGitタブから「Commit & Push」ができます。
- 環境構築不要: ブラウザさえあれば、どこからでも同じ開発環境にアクセスできます。
「Frosty Fridayの回答を書いて、そのままPush」というフローが、Snowsightだけで完結するようになりました。
実際の設定後の画面(Github連携が出来ています!):

🅱️ パターン2: VS CodeからSnowflakeに繋ぐ (Extension)
「いや、普段使い慣れたVS Codeのエディタ機能(ショートカットやCopilot)を手放したくない!」という場合のアプローチです。
公式VS Code拡張機能 を導入します。
手順と使用感
- VS Codeのマーケットプレイスで 「Snowflake」 公式拡張機能をインストール。
- サイドバーのSnowflakeアイコンからサインイン(アカウント名、ユーザー、パスワード等を入力)。
- 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