Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
組織戦略と GraphQL、Hasura
Search
Yudai Shinnoki
April 21, 2021
Programming
4.9k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
組織戦略と GraphQL、Hasura
Yudai Shinnoki
April 21, 2021
Transcript
20 slides
組織戦略と GraphQL、Hasura 2021/04/21 iCARE Dev Meetup #20 shinnoki (@konoki_nannoki)
今日話すこと - スタートアップで1年間GraphQL、Hasuraを採用してみてわかったこと - CTOという立場でやっているのでちょっとメタな視点から話してみます - ...準備してみたらGraphQL成分少なかったので補うためにデモします
- しんのき (Yudai Shinnoki) - https://twitter.com/konoki_nannoki - https://github.com/shinnoki - WASD
Inc. CTO - React / React Native / GraphQL / Hasura - GraphQL Asia 2021 でスピーカーやりました 自己紹介
会社紹介 店舗接客のオペレーションを効率化 売り上げアップ・人件費を削減 https://digichime.com
技術スタック React React Native Learn once, write anywhere GraphQL TypeScript
Hasura GraphQL Engine Generate types from GraphQL schema Generate GraphQL API from PostgreSQL tables
システム構成図
Hasura概要 - Hasura Inc. が作っている Hasura GraphQL Engine というツール -
PostgreSQL テーブルから CRUD の GraphQL API を自動生成してくれる - 使い勝手はAppSync、Firestoreなどに近い https://speakerdeck.com/shinnoki/hasura-tohahe-zhe-ka-meritutodemerituto user テーブル query { user } mutation { insert_user update_user delete_user } subscription { user }
Hasuraの便利な機能 - リッチなダッシュボード - JWTベースの認証、認可 - リアルタイム通信(GraphQL Subscription) - Serverless
Functionを使ったビジネスロジック(Hasura Actions) - GraphQLクエリのホワイトリスト(Allow List)
Hasura + GraphQL Codegen - Hasura と GraphQL Codegen を組み合わせて
TypeScript コードまで生成 - 自分で書くコードが少ない → バグを生む可能性が少ない - デモします - 補完がきく、テーブルを消すと Codegenがコケる
スタートアップのジレンマ - とにかくスピード! - 作る → 触ってもらう → 改善 の繰り返し
- プロトタイプでもいいが、動くものはもっといい - テックリードがガガッと作ることも
スタートアップのジレンマ - とにかくスピード! - 作る → 触ってもらう → 改善 の繰り返し
- プロトタイプでもいいが、動くものはもっといい - テックリードがガガッと作ることも - テックリードがボトルネックになる - 運用やセキュリティ診断などに時間を取られる - 採用しようにも結局はテックリードの時間が取られる - 日々共有が行われる仕組みが重要(スクラム、ペアプロ、コードレビュー) 数カ月後...
「ソフトウェアの構造は開発組織の構造を反映する」 コンウェイの法則
「ソフトウェアの構造は開発組織の構造を反映する」 コンウェイの法則 - 組織をスケールさせるにはマイクロサービス化が有用 - GraphQLスキーマを共有することでチーム間のやりとりがスムーズに - 逆にモノリスな構成にすることで密なコミュニケーションを 取る戦略は初期のスタートアップにおいては有用 -
そのために Rails などの Web フレームワークがとても良い - ネイティブアプリやリッチな SPA を作るのがスコープに入っていれば、 最初からフロントエンドの作りやすさを前提に技術選定したほうがよい
- 専門領域が分かる人が1人だと、そもそもペアプロやレビューができない - React、React Native、Hasuraの学習コストであれば全員が触れる - 学習コストは低ければ低いほどよい - AppSync や
Firestore などでもよい - No Code ツールが成熟すればそっちのほうが理想 React + Hasura Frontend Backend iOS Android 全員がフルスタックエンジニア React + Hasura React + Hasura React + Hasura
国内事例 https://note.com/dinii/n/n9be778bd7da3 (2020/09/20)
- ピンポイントでGraphQL経験者を採用するのは難しい - 経験がないと、まず最初にスキーマ設計について 勉強しなければいけないのがハードルが高い 採用、教育、キャリア
- ピンポイントでGraphQL経験者を採用するのは難しい - 経験がないと、まず最初にスキーマ設計について 勉強しなければいけないのがハードルが高い - バックエンドエンジニアがRDB設計のノウハウを活かし活躍できる - フロントエンドエンジニアもRDBの設計を学ぶことができる 採用、教育、キャリアの観点
Hasuraを使うと
- 自動生成のAPIで本当に使えるの? - 複雑になってくると辛いこともあるけど大体の場合これで十分 - 枯れてない技術を使って大丈夫? - DBとGraphQLスキーマがあれば、バックエンドは再実装も不可能じゃない - どんな技術も辛くなったら
- Hasuraやめる場合はまたどこかで情報発信していきます - 情報が少ない - がんばる Hasura Q&A
- 立ち上げ期のスタートアップと GraphQL の親和性は高い - 特に立ち上げ期は Hasura がオススメ! - ただしドキュメントを読んで頑張ることは必要
- やっていきましょう 💪 まとめ
この発表に興味を持たれたらご連絡ください!
More Decks by Yudai Shinnoki
See All by Yudai Shinnoki
AWS “““触って””” みた
shinnoki
0
150
体に馴染む開発環境 ~ghqはいいぞ~
shinnoki
0
1.9k
Hasura とは何者か メリット・デメリット
shinnoki
10
3k
TypeScript と React Hooks と GraphQL のステキな関係性
shinnoki
2
530
リリース前に知りたいネイティブのあれこれ
shinnoki
0
1.6k
外部委託の立場から半ば強引にLaravelを導入した話
shinnoki
0
750
Other Decks in Programming
See All in Programming
小さなアプリを作って公開するまで
onozaty
0
170
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Kaigi on Rails 2026, Tokyo, Japan
marcoroth
2
430
AWS CDKを理解するために公式の定義を深掘って解説してみる / Understanding AWS CDK by Digging into Its Official Definition
akihisaikeda
3
300
クラウドゲーミングのパフォーマンス最適化に挑む / Cloud Gaming Performance Tuning
vivion
0
330
React Native에 현대적인 빌드 도구 더하기: Rollipop 구현기
leegeunhyeok
0
180
PumaからFalconに移行したRailsアプリケーションでの実践
falcon8823
0
370
AI時代のIaC入門 〜なぜインフラをコードで管理したいのか?〜 / Introduction to IaC in the AI Era
akihisaikeda
6
1.5k
Spec-driven Development with AI
simas
PRO
0
2.3k
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
250
作れるエンジニアから、価値を届けるエンジニアへ
ryunakayama
1
260
PyConTW 2026 - AI Coding 不只是工具升級, 區域醫院醫療資訊系統協作開發與資訊團隊轉型實踐
cclai999
0
250
そのデザイントークン、Flutterでも同じ見た目になりますか?
nakamizu
0
330
Featured
See All Featured
Building Adaptive Systems
keathley
44
3.3k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
660
How STYLIGHT went responsive
nonsquared
100
6.4k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
560
Highjacked: Video Game Concept Design
rkendrick25
PRO
2
560
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.4k
The Limits of Empathy - UXLibs8
cassininazir
2
770
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
430
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
4
1.2k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.5k
Build your cross-platform service in a week with App Engine
jlugia
234
19k