Upgrade to Pro — share decks privately, control downloads, hide ads and more …

組織戦略と GraphQL、Hasura

組織戦略と GraphQL、Hasura

C951afc0782b7d3d4800e25b4a4938a9?s=128

Yudai Shinnoki

April 21, 2021
Tweet

Transcript

  1. 組織戦略と GraphQL、Hasura 2021/04/21 iCARE Dev Meetup #20 shinnoki (@konoki_nannoki)

  2. 今日話すこと - スタートアップで1年間GraphQL、Hasuraを採用してみてわかったこと - CTOという立場でやっているのでちょっとメタな視点から話してみます - ...準備してみたらGraphQL成分少なかったので補うためにデモします

  3. - しんのき (Yudai Shinnoki) - https://twitter.com/konoki_nannoki - https://github.com/shinnoki - WASD

    Inc. CTO - React / React Native / GraphQL / Hasura - GraphQL Asia 2021 でスピーカーやりました 自己紹介
  4. 会社紹介 店舗接客のオペレーションを効率化 売り上げアップ・人件費を削減 https://digichime.com

  5. 技術スタック React React Native Learn once, write anywhere GraphQL TypeScript

    Hasura GraphQL Engine Generate types from GraphQL schema Generate GraphQL API from PostgreSQL tables
  6. システム構成図

  7. 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 }
  8. Hasuraの便利な機能 - リッチなダッシュボード - JWTベースの認証、認可 - リアルタイム通信(GraphQL Subscription) - Serverless

    Functionを使ったビジネスロジック(Hasura Actions) - GraphQLクエリのホワイトリスト(Allow List)
  9. Hasura + GraphQL Codegen - Hasura と GraphQL Codegen を組み合わせて

    TypeScript コードまで生成 - 自分で書くコードが少ない → バグを生む可能性が少ない - デモします - 補完がきく、テーブルを消すと Codegenがコケる
  10. スタートアップのジレンマ - とにかくスピード! - 作る → 触ってもらう → 改善 の繰り返し

    - プロトタイプでもいいが、動くものはもっといい - テックリードがガガッと作ることも
  11. スタートアップのジレンマ - とにかくスピード! - 作る → 触ってもらう → 改善 の繰り返し

    - プロトタイプでもいいが、動くものはもっといい - テックリードがガガッと作ることも - テックリードがボトルネックになる - 運用やセキュリティ診断などに時間を取られる - 採用しようにも結局はテックリードの時間が取られる - 日々共有が行われる仕組みが重要(スクラム、ペアプロ、コードレビュー) 数カ月後...
  12. 「ソフトウェアの構造は開発組織の構造を反映する」 コンウェイの法則

  13. 「ソフトウェアの構造は開発組織の構造を反映する」 コンウェイの法則 - 組織をスケールさせるにはマイクロサービス化が有用 - GraphQLスキーマを共有することでチーム間のやりとりがスムーズに - 逆にモノリスな構成にすることで密なコミュニケーションを 取る戦略は初期のスタートアップにおいては有用 -

    そのために Rails などの Web フレームワークがとても良い - ネイティブアプリやリッチな SPA を作るのがスコープに入っていれば、 最初からフロントエンドの作りやすさを前提に技術選定したほうがよい
  14. - 専門領域が分かる人が1人だと、そもそもペアプロやレビューができない - React、React Native、Hasuraの学習コストであれば全員が触れる - 学習コストは低ければ低いほどよい - AppSync や

    Firestore などでもよい - No Code ツールが成熟すればそっちのほうが理想 React + Hasura Frontend Backend iOS Android 全員がフルスタックエンジニア React + Hasura React + Hasura React + Hasura
  15. 国内事例 https://note.com/dinii/n/n9be778bd7da3 (2020/09/20)

  16. - ピンポイントでGraphQL経験者を採用するのは難しい - 経験がないと、まず最初にスキーマ設計について 勉強しなければいけないのがハードルが高い 採用、教育、キャリア

  17. - ピンポイントでGraphQL経験者を採用するのは難しい - 経験がないと、まず最初にスキーマ設計について 勉強しなければいけないのがハードルが高い - バックエンドエンジニアがRDB設計のノウハウを活かし活躍できる - フロントエンドエンジニアもRDBの設計を学ぶことができる 採用、教育、キャリアの観点

    Hasuraを使うと
  18. - 自動生成のAPIで本当に使えるの? - 複雑になってくると辛いこともあるけど大体の場合これで十分 - 枯れてない技術を使って大丈夫? - DBとGraphQLスキーマがあれば、バックエンドは再実装も不可能じゃない - どんな技術も辛くなったら

    - Hasuraやめる場合はまたどこかで情報発信していきます - 情報が少ない - がんばる Hasura Q&A
  19. - 立ち上げ期のスタートアップと GraphQL の親和性は高い - 特に立ち上げ期は Hasura がオススメ! - ただしドキュメントを読んで頑張ることは必要

    - やっていきましょう 💪 まとめ
  20. この発表に興味を持たれたらご連絡ください!