お問い合わせ
7 分で読むことができます。

【Streamlit in Snowflake】生成AI Cortex Code(Coco)による開発

執筆者 Nick 更新日時 2026年9月16日

目次

はじめに

Streamlit in Snowflake(SiS)を利用し、生成AIであるCortex Codeに、Streamlitアプリケーションを作らせてみました。
Snowflake環境があれば、非常に楽にWEBサイトを構築できます。

開発時の用語や方法は、インターネット検索すれば沢山ヒットするかと思います。
この記事ではCortex Codeにフォーカスします。

 Streamlit in Snowflakeとは 

 Streamlitは、数行のコードでWEBサイトを簡単に開発できるツールです。 おそらく誰でも、数分~数十分で閲覧可能な状態にできます。 Streamlitのサイトのブラウザ上で開発します。言語はPython。

Snowflakeは、クラウドのデータベースです。 少し崩れたデータと、大量のデータの取り扱いが得意なので、分析者向けです。 業務では大抵の場合、ブラウザ上のUIで操作します。

Streamlit in Snowflakeは、StreamlitとSnowflakeを簡単に連携可能にしたSnowflakeの機能です。 Streamlitに1行コードを書くだけで、Snowflakeと接続できます。 開発時は、Snowflakeのブラウザ上のUIから、Streamlitのコードを編集します。 データをすぐに取って来れる点も、分析者向けです。 

Nick_20260827_01
図1. Streamlitサンプル

 

下準備段階から、生成AI Cortex Codeを利用する

とはいえ、まずは分析したいDBとスキーマを作成し、分析対象のファイルを取り込みます。
これは手作業のほうが早そうに考えた為です。

  1. Snowflakeにログインし、データベースとスキーマを作成する。
  2. 内部ステージを作成する。
    Nick_20260827_02

  3. 内部ステージに、分析データファイルをドラッグ&ドロップし、アップロードする。
    Nick_20260827_03

次に、Snowflakeの生成AIであるCortex Code(Coco)に、取り込んだファイルからテーブルを作成するDDLを作るよう指示します。

  1. ワークスペースで、Cocoに渡すプロンプトの文章を作成する。

    Nick_20260827_04
  2. 青い右端の★マークをクリックし、プロンプト内容を実行するようCortex Codeに指示します。ワークスペースを開いている間はCortex Codeがワークスペースを閲覧できます。

    Nick_20260827_05
  3. Cortex Codeに色々許可を求められます。
    「内部の一時フォルダで作業したい」や「この中身SELECTして良いか」等の許可を求められます。

    概ね許可して問題ないとは思いますが、何を聞かれてるかは理解してちゃんと問題ないと判断してから許可したほうが良いと思います。問題なければ許可しましょう。
    Nick_20260827_06

  4. Cortex CodeテーブルのCREATE文を作成してくれます。
    後は実際に実行するなり、修正するなり、再修正依頼をするなり、する。
    再修正する必要がある場合は、元のプロンプトを直しておくと、次回同じように依頼する時に楽です。※後で直そうとすると忘れます。
    Keep、Keep all、Keep all in fileなどをクリックすると、変更が確定されます。
    Nick_20260827_07

分からなくなったら、Cortex Codeに聞くと大体やってくれます。

AI専用のクレジットがかかりますので、ご注意を!

 

あとはアプリ作成指示をして、微修正して、終わり

Cortex CodeにStreamlitアプリケーションを作成するよう指示します。

  1. 下準備時と同様に、プロンプトを作成し、Cortex Codeに指示します。

    Nick_20260827_08

  2. Cortex Codeへの指示後、3~5分程度で作成完了しました。
    Nick_20260827_09

  3. CSVファイルをロードするクエリが手直し必要でしたので手直しをした後にFixをクリックすると、Cocoに修正指示できます。
    Nick_20260827_10

  4. 修正完了後、Streamlitのいずれかのファイルを開いた状態で、
    「Run」をクリックすると、ダッシュボードができました!
    上手くいかず修正したい場合は、文章で指示できます。
    Nick_20260827_11

    以下完成イメージです。
    Nick_20260827_12

 

 データ・プロンプトのサンプル 

  •  テーブル作成.txt 
    LAB_DB.NO_000001.MY_INTERNAL_STAGEにある「001_CSV_1.csv」を読み込み、
    NO_000001スキーマに新しいテーブルのDDLを作成お願いします。
    作成したDDLはこのワークスペースにDDLフォルダを作成し、そこに配置してください。
    実行はしないてください。

    以下、仕様の概略です。

    ・テーブルはRAWテーブル・STAGINGテーブルの二つです。同じスキーマ内に作成お願いします。
    ・テーブル名称にはRAWかSTAGINGテーブルかが分かるように接頭辞または接尾辞を付与お願いします。
    ・RAWテーブルは、ファイル名・レコード作成日時を保持する。永続テーブル。
    ・STAGINGテーブルは、RAWテーブルから最新のレコード作成日時のレコードのみ取得する。(動的テーブルなど)
    ・全て英語名称であること。
    ・物理名称は_区切りとする。
    ・データ型は適宜カラム名称と値から推測して設定してください。

     

  •  Streamlitアプリ作成.txt 
    以下のDDLやクエリ、Streamlitアプリをワークスペースに作成お願いします。
    ①、②は実行はしないでください。

    ①「LAB_DB.NO_000001.RAW_SALES」に「LAB_DB.NO_000001.MY_INTERNAL_STAGE.001_CSV_1.csv」のデータを
      登録するcopy into文のプロシージャを作成するDDL。
    ②①を呼び出すクエリ。トランザクション制御付き。
    ③Streamlitアプリケーションをワークスペースに作成お願いします。

    ③について
    ・ソースは、LAB_DB.NO_000001.STG_SALESのデータ。
    ・1画面。
    ・タイトルは、なんかいい感じに。
    ・全体構成は、上側にわりと大きめに総売上金額。その下の左側に「円グラフ」。下の右側に「棒グラフ」。
    ・できればベースのクラスを作って、それを継承だったりオーバーライドする形が良い。
    ・円グラフも棒グラフも、棒だったり円の中のケーキ部分をクリックすると、その案件だけの状態にフィルタリングされる形が良い。

    円グラフは、顧客別の売上割合。
    棒グラフは、横に伸びる案件別の売上および利益棒グラフ。利益の高い順に上から。棒グラフは、売上と利益両方欲しい。案件ごと。

     

  •  001_CSV_1.csv 
    顧客コード,顧客名称,案件コード,案件名称,部門コード,部門名称,売上日,売上金額,売上利益
    001,顧客A,300012401,案件1,005,DX推進部,2026/8/26,1580000,1300000
    413,顧客B,300005198,案件2,002,システム開発部,2026/8/24,20000000,15000000
    102,顧客C,300010012,案件3,001,営業一部,2026/8/1,3500000,800000
    205,顧客D,300010013,案件4,003,クラウドソリューション部,2026/8/2,12000000,4500000
    001,顧客A,300012401,案件1(追加開発),005,DX推進部,2026/8/3,800000,600000
    309,顧客E,300010014,案件5,002,システム開発部,2026/8/3,5000000,1200000
    512,顧客F,300010015,案件6,004,インフラ保守部,2026/8/4,2800000,900000
    102,顧客C,300010016,案件7,001,営業一部,2026/8/4,1500000,400000
    413,顧客B,300005198,案件2(2次フェーズ),002,システム開発部,2026/8/5,8500000,6000000
    601,顧客G,300010017,案件8,005,DX推進部,2026/8/5,4200000,1800000
    001,顧客A,300010018,案件9,005,DX推進部,2026/8/6,9500000,3200000
    703,顧客H,300010019,案件10,003,クラウドソリューション部,2026/8/6,18000000,7000000
    205,顧客D,300010020,案件11,001,営業一部,2026/8/7,6000000,1500000
    810,顧客I,300010021,案件12,002,システム開発部,2026/8/7,30000000,11000000
    309,顧客E,300010014,案件5(保守ライセンス追加),002,システム開発部,2026/8/8,600000,450000
    904,顧客J,300010022,案件13,004,インフラ保守部,2026/8/8,1200000,300000
    512,顧客F,300010023,案件14,005,DX推進部,2026/8/9,23000000,8500000
    102,顧客C,300010024,案件15,001,営業一部,2026/8/9,4800000,1100000
    413,顧客B,300010025,案件16,002,システム開発部,2026/8/10,15000000,5000000
    601,顧客G,300010026,案件17,003,クラウドソリューション部,2026/8/10,7200000,2100000
    703,顧客H,300010019,案件10(追加要件対応),003,クラウドソリューション部,2026/8/11,2500000,1800000
    001,顧客A,300010027,案件18,005,DX推進部,2026/8/11,3100000,1000000
    810,顧客I,300010028,案件19,004,インフラ保守部,2026/8/12,5500000,1400000
    205,顧客D,300010013,案件4(オプション機能拡張),003,クラウドソリューション部,2026/8/12,1800000,950000
    904,顧客J,300010029,案件20,001,営業一部,2026/8/13,8900000,2200000
    309,顧客E,300010030,案件21,002,システム開発部,2026/8/13,14000000,4800000
    512,顧客F,300010031,案件22,005,DX推進部,2026/8/14,6800000,2000000
    102,顧客C,300010032,案件23,004,インフラ保守部,2026/8/14,2100000,600000
    601,顧客G,300010017,案件8(サーバー増設対応),005,DX推進部,2026/8/15,1100000,700000
    413,顧客B,300010033,案件24,002,システム開発部,2026/8/15,11500000,3900000
    703,顧客H,300010034,案件25,003,クラウドソリューション部,2026/8/16,16000000,5500000
    001,顧客A,300012401,案件1(セキュリティ機能強化),005,DX推進部,2026/8/16,1200000,900000
    810,顧客I,300010035,案件26,001,営業一部,2026/8/17,4300000,1000000
    205,顧客D,300010036,案件27,002,システム開発部,2026/8/17,22000000,7800000
    904,顧客J,300010037,案件28,005,DX推進部,2026/8/18,3600000,1200000
    309,顧客E,300010038,案件29,004,インフラ保守部,2026/8/18,1900000,500000
    512,顧客F,300010015,案件6(年間保守更新),004,インフラ保守部,2026/8/19,2800000,2100000
    102,顧客C,300010039,案件30,003,クラウドソリューション部,2026/8/19,9800000,3000000
    601,顧客G,300010040,案件31,001,営業一部,2026/8/20,2700000,700000
    413,顧客B,300005198,案件2(運用サポート機能追加),002,システム開発部,2026/8/20,3000000,2200000
    703,顧客H,300010041,案件32,002,システム開発部,2026/8/21,13500000,4100000
    810,顧客I,300010021,案件12(機能改善フェーズ),002,システム開発部,2026/8/21,5000000,3500000
    001,顧客A,300010042,案件33,005,DX推進部,2026/8/22,7500000,2400000
    205,顧客D,300010043,案件34,003,クラウドソリューション部,2026/8/22,10500000,3600000
    904,顧客J,300010044,案件35,004,インフラ保守部,2026/8/23,4100000,1100000
    309,顧客E,300010045,案件36,001,営業一部,2026/8/23,5200000,1300000
    512,顧客F,300010046,案件37,002,システム開発部,2026/8/24,17500000,5800000
    102,顧客C,300010047,案件38,005,DX推進部,2026/8/24,8200000,2900000
    601,顧客G,300010048,案件39,003,クラウドソリューション部,2026/8/25,14000000,4200000
    703,顧客H,300010049,案件40,004,インフラ保守部,2026/8/25,3300000,900000
    413,顧客B,300010050,案件41,001,営業一部,2026/8/26,6100000,1600000
    810,顧客I,300010051,案件42,005,DX推進部,2026/8/26,19000000,6800000
    001,顧客A,300010052,案件43,002,システム開発部,2026/8/1,12500000,4000000
    205,顧客D,300010053,案件44,004,インフラ保守部,2026/8/2,2400000,700000
    904,顧客J,300010037,案件28(ライセンス追加),005,DX推進部,2026/8/2,500000,380000
    309,顧客E,300010054,案件45,003,クラウドソリューション部,2026/8/3,11000000,3800000
    512,顧客F,300010055,案件46,001,営業一部,2026/8/4,3900000,950000
    102,顧客C,300010056,案件47,002,システム開発部,2026/8/5,16500000,5200000
    601,顧客G,300010026,案件17(保守構築追記),003,クラウドソリューション部,2026/8/5,900000,650000
    703,顧客H,300010057,案件48,005,DX推進部,2026/8/6,25000000,9200000
    413,顧客B,300010058,案件49,004,インフラ保守部,2026/8/7,4600000,1300000
    810,顧客I,300010059,案件50,003,クラウドソリューション部,2026/8/8,8800000,2700000
    001,顧客A,300010060,案件51,001,営業一部,2026/8/8,1800000,450000
    205,顧客D,300010036,案件27(追加検証作業),002,システム開発部,2026/8/9,1500000,1100000
    904,顧客J,300010061,案件52,002,システム開発部,2026/8/10,13000000,4300000
    309,顧客E,300010062,案件53,005,DX推進部,2026/8/10,6200000,1900000
    512,顧客F,300010063,案件54,003,クラウドソリューション部,2026/8/11,15500000,5000000
    102,顧客C,300010064,案件55,004,インフラ保守部,2026/8/12,2900000,800000
    601,顧客G,300010065,案件56,001,営業一部,2026/8/12,4400000,1150000
    703,顧客H,300010066,案件57,002,システム開発部,2026/8/13,21000000,7100000
    413,顧客B,300010033,案件24(UIデザイン修正),002,システム開発部,2026/8/13,800000,550000
    810,顧客I,300010067,案件58,005,DX推進部,2026/8/14,9100000,2800000
    001,顧客A,300010068,案件59,003,クラウドソリューション部,2026/8/15,11800000,3900000
    205,顧客D,300010069,案件60,004,インフラ保守部,2026/8/15,3700000,1000000
    904,顧客J,300010070,案件61,001,営業一部,2026/8/16,5300000,1400000
    309,顧客E,300010030,案件21(API連携開発),002,システム開発部,2026/8/17,2400000,1700000
    512,顧客F,300010071,案件62,005,DX推進部,2026/8/17,18500000,6200000
    102,顧客C,300010072,案件63,003,クラウドソリューション部,2026/8/18,7600000,2300000
    601,顧客G,300010073,案件64,002,システム開発部,2026/8/18,12000000,3800000
    703,顧客H,300010074,案件65,004,インフラ保守部,2026/8/19,4800000,1350000
    413,顧客B,300010075,案件66,005,DX推進部,2026/8/20,28000000,9900000
    810,顧客I,300010076,案件67,001,営業一部,2026/8/20,3200000,800000
    001,顧客A,300010077,案件68,002,システム開発部,2026/8/21,14500000,4600000
    205,顧客D,300010078,案件69,003,クラウドソリューション部,2026/8/21,8300000,2500000
    904,顧客J,300010061,案件52(追加アカウント発行),002,システム開発部,2026/8/22,300000,220000
    309,顧客E,300010079,案件70,004,インフラ保守部,2026/8/22,2600000,750000
    512,顧客F,300010080,案件71,001,営業一部,2026/8/23,6700000,1800000
    102,顧客C,300010081,案件72,005,DX推進部,2026/8/23,22500000,7900000
    601,顧客G,300010082,案件73,003,クラウドソリューション部,2026/8/24,10000000,3100000
    703,顧客H,300010083,案件74,002,システム開発部,2026/8/24,17000000,5400000
    413,顧客B,300010084,案件75,004,インフラ保守部,2026/8/25,5100000,1500000
    810,顧客I,300010085,案件76,005,DX推進部,2026/8/25,13500000,4400000
    001,顧客A,300010086,案件77,001,営業一部,2026/8/26,2100000,500000
    205,顧客D,300010087,案件78,002,システム開発部,2026/8/26,16000000,5100000
    904,顧客J,300010088,案件79,003,クラウドソリューション部,2026/8/26,9400000,2900000

     

Nick

執筆者 Nick

データエンジニア。Snowflake基盤構築の設計~開発対応をメインで担当。