GraphQL ナイト 6/28 @ 五反田 発表資料
https://connpass.com/event/91724/
GraphQL で作るGitHub events viewer@mtsmfm Fumiaki MatsushimaGraphQL ナイト 6/28 @ 五反田
View Slide
➔ Quipper Ltd 所属➔ Ruby と麻雀が好き➔ GraphQL Tokyo 主催@mtsmfm.inspect
https://www.quipper.com/
https://studysapuri.jp/
https://techplay.jp/event/680406
GraphQL Tokyohttps://www.meetup.com/ja-JP/GraphQL-Tokyo/
https://www.meetup.com/ja-JP/GraphQL-Tokyo/events/251782724/
Quipper ではすべて GH issue
新機能
バグ
問い合わせ
日報
ポエム
一瞬であふれる通知
Jasper 使ってますかhttps://jasperapp.io/
https://jasperapp.io/
We ♥ Jasper
とはいえ
何が起きたか見るため GitHub Issue 開くの億劫
ふいんきでいいので全体をざっとみたい
Tweet Deckっぽいやつ?
つくることにした
GitHub API v4GraphQL
GitHubブラウザ
なぜか events がない
GraphQL サーバActionCableサーバGitHubGitHubクローラPostgresブラウザ
[WIP] GH deckhttps://github.com/mtsmfm/gh-deck
graphql-rubyActionCableRelay
なぜ GraphQL?
A. 使いたかったから
https://github.com/mtsmfm/gh-deck/blob/db507a455f754c25864557ee4e7bd788776e529f/app/javascript/gh-deck/containers/GithubEventListItem.jsx
みどころ1
graphiql-railsを使わない
https://github.com/mtsmfm/gh-deck/blob/db507a455f754c25864557ee4e7bd788776e529f/app/javascript/packs/graphiql.jsx
graphiql のアプデがgemメンテナ頼みに
Sprockets前提
認証を考えると結局 fetcher 必要
みどころ2
RelayClient Schema
https://github.com/mtsmfm/gh-deck/blob/db507a455f754c25864557ee4e7bd788776e529f/app/javascript/gh-deck/clientSchema.graphql
今までは Redux を併用する必要が
https://medium.com/@matt.krick/replacing-redux-with-relay-47ed085bfafe
既存の Type に追加しかできない
relay-compiler の--src 以下に ClientSchema がないといけない
実はそんなオプションはない
relay-compiler CLI が単に無視してるだけ
※ ドキュメントは何ひとつない
みどころ3
GraphQLSubscription
https://github.com/mtsmfm/gh-deck/commit/d490c523eef32fa489625e65c835e5d1d370c861
https://speakerdeck.com/hibariya/graphql-subscription-with-relay-and-action-cable
https://github.com/mtsmfm/gh-deck/blob/db507a455f754c25864557ee4e7bd788776e529f/app/javascript/gh-deck/subscriptions/GithubEventCreatedSubscription.js
動くは動くがどれくらい捌けるかは謎
みどころ4
テスト
はない
テスト書いてないとかお前それry
[WIP] だから...
テストについて思うこと
Q. GraphQLサーバはどうテストすればいいか?
GraphQL だからといって、Request Spec (API単位で正常なリクエストを返すかのテスト) も E2Eテスト (ブラウザを動かしてユーザ操作を再現するテスト) も、今までとやり方が変わることはない
パラメータが多い REST APIをどうテストするかという話
やってみたいこと
そもそも Event ごとにComponent 作りきってちゃんと使えるようにしないと:innocent:
- Relay -> Apollo- Client Schema つらい...- Relay の歩みが遅い...- Apollo Engine- Cache、メトリクス
Fork me on GitHub!https://github.com/mtsmfm/gh-deck