SlideShare a Scribd company logo
Azure サービス解説
LINE ∞ MS Developers ミニアプリNight
https://msdevjp.connpass.com/event/188224/
Self introduction
自己紹介
Azure 陣営
Kazumi OHIRAAtsushi YOKOHAMA
Microsoft MVP for AI Microsoft MVP for Azure
↑Azureもつよ強の先輩
ことの発端
今回の要件とお気持ち
• LIFF (LINE Front-end Framework) を使って何かしよう!
• ぜひ、静的サイトをホストするのに最適な Azure Static Web Apps
をご紹介したい!
• LINEログインによる情報を使って、何かできるようにしよう!
• サーバレスでデータベースを使う例をご紹介したい
• (Azure の高い的なイメージを払しょくしたい…!)
概要
ハンズオンのコンテンツ説明
試しに、ミニゲームをつくってみた
• 直前の回で選択された色を当てるゲーム
• プレイヤーは自分だけとは限らない
試しに、ミニゲームをつくってみた
• 直前の回で選択された色を当てるゲーム
• プレイヤーは自分だけとは限らない
• が、センスがありませんでした…
(連打するとずっと勝ち続けてしまう…
(まぁ、今回はゲームの中身は重要ではないので…
構成
LIFF
(LINE Front-end Framework)
Microsoft Azure
Azure Static Web Apps
+ Azure Functions
Azure Cosmos DB
Cosmos DB に保存するデータ構造
global-results
{stage: {id: default}, selectedColor: …}
{stage: {id: default}, selectedColor: …}
{stage: {id: default}, selectedColor: …}
{stage: {id: beginner-cup}, selectedColor: …}
{stage: {id: beginner-cup}, selectedColor: …}
…
{lineUser: {id: user1}, selectedColor: …}
{lineUser: {id: user1}, selectedColor: …}
{lineUser: {id: user2}, selectedColor: …}
{lineUser: {id: user2}, selectedColor: …}
{lineUser: {id: user2}, selectedColor: …}
…
player-results
全体のゲーム結果から、前回選択
された色を判定
ユーザーごとの結果も保持
Azure で静的サイトをホストする
Azure Static Web Apps、Azure Functions、Azure Cosmos DB
Azure Static Web Apps
• 静的フロント エンドにフォーカスした PaaS
• 様々なフレームワークに対応
• Angular、React、Vue、 Svelte など多数
• 静的フロント エンドに必要な機能がそろっている
• GitHub Actions を利用した CI/CD 環境
• APIなどのバックエンドとして Azure Functions が統合されている
• 認証機構を簡単に利用できる
• Azure AD、GitHub、Facebook、Google、Twitter によるログイン
• 現在プレビュー公開中
Azure Functions
• イベント駆動のサーバレス コンピューティングプラットフォーム、FaaS
• HTTPリクエストやキューなど、さまざまなイベントを起点に実行
• さまざまな言語で利用可能
• C#、JavaScript/TypeScript、Java、Python、PowerShell など
• Durable Functions
• ステートフルなファンクションを実装できる(待機中は無課金)
• Application Insights によるモニタリング
Azure Cosmos DB
• NoSQLデータベース
• 可用性が高い、スケーラブル
• 性能 (≒料金)は、秒間に処理できるスループット (RU: Request Units)
• データの変更を検知して処理をトリガーする Change feed が秀逸
• コマンド クエリ責務分離(CQRS)パターンの実装に最適
細かいポイント紹介
GitHub Action
• Azure Static Web Apps への継続的デプロイを GitHub
Actions で行っている
• Azure Static Web Apps Deploy · Actions · GitHub Marketplace
• 他のアクションと組み合わせたり、プルリクエストなど GitHub の機能
と連携して利用できるので可能性広がる!
Azure Functions の料金形態
• 頻繁に使わないなら従量課金プラン
• ホットスタートが必要なら App Service プラン(AlwaysOn 有効)
• 利用頻度が高いなら Premium プラン
• 神ブログ記事
• Azure App Service の新しい Premium V3 インスタンスが使えるように
なった - しばやん雑記
Azure Cosmos DB の運用
• Free Tier
• Azure Cosmos DB での開発とテストのための最適化 | Microsoft Docs
• サーバーレスプラン
• Azure Cosmos DB の従量課金ベースのサーバーレス プラン | Microsoft
Docs
• 神ブログ記事
• Azure Cosmos DB Free Tier をプロダクション環境で使う - PaaSがかり
の部屋
• Hack Azure! #2 Ask the Geeks - Cosmos DB 編フォローアップ - し
ばやん雑記
Functions から Cosmos DB を使うには
• Azure Functions には、イベント駆動するためのトリガーや入出力を
簡単に連携できバインドという機能がある
• Azure Functions のトリガーとバインド | Microsoft Docs
• より複雑な操作は SDK が便利
• JavaScript および Node.js 開発者向けの Azure | Microsoft Docs
• 今回は両方使ってます
Cosmos DB のパーティションの話
global-results
{stage: {id: default}, selectedColor: …}
{stage: {id: default}, selectedColor: …}
{stage: {id: default}, selectedColor: …}
{stage: {id: beginner-cup}, selectedColor: …}
{stage: {id: beginner-cup}, selectedColor: …}
…
{lineUser: {id: user1}, selectedColor: …}
{lineUser: {id: user1}, selectedColor: …}
{lineUser: {id: user2}, selectedColor: …}
{lineUser: {id: user2}, selectedColor: …}
{lineUser: {id: user2}, selectedColor: …}
…
player-results
Cosmos DB のパーティションの話
global-results
{stage: {id: default}, selectedColor: …}
{stage: {id: default}, selectedColor: …}
{stage: {id: default}, selectedColor: …}
{stage: {id: beginner-cup}, selectedColor: …}
{stage: {id: beginner-cup}, selectedColor: …}
…
{lineUser: {id: user1}, selectedColor: …}
{lineUser: {id: user1}, selectedColor: …}
{lineUser: {id: user2}, selectedColor: …}
{lineUser: {id: user2}, selectedColor: …}
{lineUser: {id: user2}, selectedColor: …}
…
player-results
/stage/id をパーティションキーに指定
/lineUser/id をパーティションキーに指定
Cosmos DB のパーティションの話
global-results
{stage: {id: default}, selectedColor: …}
{stage: {id: default}, selectedColor: …}
{stage: {id: default}, selectedColor: …}
{stage: {id: beginner-cup}, selectedColor: …}
{stage: {id: beginner-cup}, selectedColor: …}
…
{lineUser: {id: user1}, selectedColor: …}
{lineUser: {id: user1}, selectedColor: …}
{lineUser: {id: user2}, selectedColor: …}
{lineUser: {id: user2}, selectedColor: …}
{lineUser: {id: user2}, selectedColor: …}
…
player-results
/stage/id をパーティションキーに指定
/lineUser/id をパーティションキーに指定
パーテイションをまたがった探索
(クロスパーティション)
がないよう注意!
= RUを大量に消費してしまい、
金額が跳ね上がる
Infrastructure as Code (IaC)
• Azureで使うリソースは ARM テンプレートを用いて一括でデプロイ
• テンプレートの概要 - Azure Resource Manager | Microsoft Docs
• Terraform も Azure で利用できるが、Static Web Apps がまだ
対応してないので待ち
• Azure 上の Terraform のドキュメント - チュートリアル、サンプル、リファレン
ス、リソース - Terraform | Microsoft Docs
実際にやってみましょう!
セルフペースドハンズオンをご一緒に
https://github.com/dzeyelid/line-liff-with-azure-handson

More Related Content

PDF
今日から始めるARMテンプレート
PDF
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
PDF
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
PPTX
開発環境をDockernizeした話
PDF
Azure Functionsでサーバーレスアプリケーション構築
PDF
IoT Edge and Serverless playground with Node.js ~ IoT EdgeとサーバレスをNode.jsで遊ぶ実験ノート
PPTX
Moderator Slide for Global Azure Bootcamp 2019@Sapporo
PDF
Open Source x AI
今日から始めるARMテンプレート
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
開発環境をDockernizeした話
Azure Functionsでサーバーレスアプリケーション構築
IoT Edge and Serverless playground with Node.js ~ IoT EdgeとサーバレスをNode.jsで遊ぶ実験ノート
Moderator Slide for Global Azure Bootcamp 2019@Sapporo
Open Source x AI

What's hot (20)

PDF
Container x AI
PPTX
ゲーム特化の BaaS! Unity + PlayFab 入門!
PDF
はじめよう Azure Functions
PDF
しみじみサーバーレス
PDF
Azure Functionsでサーバーレスアプリケーション構築
PDF
[DO13] 楽天のクラウドストレージ使いこなし術 Azure と OSS で少しずつ進めるレガシー脱却
PPTX
Interoperability of webassembly with javascript
PPTX
Visual Studio 2019 Updates Pickup!
PPTX
ASP.NET Core WebAPIでODataを使おう
PDF
「何もしないのにCIが失敗した」を防ぐ
PDF
クラウド化が進む今だから読み解くHyper-Vアーキテクチャ
PDF
サーバーレスアーキテクチャで作るモバイルバックエンド
PDF
Apache Spark on Azure
PPTX
.NETラボ2021年10月 .NETの過去と現在
PDF
[BA06] 50 分で総まとめ! Office 365 開発プラットフォーム最新機能のおさらい
PDF
20150905 stream analytics
PPTX
ここがつらいよAws batch
PDF
Vs code conf2020-11-21-extensions-for-microservices-app-dev
PDF
Docker Actionを利用してOpenWhiskをあれこれする
PDF
SpringベースのCloud Native Application
Container x AI
ゲーム特化の BaaS! Unity + PlayFab 入門!
はじめよう Azure Functions
しみじみサーバーレス
Azure Functionsでサーバーレスアプリケーション構築
[DO13] 楽天のクラウドストレージ使いこなし術 Azure と OSS で少しずつ進めるレガシー脱却
Interoperability of webassembly with javascript
Visual Studio 2019 Updates Pickup!
ASP.NET Core WebAPIでODataを使おう
「何もしないのにCIが失敗した」を防ぐ
クラウド化が進む今だから読み解くHyper-Vアーキテクチャ
サーバーレスアーキテクチャで作るモバイルバックエンド
Apache Spark on Azure
.NETラボ2021年10月 .NETの過去と現在
[BA06] 50 分で総まとめ! Office 365 開発プラットフォーム最新機能のおさらい
20150905 stream analytics
ここがつらいよAws batch
Vs code conf2020-11-21-extensions-for-microservices-app-dev
Docker Actionを利用してOpenWhiskをあれこれする
SpringベースのCloud Native Application
Ad

Similar to LINE LIFF with Azure ハンズオン資料 - Azure サービス解説 (20)

PDF
はじめての Azure 開発
PDF
AWS Black Belt Online Seminar AWS上でのスピードと高可用性を両立したゲームインフラの構築と事例
PDF
カジュアルに本番データを開発環境に入れる #mysqlcasual
PPTX
PPT Full version: 世界中のゲーム分析をしてきたPlayFabが大進化!一緒に裏側の最新データ探索の仕組みを覗いてみよう
PDF
オンプレのDbaがazureのデータベースを使ってみた
PPTX
Sql world を支える技術
PDF
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
PDF
【de:code 2020】 Azure Cosmos DB - Build 2020 アップデート
PDF
現場開発者視点で答えるWindows Azure
PDF
PDF版 世界中のゲーム分析をしてきたPlayFabが大進化!一緒に裏側の最新データ探索の仕組みを覗いてみよう Db tech showcase2020
PDF
地方企業がソーシャルゲーム開発を成功させるための10のポイント
PPTX
Windows azureって何
PPTX
社内の遊休PCをAzurePipelinesでCICDに活用しよう
PDF
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
PDF
最近のフロントエンドツールの紹介
PPTX
20241219_AWS_reInvet_reCap_dataautomation_kondo
PPTX
オンプレでもクラウドでも データベースサーバの運用
PPTX
db tech showcase 大阪 2014 C12 どうつかう?Couchbase Server
KEY
Rdbms起点で考えると見えない世界 okuyama勉強会
PDF
Mroongaを選んだ理由と
ちょっと嬉しかった話
はじめての Azure 開発
AWS Black Belt Online Seminar AWS上でのスピードと高可用性を両立したゲームインフラの構築と事例
カジュアルに本番データを開発環境に入れる #mysqlcasual
PPT Full version: 世界中のゲーム分析をしてきたPlayFabが大進化!一緒に裏側の最新データ探索の仕組みを覗いてみよう
オンプレのDbaがazureのデータベースを使ってみた
Sql world を支える技術
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
【de:code 2020】 Azure Cosmos DB - Build 2020 アップデート
現場開発者視点で答えるWindows Azure
PDF版 世界中のゲーム分析をしてきたPlayFabが大進化!一緒に裏側の最新データ探索の仕組みを覗いてみよう Db tech showcase2020
地方企業がソーシャルゲーム開発を成功させるための10のポイント
Windows azureって何
社内の遊休PCをAzurePipelinesでCICDに活用しよう
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
最近のフロントエンドツールの紹介
20241219_AWS_reInvet_reCap_dataautomation_kondo
オンプレでもクラウドでも データベースサーバの運用
db tech showcase 大阪 2014 C12 どうつかう?Couchbase Server
Rdbms起点で考えると見えない世界 okuyama勉強会
Mroongaを選んだ理由と
ちょっと嬉しかった話
Ad

More from Kazumi OHIRA (20)

PDF
地味だけど劇的に便利になるGitHubリポジトリ設定あれこれ
PDF
GitHub dockyardコミュニティ 竣工イベント!オープニング資料
PDF
GitHub最新情報キャッチアップ 2023年6月
PDF
GitHub と Azure でアプリケーションとインフラストラクチャの守りを固めるDevSecOps
PDF
高さ比べじゃない、キャリアは歩んできた道
PDF
GitHub Copilotとともに次の開発体験へ
PDF
突如登場したAzure Developer CLIでなにができるのか?検証してみる
PDF
GitHub Actions と Azure PaaS でプルリクエストごとに環境を ~ Azure Static Web Apps と Containe...
PDF
GitHub Codespaces と Azure でつくる、エンタープライズレベルの開発環境
PDF
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
PDF
GitHub Codespaces が拡げる開発環境、いつでもどこでも Visual Studio Code で!
PDF
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
PDF
女性エンジニアコミュニティから見える価値観のリアル
PDF
「あの人の自分戦略を聞きたい!2022」~ 大平かづみの場合
PDF
Azure Functions 開発デプロイ環境を GitHub Codespaces で爆速に整える
PDF
本領を発揮するために、まずバリアを開放できる場を
PDF
【NLU祭り 場外編】コミュニケーションをより身近に、よりかしこく。LUIS と Azure AI サービスの使いどころ
PDF
Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!
PDF
「 Azure 」にデータを溜めて活用する のご紹介 - 「はじめてのNode-RED ver.1.3.0対応版」書籍出版記念イベント LT
PDF
Code Polaris 紹介(Woman type イベント「女性エンジニアのキャリアのお悩み相談室 with Code Polaris」)
地味だけど劇的に便利になるGitHubリポジトリ設定あれこれ
GitHub dockyardコミュニティ 竣工イベント!オープニング資料
GitHub最新情報キャッチアップ 2023年6月
GitHub と Azure でアプリケーションとインフラストラクチャの守りを固めるDevSecOps
高さ比べじゃない、キャリアは歩んできた道
GitHub Copilotとともに次の開発体験へ
突如登場したAzure Developer CLIでなにができるのか?検証してみる
GitHub Actions と Azure PaaS でプルリクエストごとに環境を ~ Azure Static Web Apps と Containe...
GitHub Codespaces と Azure でつくる、エンタープライズレベルの開発環境
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
GitHub Codespaces が拡げる開発環境、いつでもどこでも Visual Studio Code で!
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
女性エンジニアコミュニティから見える価値観のリアル
「あの人の自分戦略を聞きたい!2022」~ 大平かづみの場合
Azure Functions 開発デプロイ環境を GitHub Codespaces で爆速に整える
本領を発揮するために、まずバリアを開放できる場を
【NLU祭り 場外編】コミュニケーションをより身近に、よりかしこく。LUIS と Azure AI サービスの使いどころ
Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!
「 Azure 」にデータを溜めて活用する のご紹介 - 「はじめてのNode-RED ver.1.3.0対応版」書籍出版記念イベント LT
Code Polaris 紹介(Woman type イベント「女性エンジニアのキャリアのお悩み相談室 with Code Polaris」)

LINE LIFF with Azure ハンズオン資料 - Azure サービス解説

  • 1. Azure サービス解説 LINE ∞ MS Developers ミニアプリNight https://msdevjp.connpass.com/event/188224/
  • 3. Azure 陣営 Kazumi OHIRAAtsushi YOKOHAMA Microsoft MVP for AI Microsoft MVP for Azure ↑Azureもつよ強の先輩
  • 5. 今回の要件とお気持ち • LIFF (LINE Front-end Framework) を使って何かしよう! • ぜひ、静的サイトをホストするのに最適な Azure Static Web Apps をご紹介したい! • LINEログインによる情報を使って、何かできるようにしよう! • サーバレスでデータベースを使う例をご紹介したい • (Azure の高い的なイメージを払しょくしたい…!)
  • 8. 試しに、ミニゲームをつくってみた • 直前の回で選択された色を当てるゲーム • プレイヤーは自分だけとは限らない • が、センスがありませんでした… (連打するとずっと勝ち続けてしまう… (まぁ、今回はゲームの中身は重要ではないので…
  • 9. 構成 LIFF (LINE Front-end Framework) Microsoft Azure Azure Static Web Apps + Azure Functions Azure Cosmos DB
  • 10. Cosmos DB に保存するデータ構造 global-results {stage: {id: default}, selectedColor: …} {stage: {id: default}, selectedColor: …} {stage: {id: default}, selectedColor: …} {stage: {id: beginner-cup}, selectedColor: …} {stage: {id: beginner-cup}, selectedColor: …} … {lineUser: {id: user1}, selectedColor: …} {lineUser: {id: user1}, selectedColor: …} {lineUser: {id: user2}, selectedColor: …} {lineUser: {id: user2}, selectedColor: …} {lineUser: {id: user2}, selectedColor: …} … player-results 全体のゲーム結果から、前回選択 された色を判定 ユーザーごとの結果も保持
  • 11. Azure で静的サイトをホストする Azure Static Web Apps、Azure Functions、Azure Cosmos DB
  • 12. Azure Static Web Apps • 静的フロント エンドにフォーカスした PaaS • 様々なフレームワークに対応 • Angular、React、Vue、 Svelte など多数 • 静的フロント エンドに必要な機能がそろっている • GitHub Actions を利用した CI/CD 環境 • APIなどのバックエンドとして Azure Functions が統合されている • 認証機構を簡単に利用できる • Azure AD、GitHub、Facebook、Google、Twitter によるログイン • 現在プレビュー公開中
  • 13. Azure Functions • イベント駆動のサーバレス コンピューティングプラットフォーム、FaaS • HTTPリクエストやキューなど、さまざまなイベントを起点に実行 • さまざまな言語で利用可能 • C#、JavaScript/TypeScript、Java、Python、PowerShell など • Durable Functions • ステートフルなファンクションを実装できる(待機中は無課金) • Application Insights によるモニタリング
  • 14. Azure Cosmos DB • NoSQLデータベース • 可用性が高い、スケーラブル • 性能 (≒料金)は、秒間に処理できるスループット (RU: Request Units) • データの変更を検知して処理をトリガーする Change feed が秀逸 • コマンド クエリ責務分離(CQRS)パターンの実装に最適
  • 16. GitHub Action • Azure Static Web Apps への継続的デプロイを GitHub Actions で行っている • Azure Static Web Apps Deploy · Actions · GitHub Marketplace • 他のアクションと組み合わせたり、プルリクエストなど GitHub の機能 と連携して利用できるので可能性広がる!
  • 17. Azure Functions の料金形態 • 頻繁に使わないなら従量課金プラン • ホットスタートが必要なら App Service プラン(AlwaysOn 有効) • 利用頻度が高いなら Premium プラン • 神ブログ記事 • Azure App Service の新しい Premium V3 インスタンスが使えるように なった - しばやん雑記
  • 18. Azure Cosmos DB の運用 • Free Tier • Azure Cosmos DB での開発とテストのための最適化 | Microsoft Docs • サーバーレスプラン • Azure Cosmos DB の従量課金ベースのサーバーレス プラン | Microsoft Docs • 神ブログ記事 • Azure Cosmos DB Free Tier をプロダクション環境で使う - PaaSがかり の部屋 • Hack Azure! #2 Ask the Geeks - Cosmos DB 編フォローアップ - し ばやん雑記
  • 19. Functions から Cosmos DB を使うには • Azure Functions には、イベント駆動するためのトリガーや入出力を 簡単に連携できバインドという機能がある • Azure Functions のトリガーとバインド | Microsoft Docs • より複雑な操作は SDK が便利 • JavaScript および Node.js 開発者向けの Azure | Microsoft Docs • 今回は両方使ってます
  • 20. Cosmos DB のパーティションの話 global-results {stage: {id: default}, selectedColor: …} {stage: {id: default}, selectedColor: …} {stage: {id: default}, selectedColor: …} {stage: {id: beginner-cup}, selectedColor: …} {stage: {id: beginner-cup}, selectedColor: …} … {lineUser: {id: user1}, selectedColor: …} {lineUser: {id: user1}, selectedColor: …} {lineUser: {id: user2}, selectedColor: …} {lineUser: {id: user2}, selectedColor: …} {lineUser: {id: user2}, selectedColor: …} … player-results
  • 21. Cosmos DB のパーティションの話 global-results {stage: {id: default}, selectedColor: …} {stage: {id: default}, selectedColor: …} {stage: {id: default}, selectedColor: …} {stage: {id: beginner-cup}, selectedColor: …} {stage: {id: beginner-cup}, selectedColor: …} … {lineUser: {id: user1}, selectedColor: …} {lineUser: {id: user1}, selectedColor: …} {lineUser: {id: user2}, selectedColor: …} {lineUser: {id: user2}, selectedColor: …} {lineUser: {id: user2}, selectedColor: …} … player-results /stage/id をパーティションキーに指定 /lineUser/id をパーティションキーに指定
  • 22. Cosmos DB のパーティションの話 global-results {stage: {id: default}, selectedColor: …} {stage: {id: default}, selectedColor: …} {stage: {id: default}, selectedColor: …} {stage: {id: beginner-cup}, selectedColor: …} {stage: {id: beginner-cup}, selectedColor: …} … {lineUser: {id: user1}, selectedColor: …} {lineUser: {id: user1}, selectedColor: …} {lineUser: {id: user2}, selectedColor: …} {lineUser: {id: user2}, selectedColor: …} {lineUser: {id: user2}, selectedColor: …} … player-results /stage/id をパーティションキーに指定 /lineUser/id をパーティションキーに指定 パーテイションをまたがった探索 (クロスパーティション) がないよう注意! = RUを大量に消費してしまい、 金額が跳ね上がる
  • 23. Infrastructure as Code (IaC) • Azureで使うリソースは ARM テンプレートを用いて一括でデプロイ • テンプレートの概要 - Azure Resource Manager | Microsoft Docs • Terraform も Azure で利用できるが、Static Web Apps がまだ 対応してないので待ち • Azure 上の Terraform のドキュメント - チュートリアル、サンプル、リファレン ス、リソース - Terraform | Microsoft Docs