>100 Views
June 24, 26
スライド概要
2026/6/24(水) 19:00 〜 21:30 開催
Microsoft Data Analytics Day(Online) 勉強会 2026/06
https://sqlserver.connpass.com/event/396942/
博士(情報学)。2012年に修士号を取得した後、西日本電信電話株式会社に入社。プライベートクラウド基盤やアプリケーション開発を経験した後、様々な技術(NW、サーバ、クラウド、プログラミング)を組合せることで、データ活用を推進するためのプラットフォームを運営。2019年から社会人ドクターとして研究活動を行い、2023年に博士号を取得。「実社会に役立つデータ活用」を推進する技術者兼研究者。
© 2026 NTT West, Inc. All Rights Reserved. 待望の Fabric Apps 徹底実践 Snowflake ミラーリング × Data Agent ×巡回セールスマン問題を 「オール Fabric」で全部乗せ実装 Microsoft Data Analytics Day 2026/6/24 高須賀 将秀
© 2026 NTT West, Inc. All Rights Reserved. 2 /29 自己紹介 たかすか まさひで 高須賀 将秀 博士(情報学)(2023/3) 研究分野:組合せ最適化,数理最適化,オペレーションズ・リサーチ(OR),グラフ理論 高須賀将秀のホームページ 所属:NTT西日本 デジタル改革推進部(2021/8~), 法政大学 デザイン工学部 兼任講師(2024/4~),個人事業(Udemy講師等)(2024/6~) 業務:データドリブン経営を牽引する立場 ・データ活用基盤のシステム開発 ・データ分析手法の研究 ・データ分析活用事例の提案 ・デジタル人材育成 資格:クラウド資格(AWS全冠,Azure/AppliedSkills全冠,GCP全冠, Snowflake(7/11)), 受賞:AWS Community Builders(2026),AWS All Certifications Engineers(2024, 2025), Microsoft Top Partner Engineer Award(2024),Microsoft Innovative Educator Experts 2025-2026, Google Cloud Partner Top Engineer(2026),Google Cloud Partner All Certification Holders(2025), Jagu‘e’r Award 優秀賞(2025),Snowflake Squad(2024, 2025), Microsoft Certified Trainer(MCT)
© 2026 NTT West, Inc. All Rights Reserved. 3 /29 私の研究(博論)内容 ◼ 与えられた全ての工事に対して立会者の割当を決定する問題である ◼ 移動距離や立会者のスキル等の様々な条件を考慮し割当を決定している ◼ 条件は万人共通の条件もあれば手配者の思考や嗜好によって異なるものもある 入力 出力 工事4 工事1 1 工事2 4 手配者 工事5 2 1 工事6 3 工事7 工事8 8 工事9 6 工事5 数理モデル 5 工事6 工事3 手配者 の思考/嗜好 = 7 工事2 4 2 5 工事3 立会者1~4 工事4 工事1 立会者4 3 工事7 立会者1 7 立会者2 工事8 ブラックボックス 化 8 工事9 9 9 立会者3 6
© 2026 NTT West, Inc. All Rights Reserved. 4 /29 私の研究(博論)内容 ◼ 高度な技能を有している手配者により意思決定が行われている工事立会者手配 業務に対し実用的な手配結果を算出可能な数理モデルを構築した 長期効果 短期効果 付随効果 過去の工事立会者手配業務 デジタルデータ活用による工事立会者手配業務 人件費 年間1億(関東エリア:年間6万件) 年間0.1億(関東エリア:年間6万件)(想定) 品質 年間工事事故5件 年間工事事故0件(想定) 総移動時間 11,424 s(3.2 h) 11,593 s(3.2 h)※1 総割当ペナルティ 163 pt 81 pt※1 手配時間 3時間2回/1日 5分×2回/1日 やり方 アナログ(手書き) デジタル 手配結果 ※1:数理モデル4で総移動時間を重視すると, 総合移動時間10,697 s, 総品質146 ptとなる.
© 2026 NTT West, Inc. All Rights Reserved. 5 /29 Agenda 本日お話しする内容と所要時間 01 技術スタックと到達点 02 前提条件 — 3 つの致命点 03 事前準備(管理者作業) 04 ステップ 1〜6:構築から公開まで 05 実体験ベースのつまずきと回避策 06 まとめと次の一歩 本日構築するアプリと使う技術 リージョン / ライセンス / テナント設定 Fabric 管理ポータルでの設定 Dev Container からデプロイまでを順に解説 代表的な 7 症状と対処法 覚えるべきコマンドと拡張 2 min 3 min 2 min 10 min 2 min 1 min
© 2026 NTT West, Inc. All Rights Reserved. 6 /29 待望の Fabric Apps ~分離構成から一体化へ~ これまでの分離構成でしかTSPアプリケーションを実装できなかったが,Fabric Apps による統合で一体化を実現 BEFORE ― 分離構成 Fabric(DWH) データ基盤のみ AFTER ― Fabric Apps で一体化 ✕ 分断 Microsoft Fabric(Fabric Apps)― すべて項目として一体化 App Service 等コンテナ フロント / 計算 / 認証 これまでの課題 ・認証・ホスト・API・シークレットを毎回ゼロから配線 ・Functions/APIM・Key Vault・Storage 等を個別に用意 ・Fabric(DWH)とアプリ基盤が別世界で権限・ガバナンス分断 ・小さな業務アプリでも構築が重い → 「待望」の理由 フロント データ Fabric Apps で変わる(npx rayfin up の 1 コマンド) ・DATA:SQL + GraphQL(@entity から自動生成) ・AUTH:Entra ID SSO(App 登録の手作業から解放) ・HOSTING:Static Hosting(フロント同梱で配信) ・すべて Fabric 内の項目として一体管理できる 今回の題材:この Fabric Apps で TSP App(地図クリックで地点追加 → 最短巡回路を計算)を実装する 前提条件 → 開発環境 → デプロイ → トラブル対処までを一気通貫で扱う コンピュート 認証(SSO)
© 2026 NTT West, Inc. All Rights Reserved. 7 /29 巡回セールスマン問題(TSP)とは ・巡回セールスマン問題とは、全地点を一度ずつ訪れて出発点へ戻る最短巡回路を求める組合せ最適化問題である 目的 変数 min 𝑑𝑖𝑗 𝑥𝑖𝑗 𝑥𝑖𝑗 ∈ {0,1} 地点 i の次に j を訪れるとき 1 となる 𝑖,𝑗 総移動距離 𝑑𝑖𝑗 の総和を最小化する 制約 計算量 各地点は前後 1 回ずつ訪問、部分巡 回は MTZ 制約で排除 地点数 n の増加で解候補が階乗的 に増える 入次数 = 出次数 = 1 APPROACH / 解法 NP困難 ・厳密解:分枝限定法や Concorde ソルバーで最適性を保証する ・近似解:最近傍法で初期巡回路を作り、2-opt で交差を解消して短 縮する ・TSP App は対象地点が小規模なため、実用的な時間で最適巡回路 を計算している
© 2026 NTT West, Inc. All Rights Reserved. 8 /29 これまでと Fabric Apps の比較 ■ 同じ TSP App を、従来の Azure サービスの組合せと Fabric Apps で構築した場合の差を比較する 比較軸 これまで(Azure サービスの組合せ) 構築コマンド数 6 種のサービスを個別に配線 初期構築時間 半日~1 日(手作業が中心) 慣れるまでは半日〜1日、慣れれば約 1 時間 認証 Entra ID を手動で App 登録 Fabric SSO で自動(ログイン不要) ※Data Agent 利用時は Entra 登録要 データ層 SQL DB を別途作成・接続 Fabric SQL Database を別途定義・構築 (自動生成ではなく、同様に定義が必要) API 生成 Functions/APIM を実装 @entity から GraphQL を自動生成 ガバナンス Azure と Fabric で権限が分断 Fabric 内に項目として一体管理 ※ 構築時間は習熟度で変動(慣れるまでは従来と同程度、慣れれば約 1 時間)。 Fabric Apps(Rayfin CLI) npx rayfin up の 1 コマンド
© 2026 NTT West, Inc. All Rights Reserved. 9 /29 技術スタックと到達点 今日構築するもの — 構成要素と役割 GOAL TSP App(地図クリック → 巡回路計算)を Microsoft Fabric Apps として本番公開する Source Build TSP App (ソース) Deploy Rayfin CLI Fabric Apps STACK Rayfin CLI TypeScript / React / Vite Fabric SQL Database Dev Container 開発・デプロイ フロントエンド バックエンド(自動) Docker 開発環境
© 2026 NTT West, Inc. All Rights Reserved. 10 /29 Rayfin CLI とは ― 構築・デプロイの要 TypeScript の定義から データ・API・認証・ホスティングを自動生成し、1 コマンドで公開 rayfin CLI = Fabric Apps を構築・デプロイする公式 CLI(npm: @microsoft/rayfin-cli) DATA API / LOGIC schema.ts の @entity 定義から DAB が @entity から生成 AUTH HOSTING App 登録の手作業から解放 フロント同梱で 1 コマンド配信 SQL Database を自動生成 Entra ID SSO を自動構成 GraphQL を自動生成 KEY COMMANDS $ npx rayfin login … クラウド認証(SSO) $ npx rayfin up … ビルド→デプロイを 1 コマンド $ npx rayfin up db apply … テーブル作成後にスキーマ適用 $ rayfin connector add … … 外部データのコネクタ追加 静的ホスティングで配信 前提:VS Code / Dev Container 上で実行(GUI 構築は未対応 ― UI デプロイは今後の開発計画) Rayfinとは?Microsoft Fabricで動くAI時代のアプリ基盤を徹底解説 https://www.ai-souken.com/article/what-is-rayfin-microsoft-fabric
© 2026 NTT West, Inc. All Rights Reserved. 11 /29 Agenda ここまでの到達点と、これから進めるステップ 01 技術スタックと到達点 02 前提条件 — 3 つの致命点 03 事前準備(管理者作業) 04 ステップ 1〜6:構築から公開まで 05 実体験ベースのつまずきと回避策 06 まとめと次の一歩 本日構築するアプリと使う技術 リージョン / ライセンス / テナント設定 Fabric 管理ポータルでの設定 Dev Container からデプロイまでを順に解説 代表的な 7 症状と対処法 覚えるべきコマンドと拡張 ✓ 完了 現在地 2 min 10 min 2 min 1 min
© 2026 NTT West, Inc. All Rights Reserved. 12 /29 Step 0 — 事前準備(管理者作業) 3 つの設定をテナント / ワークスペースに反映する 01 02 03 REQUIRED Fabric Apps を有効化 テナント設定で ON にしておく WHERE HOW FAILURE MODE Fabric 管理ポータル テナント設定 → [Fabric アプリ項目を有効にする] ON 無効だとデプロイ自体が不可 REQUIRED 対応リージョンでワークスペース作成 West US 2 などの対応リージョン必須 WHERE HOW 新規ワークスペース 容量 (F SKU) を West US 2 等の対応リージョンに Japan East は 403 / 401 エラー REQUIRED アカウントにライセンス付与 Fabric / Power BI ライセンスが必要 WHERE HOW admin.microsoft.com ユーザー → ライセンスとアプリ → Power BI / Fabric リージョンは作成後の変更不可。 FAILURE MODE FAILURE MODE 未割当だと User is not licensed
© 2026 NTT West, Inc. All Rights Reserved. 13 /29 Step 1 — 開発環境を Dev Container で構築 .devcontainer 配下の 2 ファイルと VS Code 操作 FILES .devcontainer/devcontainer.json name / dockerfile を定義 forwardPorts: [5173, 3000] WORKFLOW 01 Docker Desktop を起動 未起動だと docker daemon not running 02 VS Code でコンテナーで再度開く Dev Container が立ち上がる .devcontainer/Dockerfile typescript-node:24-trixie ベース @microsoft/rayfin-cli を global install 03 プロンプトが node ➜ に変化 コンテナ内ターミナルで作業を継続
© 2026 NTT West, Inc. All Rights Reserved. 14 /29 Step 2-3 — ログインとアプリ作成 Rayfin CLI でクラウド認証 → プロジェクト生成 STEP 2 ログイン $ npx rayfin login --encryption-fallback-enabled ブラウザが開く → ログイン → Authentication successful で成功 STEP 3 TSP App プロジェクトを取得 $ git clone https://github.com/mshdtksk/tsp-fabric-app $ cd tsp-fabric-app $ npm install CAUTION rayfin/.env や .deployments.json はコミットしない SUCCESS 依存解決が完了すれば、ローカル起動の準備 OK
© 2026 NTT West, Inc. All Rights Reserved.
15 /29
Step 4-5 — vite 設定とローカル起動確認
Container 利用時必須の設定と動作確認
STEP 4 vite.config.ts を修正
export default defineConfig({
server: {
host: '0.0.0.0', // ← 追加
port: 5173,
},
});
STEP 5 ローカル起動 → 動作確認
$ npm run dev
→ http://localhost:5173/
SUCCESS
TSP App の地図 UI が表示されれば成功
・地図クリックで地点追加
・住所入力で地点追加
・「巡回路を計算」で round trip 表示
WHY
Docker コンテナ内のデフォルト設定では、ホストから localhost に到達できない。0.0.0.0
にバインドすることで疎通する。
© 2026 NTT West, Inc. All Rights Reserved. 16 /29 Step 6 — Fabric にデプロイ ビルドからエンドポイント発行まで 01 dev を停止 02 本番公開コマンド $ npx rayfin up --workspace-id <GUID> --yes Ctrl + C PIPELINE Build ビルド Upload アップロード ✓ https://your-app.fabric.microsoft.com/... が払い出されれば完了 — Fabric ポータルからも TSP App として確認できる Deploy デプロイ Endpoint URL 発行
© 2026 NTT West, Inc. All Rights Reserved. 17 /29 Step 6 — Fabric にデプロイ ビルドからエンドポイント発行まで https://fond-wren-d39f1e3aa6-westus2.webapp.fabricapps.net/ 地図上でクリックすると住所がテーブルに書き込まれる
© 2026 NTT West, Inc. All Rights Reserved. 18 /29 Troubleshooting 発生した症状から原因・対処を即座に引ける早見表 SYMPTOM CAUSE FIX docker daemon not running Docker 未起動 Docker Desktop を起動 failed to download context 一時的な通信不良 もう一度実行(再実行で復旧) rayfin not found コンテナ外で実行 コンテナ内ターミナルで実行 User is not licensed (401) ライセンス未割当 Fabric / Power BI 付与 → 再ログイン 403 Forbidden リージョン非対応 West US 2 で再作成 localhost に繋がらない vite 設定不足 host: '0.0.0.0' を追記 predev で止まる 通信に時間がかかっている 待つ/rayfin env を単体実行
© 2026 NTT West, Inc. All Rights Reserved. 19 /29 Fabric Apps vs Snowflake 連携機能はどちらも拡充中。一方でアプリ構築・既存DB接続は一長一短 観点 Microsoft Fabric / Fabric Apps Snowflake / Streamlit in Snowflake データ連携 ◎ ミラーリングが超優秀 データを動かさず、低コスト(お金・時間)で多クラウド連携 △ ゼロコピーは Salesforce のみ openflow+コンテナにコネクタ構築が必要。スキーマ変更に追従できず都度 設定 アプリ構築 △ rayfin CLI + VS Code が既定 GUI 構築は未対応(UI デプロイは今後の開発計画) ◎ Snowsight(GUI)で完結 Streamlit を GUI でコーディング。CoCo でさらに容易 既存DB接続 △ 新規 SQL DB はOK、既存・ミラーDBが難しい ミラーDBがアプリから参照しづらい(SQL エンドポイント経由を検討) ◎ テーブルパス指定だけで接続 Streamlit in Snowflake は既存DBへ手軽に接続できる 率直な所感:データ連携の伸びしろは Fabric ミラーリング、アプリ構築の手軽さは Streamlit in Snowflake 改善してほしい点: ・Fabric SSOなしのPublic公開(データの権限制御ができなくなるデメリットあり) ・IDEなしでの構築 ・既存テーブルやデータエージェントの簡易な連携
© 2026 NTT West, Inc. All Rights Reserved. 20 /29 強み:Fabric ミラーリングで低コスト連携 データを動かさず、各クラウドのデータを Fabric(OneLake)へ低コストで集約 Microsoft Fabric / OneLake Snowflake ミラーリング 低コスト・低遅延 Salesforce ⇒ 他クラウド・DB ◎ マルチクラウド時代、データの置き場を気にせず低コストで連携 集約 分析 Fabric Apps 化 データの場所を問わず、集約 → 分析 → アプリ化まで一気通貫 △ 改善希望:ミラー表示の自動更新(現状はブラウザ更新が必要)
© 2026 NTT West, Inc. All Rights Reserved. 21 /29 Agenda ここまでの到達点と、これから進めるステップ 01 技術スタックと到達点 02 前提条件 — 3 つの致命点 03 事前準備(管理者作業) 04 ステップ 1〜6:構築から公開まで 05 実体験ベースのつまずきと回避策 06 まとめと次の一歩 本日構築するアプリと使う技術 リージョン / ライセンス / テナント設定 Fabric 管理ポータルでの設定 Dev Container からデプロイまでを順に解説 代表的な 7 症状と対処法 覚えるべきコマンドと拡張 ✓ 完了 ✓ 完了 ✓ 完了 ✓ 完了 ✓ 完了 現在地
© 2026 NTT West, Inc. All Rights Reserved. まとめ CLOSING / KEY TAKEAWAYS 01 巡回セールスマン問題を Fabric Apps 上に実装し、最短巡回路を実用的な時間で計算できることを確認した 02 初期構築は慣れるまで半日~1 日かかるが、慣れれば npx rayfin up の 1 コマンドで約 1 時間に短縮できる 03 認証・データ層・API 生成は自動化される一方で、リージョン / ライセンス / テナントの 3 前提を外すと構築は失敗する 04 環境依存のつまずきは代表的な 7 症状として残るため、対処法を手元に備えて立ち上げに臨む Thank you ご清聴ありがとうございました 22 /29
© 2026 NTT West, Inc. All Rights Reserved. 23 /29 【発展編】気象データ App で 3 ステップを実演 STEP ① Snowflake Mirroringでデータ取得 …SnowflakeはMarketPlace機能でオープン データが取得しやすい(PODBを利用) STEP① ・OneLake へリアルタイム同期 ・データを動かさず低コスト連携 ・SQL Analytics Endpoint で参照 STEP② STEP ② 取得したデータをFabricAppsから参照 …OneLakeに保持したテーブルをFabricApps 配下のテーブルにコピーしてFabricAppsから参照。 ダイレクトに参照できる方法があれば知りたい! ・クロス DB 制約をコピーで回避 ・DAB が GraphQL を自動生成 ・React SPA からデータ取得 STEP③ STEP ③ DataAgentをFabricAppsから参照 ・・・DataAgentはOneLake上のテーブルを参照 ここで分析した結果が地図に反映されるとよい ・MSAL で Azure AD トークン取得 ・Assistants API で AI Skill 呼出 ・気象データに自然言語で質問 https://polar-cove-adcd330d96-westus2.webapp.fabricapps.net/ データを移動せず、集約 → 参照 → AI 対話まで Fabric App だけで完結する
© 2026 NTT West, Inc. All Rights Reserved. 24 /29 STEP① Snowflake をミラーリング Fabric ポータルでミラー DB を作成し、Snowflake のテーブルをリアルタイムに同期する CONNECTION サーバー:******-…snowflakecomputing.com ウェアハウス:***** / 認証:基本 接続後、ミラー DB が OneLake に出現 MIRRORING データを動かさず低コスト・低遅延で同期 SQL Analytics Endpoint 経由で SELECT 可 workspaceId / itemId を控えておく スキーマ追従も自動(マルチクラウド対応) Fabric:[新しいミラー化 Snowflake]ソース接続の設定画面 ◎ ミラーリングが超優秀:データの置き場を気にせず、低コストで多クラウド連携できる
© 2026 NTT West, Inc. All Rights Reserved. 25 /29 STEP② ミラーDBを App から参照する ミラー DB と App の SQL DB は直結できない(と思う) 。間にデータコピーを挟む Snowflake ミラー DB コピースクリプト Fabric SQL DAB React SPA (SQL Analytics EP) (Node.js / BulkLoad) Database (GraphQL 自動生成) (Fabric App) ✕ クロス DB クエリ不可(Error 40515):3-part 名前解決は禁止。同一ワークスペース内の別アイテムも直参照できない rayfin.yml の connectors: は「開発時のスキーマ探索」専用。rayfin up のデプロイでは送信されない ⇒ Endpoint と SQL DB に別々に接続し、スクリプトでデータをコピーして橋渡しする
© 2026 NTT West, Inc. All Rights Reserved. 26 /29 STEP② 参照を実装する 6 ステップ コネクタでスキーマ探索 → @entity 定義 → デプロイ → データ投入 → 設定同期 01 コネクタ追加 rayfin connector add … --connector fabric-sqlanalytics(workspaceId / itemId を指定) 02 エンティティ定義 @uuid / @text / @decimal / @date で列を定義し、@role('authenticated',['read']) を付与 03 スキーマ登録 rayfin/data/schema.ts の schema 配列にエンティティを追加 04 デプロイ npx rayfin up → DAB JSON と静的ホスティングを適用し、空テーブルを自動生成 05 データ投入 populate スクリプトで Endpoint→SQL DB に BulkLoad(tedious v19 は rows を第2引数) 06 設定同期 npx rayfin up db apply(必ずテーブル作成後に実行。先に実行すると 500) 順序が命:テーブルが無い状態で db apply は 500。Rayfin up 後はサインインし直して JWT を再取得する
© 2026 NTT West, Inc. All Rights Reserved. 27 /29 STEP③ Data Agent を App から参照 ブラウザから MSAL で Azure AD トークンを取得し、Assistants API 互換で AI Skill を呼ぶ CALL FLOW 正しいパス /dataagents/{id}/aiassistant/openai AI Skill は Publish しないと推論不可 Assistants→threads→runs→messages の多段 assistant_id は /assistants で取得(asst_xxx) AUTH / REGISTER SPA で App 登録+リダイレクト URI を追加 スコープは Item.Execute.All を明示指定 iframe は acquireTokenRedirect で突破 allowRedirectInIframe + localStorage Entra:SPA としてアプリ登録し、リダイレクト URI を設定 Assistants API は 2026/8/26 廃止予定 → MCP エンドポイントへ移行していく
© 2026 NTT West, Inc. All Rights Reserved. 28 /29 STEP③ つまずき早見表(Data Agent 接続) 症状から原因と対処を即座に引ける早見表 SYMPTOM CAUSE FIX 404 EntityNotFound AI Skill が未公開/パス誤り Publish 後に Published URL を使う 401 InvalidToken Rayfin JWT を誤使用 MSAL で Azure AD トークンを取得 403 required scopes スコープ不足 Item.Execute.All を明示指定 400 BadRequest (runs) assistant_id が UUID 形式 /assistants で asst_xxx を取得 popup / ssoSilent 失敗 iframe の cookie / popup ブロック acquireTokenRedirect にフォールバック TypeScript ランタイムのデプロイ不可バグは、ブラウザ直接呼び出し(MSAL)で回避した
© 2026 NTT West, Inc. All Rights Reserved. 29 /29 完成:気象データ Explorer(デモ) Snowflake の気象データを Fabric App 上で可視化し、Data Agent に自然言語で質問できる 01 データを動かさず Snowflake をミラーリングし、OneLake へ低コスト集 約 02 クロス DB 制約はコピー+DAB で回避し、ミラー表を App から参照 03 MSAL+Assistants API で Data Agent を呼び、気象データに自然 言語で問合せ 気象データの地図可視化(ミラー表を Fabric App から参照) データの置き場を問わず、集約・参照・AI 対話まで Fabric App だけで一気通貫に実現できる
© 2026 NTT West, Inc. All Rights Reserved. 宣伝1 • [1] Fabric Development Deep Dive [2026-06] • 2026/6/29 20:00~21:00 • https://sqlserver.connpass.com/event/396469/ 30 /29
© 2026 NTT West, Inc. All Rights Reserved. 宣伝2 • 翔泳社 EnterpriseZineにて、「ITアーキテクトに求められる、新たな キャリア戦略とは」(全4回)で連載中(次回最終回は7月中旬) • 博士号兼3大クラウド資格全冠エンジニアが語る、トップガンITアーキテクトへの道のり(4/28) • NTT西日本のデータ基盤刷新、数十億円のコスト削減と東西共同利用化 3大クラウド資格全冠どう生かした(5/28) • NTT西日本が「1人の成功」を組織としてスケールできた理由 トップガン人材が考える、人材育成術(6/18) • https://enterprisezine.jp/author/842 31 /29