Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
/kzlt コマンドとは
muryoimpl
November 26, 2022
Technology
0
240
/kzlt コマンドとは
Kanazawa.rb meetup #124 向けに作った、Slack の slash command /kzlt がどんなものかを記述したもの。meetup #123 で発表した。
muryoimpl
November 26, 2022
Tweet
Share
More Decks by muryoimpl
See All by muryoimpl
meetup.kzrb.org の更新を考える 事前激闘編
muryoimpl
0
690
meetup.kzrb.org の更新を 考える ゆるふわ編
muryoimpl
0
690
最近のデスク周りの diff / kzrb meetup#108-2
muryoimpl
0
13
ショートカットキーのショートカットキー / shortcut keys of shortcut keys
muryoimpl
0
50
私のキーボード遍歴 / My keyboard history
muryoimpl
0
39
続・開発環境晒す会 ~ MacOS 編 ~ / kzrb_meetup#108
muryoimpl
0
1.5k
開発環境&shell芸晒す会 / kzrb_meetup#107
muryoimpl
0
1.7k
テキストエディタを知る / Getting to Know a Text Editor
muryoimpl
0
55
これから始める人に捧げる自作PCはじめました。/ Let's build homebuilt computer without plan
muryoimpl
0
5.5k
Other Decks in Technology
See All in Technology
Hatena Engineer Seminar #23 「チームとプロダクトを育てる Mackerel 開発合宿」
arthur1
0
520
Multi-Cloud Gatewayでデータを統治せよ!/ Data Federation with MCG
tutsunom
1
300
OCI技術資料 : ロード・バランサー 詳細 / Load Balancer 200
ocise
2
7.2k
re:Inventで発表があったIoT事例の紹介と考察
kizawa2020
0
190
IoTを始めたきっかけの話と個人でできるIoTの今後 / 新年LT会「私の愛するIoT 2023」
you
0
240
証明書って何だっけ? 〜AWSの中間CA移行に備える〜
minorun365
3
2.1k
立ち止まっても、寄り道しても / even if I stop, even if I take a detour
katoaz
0
650
AWS Cloud Forensics & Incident Response
e11i0t_4lders0n
0
370
書籍を書きました。 そう、VS Codeで。
takumanakagame
4
4.5k
日経電子版だけじゃない! 日経の新規Webメディアの開発 - NIKKEI Tech Talk #3
sztm
0
320
Kaggleシミュレーションコンペの動向
nagiss
0
270
Raspberry Pi Camera 3 介紹
piepie_tw
PRO
0
150
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
117
15k
Visualization
eitanlees
128
12k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
13
5.4k
No one is an island. Learnings from fostering a developers community.
thoeni
12
1.5k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
224
50k
4 Signs Your Business is Dying
shpigford
171
20k
The Pragmatic Product Professional
lauravandoore
21
3.4k
Statistics for Hackers
jakevdp
785
210k
Design by the Numbers
sachag
271
18k
The Art of Programming - Codeland 2020
erikaheidi
35
11k
Mobile First: as difficult as doing things right
swwweet
213
7.8k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
500
130k
Transcript
/kzlt コマンドとは 2022/11/19 (Sat) Kanazawa.rb meetup#123 muryoimpl
おしながき 1. What 2. Why 3. How
これは何? • Slack の スラッシュコマンドを利用した、Kanazawa.rb むけの LT エントリ & シャッフ
ル用のコマンドです。Slack のアプリとして登録されています • バックエンドは Google の Spreadsheet です (ここで Spreadsheetをみせる) • 以下のようなコマンドをサポートしています /kzlt create -- 今回のLT大会用の枠を作成する /kzlt entry 'LTタイトル' -- 自分のLTを登録する /kzlt my -- 自分のエントリしたLTを自分にだけ表示する /kzlt list -- エントリー済みのLTをchannelに出力する(順番を決めたものを除く) /kzlt all -- エントリー済みのLTを出力する(順番決めた/決めてない関係なく) /kzlt shuffle -- 順番を決め、channelに出力する (次のshuffleに出てこない) /kzlt reset -- 順番決めたものすべてを順番決めていないことにする /kzlt remove 'エントリ番号' -- エントリ時に返ってきた番号を指定してエントリを削除する
これは何? • 以下のような特徴・制限があります • /kzlt create したタイミングで、そのChannel 用の シートが作成される •
/kzlt entry <タイトル> を入力すると、シートに追記される • セルを探して書き込むため race condition がありますが、割り切ってます • /kzlt shuffle で順番を決め、順番と markdown 用テキストが Channel に書き 込まれます • /kzlt reset で順番ぎめをなかったことにします • /kzlt remove <id> で、エントリしたものをなかったことにできます。id はエント リ時のレスポンスに含まれています
なぜつくった? • LT のたびに、運営者がタイトルを訊いて書き込み、シャッフルして、かつ、 markdown に書き込むのたいへんじゃね?と思った • ↑は運営者の熟練度に左右されそう • 話す人が任意のタイミングで登録できるほうが、おかわり
LT あったときに対応しや すそう • 年末 LT のネタにしたかった (が、今話してしまっている……)
どんな仕組み Slack Apps Script /kzlt を入力 POST リクエスト Webアプリとして公開された Apps
Script end- point レスポンス Spread sheet 結果を 書き込む doPost() 関数 hook で呼び出す
どんな仕組み? • AWSやGCPのサービスを利用するとより高性能なものができるが、無料でできるこ とと、特別感のない == 気がねない ものとして、Spreadsheet を採用した • ↑そのため、運営でなく、利用者側に泣いてもらう仕組みが一部ある
◦ シートに書き込む仕様上、 race condition でエントリが登録できない可能性がある (きっと) • Google Apps Script は Webアプリとして公開することが可能なので、ここで公開さ れたエンドポイントをSlack の Slash command のバックエンドとして指定している。 • /kzlt create のようなサブコマンドは、Google Apps Script 側で解析して処理してい る。
Slashコマンドはどうやってつくる? • https://api.slack.com/apps?new_app=1 からAppを作り、後の画面で「Add features and functionality」が出てくるので、Slash comands を クリックし、
「Create New Command」をクリックする • ここでコマンド名(今回は /kzlt) を入力し、Request URL にGoogle Apps Script を 公開した際のURL を設定する。これだけ • あとは Google Apps Script で頑張るのだ! Google Apps Script はデプロイごとにURLが変わってしまうので、新しくデプロイするの ではなく、一度デプロイしたもののバージョンを更新する必要がある。
さすがにいきなり全部理解するのは難しいので • https://github.com/kanazawarb/kzlt の main ブランチにコミットを積むと GitHub Actions で Google
Apps Script のデプロイを更新するようになっているので、変更 を試す場合はこちらに直接変更をpushするのがよいです。 テスト環境はない!ので、commit を revert もしくは歴史改ざんして! • 神権限を使って直接Spreadsheetに手を入れることもできなくはないが、変更して いる途中にリクエスト来たら……とか考えたくないので、シートごと削除して再度 /kzlt create が現実的 • 今のところ神はmuryoimplとkiyoharaのみとなってます • Kanazaw.rb といいつつ、GAS なので JavaScript 書かないといけないのは許して ……
さいご 来月(2022年12月) 使ってくれるとうれしい!うれしい!