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
AE Rust 勉強会: github-webhook-rs
Search
sksat
June 07, 2023
Programming
0
140
AE Rust 勉強会: github-webhook-rs
アークエッジ・スペース Rust 勉強会の懇親会で突発 LT したやつ
#arkedge_lt
connpass:
https://connpass.com/event/282286/
sksat
June 07, 2023
Tweet
Share
More Decks by sksat
See All by sksat
万国のサーバ管理者よ, 自動化せよ!
sksat
1
5.4k
teleka.suを支える技術
sksat
1
12k
ふつうのLinuxプログラミング-プロセスとハードウェア
sksat
25
7.1k
小型ハイブリッド用フライトシミュレータの開発
sksat
0
830
大学生でもできる!ハイブリッドロケット入門
sksat
0
1.1k
CORE 電装講習第1回
sksat
2
660
2019 spring WIP
sksat
1
98
CombNaf3.pdf
sksat
0
230
Other Decks in Programming
See All in Programming
Node.js v22 で変わること
yosuke_furukawa
PRO
11
3.8k
Implementing Design Systems in Swift
seyfoyun
0
360
CDKコントリビュートの最初の壁を越えよう! -簡単issueの見つけ方-
badmintoncryer
2
150
try! Swift Tokyo 初参加報告LT
hinakko2
0
230
Elm Form Validation
bkuhlmann
0
510
ServerAction で Progressive Enhancement はどこまで頑張れるか? / progressive-enhancement-with-server-action
takefumiyoshii
5
350
ゆるい個人開発のススメ
kuroppe1819
10
1k
大規模Reactアプリのリアーキテクチャ~8万行のTanStack Query移行の軌跡~
kj455
4
990
スキーマ駆動開発による品質とスピードの両立 - 私達は何故、スキーマを書くのか
kentaroutakeda
0
170
dbtのドメイン分割による データ基盤の改善とDigdagとの連携
sakama
0
420
try! Swift Tokyo 2024 参加報告 / try! Swift Tokyo 2024 Report
hironytic
0
210
サイコロで理解する統計的仮説検定の考え方
tatamiya
4
1k
Featured
See All Featured
It's Worth the Effort
3n
180
27k
The Art of Programming - Codeland 2020
erikaheidi
43
12k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
6
1.3k
Raft: Consensus for Rubyists
vanstee
133
6.3k
A better future with KSS
kneath
231
16k
GraphQLとの向き合い方2022年版
quramy
33
12k
Mobile First: as difficult as doing things right
swwweet
217
8.6k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
660
120k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
21
1.4k
Code Reviewing Like a Champion
maltzj
515
39k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
79
43k
The Invisible Side of Design
smashingmag
294
49k
Transcript
github-webhook-rs 2023/06/07 アークエッジ・スペース Rust 勉強会 sksat
自己紹介 - sksat - SW部正社員 && 学部2年生(2回目) - 中指を立てているわけではない(アイコン) -
ビルドシステム大臣 - Rust そのものより Cargo.toml と build.rs ばかり書いている - 不自由な開発環境の森を焼き尽くして回っている - 泣きながら CMakeLists.txt も殴る - ときどき社内システム(self-hosted Renovate, hubhook, etc)
hubhook - GitHub webhook を吸い上げて Slack に通知しまくる君 - インターン生時代に Rust
の練習に書いた - OSS - かなりの社員が使っている
なお実装 - Rust の練習で書いた - かなり雑なコード - 勢い良く unwrap() -
まあ panic しても k8s で走ってるのでいいが...... - しかし,通知を取りこぼすのは困る - どこでコケるのか? → webhook payload JSON の deserialize
GitHub webhook payload - かなり巨大な構造の JSON - serde 最高! -
巨大すぎて struct のメンテがダルい - でもできるだけ情報は取りたい - 実物を眺めて書き起こすのは面倒 - たまーに構造が一部変わる
octokit/webhooks - machine-readable, always up-to-date GitHub Webhooks specifications - 丁寧な
JSON Schema がメンテされている - TypeScript の型にも変換されてる - これだ!!!
Rust の型になってほしい!!! - serde-compatible な形で - JSON Schema -> Rust
あるでしょ - ex: schemafy - draft 7 未対応がちで怪しい雰囲気 - 他のファイル読み出しまくってる - 素直に変換すると使い勝手の悪い型に - 共通部分もそれぞれのフィールドとしてダンプされてしまう,など
ところで......? - octokit/webhooks/payload-types/schema.d.ts - TypeScript にはキレイな型がある - こういうのでいいんだよ,こういうので
TypeScript と Rust - なんか聞いたことあるな......?
swc - JS/TS compiler を Rust で書き直そうぜプロジェクト - 今コンパイラって言った?
I have a octokit/webhooks/payload-types/schema.d.ts I have a swc_ecma_parser
Oh!
できた
おわり - https://github.com/sksat/github-webhook-rs - 作ったはいいけどまだ使ってない(え?) - 最近社内ツールをリファクタして回って遊んでいるインターン生にめちゃめちゃリファク タしてもらった(ありがとう) - リファクタによって
JSON Schema 自力で読んでもいい気がしてきた(え?) - こらそこ TS で書いてもいいんじゃないかとか言わない