$30 off During Our Annual Pro Sale. View Details »

組織戦略と GraphQL、Hasura

組織戦略と GraphQL、Hasura

Yudai Shinnoki

April 21, 2021
Tweet

More Decks by Yudai Shinnoki

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

  3. - しんのき (Yudai Shinnoki)
    - https://twitter.com/konoki_nannoki
    - https://github.com/shinnoki
    - WASD Inc. CTO
    - React / React Native / GraphQL / Hasura
    - GraphQL Asia 2021 でスピーカーやりました
    自己紹介

    View Slide

  4. 会社紹介
    店舗接客のオペレーションを効率化
    売り上げアップ・人件費を削減
    https://digichime.com

    View Slide

  5. 技術スタック
    React
    React Native
    Learn once, write anywhere
    GraphQL
    TypeScript
    Hasura
    GraphQL Engine
    Generate types from
    GraphQL schema
    Generate GraphQL API
    from PostgreSQL tables

    View Slide

  6. システム構成図

    View Slide

  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
    }

    View Slide

  8. Hasuraの便利な機能
    - リッチなダッシュボード
    - JWTベースの認証、認可
    - リアルタイム通信(GraphQL Subscription)
    - Serverless Functionを使ったビジネスロジック(Hasura Actions)
    - GraphQLクエリのホワイトリスト(Allow List)

    View Slide

  9. Hasura + GraphQL Codegen
    - Hasura と GraphQL Codegen を組み合わせて TypeScript コードまで生成
    - 自分で書くコードが少ない → バグを生む可能性が少ない
    - デモします
    - 補完がきく、テーブルを消すと Codegenがコケる

    View Slide

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

    View Slide

  11. スタートアップのジレンマ
    - とにかくスピード!
    - 作る → 触ってもらう → 改善 の繰り返し
    - プロトタイプでもいいが、動くものはもっといい
    - テックリードがガガッと作ることも
    - テックリードがボトルネックになる
    - 運用やセキュリティ診断などに時間を取られる
    - 採用しようにも結局はテックリードの時間が取られる
    - 日々共有が行われる仕組みが重要(スクラム、ペアプロ、コードレビュー)
    数カ月後...

    View Slide

  12. 「ソフトウェアの構造は開発組織の構造を反映する」
    コンウェイの法則

    View Slide

  13. 「ソフトウェアの構造は開発組織の構造を反映する」
    コンウェイの法則
    - 組織をスケールさせるにはマイクロサービス化が有用
    - GraphQLスキーマを共有することでチーム間のやりとりがスムーズに
    - 逆にモノリスな構成にすることで密なコミュニケーションを
    取る戦略は初期のスタートアップにおいては有用
    - そのために Rails などの Web フレームワークがとても良い
    - ネイティブアプリやリッチな SPA を作るのがスコープに入っていれば、
    最初からフロントエンドの作りやすさを前提に技術選定したほうがよい

    View Slide

  14. - 専門領域が分かる人が1人だと、そもそもペアプロやレビューができない
    - React、React Native、Hasuraの学習コストであれば全員が触れる
    - 学習コストは低ければ低いほどよい
    - AppSync や Firestore などでもよい
    - No Code ツールが成熟すればそっちのほうが理想
    React + Hasura
    Frontend
    Backend
    iOS
    Android
    全員がフルスタックエンジニア
    React + Hasura
    React + Hasura React + Hasura

    View Slide

  15. 国内事例
    https://note.com/dinii/n/n9be778bd7da3 (2020/09/20)

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  19. - 立ち上げ期のスタートアップと GraphQL の親和性は高い
    - 特に立ち上げ期は Hasura がオススメ!
    - ただしドキュメントを読んで頑張ることは必要
    - やっていきましょう 💪
    まとめ

    View Slide

  20. この発表に興味を持たれたらご連絡ください!

    View Slide