SlideShare a Scribd company logo
#vscodejp
VSCode で始める
Azure Static Web Apps 開発
2021/11/20 VSCode Conference Japan
Yuta Matsumura
#vscodejp
松村 優大 (Yuta Matsumura)
Chief Technical Architect (C#, PHP, Azure)
Microsoft MVP (Developer Technologies)
#fukuten #devblogradio
@tsubakimoto_s
Currently working for
#vscodejp
https://fukuten.connpass.com/
#vscodejp
今日の内容
• Azure Static Web Apps について
• Azure Static Web Apps のローカル開発環境
• Azure Static Web Apps の CI/CD
対象
✓これから Azure Static Web Apps を始める方
✓開発環境やデバッグを効率化したい方
#vscodejp
ダイジェスト版は Qiita で公開しています
https://qiita.com/tsubakimoto_s/items/4939a6d6e647721309a3
#vscodejp
Azure Static Web Apps
• 静的な Web アプリケーションのホスティングに特化
• Azure Functions によるバックエンド API をサポート
• GitHub Actions, Azure DevOps での CI/CD をサポート 等
https://azure.microsoft.com/ja-jp/services/app-service/static/
#vscodejp
Azure Static Web Apps
• 静的な Web アプリケーションのホスティングに特化
▶ Laravel や ASP.NET 等のサーバーサイドアプリケーションは動きません
他にも様々なフレームワークのアプリをホストすることができます
https://docs.microsoft.com/ja-jp/azure/static-web-apps/front-end-frameworks
Angular React Vue.js .NET
(Blazor WebAssembly)
#vscodejp
Azure Static Web Apps
• Azure Functions によるバックエンド API をサポート
①マネージド
▶リソースは存在するが直接の操作は不可
※Free SKU & Standard SKU
②持ち込み
▶自身で作成した Functions を持ち込める
※Standard SKU のみ
#vscodejp
Azure Static Web Apps
• GitHub Actions, Azure DevOps での CI/CD をサポート
▶ Git リポジトリからのデプロイや Zip ファイルでのデプロイは未サポート
GitHub Actions
Azure Pipelines
***.yml
***.yml
Azure Static Web Apps
#vscodejp
Azure Static Web Apps
• 他にも便利な機能がたくさんあるのでオススメ
• カスタムドメイン設定可
• SSL 証明書が無料提供
• バックエンドルーティング制御
• プルリクエストを自動的に専用ステージにデプロイ
• 無料プランあり(主に個人利用)
#vscodejp
VS Code で開発環境を作ってみよう
• WSL2 (Ubuntu 20.04)
• Visual Studio Code
• 拡張機能: Remote Development
• 拡張機能: Azure Functions
• 拡張機能: Live Server
• Azure Functions Core Tools
※あくまで一例です。ご自身の使う言語に応じてカスタマイズしましょう。
#vscodejp
ざっくりとした手順
1. Azure Functions のプロジェクト作成 (=Web API)
2. Web アプリケーション作成 (=フロントエンド)
3. プロキシ設定と実行
4. 専用 CLI でもっと開発しやすく
#vscodejp
Azure Functions のプロジェクト作成
例:Nodejs Web API
#vscodejp
アプリと API のフォルダを作成 mkdir static-web-app-sample
cd static-web-app-sample/
mkdir app
mkdir api
code .
#vscodejp
Azure Functions のプロジェクトを作成
(VSCode 拡張機能もしくは CLI で)
$ cd api
$ func init
Select a number for worker runtime:
~中略~
3. node
~中略~
Choose option: 3
node
Select a number for language:
1. javascript
2. typescript
Choose option: 1
javascript
~中略~
#vscodejp
HTTP トリガーの関数を作成
(VSCode 拡張機能もしくは CLI で)
$ func new
Select a number for template:
~中略~
10. HTTP trigger
~中略~
Choose option: 10
HTTP trigger
Function name: [HttpTrigger] HttpTrigger1
Writing /home/tsubaki/src/static-web-app-
sample/api/HttpTrigger1/index.js
Writing /home/tsubaki/src/static-web-app-
sample/api/HttpTrigger1/function.json
The function "HttpTrigger1" was created
successfully from the "HTTP trigger"
template.
#vscodejp
とりあえず F5 デバッグ実行 $ func start
#vscodejp
Web アプリケーション作成
今回は素の HTML です
#vscodejp
app/index.html を作成
API を実行する JS コードを書く
#vscodejp
拡張機能: Live Server
開発環境向けの簡易的な Web サーバーを利用することが
できる拡張機能。
https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer
#vscodejp
API が見つからない
localhost:5500 から localhost:7071 にある API にアクセスできず、
正しい API レスポンスを取得することができない。
▶プロキシの設定を行うことで対処する
HTTP 404 のレスポンス
#vscodejp
.vscode/settings.json に
Live Server プロキシ設定を行う
{
~中略~
"liveServer.settings.proxy": {
"enable": true,
"baseUri": "/api",
"proxyUri": "http://127.0.0.1:7071/api"
}
}
#vscodejp
Live Server を再起動・再読込
きちんと API がコールされる
#vscodejp
専用 CLI でもっと手軽に
https://github.com/Azure/static-web-apps-cli
npm install -g @azure/static-web-apps-cli
#vscodejp
Azure Static Web Apps CLI
swa start コマンド
コマンドの実行ディレクトリにおいて、API と Webアプリを
同時に実行することができる
#vscodejp
cd static-web-app-sample
swa start app --api-location api
※API のデバッグができない
#vscodejp
予め実行した API を CLI で指定する
VSCode で Functions をデバッグ起動したうえで API URL を指定する
swa start app --api-location http://localhost:7071
#vscodejp
Azure Static Web Apps にデプロイする
#vscodejp
デプロイ方法は 2種類
いずれも YAML ファイルでビルドやデプロイの構成を定義する
サービス リポジトリ CI/CD
GitHub GitHub GitHub Actions
Azure DevOps Azure Repos Azure Pipelines
#vscodejp
GitHub Actions の場合
日本リージョンはまだ
GitHub を選択
アプリケーションの種類
を指定 (React, Vue.js 等)
デプロイしたい
リポジトリを指定
#vscodejp
GitHub Actions の場合
リソース作成と同時にリポジトリに YAML ファイルがコミッ
トされ、GitHub Actions が動きデプロイが行われる。
#vscodejp
Azure Pipelines の場合
「その他」を選択
デプロイトークンを
控えておく
#vscodejp
Azure Pipelines での
Static Web Apps デプロイ構成
trigger:
- main
pool:
vmImage: ubuntu-latest
steps:
- checkout: self
submodules: true
- task: AzureStaticWebApp@0
inputs:
app_location: '/app'
api_location: '/api'
output_location: ''
azure_static_web_apps_api_token: $(deployment_token)
https://docs.microsoft.com/ja-jp/azure/static-web-apps/publish-devops
デプロイトークンを
ここで指定する
#vscodejp
https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azurestaticwebapps
VSCode 拡張機能もある
#vscodejp
まとめ
Azure Static Web Apps は SPA の実行に適したサービスです。
VSCode & CLI でフロントエンドとバックエンドを同時に開
発できる環境を作れます。
Azure Static Web Apps は無料で利用でき、CI/CD の構築も手
軽です。“とりあえず試してみる” にはすごく適しています。
#vscodejp
参考
• 公式ドキュメント・拡張機能
• https://azure.microsoft.com/ja-jp/services/app-service/static/
• https://docs.microsoft.com/ja-jp/azure/static-web-apps/
• https://docs.microsoft.com/ja-jp/azure/static-web-apps/local-development
• https://docs.microsoft.com/ja-jp/learn/paths/azure-static-web-apps/
• https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azurestaticwebapps
• 本セッションの元ネタ・サンプルコード
• https://qiita.com/tsubakimoto_s/items/4939a6d6e647721309a3
• https://qiita.com/tsubakimoto_s/items/08265048106cd0eb054f
• https://github.com/tsubakimoto/static-web-app-sample

More Related Content

PDF
Github codespaces すごく良い。もうこれで 十分なんじゃという話
PDF
会社でClojure使ってみて分かったこと
PPTX
初心者向けMongoDBのキホン!
PDF
Djangoフレームワークのユーザーモデルと認証
PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
PDF
インフラエンジニアの綺麗で優しい手順書の書き方
PDF
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
PDF
例外設計における大罪
Github codespaces すごく良い。もうこれで 十分なんじゃという話
会社でClojure使ってみて分かったこと
初心者向けMongoDBのキホン!
Djangoフレームワークのユーザーモデルと認証
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
インフラエンジニアの綺麗で優しい手順書の書き方
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
例外設計における大罪

What's hot (20)

PDF
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
PDF
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
PDF
Railsで作るBFFの功罪
PDF
今さら聞けないDiとspring
PPTX
kintoneチームを支えるSeleniumテスト
PDF
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
PDF
スマホアプリ開発者のためのWeb api開発入門の入門
PPTX
An other world awaits you
PPTX
関数型・オブジェクト指向 宗教戦争に疲れたなたに送るGo言語入門
PDF
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
PDF
オブジェクト指向エクササイズのススメ
PDF
Redmineとgitの 連携利用事例
PPTX
Python製BDDツールで自動化してみた
PPTX
世界一わかりやすいClean Architecture
PDF
40歳過ぎてもエンジニアでいるためにやっていること
PDF
Python におけるドメイン駆動設計(戦術面)の勘どころ
PPTX
さくっと理解するSpring bootの仕組み
PDF
[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo...
PDF
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
PDF
MvcのFatモデルに立ち向かう
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
Railsで作るBFFの功罪
今さら聞けないDiとspring
kintoneチームを支えるSeleniumテスト
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
スマホアプリ開発者のためのWeb api開発入門の入門
An other world awaits you
関数型・オブジェクト指向 宗教戦争に疲れたなたに送るGo言語入門
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
オブジェクト指向エクササイズのススメ
Redmineとgitの 連携利用事例
Python製BDDツールで自動化してみた
世界一わかりやすいClean Architecture
40歳過ぎてもエンジニアでいるためにやっていること
Python におけるドメイン駆動設計(戦術面)の勘どころ
さくっと理解するSpring bootの仕組み
[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo...
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
MvcのFatモデルに立ち向かう
Ad

Similar to VSCodeで始めるAzure Static Web Apps開発 (20)

PDF
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
PDF
jQuery と MVC で実践する標準志向 Web 開発
PPTX
.NET Core 3.0 で Blazor を使用した​フルスタック C# Web アプリ​の構築
PDF
ASP. NET Core 汎用ホスト概要
PDF
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
PDF
はてなにおける継続的デプロイメントの現状と Docker の導入
PDF
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
PDF
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
PDF
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
PDF
Mvc conf session_5_isami
PDF
Application development with c#, .net 6, blazor web assembly, asp.net web api...
PDF
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
PDF
Application development with c#, .net 6, blazor web assembly, asp.net web api...
PPTX
13016 n分で作るtype scriptでnodejs
PDF
One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~
PDF
.NET Coreから概観する.NETのOSSへの取り組み
PDF
JavaScript And Keywords
PPTX
Wasm blazor and wasi 2
PDF
Application development with c#, .net 6, blazor web assembly, asp.net web api...
PDF
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
jQuery と MVC で実践する標準志向 Web 開発
.NET Core 3.0 で Blazor を使用した​フルスタック C# Web アプリ​の構築
ASP. NET Core 汎用ホスト概要
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
はてなにおける継続的デプロイメントの現状と Docker の導入
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
Mvc conf session_5_isami
Application development with c#, .net 6, blazor web assembly, asp.net web api...
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
Application development with c#, .net 6, blazor web assembly, asp.net web api...
13016 n分で作るtype scriptでnodejs
One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~
.NET Coreから概観する.NETのOSSへの取り組み
JavaScript And Keywords
Wasm blazor and wasi 2
Application development with c#, .net 6, blazor web assembly, asp.net web api...
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
Ad

More from Yuta Matsumura (20)

PDF
「自分のとこでは動くけど…」を無くす devcontainer
PDF
チーム開発で徐々にコード品質をあげていく取り組み
PDF
.NETのサポートポリシーのおさらい #csharptokyo
PDF
App Modernization for .NET
PDF
分かったうえではじめるCI/CD
PDF
いつでもどこでも .NET
PDF
.NET アプリを改善して実践する継続的インテグレーション
PDF
マイクロサービス開発が捗る Project Tye
PDF
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
PDF
Azure の ID 管理サービスに LINE ログインを組み込もう
PDF
Blazor Server テンプレート解説
PDF
The Twelve-Factor (A|M)pp with C#
PDF
改めて C# でできることを振り返る
PDF
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
PDF
忙しい人のための .NET Conf 2019 まとめ
PDF
.NET Conf の歩き方
PDF
PHPカンファレンス福岡2019 閉会式
PDF
PHPカンファレンス福岡2019 開会式
PDF
これから始める Bot Builder 開発のコツと舞台裏
PDF
ASP.NET Core 2.x Identityについて
「自分のとこでは動くけど…」を無くす devcontainer
チーム開発で徐々にコード品質をあげていく取り組み
.NETのサポートポリシーのおさらい #csharptokyo
App Modernization for .NET
分かったうえではじめるCI/CD
いつでもどこでも .NET
.NET アプリを改善して実践する継続的インテグレーション
マイクロサービス開発が捗る Project Tye
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
Azure の ID 管理サービスに LINE ログインを組み込もう
Blazor Server テンプレート解説
The Twelve-Factor (A|M)pp with C#
改めて C# でできることを振り返る
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
忙しい人のための .NET Conf 2019 まとめ
.NET Conf の歩き方
PHPカンファレンス福岡2019 閉会式
PHPカンファレンス福岡2019 開会式
これから始める Bot Builder 開発のコツと舞台裏
ASP.NET Core 2.x Identityについて

VSCodeで始めるAzure Static Web Apps開発