GraphQL で作る GitHub events viewer / GitHub events viewer built on GraphQL
by
Fumiaki MATSUSHIMA
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
GraphQL で作る GitHub events viewer @mtsmfm Fumiaki Matsushima GraphQL ナイト 6/28 @ 五反田
Slide 2
Slide 2 text
➔ Quipper Ltd 所属 ➔ Ruby と麻雀が好き ➔ GraphQL Tokyo 主催 @mtsmfm.inspect
Slide 3
Slide 3 text
https://www.quipper.com/
Slide 4
Slide 4 text
https://studysapuri.jp/
Slide 5
Slide 5 text
https://techplay.jp/event/680406
Slide 6
Slide 6 text
No content
Slide 7
Slide 7 text
GraphQL Tokyo https://www.meetup.com/ja-JP/GraphQL-Tokyo/
Slide 8
Slide 8 text
https://www.meetup.com/ja-JP/GraphQL-Tokyo/events/251782724/
Slide 9
Slide 9 text
GraphQL で作る GitHub events viewer @mtsmfm Fumiaki Matsushima GraphQL ナイト 6/28 @ 五反田
Slide 10
Slide 10 text
Quipper では すべて GH issue
Slide 11
Slide 11 text
新機能
Slide 12
Slide 12 text
バグ
Slide 13
Slide 13 text
問い合わせ
Slide 14
Slide 14 text
日報
Slide 15
Slide 15 text
ポエム
Slide 16
Slide 16 text
一瞬であふれる通知
Slide 17
Slide 17 text
Jasper 使ってますか https://jasperapp.io/
Slide 18
Slide 18 text
https://jasperapp.io/
Slide 19
Slide 19 text
We ♥ Jasper
Slide 20
Slide 20 text
とはいえ
Slide 21
Slide 21 text
何が起きたか見るた め GitHub Issue 開 くの億劫
Slide 22
Slide 22 text
ふいんきでいいので 全体をざっとみたい
Slide 23
Slide 23 text
Tweet Deck っぽいやつ?
Slide 24
Slide 24 text
つくることにした
Slide 25
Slide 25 text
GitHub API v4 GraphQL
Slide 26
Slide 26 text
GitHub ブラウザ
Slide 27
Slide 27 text
なぜか events が ない
Slide 28
Slide 28 text
Graph QL サー バ Action Cable サーバ GitHub GitHub クローラ Postgres ブラウザ
Slide 29
Slide 29 text
[WIP] GH deck https://github.com/mtsmfm/gh-deck
Slide 30
Slide 30 text
graphql-ruby ActionCable Relay
Slide 31
Slide 31 text
なぜ GraphQL?
Slide 32
Slide 32 text
A. 使いたかったから
Slide 33
Slide 33 text
https://github.com/mtsmfm/gh-deck/blob/db507a455f754c25864557ee4e7bd788776e529f/app/javascript/gh-deck/ containers/GithubEventListItem.jsx
Slide 34
Slide 34 text
みどころ1
Slide 35
Slide 35 text
graphiql-rails を使わない
Slide 36
Slide 36 text
https://github.com/mtsmfm/gh-deck/blob/db507a455f754c25864557ee4e7bd788776e529f/app/jav ascript/packs/graphiql.jsx
Slide 37
Slide 37 text
graphiql のアプデが gemメンテナ頼みに
Slide 38
Slide 38 text
Sprockets 前提
Slide 39
Slide 39 text
認証を考えると 結局 fetcher 必要
Slide 40
Slide 40 text
みどころ2
Slide 41
Slide 41 text
Relay Client Schema
Slide 42
Slide 42 text
https://github.com/mtsmfm/gh-deck/blob/db507a455f754c25864557ee4e7bd788776e529f/app/jav ascript/gh-deck/clientSchema.graphql
Slide 43
Slide 43 text
今までは Redux を 併用する必要が
Slide 44
Slide 44 text
https://medium.com/@matt.krick/replacing-redux-with-relay-47ed085bfafe
Slide 45
Slide 45 text
既存の Type に 追加しかできない
Slide 46
Slide 46 text
relay-compiler の --src 以下に Client Schema がないといけな い
Slide 47
Slide 47 text
https://medium.com/@matt.krick/replacing-redux-with-relay-47ed085bfafe
Slide 48
Slide 48 text
https://medium.com/@matt.krick/replacing-redux-with-relay-47ed085bfafe
Slide 49
Slide 49 text
実はそんなオプショ ンはない
Slide 50
Slide 50 text
relay-compiler CLI が 単に無視してるだけ
Slide 51
Slide 51 text
※ ドキュメントは何 ひとつない
Slide 52
Slide 52 text
みどころ3
Slide 53
Slide 53 text
GraphQL Subscription
Slide 54
Slide 54 text
Graph QL サー バ Action Cable サーバ GitHub GitHub クローラ Postgres ブラウザ
Slide 55
Slide 55 text
https://github.com/mtsmfm/gh-deck/commit/d490c523eef32fa489625e65c835e5d1d370c861
Slide 56
Slide 56 text
https://speakerdeck.com/hibariya/graphql-subscription-with-relay-and-action-cable
Slide 57
Slide 57 text
https://github.com/mtsmfm/gh-deck/blob/db507a455f754c25864557ee4e7bd788776e529f/app/javascrip t/gh-deck/subscriptions/GithubEventCreatedSubscription.js
Slide 58
Slide 58 text
動くは動くが どれくらい捌けるか は謎
Slide 59
Slide 59 text
みどころ4
Slide 60
Slide 60 text
テスト
Slide 61
Slide 61 text
はない
Slide 62
Slide 62 text
テスト書いてないと かお前それry
Slide 63
Slide 63 text
[WIP] だから...
Slide 64
Slide 64 text
テストについて 思うこと
Slide 65
Slide 65 text
Q. GraphQLサーバ はどうテストすれば いいか?
Slide 66
Slide 66 text
GraphQL だからといって、Request Spec (API 単位で正常なリクエストを返すかのテスト) も E2E テスト (ブラウザを動かしてユーザ操作を再現する テスト) も、今までとやり方が変わることはない
Slide 67
Slide 67 text
パラメータが多い REST API をどうテストするかという話
Slide 68
Slide 68 text
やってみたいこと
Slide 69
Slide 69 text
そもそも Event ごとに Component 作りきってちゃん と使えるようにしないと :innocent:
Slide 70
Slide 70 text
- Relay -> Apollo - Client Schema つらい... - Relay の歩みが遅い... - Apollo Engine - Cache、メトリクス
Slide 71
Slide 71 text
Fork me on GitHub! https://github.com/mtsmfm/gh-deck