SlideShare a Scribd company logo
1 of 31
Download to read offline
2020/06/16
Azure Static Web Apps と
Visual Studio Codespaces で
快適な TypeScript 環境を構築する
Issei Hiraoka / 平岡 一成 / @hoisjp
TypeScript Meetup #4; https://typescript-jp.connpass.com/event/177175/
Disclaimer: 本情報は 2020/06/16 時点の情報です。ご了承ください。
speaker: @hoisjp, hashtag: #tsjp
Issei Hiraoka / 平岡 一成
仕事は、クラウドの技術営業
日本マイクロソフト株式会社 クラウドソリューションアーキテクト
ex-楽天株式会社 サーバーサイドエンジニア
先日 6/3 に VS Code Meetup #5 で TypeScript x VS Codespaces
ハンズオンをやりましたので、そちらもご参考まで。
共著で Visual Studio Code の書籍を執筆
最後に、書籍プレゼントのお知らせあります!
About me
自己紹介
@hoisjp
hoisjp
speaker: @hoisjp, hashtag: #tsjp
1. Azure Static Web Apps
GitHub Actions + Static Web App + Azure Functions
試すならば、このコンテンツから
2. Visual Studio Codespaces
VS Code の環境をクラウドでホスト
真骨頂は、devcontainer.json & Dockerfile
More…
より踏み込んだ情報のお知らせ
書籍プレゼントのご案内
Agenda in 20 minutes
詰め込みすぎました。美味しいところだけお持ち帰りいただければと!
Azure Static Web Apps (Preview)
Build 2020 (2020/05) で待望のサービスがプレビュー開始
speaker: @hoisjp, hashtag: #tsjp
app
api
REPO
PUSH/PR ACTION
STATIC WEB APPS
API
Azure Functions
STATIC CONTENT
HTML/JavaScript/CSS
speaker: @hoisjp, hashtag: #tsjp
プレビュー期間につき、料金は無料
https://azure.microsoft.com/ja-jp/pricing/details/app-service/static/
speaker: @hoisjp, hashtag: #tsjp
速習のおすすめは、ずばりこれ
Microsoft Learn を “Static Web Apps” で検索
https://docs.microsoft.com/ja-jp/learn/browse/?term=static%20web%20apps
Azure をサンドボックス上で利用できるので、無料試用アカウントすら不要
speaker: @hoisjp, hashtag: #tsjp
Microsoft Learn で Azure Static Web Apps
https://docs.microsoft.com/ja-jp/learn/modules/publish-app-service-static-web-app-api/
speaker: @hoisjp, hashtag: #tsjp
Azure Portal で Static Web App を作成
GitHub のリポジトリとブランチ
プライベートリポジトリでOK
Step 1 Step 2
speaker: @hoisjp, hashtag: #tsjp
デモ: GitHub Actions のパイプラインでデプロイされる様子
speaker: @hoisjp, hashtag: #tsjp
プルリクエストのプレビューも自動でステージング
PR を反映させたリンクを発行
https://gentle-wave-0f5ce5e00-2.eastasia.azurestaticapps.net
“-2” は PR 番号
Docs:
https://docs.microsoft.com/ja-jp/azure/static-
web-apps/review-publish-pull-requests
speaker: @hoisjp, hashtag: #tsjp
Azure Functions ってこんな感じ
Static Web Apps では現在 JavaScript に対応 (= TypeScript OK!)
このサーバーサイドロジックが、同一ドメインである、
https://***/api から Serve される
Visual Studio Codespaces (Preview)
クラウドでホストされた Visual Studio Code 環境を提供
speaker: @hoisjp, hashtag: #tsjp
開発環境を即座に作成する
Microsoft Learn で行き届いていなかったもの
https://docs.microsoft.com/ja-jp/learn/modules/publish-app-service-static-web-app-api/
speaker: @hoisjp, hashtag: #tsjp
仕組みをざっくりと
ブラウザで使える点が注目されがちですが、Visual Studio Code からも接続可能
Azure
Visual Studio Codespaces
Browser
Local
devcontainer.json
Dockerfile
speaker: @hoisjp, hashtag: #tsjp
デモ: Codespaces を作成して起動する
speaker: @hoisjp, hashtag: #tsjp
devcontainer.json & Dockerfile
Visual Studio Codespaces で環境ができあがるからくり
.devcontainer
devcontainer.json
Dockerfile
speaker: @hoisjp, hashtag: #tsjp
{
"name": "Node.js 12 & TypeScript",
"dockerFile": "Dockerfile",
"forwardPorts": [8080],
"settings": {
"terminal.integrated.shell.linux": "/bin/bash"
},
"extensions": [
"dbaeumer.vscode-eslint",
"ms-vscode.vscode-typescript-tslint-plugin",
"eamodio.gitlens",
"ms-azuretools.vscode-docker",
"ms-azuretools.vscode-azurefunctions",
"ms-azuretools.vscode-azurestaticwebapps"
],
// "postCreateCommand": "yarn install",
"remoteUser": "node"
}
.devcontainer/devcontainer.json
forwardPorts
ポートフォワーディングするポート番号
extensions
インストールする拡張機能を指定
チームに半強制的に拡張を展開できる
remoteUser
指定しない場合、root ユーザでログイン
指定しておくべき
詳細参考
https://code.visualstudio.com/docs/remo
te/containers
speaker: @hoisjp, hashtag: #tsjp
FROM mcr.microsoft.com/azure-functions/node:3.0-node12-core-tools
ARG USERNAME=node
ARG USER_UID=1000
ARG USER_GID=$USER_UID
RUN if [ "$USER_GID" != "1000" ] || [ "$USER_UID" != "1000" ]; then
¥
groupmod --gid $USER_GID $USERNAME ¥
&& usermod --uid $USER_UID --gid $USER_GID $USERNAME ¥
&& chmod -R $USER_UID:$USER_GID /home/$USERNAME ¥
&& chmod -R $USER_UID:root /usr/local/share/nvm
/usr/local/share/npm-global; ¥
fi ¥
# Install eslint, typescript. eslint is installed by javascript
image
&& sudo -u ${USERNAME} npm install -g eslint typescript
.devcontainer/Dockerfile
FROM
ここでは、Azure Functions 用に
Functions Core Tools がインストールされ
たイメージをベースに、TypeScriptを追加
extensions
インストールする拡張機能を指定
remoteUser
指定しない場合、root ユーザで
詳細参考
https://code.visualstudio.com/docs/remo
te/containers
speaker: @hoisjp, hashtag: #tsjp
devcontainer.json & Dockerfile
サンプルは豊富にあるので、これらをベースに味付けするのが楽
https://github.com/microsoft/vscode-dev-containers
https://github.com/microsoft/vscode-dev-containers/tree/master/containers から、下記は抜粋
speaker: @hoisjp, hashtag: #tsjp
devcontainer & Dockerfile でリモート開発環境
ローカルの Docker コンテナで、同じ環境設定を使う(もともとこちらが先にリリースされていた)
Azure
Visual Studio Codespaces
Browser
Local
devcontainer.json
Dockerfile
speaker: @hoisjp, hashtag: #tsjp
Remote-Containers でローカルの Docker 環境
devcontainer.json と Dockerfile はそのまま活用
speaker: @hoisjp, hashtag: #tsjp
インスタンスは現在3種類
https://azure.microsoft.com/en-us/pricing/details/visual-studio-online/
speaker: @hoisjp, hashtag: #tsjp
Basic (2 cores, 4GB RAM, 64 GB SSD)
• npm install: added 1430 packages from 911 contributors and audited 1500 packages in 31.525s
• npm run serve: Compiled successfully in 7385ms
Standard (4 cores, 8 GB RAM, 64 GB SSD)
• npm install: … in 23.444s
• npm run serve: … in 5782ms
Premium (8 cores, 16 GB RAM, 64 GB SSD)
• npm install: … in 21.495s
• npm run serve: ... in 5316ms
Info: インスタンスタイプでどれほど違うものか
Vue の npm install と npm run serve でベンチマーク
ちなみに、いずれの CPU も、
$ cat /proc/cpuinfo
…
cpu family : 6
model : 85
model name : Intel(R) Xeon(R) Platinum
8168 CPU @ 2.70GHz
…
cpu MHz : 2693.762
cache size : 33792 KB
speaker: @hoisjp, hashtag: #tsjp
Tips: dotfiles で各自のパーソナライズ
https://docs.microsoft.com/en-us/visualstudio/online/reference/personalizing
.devcontainer/* でチーム共通の環境を整えつつ、
dotfiles でそれぞれのお好み設定を。
e.g. bash などの設定
⇒共通の環境を汚さずに、各自のパーソナライズが可能
speaker: @hoisjp, hashtag: #tsjp
GitHub Codespaces が Private Preview 中(期待!)
https://github.com/features/codespaces/
More…
speaker: @hoisjp, hashtag: #tsjp
Microsoft Docs 公式ドキュメント
https://aka.ms/swadocs
John Papa’s blog; more samples
https://johnpapa.net/static-web-apps-first-look/
Preview 中につき、フィードバック歓迎
https://github.com/Azure/static-web-apps
GitHub Actions の実体
https://github.com/Azure/static-web-apps-deploy
もっと詳しく知りたいかたへ ( 1 )
Subtitle (if needed)
speaker: @hoisjp, hashtag: #tsjp
もっと詳しく知りたいかたへ ( 2 )
6/17 (水) から de:code 2020 というオンラインイベントがございまして
https://www.microsoft.com/ja-jp/events/decode/2020session/detail.aspx?sid=A14
speaker: @hoisjp, hashtag: #tsjp
応募条件
- Visual Studio Code が大好きであること
(プログラマでなくてもOK!愛する気持ちが大事です)
- 発送先住所(オフィス or 自宅)をご連絡いただけるかた
- ブログまたはSNSなどでレビューをいただけるかた
応募締め切りと当選ご連絡について
配信完了の時間を目途に応募締め切りとさせていただきまして、
当選されたかた2名へ 6/23(火)までに、
別途ご連絡さしあげます。
プログラマーのための Visual Studio Code の教科書
プレゼント企画 from マイナビ出版様
https://bit.ly/vscodebook
Thank you!

More Related Content

What's hot

AndroidStudioはじめました ~Gradle編~
AndroidStudioはじめました ~Gradle編~AndroidStudioはじめました ~Gradle編~
AndroidStudioはじめました ~Gradle編~Yabata Tomomitsu
 
VSCode Conference Japan 2021 kyusque
VSCode Conference Japan 2021 kyusqueVSCode Conference Japan 2021 kyusque
VSCode Conference Japan 2021 kyusquekyusque
 
Windows コンテナを AKS に追加する
Windows コンテナを AKS に追加するWindows コンテナを AKS に追加する
Windows コンテナを AKS に追加するYuto Takei
 
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説Takao Tetsuro
 
bicep dev container
bicep dev containerbicep dev container
bicep dev containerTakekazu Omi
 
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017Kohei Saito
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#Yuta Matsumura
 
.NET Core時代のCI/CD
.NET Core時代のCI/CD.NET Core時代のCI/CD
.NET Core時代のCI/CDYuta Matsumura
 
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指してAkira Inoue
 
ASP.NET CoreとAzure AD B2Cを使ったサクっと認証
ASP.NET CoreとAzure AD B2Cを使ったサクっと認証ASP.NET CoreとAzure AD B2Cを使ったサクっと認証
ASP.NET CoreとAzure AD B2Cを使ったサクっと認証Yuta Matsumura
 
[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ
[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ
[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリde:code 2017
 
GitとCIとかチャットとかをオンプレで運用する話
GitとCIとかチャットとかをオンプレで運用する話GitとCIとかチャットとかをオンプレで運用する話
GitとCIとかチャットとかをオンプレで運用する話mdome
 
RESTful API (JAX-RS) 書くだけで仕様書も 自動で作られていく話 with MicroProfile Open API
RESTful API (JAX-RS) 書くだけで仕様書も自動で作られていく話 with MicroProfile Open APIRESTful API (JAX-RS) 書くだけで仕様書も自動で作られていく話 with MicroProfile Open API
RESTful API (JAX-RS) 書くだけで仕様書も 自動で作られていく話 with MicroProfile Open APIKohei Saito
 
How to create your own Azure Pipeline's image
How to create your own Azure Pipeline's imageHow to create your own Azure Pipeline's image
How to create your own Azure Pipeline's imageKazushi Kamegawa
 
スッとGoを取り入れる
スッとGoを取り入れるスッとGoを取り入れる
スッとGoを取り入れるYusuke Wada
 
[社内勉強会]Gradleを使おう
[社内勉強会]Gradleを使おう[社内勉強会]Gradleを使おう
[社内勉強会]Gradleを使おうhirooooo
 
.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーションYuta Matsumura
 
Multibranch Pipeline with Docker 入門編
Multibranch Pipeline with Docker 入門編Multibranch Pipeline with Docker 入門編
Multibranch Pipeline with Docker 入門編kimulla
 
GitHub Actions で CI/CD
GitHub Actions で CI/CDGitHub Actions で CI/CD
GitHub Actions で CI/CDIssei Hiraoka
 

What's hot (20)

AndroidStudioはじめました ~Gradle編~
AndroidStudioはじめました ~Gradle編~AndroidStudioはじめました ~Gradle編~
AndroidStudioはじめました ~Gradle編~
 
VSCode Conference Japan 2021 kyusque
VSCode Conference Japan 2021 kyusqueVSCode Conference Japan 2021 kyusque
VSCode Conference Japan 2021 kyusque
 
Windows コンテナを AKS に追加する
Windows コンテナを AKS に追加するWindows コンテナを AKS に追加する
Windows コンテナを AKS に追加する
 
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
 
bicep dev container
bicep dev containerbicep dev container
bicep dev container
 
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
 
.NET Core時代のCI/CD
.NET Core時代のCI/CD.NET Core時代のCI/CD
.NET Core時代のCI/CD
 
Jenkins と groovy
Jenkins と groovyJenkins と groovy
Jenkins と groovy
 
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
 
ASP.NET CoreとAzure AD B2Cを使ったサクっと認証
ASP.NET CoreとAzure AD B2Cを使ったサクっと認証ASP.NET CoreとAzure AD B2Cを使ったサクっと認証
ASP.NET CoreとAzure AD B2Cを使ったサクっと認証
 
[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ
[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ
[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ
 
GitとCIとかチャットとかをオンプレで運用する話
GitとCIとかチャットとかをオンプレで運用する話GitとCIとかチャットとかをオンプレで運用する話
GitとCIとかチャットとかをオンプレで運用する話
 
RESTful API (JAX-RS) 書くだけで仕様書も 自動で作られていく話 with MicroProfile Open API
RESTful API (JAX-RS) 書くだけで仕様書も自動で作られていく話 with MicroProfile Open APIRESTful API (JAX-RS) 書くだけで仕様書も自動で作られていく話 with MicroProfile Open API
RESTful API (JAX-RS) 書くだけで仕様書も 自動で作られていく話 with MicroProfile Open API
 
How to create your own Azure Pipeline's image
How to create your own Azure Pipeline's imageHow to create your own Azure Pipeline's image
How to create your own Azure Pipeline's image
 
スッとGoを取り入れる
スッとGoを取り入れるスッとGoを取り入れる
スッとGoを取り入れる
 
[社内勉強会]Gradleを使おう
[社内勉強会]Gradleを使おう[社内勉強会]Gradleを使おう
[社内勉強会]Gradleを使おう
 
.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション
 
Multibranch Pipeline with Docker 入門編
Multibranch Pipeline with Docker 入門編Multibranch Pipeline with Docker 入門編
Multibranch Pipeline with Docker 入門編
 
GitHub Actions で CI/CD
GitHub Actions で CI/CDGitHub Actions で CI/CD
GitHub Actions で CI/CD
 

Similar to 2020/06/16 tsjp-azure-staticwebapps-vs_codespaces

ゆるふわAzure Functions
ゆるふわAzure FunctionsゆるふわAzure Functions
ゆるふわAzure FunctionsKeiji Kamebuchi
 
Goで作って配布するAzureコマンドラインユーティリティ
Goで作って配布するAzureコマンドラインユーティリティGoで作って配布するAzureコマンドラインユーティリティ
Goで作って配布するAzureコマンドラインユーティリティyaegashi
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejsTakayoshi Tanaka
 
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた日本マイクロソフト株式会社
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力ThinReports
 
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)Masanori Ishigami
 
Power shell で DSL
Power shell で DSLPower shell で DSL
Power shell で DSLurasandesu
 
パーソナルデータのあり方を変える!オープンソース分散型PDS「Personium」を使ってみよう!
パーソナルデータのあり方を変える!オープンソース分散型PDS「Personium」を使ってみよう!パーソナルデータのあり方を変える!オープンソース分散型PDS「Personium」を使ってみよう!
パーソナルデータのあり方を変える!オープンソース分散型PDS「Personium」を使ってみよう!泰史 栃折
 
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるNetラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるdavid9142
 
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!Yasuaki Matsuda
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発Yuta Matsumura
 
de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!Minoru Naito
 
Swaggerを利用した新規サービス開発
Swaggerを利用した新規サービス開発Swaggerを利用した新規サービス開発
Swaggerを利用した新規サービス開発recotech
 
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについてMasahito Zembutsu
 
.NETの自作ツール公開手段
.NETの自作ツール公開手段.NETの自作ツール公開手段
.NETの自作ツール公開手段Pierre3 小林
 
シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016Yu Ito
 
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用de:code 2017
 
Introduction to extensions and other useful features for developing apps usin...
Introduction to extensions and other useful features for developing apps usin...Introduction to extensions and other useful features for developing apps usin...
Introduction to extensions and other useful features for developing apps usin...Shotaro Suzuki
 
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.jsAmazon Web Services Japan
 

Similar to 2020/06/16 tsjp-azure-staticwebapps-vs_codespaces (20)

ゆるふわAzure Functions
ゆるふわAzure FunctionsゆるふわAzure Functions
ゆるふわAzure Functions
 
Goで作って配布するAzureコマンドラインユーティリティ
Goで作って配布するAzureコマンドラインユーティリティGoで作って配布するAzureコマンドラインユーティリティ
Goで作って配布するAzureコマンドラインユーティリティ
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
 
Windows Azure PHP Tips
Windows Azure PHP Tips Windows Azure PHP Tips
Windows Azure PHP Tips
 
Power shell で DSL
Power shell で DSLPower shell で DSL
Power shell で DSL
 
パーソナルデータのあり方を変える!オープンソース分散型PDS「Personium」を使ってみよう!
パーソナルデータのあり方を変える!オープンソース分散型PDS「Personium」を使ってみよう!パーソナルデータのあり方を変える!オープンソース分散型PDS「Personium」を使ってみよう!
パーソナルデータのあり方を変える!オープンソース分散型PDS「Personium」を使ってみよう!
 
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるNetラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
 
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
 
de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!
 
Swaggerを利用した新規サービス開発
Swaggerを利用した新規サービス開発Swaggerを利用した新規サービス開発
Swaggerを利用した新規サービス開発
 
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて
 
.NETの自作ツール公開手段
.NETの自作ツール公開手段.NETの自作ツール公開手段
.NETの自作ツール公開手段
 
シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016
 
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
 
Introduction to extensions and other useful features for developing apps usin...
Introduction to extensions and other useful features for developing apps usin...Introduction to extensions and other useful features for developing apps usin...
Introduction to extensions and other useful features for developing apps usin...
 
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js
 

More from Issei Hiraoka

Infra as Code in Azure
Infra as Code in AzureInfra as Code in Azure
Infra as Code in AzureIssei Hiraoka
 
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化Issei Hiraoka
 
Visual Studio Code のこれまでとこれから at OSC 2021 Online/Spring
Visual Studio Code のこれまでとこれから at OSC 2021 Online/SpringVisual Studio Code のこれまでとこれから at OSC 2021 Online/Spring
Visual Studio Code のこれまでとこれから at OSC 2021 Online/SpringIssei Hiraoka
 
2021/02/19 Alterbooth 多忙なアーキテクトのためのクラウド導入フレームワーク (CAF) ダイジェスト
2021/02/19 Alterbooth 多忙なアーキテクトのためのクラウド導入フレームワーク (CAF) ダイジェスト2021/02/19 Alterbooth 多忙なアーキテクトのためのクラウド導入フレームワーク (CAF) ダイジェスト
2021/02/19 Alterbooth 多忙なアーキテクトのためのクラウド導入フレームワーク (CAF) ダイジェストIssei Hiraoka
 
2020/12/03 SaaS を正しい方向へ加速するフィードバックループ
2020/12/03 SaaS を正しい方向へ加速するフィードバックループ2020/12/03 SaaS を正しい方向へ加速するフィードバックループ
2020/12/03 SaaS を正しい方向へ加速するフィードバックループIssei Hiraoka
 
アプリケーションエンジニアへのいちおし Azure Update at Microsoft Ignite 2020
アプリケーションエンジニアへのいちおし Azure Update at Microsoft Ignite 2020アプリケーションエンジニアへのいちおし Azure Update at Microsoft Ignite 2020
アプリケーションエンジニアへのいちおし Azure Update at Microsoft Ignite 2020Issei Hiraoka
 
Five Steps to Culture Change を日本語で解説する 2020/11/06
Five Steps to Culture Change を日本語で解説する 2020/11/06Five Steps to Culture Change を日本語で解説する 2020/11/06
Five Steps to Culture Change を日本語で解説する 2020/11/06Issei Hiraoka
 
20201015 Azure PaaS Update at Microsoft Ignite 2020
20201015 Azure PaaS Update at Microsoft Ignite 202020201015 Azure PaaS Update at Microsoft Ignite 2020
20201015 Azure PaaS Update at Microsoft Ignite 2020Issei Hiraoka
 
20201008 GitHub at Microsoft
20201008 GitHub at Microsoft20201008 GitHub at Microsoft
20201008 GitHub at MicrosoftIssei Hiraoka
 
Azure Update Summary (App) 202008
Azure Update Summary (App) 202008Azure Update Summary (App) 202008
Azure Update Summary (App) 202008Issei Hiraoka
 
20191031 Arakawa Camera on Azure CDN for Typhoon Hagibis
20191031 Arakawa Camera on Azure CDN for Typhoon Hagibis20191031 Arakawa Camera on Azure CDN for Typhoon Hagibis
20191031 Arakawa Camera on Azure CDN for Typhoon HagibisIssei Hiraoka
 
20190731 Azure Functions x Line at Azure Tech Lab #4
20190731 Azure Functions x Line at Azure Tech Lab #420190731 Azure Functions x Line at Azure Tech Lab #4
20190731 Azure Functions x Line at Azure Tech Lab #4Issei Hiraoka
 
20190626 Get Started Azure Container Registry
20190626 Get Started Azure Container Registry20190626 Get Started Azure Container Registry
20190626 Get Started Azure Container RegistryIssei Hiraoka
 
de:code 2019 DT06 vs-show どっちのVSショー
de:code 2019 DT06 vs-show どっちのVSショーde:code 2019 DT06 vs-show どっちのVSショー
de:code 2019 DT06 vs-show どっちのVSショーIssei Hiraoka
 
20190522 Azure Tech Lab Build 2019 recap
20190522 Azure Tech Lab Build 2019 recap20190522 Azure Tech Lab Build 2019 recap
20190522 Azure Tech Lab Build 2019 recapIssei Hiraoka
 
20190514 Smart Store - Azure servlerless architecture
20190514 Smart Store - Azure servlerless architecture20190514 Smart Store - Azure servlerless architecture
20190514 Smart Store - Azure servlerless architectureIssei Hiraoka
 
DevOps on Azure Kubernetes
DevOps on Azure KubernetesDevOps on Azure Kubernetes
DevOps on Azure KubernetesIssei Hiraoka
 
20190201 Cloud Native Kansai AKS Azure
20190201 Cloud Native Kansai AKS Azure20190201 Cloud Native Kansai AKS Azure
20190201 Cloud Native Kansai AKS AzureIssei Hiraoka
 
App Service x Jenkins 20171003
App Service x Jenkins 20171003App Service x Jenkins 20171003
App Service x Jenkins 20171003Issei Hiraoka
 
Azure Automation in 10 minutes - 2017/06/30 Ansible on Azure 入門
Azure Automation in 10 minutes - 2017/06/30 Ansible on Azure 入門Azure Automation in 10 minutes - 2017/06/30 Ansible on Azure 入門
Azure Automation in 10 minutes - 2017/06/30 Ansible on Azure 入門Issei Hiraoka
 

More from Issei Hiraoka (20)

Infra as Code in Azure
Infra as Code in AzureInfra as Code in Azure
Infra as Code in Azure
 
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
 
Visual Studio Code のこれまでとこれから at OSC 2021 Online/Spring
Visual Studio Code のこれまでとこれから at OSC 2021 Online/SpringVisual Studio Code のこれまでとこれから at OSC 2021 Online/Spring
Visual Studio Code のこれまでとこれから at OSC 2021 Online/Spring
 
2021/02/19 Alterbooth 多忙なアーキテクトのためのクラウド導入フレームワーク (CAF) ダイジェスト
2021/02/19 Alterbooth 多忙なアーキテクトのためのクラウド導入フレームワーク (CAF) ダイジェスト2021/02/19 Alterbooth 多忙なアーキテクトのためのクラウド導入フレームワーク (CAF) ダイジェスト
2021/02/19 Alterbooth 多忙なアーキテクトのためのクラウド導入フレームワーク (CAF) ダイジェスト
 
2020/12/03 SaaS を正しい方向へ加速するフィードバックループ
2020/12/03 SaaS を正しい方向へ加速するフィードバックループ2020/12/03 SaaS を正しい方向へ加速するフィードバックループ
2020/12/03 SaaS を正しい方向へ加速するフィードバックループ
 
アプリケーションエンジニアへのいちおし Azure Update at Microsoft Ignite 2020
アプリケーションエンジニアへのいちおし Azure Update at Microsoft Ignite 2020アプリケーションエンジニアへのいちおし Azure Update at Microsoft Ignite 2020
アプリケーションエンジニアへのいちおし Azure Update at Microsoft Ignite 2020
 
Five Steps to Culture Change を日本語で解説する 2020/11/06
Five Steps to Culture Change を日本語で解説する 2020/11/06Five Steps to Culture Change を日本語で解説する 2020/11/06
Five Steps to Culture Change を日本語で解説する 2020/11/06
 
20201015 Azure PaaS Update at Microsoft Ignite 2020
20201015 Azure PaaS Update at Microsoft Ignite 202020201015 Azure PaaS Update at Microsoft Ignite 2020
20201015 Azure PaaS Update at Microsoft Ignite 2020
 
20201008 GitHub at Microsoft
20201008 GitHub at Microsoft20201008 GitHub at Microsoft
20201008 GitHub at Microsoft
 
Azure Update Summary (App) 202008
Azure Update Summary (App) 202008Azure Update Summary (App) 202008
Azure Update Summary (App) 202008
 
20191031 Arakawa Camera on Azure CDN for Typhoon Hagibis
20191031 Arakawa Camera on Azure CDN for Typhoon Hagibis20191031 Arakawa Camera on Azure CDN for Typhoon Hagibis
20191031 Arakawa Camera on Azure CDN for Typhoon Hagibis
 
20190731 Azure Functions x Line at Azure Tech Lab #4
20190731 Azure Functions x Line at Azure Tech Lab #420190731 Azure Functions x Line at Azure Tech Lab #4
20190731 Azure Functions x Line at Azure Tech Lab #4
 
20190626 Get Started Azure Container Registry
20190626 Get Started Azure Container Registry20190626 Get Started Azure Container Registry
20190626 Get Started Azure Container Registry
 
de:code 2019 DT06 vs-show どっちのVSショー
de:code 2019 DT06 vs-show どっちのVSショーde:code 2019 DT06 vs-show どっちのVSショー
de:code 2019 DT06 vs-show どっちのVSショー
 
20190522 Azure Tech Lab Build 2019 recap
20190522 Azure Tech Lab Build 2019 recap20190522 Azure Tech Lab Build 2019 recap
20190522 Azure Tech Lab Build 2019 recap
 
20190514 Smart Store - Azure servlerless architecture
20190514 Smart Store - Azure servlerless architecture20190514 Smart Store - Azure servlerless architecture
20190514 Smart Store - Azure servlerless architecture
 
DevOps on Azure Kubernetes
DevOps on Azure KubernetesDevOps on Azure Kubernetes
DevOps on Azure Kubernetes
 
20190201 Cloud Native Kansai AKS Azure
20190201 Cloud Native Kansai AKS Azure20190201 Cloud Native Kansai AKS Azure
20190201 Cloud Native Kansai AKS Azure
 
App Service x Jenkins 20171003
App Service x Jenkins 20171003App Service x Jenkins 20171003
App Service x Jenkins 20171003
 
Azure Automation in 10 minutes - 2017/06/30 Ansible on Azure 入門
Azure Automation in 10 minutes - 2017/06/30 Ansible on Azure 入門Azure Automation in 10 minutes - 2017/06/30 Ansible on Azure 入門
Azure Automation in 10 minutes - 2017/06/30 Ansible on Azure 入門
 

2020/06/16 tsjp-azure-staticwebapps-vs_codespaces

  • 1. 2020/06/16 Azure Static Web Apps と Visual Studio Codespaces で 快適な TypeScript 環境を構築する Issei Hiraoka / 平岡 一成 / @hoisjp TypeScript Meetup #4; https://typescript-jp.connpass.com/event/177175/ Disclaimer: 本情報は 2020/06/16 時点の情報です。ご了承ください。
  • 2. speaker: @hoisjp, hashtag: #tsjp Issei Hiraoka / 平岡 一成 仕事は、クラウドの技術営業 日本マイクロソフト株式会社 クラウドソリューションアーキテクト ex-楽天株式会社 サーバーサイドエンジニア 先日 6/3 に VS Code Meetup #5 で TypeScript x VS Codespaces ハンズオンをやりましたので、そちらもご参考まで。 共著で Visual Studio Code の書籍を執筆 最後に、書籍プレゼントのお知らせあります! About me 自己紹介 @hoisjp hoisjp
  • 3. speaker: @hoisjp, hashtag: #tsjp 1. Azure Static Web Apps GitHub Actions + Static Web App + Azure Functions 試すならば、このコンテンツから 2. Visual Studio Codespaces VS Code の環境をクラウドでホスト 真骨頂は、devcontainer.json & Dockerfile More… より踏み込んだ情報のお知らせ 書籍プレゼントのご案内 Agenda in 20 minutes 詰め込みすぎました。美味しいところだけお持ち帰りいただければと!
  • 4. Azure Static Web Apps (Preview) Build 2020 (2020/05) で待望のサービスがプレビュー開始
  • 5. speaker: @hoisjp, hashtag: #tsjp app api REPO PUSH/PR ACTION STATIC WEB APPS API Azure Functions STATIC CONTENT HTML/JavaScript/CSS
  • 6. speaker: @hoisjp, hashtag: #tsjp プレビュー期間につき、料金は無料 https://azure.microsoft.com/ja-jp/pricing/details/app-service/static/
  • 7. speaker: @hoisjp, hashtag: #tsjp 速習のおすすめは、ずばりこれ Microsoft Learn を “Static Web Apps” で検索 https://docs.microsoft.com/ja-jp/learn/browse/?term=static%20web%20apps Azure をサンドボックス上で利用できるので、無料試用アカウントすら不要
  • 8. speaker: @hoisjp, hashtag: #tsjp Microsoft Learn で Azure Static Web Apps https://docs.microsoft.com/ja-jp/learn/modules/publish-app-service-static-web-app-api/
  • 9. speaker: @hoisjp, hashtag: #tsjp Azure Portal で Static Web App を作成 GitHub のリポジトリとブランチ プライベートリポジトリでOK Step 1 Step 2
  • 10. speaker: @hoisjp, hashtag: #tsjp デモ: GitHub Actions のパイプラインでデプロイされる様子
  • 11. speaker: @hoisjp, hashtag: #tsjp プルリクエストのプレビューも自動でステージング PR を反映させたリンクを発行 https://gentle-wave-0f5ce5e00-2.eastasia.azurestaticapps.net “-2” は PR 番号 Docs: https://docs.microsoft.com/ja-jp/azure/static- web-apps/review-publish-pull-requests
  • 12. speaker: @hoisjp, hashtag: #tsjp Azure Functions ってこんな感じ Static Web Apps では現在 JavaScript に対応 (= TypeScript OK!) このサーバーサイドロジックが、同一ドメインである、 https://***/api から Serve される
  • 13. Visual Studio Codespaces (Preview) クラウドでホストされた Visual Studio Code 環境を提供
  • 14. speaker: @hoisjp, hashtag: #tsjp 開発環境を即座に作成する Microsoft Learn で行き届いていなかったもの https://docs.microsoft.com/ja-jp/learn/modules/publish-app-service-static-web-app-api/
  • 15. speaker: @hoisjp, hashtag: #tsjp 仕組みをざっくりと ブラウザで使える点が注目されがちですが、Visual Studio Code からも接続可能 Azure Visual Studio Codespaces Browser Local devcontainer.json Dockerfile
  • 16. speaker: @hoisjp, hashtag: #tsjp デモ: Codespaces を作成して起動する
  • 17. speaker: @hoisjp, hashtag: #tsjp devcontainer.json & Dockerfile Visual Studio Codespaces で環境ができあがるからくり .devcontainer devcontainer.json Dockerfile
  • 18. speaker: @hoisjp, hashtag: #tsjp { "name": "Node.js 12 & TypeScript", "dockerFile": "Dockerfile", "forwardPorts": [8080], "settings": { "terminal.integrated.shell.linux": "/bin/bash" }, "extensions": [ "dbaeumer.vscode-eslint", "ms-vscode.vscode-typescript-tslint-plugin", "eamodio.gitlens", "ms-azuretools.vscode-docker", "ms-azuretools.vscode-azurefunctions", "ms-azuretools.vscode-azurestaticwebapps" ], // "postCreateCommand": "yarn install", "remoteUser": "node" } .devcontainer/devcontainer.json forwardPorts ポートフォワーディングするポート番号 extensions インストールする拡張機能を指定 チームに半強制的に拡張を展開できる remoteUser 指定しない場合、root ユーザでログイン 指定しておくべき 詳細参考 https://code.visualstudio.com/docs/remo te/containers
  • 19. speaker: @hoisjp, hashtag: #tsjp FROM mcr.microsoft.com/azure-functions/node:3.0-node12-core-tools ARG USERNAME=node ARG USER_UID=1000 ARG USER_GID=$USER_UID RUN if [ "$USER_GID" != "1000" ] || [ "$USER_UID" != "1000" ]; then ¥ groupmod --gid $USER_GID $USERNAME ¥ && usermod --uid $USER_UID --gid $USER_GID $USERNAME ¥ && chmod -R $USER_UID:$USER_GID /home/$USERNAME ¥ && chmod -R $USER_UID:root /usr/local/share/nvm /usr/local/share/npm-global; ¥ fi ¥ # Install eslint, typescript. eslint is installed by javascript image && sudo -u ${USERNAME} npm install -g eslint typescript .devcontainer/Dockerfile FROM ここでは、Azure Functions 用に Functions Core Tools がインストールされ たイメージをベースに、TypeScriptを追加 extensions インストールする拡張機能を指定 remoteUser 指定しない場合、root ユーザで 詳細参考 https://code.visualstudio.com/docs/remo te/containers
  • 20. speaker: @hoisjp, hashtag: #tsjp devcontainer.json & Dockerfile サンプルは豊富にあるので、これらをベースに味付けするのが楽 https://github.com/microsoft/vscode-dev-containers https://github.com/microsoft/vscode-dev-containers/tree/master/containers から、下記は抜粋
  • 21. speaker: @hoisjp, hashtag: #tsjp devcontainer & Dockerfile でリモート開発環境 ローカルの Docker コンテナで、同じ環境設定を使う(もともとこちらが先にリリースされていた) Azure Visual Studio Codespaces Browser Local devcontainer.json Dockerfile
  • 22. speaker: @hoisjp, hashtag: #tsjp Remote-Containers でローカルの Docker 環境 devcontainer.json と Dockerfile はそのまま活用
  • 23. speaker: @hoisjp, hashtag: #tsjp インスタンスは現在3種類 https://azure.microsoft.com/en-us/pricing/details/visual-studio-online/
  • 24. speaker: @hoisjp, hashtag: #tsjp Basic (2 cores, 4GB RAM, 64 GB SSD) • npm install: added 1430 packages from 911 contributors and audited 1500 packages in 31.525s • npm run serve: Compiled successfully in 7385ms Standard (4 cores, 8 GB RAM, 64 GB SSD) • npm install: … in 23.444s • npm run serve: … in 5782ms Premium (8 cores, 16 GB RAM, 64 GB SSD) • npm install: … in 21.495s • npm run serve: ... in 5316ms Info: インスタンスタイプでどれほど違うものか Vue の npm install と npm run serve でベンチマーク ちなみに、いずれの CPU も、 $ cat /proc/cpuinfo … cpu family : 6 model : 85 model name : Intel(R) Xeon(R) Platinum 8168 CPU @ 2.70GHz … cpu MHz : 2693.762 cache size : 33792 KB
  • 25. speaker: @hoisjp, hashtag: #tsjp Tips: dotfiles で各自のパーソナライズ https://docs.microsoft.com/en-us/visualstudio/online/reference/personalizing .devcontainer/* でチーム共通の環境を整えつつ、 dotfiles でそれぞれのお好み設定を。 e.g. bash などの設定 ⇒共通の環境を汚さずに、各自のパーソナライズが可能
  • 26. speaker: @hoisjp, hashtag: #tsjp GitHub Codespaces が Private Preview 中(期待!) https://github.com/features/codespaces/
  • 28. speaker: @hoisjp, hashtag: #tsjp Microsoft Docs 公式ドキュメント https://aka.ms/swadocs John Papa’s blog; more samples https://johnpapa.net/static-web-apps-first-look/ Preview 中につき、フィードバック歓迎 https://github.com/Azure/static-web-apps GitHub Actions の実体 https://github.com/Azure/static-web-apps-deploy もっと詳しく知りたいかたへ ( 1 ) Subtitle (if needed)
  • 29. speaker: @hoisjp, hashtag: #tsjp もっと詳しく知りたいかたへ ( 2 ) 6/17 (水) から de:code 2020 というオンラインイベントがございまして https://www.microsoft.com/ja-jp/events/decode/2020session/detail.aspx?sid=A14
  • 30. speaker: @hoisjp, hashtag: #tsjp 応募条件 - Visual Studio Code が大好きであること (プログラマでなくてもOK!愛する気持ちが大事です) - 発送先住所(オフィス or 自宅)をご連絡いただけるかた - ブログまたはSNSなどでレビューをいただけるかた 応募締め切りと当選ご連絡について 配信完了の時間を目途に応募締め切りとさせていただきまして、 当選されたかた2名へ 6/23(火)までに、 別途ご連絡さしあげます。 プログラマーのための Visual Studio Code の教科書 プレゼント企画 from マイナビ出版様 https://bit.ly/vscodebook