Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Azure Functionsを使ってSlackに通知をしてみよう
Search
Shintaro Kanno
July 06, 2022
Programming
0
560
Azure Functionsを使ってSlackに通知をしてみよう
7/6(水) 「Serverless LT初心者向け LT大会 #23 + 楽しいチーム開発の施策とは?」発表資料
Shintaro Kanno
July 06, 2022
Tweet
Share
More Decks by Shintaro Kanno
See All by Shintaro Kanno
アトミックデザイン入門
shintaro8
0
310
gRPCミドルウェアを作ってみよう
shintaro8
1
600
Goの並行処理に入門しよう
shintaro8
0
150
Other Decks in Programming
See All in Programming
へんな働き方
yusukebe
6
2.8k
Java 21/25 Virtual Threads 소개
debop
0
280
AI時代のシステム設計:ドメインモデルで変更しやすさを守る設計戦略
masuda220
PRO
6
1.1k
おれのAgentic Coding 2026/03
tsukasagr
1
110
Goの型安全性で実現する複数プロダクトの権限管理
ishikawa_pro
2
1.4k
CSC307 Lecture 15
javiergs
PRO
0
270
Codex CLI でつくる、Issue から merge までの開発フロー
amata1219
0
150
テレメトリーシグナルが導くパフォーマンス最適化 / Performance Optimization Driven by Telemetry Signals
seike460
PRO
2
180
それはエンジニアリングの糧である:AI開発のためにAIのOSSを開発する現場より / It serves as fuel for engineering: insights from the field of developing open-source AI for AI development.
nrslib
1
590
Geminiをパートナーに神社DXシステムを個人開発した話(いなめぐDX 開発振り返り)
fujiba
0
110
Everything Claude Code OSS詳細 — 5層構造の中身と導入方法
targe
0
150
AIコードレビューの導入・運用と AI駆動開発における「AI4QA」の取り組みについて
hagevvashi
0
560
Featured
See All Featured
The Invisible Side of Design
smashingmag
302
51k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
310
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
230
Automating Front-end Workflow
addyosmani
1370
200k
Evolving SEO for Evolving Search Engines
ryanjones
0
170
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
190
Paper Plane
katiecoart
PRO
0
48k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.4k
How to Ace a Technical Interview
jacobian
281
24k
Documentation Writing (for coders)
carmenintech
77
5.3k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
470
Transcript
Azure Functions を使ってSlack に通知をしてみよう
自己紹介 名前 官野 慎太朗 ( かんの しんたろう) 業務 都内IT 企業にてWeb
系の開発業務に従事。 技術経験 Golang, JavaScript/TypeScript, MySQL, PostgreSQL, docker/kubernetes, etc…
目次 1. Azure Functions とは 2. 今回使用する技術について 3. Slack Webhook
URL の取得 4. Function App の設定 5. ローカル上でのプログラム実装 6. Function App へのデプロイ
Azure Functions とは Azure(Microsoft 社) が提供するサービスの一種。 クラウド上にプログラムを実装することができる。 類似サービス:AWS Lambda, GCP
Cloud Function
今回使用する技術 Azure Functions Core Tools JavaScript Slack Webhook URL Weather
Forecast API (Open-Meteo 社)
Slack Webhook URL の取得 Slack 連携には Incoming Webhook URL の発行が必要
Slack app directory の Custom Integrations > Incoming WebHooks より任意のWorkspace の Webhook URL 発行可能。 Incoming WebHooks よりWeb hook URL を作成 ` ` ` ` ` `
Function App の設定 Azure Portal 上でFunction App を構築 今回の名称は azure-weather
環境変数にSlack Webhook URL を設定 ` `
ローカル上でのプログラム実装 ローカルに空の az-function というディレクトリを作成 az-function 内で func new を実行 runtime
は node 使用する言語は JavaScript template は TimerTrigger Function Name は weather 対話形式で関数を作成 ` ` ` ` ` ` ` ` ` ` ` ` ` `
初期ディレクトリ構成 今回手を加えるのは index.js と function.json ` ` ` ` |-
.vscode |- extention.json |- weather |- function.json ←★ |- index.js ←★ |- readme.md |- .gitignore |- host.json |- local.setting.json |- package-lock.json |- package.json
実装部分 axios と @slack/webhook を使用 func start でローカル実行 ` `
` ` ` ` const axios = require('axios'); const { IncomingWebhook } = require('@slack/webhook'); module.exports = async function (context, myTimer) { // ~~~~~~ 以下実装部分 ~~~~~~ const response = await axios.get('https://api.open-meteo.com/v1/forecast?latitude=35.6785&longitude=139.6823&hourly=te const webhook = new IncomingWebhook(process.env.WEBHOOK) await webhook.send({ text: ` 現在の気温は${response.data.current_weather.temperature} です。`, channel: "#demo", username: "Azure Functions", }) // ~~~~~~ 実装部分ここまで ~~~~~~ };
Function App へのデプロイ function.json を編集 実行間隔を5 分おきに設定 scriptFile を index.js
に指定 package.json をweather に移動 azure-weather に weather ディレクトリをデプロイ 実行コマンド: func azure functionapp publish azure-weather function.json 内部 weaher 内の最終的な構成 ` ` ` ` ` ` ` ` ` ` ` ` { "bindings": [ { "name": "myTimer", "type": "timerTrigger", "direction": "in", "schedule": "0 */5 * * * *" } ], |- weather |- function.json |- index.js |- readme.md |- package.json ← 上の階層から移動
デプロイ後のazure-weather Functions に weather が存在 5 分おきに現在の気温をSlack へ通知 デプロイされたweather Slack
への気温の通知 ` `