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
Hasura とは何者か メリット・デメリット
Search
Yudai Shinnoki
August 28, 2020
Programming
3k
10
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Hasura とは何者か メリット・デメリット
Yudai Shinnoki
August 28, 2020
More Decks by Yudai Shinnoki
See All by Yudai Shinnoki
AWS “““触って””” みた
shinnoki
0
150
体に馴染む開発環境 ~ghqはいいぞ~
shinnoki
0
1.9k
組織戦略と GraphQL、Hasura
shinnoki
2
4.9k
TypeScript と React Hooks と GraphQL のステキな関係性
shinnoki
2
530
リリース前に知りたいネイティブのあれこれ
shinnoki
0
1.6k
外部委託の立場から半ば強引にLaravelを導入した話
shinnoki
0
740
Other Decks in Programming
See All in Programming
速習iPhone Duo対応
yuukiw00w
2
900
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
250
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.6k
thread_parallel_with_free-threaded_Python_and_NumPy.pdf
riku_sakamoto
0
370
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
430
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
240
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
2.9k
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
240
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
330
FreeBSDでZabbixを動かす
kenkino
0
340
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
1
2k
Ghostty + Neovimで作る 透明でカッコ良い開発環境
j341nono
0
140
Featured
See All Featured
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
750
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
440
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
250
Site-Speed That Sticks
csswizardry
13
1.5k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Documentation Writing (for coders)
carmenintech
77
5.5k
GitHub's CSS Performance
jonrohan
1033
470k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
46k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
330
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Transcript
Hasura とは何者か メリット・デメリット 2020/08/27 GraphQL Tokyo Meetup #10 shinnoki (@konoki_nannoki)
自己紹介 shinnoki (@konoki_nannoki) - WASD Inc. CTO - デジちゃいむ https://digichime.com/
というサービスを開発しています - Hasura / React / React Native - なりゆきで Hasura を本番投入したので 日本に布教しないと詰むマン
Hasura 概要 - 正式名称は Hasura GraphQL Engine - だけど今回は Hasura
って呼びます - 2019/12 に v1.0.0、現在 v1.3.1 - PostgreSQL から GraphQL API が生えてくるやつ - MySQL 対応も開発中らしい - GraphQL リクエストを 1 つの SQL に変換して DB に投げる - バックエンドと DB 間の N+1 問題は原理的に発生しないのでパフォーマンスが良い - SQL としてのパフォーマンスまではわからない - JWT ベースの認証認可 - Websocket を使った GraphQL Subscription - 中身はイベントベースではなく Live Query
GraphQL 界隈における Hasura
vs Prisma (間違っていたらすみません ) - GraphQL 自動生成系のくくりでよく比較される - 実際に Prisma
v1 はサーバーを立てる必要があり割と似ていた - Prisma v2 は ORM ライブラリっぽい感じ - Prisma は裏方だが Hasura はリクエストを直接受ける前提 Frontend Database Server Prisma Frontend Hasura PostgreSQL graphql-yoga / Apollo Server/ GraphQL Nexus など MySQL / PostgreSQL
Schema First vs Code First Schema First - Apollo Server,
gqlgen など - メリット - スキーマに従ってフロントエンド、バックエンド を並行して実装できる - スキーマを設計してしまえば、バックエンドも codegen の恩恵を得られる - デメリット - 自分たちで GraphQL スキーマを設計するに は知識が求められる - スキーマ設計を誤ると後から実装しづらいこと に気づく Code First - graphql-ruby, TypeGraphQL, Nexus など - メリット - ライブラリに従っていれば知識がなくてもある 程度ベストプラクティスに沿ったスキーマにな る - デメリット - フロントエンドはバックエンドの実装を待つ形 になる
GraphQL 界隈での Prisma, Hasura の立ち位置 - Prisma は Model First
(勝手に命名) - Schema First の発展型 - Model を定義すると CRUD を自動生成してくれるので設計の負担が少ない - AWS Amplify CLI とかも同じ感じ - Hasura は Database First (勝手に命名) - Code First の発展型 - あくまで定義するのは PostgreSQL のテーブル - 開発スタイルは Code First と同じだが DB と密結合で App 層が極限まで薄い - graphql-codegen と組み合わせると DB の定義をフロントまで引っ張ってこれる!! - ここまで徹底しているのは唯一無二? - どちらも Schema First や Code First の弱点を補っている
mBaaS 界隈における Hasura
現代 Web 開発に求められるもの - 新規開発においてブラウザ/ネイティブアプリ両対応と リアルタイム通信は初期要件になくても必ず話に出てくる - なるだろうなと思ったら実際そうなった - なんとか回避するか、頑張って実装するかの二択
- Firebase や AWS Amplify などの mBaaS を使うと比較的楽にこの要望を叶えられる - つらみも多い - Hasura も mBaaS (の DB) っぽい使い方ができる - 複数クライアント対応しやすい GraphQL API - GraphQL Subscription によるリアルタイム通信 チャット つけられる? Webと アプリ両方 できるよね
cf) 3factor App - Hasura 社が提唱しているアーキテクチャパターン https://3factor.app - Realtime GraphQL,
Reliable eventing, Async serverless - The Twelve-Factor App とはレイヤーも違うしちょっとイキリすぎ
Firebase vs AWS Amplify vs Hasura Firebase AWS Amplify Hasura
動作環境 マネージド マネージド Docker コンテナ / マネージド (Hasura Cloud) 認証 Firebase Authentication Amazon Cognito 任意の JWT 認証 (Auth0, Firebase Authentication, AWS Cognitoなど) / Webhook 認証 データベース NoSQL (Cloud Firestore / Realtime Database) NoSQL (Amazon DynamoDB) RDB (PostgreSQL) クライアント gRPC (Firebase SDK) GraphQL (Amplify SDK / AppSync SDK) 任意のGraphQLクライアント
mBaaS 界隈での Hasura の立ち位置 - Docker で動かせる - docker-compose を使って気軽にローカル環境を立てられる
- デプロイ先の選択肢が多い - データベースが PostgreSQL - RDB のノウハウをそのまま流用できる - スキーマがあるので設計に秩序を保ちやすい - Rails と Hasura で同じ DB を参照するとかもできる - Firestore や DynamoDB に比べてしまうとスケーラビリティは - 金で殴れば毎秒100万回の更新を100万ユーザーが受け取れるらしい https://github.com/hasura/graphql-engine/blob/master/architecture/live-queries.md
デモ(時間があれば)
実際使ってみて
Hasura のデメリット - 実装の中身まで把握するには Haskell がわかる必要がある - ビジネスロジックが最初から複雑な場合メリットは少ない - パーミッションが複雑になるとしんどい
- フィールド名が snake_case なのは受け入れる必要がある - 設定でフィールド名を上書きできるが設定の手間より受け入れたほうが楽 - 日本語の情報が少なすぎる!!
もし Hasura が流行ったら - Database First な開発 - Foreign Key
制約や Not Null 制約をはじめ PostgreSQL の機能をフルに使う必要があるので、 データベースを設計できるエンジニアが重宝される - 嫌われがちな SQL Function や Database Trigger が見直される世界線があるかも ...?
Follow Me shinnoki (@konoki_nannoki) - 最近ひたすら Hasura 成分多めです - 時間あるときは木曜朝にもくもく会やってます
- 少しでも Hasura に興味が湧いたらぜひフォローください! - みんなも Hasura 使って!!