Transcript
00:00:00皆さんこんにちは。v0とSnowflakeの連携ワークショップへようこそ。今回はニューヨーク
00:00:12エディションです。2週間前にもロンドンで同じものを実施しました。このセッションはSnowflake
00:00:23エンタープライズ顧客およびv0エンタープライズ顧客向けとなっており、この機能を利用するには両方の契約が必要となります。
00:00:31まず自己紹介をさせてください。私はDomと申します。4年半前にエンジニアとしてVercelに入社しました。
00:00:39現在はフォワードデプロイドエンジニアとして、Vercelの最大規模の
00:00:47エンタープライズ顧客の皆様による各種フレームワーク、AIワークロード、エージェントの導入や、
00:00:57プラットフォーム全体の活用を支援しています。ジョーダン、どうぞ。はい、ジョーダンです。Snowflakeに所属しています。
00:01:05在籍は2年で、スタッフソフトウェアエンジニアとしてこの連携のSnowflake側の開発を担当しました。
00:01:12素晴らしいですね。では挨拶はこのくらいにして、スライドを表示しましょう。そうですね、
00:01:23要するに今回の連携は、Vercelのv0ツールでアプリを構築するというものです。これはVercelが提供するエージェント型コーディングツールで、
00:01:30世界クラスの非常に優れ開発体験を備えたNext.jsアプリを作成できます。これをSnowflakeにデプロイします。
00:01:37Snowflakeにデプロイすると、お客様のSnowflakeアカウント内で完全に実行されます。
00:01:41したがって、Snowflakeのロールを使ってデプロイされ、SnowflakeのRBAC(ロールベースアクセス制御)や
00:01:47設定されているSSO(シングルサインオン)など、Snowflakeが提供するあらゆる機能を利用できます。しかも完全に
00:01:53分離されており、アカウント内で安全に動作します。双方の良いところ取りができるというコンセプトです。
00:02:01Vercelの優れた開発者体験(DX)と、Snowflakeのエンタープライズデータ、コンプライアンス、RBACを両立できます。
00:02:10あらかじめお断りしておきますが、通常のワークショップは参加型のハンズオン形式で行われます。
00:02:17しかし冒頭でお伝えした通り、両方のサービスでエンタープライズ契約が必要となるため、
00:02:22今回はデモ(いくつかお見せします)を実施し、その後インタラクティブなセッションに移ります。
00:02:29会場の皆さんにアイデアを出してもらい、Snowflakeのサンプルデータセットを使ってv0で何を構築できるかをお見せします。そして
00:02:38質疑応答セッションへと進みます。ここでは、私たちVercelがこの連携をどのように活用しているかをご紹介したいと思います。
00:02:48主に3つの柱があります。標準的な用途としては、リアルタイムのインタラクティブなダッシュボードの作成です。GTMチームが
00:02:58パイプラインや製品の利用状況、進捗スピードを表示するのに使っています。SQLの知識がなくても、プロンプトを
00:03:07入力するだけでダッシュボードが作れます。これが標準的なユースケースであり、一般的な活用方法です。
00:03:17また、他のチームではプロダクトのアドプション分析や、カスタムBIの用途でも使っています。
00:03:31これは後ほどお見せするパーソナライズされたアプリです。そして個人的に一番気に入っているのが、自チームの活動を通じて知ったことですが、
00:03:39自分のチームに関するARR(年間経常収益)や財務のパーソナライズされたダッシュボードを作成し、
00:03:50SKUレベルやサービスレベルまで掘り下げて分析できる点です。自分のチームがどれくらいの収益を
00:03:57もたらしているか把握していなかったのですが、このワークショップの準備中に実に素晴らしい機能だと気づきました。
00:04:03そうですね。Snowflakeのユーザーでお聞きの方ならStreamlitに馴染みがあるかもしれません。
00:04:14多くのダッシュボードで使われていますね。これ(v0連携)の大きな利点の一つは、単なるダッシュボードの枠を超えられることです。
00:04:21ダッシュボードも素晴らしい機能ですが、社内ツールとしても活用できます。JavaScriptとNext.jsで動いているため、想像できるものなら
00:04:27何でも構築できます。社内ツールには最適で、書き込み可能なテーブルを作成し、
00:04:31既存の他のテーブルと連動させることで、データにさらなる価値を付加できます。さらにはエージェント型アプリの構築も可能です。
00:04:38データと会話したり、時間に余裕があればより洗練されたアプリを作ったりできます。私自身も
00:04:44社内で大量のログ情報を取得する際にこれを使っています。ログの発生元や該当ユーザーを特定し、
00:04:50そのユーザーについてさらに詳しく調べる、といった使い方ができます。調査を進めながら
00:04:55次々と別のデータセットへジャンプできるので、そうした作業には非常に役立ちます。
00:05:01これが、この連携によって実現できる究極の目標(ノーススター)です。
00:05:09設定方法について説明します。この連携を利用するには、Snowflakeのエンタープライズアカウントの管理者様が
00:05:16設定画面で「Snowflake App Runtime」を有効化する必要があります。
00:05:23次にVercel統合を有効にします。Snowflake側で行うステップはこの2つです。
00:05:29Vercel側では、管理者が設定の「Integrations」へ行き、v0チームにSnowflakeを追加する必要があります。
00:05:37具体例でお見せすると、v0のアカウント設定へ進み、インテグレーションを追加します。
00:05:47アカウント識別子を使ってSnowflakeアカウントを追加し、データセットに接続します。
00:05:58このような画面になります。これはVercelからのスクリーンショットですね。
00:06:04セットアップは以上です。では次へ進みましょう。
00:06:10デモをお見せします。まずはプロンプトから入力していきます。
00:06:16最初のパートでは、v0がデータを使用してダッシュボードを構築します。そして
00:06:252番目のパートでSnowflakeにデプロイします。これにはさらに重要な仕組みがあるので、
00:06:31v0が生成処理を行っている間に説明します。ただ、ヒントとして事前にお伝えしておくと、
00:06:39Next.jsのサーバーサイドレンダリング戦略のベストプラクティスに基づいているため、
00:06:47処理はサーバー側で実行されます。
00:06:51実際にはコンプライアンスの観点から、Snowflakeデータのごく近くで実行されることになります。これについては
00:06:55後ほど詳しく説明します。Snowflakeのインフラへのデプロイは、
00:07:05驚くほど簡単です。そうです、聞き間違いではありません。v0がアプリを構築し、
00:07:15Snowflakeのデータのすぐ隣にあるSnowflakeのコンピューティング環境にデプロイされます。エンタープライズ顧客の皆様は、
00:07:24こちらのQRコードをスキャンするか、営業チームによるパーソナライズされたデモをご希望の場合は、このQRコードをスキャンしてください。
00:07:32この機能が有効化されます。それでは実践デモに移りましょう。
00:07:47エンタープライズ環境なので、当然Oktaでの再認証が必要です。実際、この手順は何度も行うことになります。
00:07:54何度も行うことになりますが、最も重要なのは「Snowflake」というキーワードです。
00:08:05「Snowflakeを使用する」とプロンプトに入力するだけです。デモをスムーズに進めるために、
00:08:14「Crunchbaseのデータセットを使用する」と指定します。ここで標準的なデモとしてダッシュボードを作成してみます。
00:08:29長年のIPOの推移、つまりIPOに関する包括的なインテリジェンスを示すダッシュボードを作らせてみましょう。v0に
00:08:39生成(クック)してもらいましょう。
00:08:48よし、これで十分なはずです。
00:08:53v0が生成処理を行う間、まずSnowflakeのデータセットを確認してクエリを実行します。
00:09:03アクセス許可を求めてきたり、いくつかの追加質問をしてきたりするはずです。
00:09:09リアルタイムでSnowflakeが動いていますね。よしよし。
00:09:18もう少し手順が必要かもしれません。v0からSnowflakeデータベースへの接続を求められるはずです。
00:09:31接続後、入力したプロンプトに従って構築に必要なデータのクエリを開始します。今まさに
00:09:53Snowflakeに接続していますが、まさにこれがこの連携の核心部分です。
00:10:01v0はWebパフォーマンスやNext.jsのレンダリング、
00:10:09キャッシュ戦略におけるベストプラクティスに従い、
00:10:15カスタムかつパーソナライズされたリアルタイムダッシュボードを構築してくれます。生成には3分ほどかかると思われますので、
00:10:24その間に皆さんにお見せしたいことがあります。
00:10:29昨年11月に公開したブログ記事についてお話ししましょう。
00:10:36当時、数社のエンタープライズ企業をお招きしてこの連携をテストしていただいたのですが、
00:10:45なぜこの連携がこれほど素晴らしいのかに焦点を当てて説明したいと思います。
00:10:51v0は、データに接続するアクセス管理層のコードを直接記述し、
00:11:00Next.jsアプリケーション全体をコーディングします。しかし、デプロイする際には
00:11:06Snowflakeのインフラ上、つまりデータと同じ場所のごく近い領域にデプロイされます。
00:11:14その理由は、エンタープライズに必要なコンプライアンス、セキュリティ、そして処理速度を満たすためです。
00:11:22Vercelが認証層でアプリを管理し、Snowflakeがコンピューティングとデータを処理します。
00:11:29もう一つお見せしたい点があります。
00:11:36このアプリケーションを作成したら、自分で使うのはもちろん、
00:11:41チームメンバーや社内の他の人に送信することもできます。アプリケーションを閲覧するには、
00:11:49ログインして認証を行う必要があります。つまり、このアプリ上で閲覧できるデータは、
00:11:57そのユーザーがアクセス権限を持っているデータのみとなります。そのため、アプリやダッシュボードのリンクを
00:12:02共有しても、閲覧権限を持つ人だけがそのデータを参照できます。
00:12:11時間を節約するため、事前にこのアプリをデプロイしておきました。先ほどは3分43秒かかりました。
00:12:38デモ中なので少し時間がかかっているようですが、
00:12:44依存関係を再インストールしていますね。
00:12:49これがデプロイされたアプリケーションです。全く同じプロンプトで「IPO市場ダッシュボード」を作成しました。
00:13:00対話型(インタラクティブ)になっているのが分かりますね。
00:13:14よし、間もなく完了します。
00:13:27合計5万件のIPO、調達資本額、平均ピーク年などが表示され、綺麗なダッシュボードが生成されました。ここからさらに改善を加えることも可能です。
00:13:39そしてこれを公開して
00:13:42Webサイトにアクセスする際、実際にログインが必要です。これが先ほどお話ししたアクセス権限の仕組みです。
00:13:50閲覧するには、Snowflakeで自分がどのような権限を持っているか認証する必要があります。そしてデプロイ先は、
00:13:57URLが見えるか分かりませんが、
00:14:00snowflakecompute.app にデプロイされています。
00:14:04アクセスする他のユーザーには、それぞれの権限に応じた内容が表示されます。
00:14:10はい。
00:14:16以上が基本的なハッピーパスです。次はジョーダンから、v0の実力を遺憾なく発揮した
00:14:22さらに高度で素晴らしいバージョンをお見せします。
00:14:27了解しました。画面を
00:14:31私のPCに切り替えます。
00:14:37準備の間に、何かご質問はありますか?あ、ありますね。
00:14:45少々お待ちください。マイクが来るまで待ちましょう。
00:14:49dbt Cloudのようなツールで意味論的(セマンティック)モデルが定義されている場合、それをこれと連携させて、
00:14:54生成されるクエリやモデルが設計対象とする利用可能なテーブルに
00:15:01紐付ける方法はありますか?
00:15:05セマンティックモデルを使ってSQLクエリを生成・設計する、ということですね?dbtを使って
00:15:11モデル自体を管理している場合ですね。
00:15:18あ、すみません。もう一度質問をお願いできますか?はい、dbtなどを使っている場合で…
00:15:25レイヤーごとに分けられた、例えばSnowflake上のメダリオンアーキテクチャなどがあるとして、
00:15:30dbtのようなセマンティックレイヤーがあり、dbt Cloud等でそれを管理している場合、
00:15:34それを組み込む方法はありますか?はい、プロンプトで制御できます。すべてLLMで駆動しているため、
00:15:40方向性を誘導することが可能です。層がいくつか分かれており、v0の
00:15:46レイヤーと、Snowflake側のレイヤーが存在します。ですので、最適化したい場合は…
00:15:55実際には多くの方法があります。プロンプト調整や評価(evals)など、本番環境に適用する場合には有効です。
00:16:02今回は直感的なコーディング(バイブコーディング)で、プロンプトからアイデアへ素早く形にしていますが、求めている機能のイメージは掴めましたでしょうか。
00:16:08回答になっていますか?データ統合機能のようなものが標準で用意されているかが気になっていました。
00:16:13ネイティブな機能としても存在しますよ。はい、用意されています。
00:16:23オブザーバビリティ機能で、アプリ上や
00:16:27Snowflake側、Vercel側で起きていることすべてを確認できます。
00:16:33さて、では今回のデモについてですが、ここで使用するデータを簡単にお見せします。
00:16:41これは発電所のデータです。このようなクエリを実行するのはよくあるシチュエーションですね。
00:16:48経度や緯度、各発電所の位置など膨大な情報があり、そのままでは理解しづらいです。
00:16:55そこで、時間を節約するため先ほどと同じ手順であらかじめアプリを作成しておきました。
00:17:01アカウントを選択します。私の場合、複数のSnowflakeアカウントを所有しているためです。大企業などでは
00:17:07多数のアカウントを持つことができ、チャットごとに使用するアカウントを指定できます。
00:17:13では、ここから少し面白い工夫を加えてみましょう。現状でも
00:17:20サマリーやテーブルは表示されていますが、「可視化のために地球儀を追加して」と指示してみます。
00:17:42JavaScriptとNext.jsを使用しているため、適切なライブラリを自動で見つけ出して
00:17:50地球儀を描画してくれるはずです。既存のテーブルを確認し、
00:17:55経度と緯度を取得して、より視覚的に面白いものをレンダリングします。
00:18:02前提として、まずこのデータセットについて説明してもらえますか?
00:18:07はい、全米の発電所データが入っています。ソースとしては、
00:18:15Snowflakeマーケットプレイスから取得できる共有データセットのようなもので、購入して利用することも可能です。
00:18:20これにアクセスすれば定期的に更新されますので、データを探索できます。
00:18:29今回のものは無料のデータセットですよね?はい、無料のデータセットです。
00:18:37購入用のデータもあれば、無料で利用可能なデータセットもあります。こうしたデータセットを使えば、
00:18:41自社のデータと組み合わせて、より詳細なインサイトを得ることができます。
00:18:49デモ用としても非常に便利です。
00:18:55オーケー。
00:18:59うまくいったようですね。
00:19:04役員や顧客に提示する際、従来のダッシュボードを見せることもできますが、
00:19:13この連携とv0を使えば、データセットに合わせたインタラクティブでリアルタイムな
00:19:23可視化コンポーネントを作成できます。
00:19:29このように表現できます。
00:19:34では、ここからは参加型セッションに移りましょう。マーケットプレイスの無料データセットを用意しています。
00:19:41会場の皆さんから試してみたいプロンプトや可視化のアイデアがあれば受け付けますし、
00:19:46質問がある場合はそのままQ&Aセッションに入っても構いません。
00:19:59質問のある方、あるいは試してみたいプロンプトがある方は自由にお声がけください。
00:20:09機能面での質問なのですが、回帰モデルを実行したり、この中でパイプラインを構築したりすることは可能ですか?
00:20:14それとも基本的には探索的なビジュアライゼーションを中心としたバイブコーディング用途でしょうか?
00:20:20よろしければ私から回答します。現状は非エンジニア向けの純粋なバイブコーディングツールですが、
00:20:28非常に良い質問ですね。
00:20:35連携機能はありますでしょうか。
00:20:44はい。
00:20:47通常、v0にはGitHub連携があり、通常のCI/CDやSDLC(ソフトウェア開発ライフサイクル)に組み込むことができます。
00:20:56ここからコードをダウンロードできます。これはプロトタイプで、壇上の私とジョーダンにとっては
00:21:05長時間の体感でしたが、生成自体は1分53秒という非常に高速なバイブコーディングでした。
00:21:11一般的なレポートやダッシュボードよりも優れていますよね。私ならそのコードをダウンロードして、裏側のモデルの評価(evals)を作成します。
00:21:19バックエンドには単純なv0モデルがあるだけで、対話型のAIアプリが入っているわけではありません。
00:21:33スライドでお見せした目標(ノーススター)にあったように、従来のBI、対話的要素、
00:21:39カスタマイズされたビジュアライズがあり、そして3つ目の要素として時間の都合上デモはお見せしませんでしたが、
00:21:46v0に対して「データとチャットできる機能を追加して」と依頼することも可能です。
00:21:51v0はそれを見事に実装してくれます。その上でハルシネーションを防ぐための評価パイプラインを構築することになります。
00:21:59これは高度なユースケースですが、素晴らしい質問をありがとうございます。
00:22:08そろそろ終わりにしましょうか。
00:22:14デプロイ時のOAuthの仕組みはどうなっていますか?
00:22:19とても良い質問ですね。
00:22:30デプロイ後はユーザーのSnowflakeアカウント内に配置されます。
00:22:35Snowflakeの通常の認証をご存じであればイメージしやすいと思いますが、
00:22:38アプリにアクセスするとプロンプトが表示されます。
00:22:41私の場合シングルサインオン(SSO)を設定しているので、そのままSnowflakeアカウントにログインされます。
00:22:48ユーザー名とパスワード、またはSSOで認証した後は、すべてSnowflake内で完結します。
00:22:54Vercelとの接続は解除されているため、Vercelにログインしているわけではありません。
00:22:59Snowflakeアカウントにログインすることになります。ユーザー名とパスワード、または
00:23:04シングルサインオンを使用します。一度Snowflakeに入ってしまえば、
00:23:10Vercelとの接続はもうなくなります。つまり、
00:23:13Vercelにログインするのではなく、完全にSnowflakeアカウント内での処理になります。
00:23:19非エンジニアのビジネスユーザーチームに共有する場合ですが、
00:23:26彼らもSnowflakeに追加する必要があると思います。
00:23:32現在Snowflakeは、アカウントのないユーザーにもアプリを公開できる方法を開発中です。
00:23:39一部サポートは始まっていますが、今後さらに充実していく予定です。
00:23:42Snowflake上のアプリにはそういったニーズが間違いなくありますからね。
00:23:50Snowflakeアカウント内にはさまざまなロール(権限)を設定でき、
00:23:562つのアプリを接続する設定画面で、v0アプリでどのロールを使用するか選択できます。
00:24:05そのため、エンドユーザーがアクセス権のあるデータだけを閲覧できるようにすることが非常に重要ですが、
00:24:12その問題はすでに解決されています。それを考慮しながらダッシュボードをバイブコーディングできるのは、
00:24:20個人的にすごくクールだと思います。まさにその通りですね。
00:24:29それらのロールをコピーしたり、「v0、このアプリにはこのロールだけを使って」と指示できます。質問ありがとうございます。
00:24:36はい、質問しようと思っていたのですが… あ、気を付けてください、あなたのアカウントが画面に映ってますよ!写真を撮られています。
00:24:48あ、大丈夫そうですね。良い写真が撮れましたね。で、質問なのですが、
00:25:00このようなコンポーネントを作成して、VercelにデプロイされたNext.jsアプリに組み込みたい場合、
00:25:09つまりSnowflakeのデータをクエリするコンポーネントを持たせることは、この構成で可能ですか?それとも難しいですか?
00:25:19はい、可能です。なるほど。では、会場の皆さんに挙手で質問させてください。v0を使っている方は?
00:25:31結構いらっしゃいますね。では、Snowflakeを使っている方、またはSnowflakeの顧客の方は?
00:25:41Snowflakeユーザーの方が多いですね。素晴らしい。ロンドンとはまた違った傾向です。さて、ご質問への回答ですが、
00:25:48作成されたコンポーネントはこんな感じです。shadcnやPlants Explorerなどがあります。あ、地球儀のコンポーネントはどこでしょう?
00:25:59この辺りにあるはずですが… appの中でしょうか。
00:26:08APIかな?どれかのページ内や、他のコンポーネントの中に
00:26:13入れ子になっているのかもしれません。
00:26:18地球儀全体をバイブコーディングしたんですか?あ、ありましたね。167行のUIコンポーネントです。
00:26:27このようにコードが出力されるので、ダウンロードして反復修正を加えることができます。
00:26:34ちなみに、これは一発(ゼロショット)で生成されたものです。最初のプロンプトで最初のバージョンができて、
00:26:44「地球儀を追加して」という別のプロンプトでバージョン2になりました。v0の「v」はバージョンを意味しています。ご質問の答えになっていますか?
00:26:52はい、完璧です。ありがとうございます。
00:26:58必要であれば、もっとお見せできますよ。v0内では直接…
00:27:04あ、ちなみにアクセス権のあるデータベース全体が見えてしまいそうですが… テストアカウントですよね?
00:27:08はい、大丈夫です。問題ありません。このように、v0内でデータベースを探索できます。
00:27:15つまり、データベースと直接チャットができるということです。アプリをデプロイする必要も、
00:27:21ダッシュボードを表示する必要もなく、文字通りデータと対話できるのです。
00:27:29再接続が必要かもしれません。このアカウントにはテーブルが多すぎるのかもしれませんね。
00:27:34そうですね。また、v0から直接SQLクエリを実行することも可能です。
00:27:45将来的にはさらに多くの機能が追加される予定ですが、個人的には
00:27:51インタラクティブで素晴らしいダッシュボードをバイブコーディングできる点こそが、最大の魅力だと思っています。
00:27:58ですね。
00:28:01本日は以上となります。試してみたい方は、VercelまたはSnowflakeまでお問い合わせください。
00:28:10ご清聴ありがとうございました。