Skip to content

Go x GraphQL でプロジェクト作成する際に考えたこと

July 31, 2021 | 03:00 PM

アーキテクチャについて

全体的な依存関係は以下です。

presentation (gqlgenで自動生成 )

resolver  (gqlgenで自動生成 )

usecase interface

usecase implement

repository interface

repository implement(ORMはsqlboiler で自動生成)

命名規則

関数に pointer を渡すかどうかについて

以下を参照。

公式公式 日本語訳

Go言語(golang)における値渡しとポインタ渡しのパフォーマンス影響について

- 呼び出し元の値を変える必要があるなら、ポインタ
- 引数(レシーバ)が大きければ、ポインタ
- 引数(レシーバ)が小さければ、値

大きさについては、ぱっと検証することは不可能だと考え、渡した値に変更を加える場合はポインターを使い、変更を加えない場合は値渡しを使う方針

DB 制約のチェックリスト

データベースのモデリングについて

immutable data modeling を基本思想にする。 データの updateや deleteをすることはあまり推奨しない。

テストについて

テストは mockはなるべく使用せずに行う。

GraphqQL の リクエストレベルのテストと、repository層のテストを中心におこなう。

go のテストには cache がある

リレーションは pointer で定義する

つかっている gqlgen の性質上、pointer で定義しておいた方が使いやすいため

gqlgen で GraphQL サーバーを運用した感想

ログ設定について

graphql の schema について

参考資料 / その他メモ

SQL Boiler 関連リンク

SQL boilersamplegqlgen-sqlboiler-examples

gqlgen関連 リンク

sample codetest sample

https://github.com/nutstick/gqlgen-clean-example

https://github.com/web-ridge/gqlgen-sqlboiler1回の Google ログインで、モバイルアプリ・自社サーバー・Google サービス・Firebase を連携させるフロー

sample of dataloderhttps://user-first.ikyu.co.jp/entry/go-graphql-dataloaderhttps://github.com/hatena/go-Intern-Bookmark

MF Kessai Go + gqlgen を使った GraphQL アプリケーションサーバーの実装

many to many dataloader

https://github.com/MichaelMure/git-bug

その他

https://github.com/rabee-inc

リーダブルアーキテクチャ - usecase における時間軸と抽象度の統一