GraphQL Guild ってご存知ですか? GraphQL 界隈だと、Code Generator が有名と思いますが、GraphQL Guild は、それら GraphQL 関連の OSS を開発しているグループです。(詳しくは、こちら)
GraphQL Guild のエコシステムって便利だな〜って感じたことがあったので、紹介します。 試したソースコードは、こちらにあります。
スキーマ駆動開発をすると、GraphQL のクライアントとサーバーのリポジトリ(GraphQL Schema が置いてある)が分かれることがあります。そうすると、クライアントのリポジトリに、サーバーのリポジトリにある GraphQL の Schema が欲しくなると思います。その状況では、次の解決手段が想像できると思います。
git を扱うと、CI/CD のプロセスやいくつかの場面で、面倒なことがあります。
そこで、GraphQL の SchemaURL を指定するだけで、Schema をダウンロードする機能が、GraphQL CLI にあります。
具体的には、GraphQL Config を作成し、graphql codegen と実行します。
Schema をダウンロードするために、GraphQL のエンドポイント URL を指定します。
Config ファイルの形式は、yml、json、js、ts のどれかを選べます。 私の場合、(supabase を使っている関係で)GraphQL のエンドポイントへアクセスする認証情報を環境変数から読み込みたかったため、Typescript(ts)を選びました。
具体的には、次の Config ファイルを生成します。
// graphql.config.ts
import type { IGraphQLConfig } from "graphql-config";
import { config } from "dotenv";
config();
/** @type {import('graphql-config').IGraphQLConfig} */
const graphqlConfig: IGraphQLConfig = {
schema: [
{
[`${process.env.SUPABASE_URL}/graphql/v1`]: {
headers: {
apikey: process.env.SUPABASE_ANON_KEY || "",
authorization: `Bearer ${process.env.SUPABASE_ANON_KEY}`,
},
},
},
],
extensions: {
codegen: {
generates: {
"generated/schema.graphql": {
plugins: ["schema-ast"],
},
},
},
},
};
export default graphqlConfig;必要なパッケージをインストールした状態で、graphql codegen と実行すると generated/schema.graphql が生成されます!
GraphQL を利用する側としては、どのようなクエリが書けるか試せす場所が欲しくなります。
サーバー側から GraphiQL を用意頂くでも全然良いのですが、GraphQL Yoga というものを使えば簡単にできます。
yarn add graphql-yoga したあとに、先程の graphql.config.ts が存在すれば、yarn yoga するだけで GraphiQL が手に入ります!一切、サーブするコードを書いていません。最高でした。
GraphQL CLI には、GraphQL 関連で便利な機能があります。
具体的には、次の 3 つです。
@graphql-cli/coverage
@graphql-cli/diff
@graphql-cli/validate
GraphQL Guild は、GraphQL Config が中心になっている印象を受けました。 Config があれば、他のエコシステムはそれを見て機能が動くため、準備するものが少なくて済みます。
関係ないですが、supabase で GraphQL を使うのもすごく簡単で、ありがたいです。
-
タグ「バックエンド」の記事
はじめに tRPCは、型安全なAPIを簡単に構築できるフレームワークです。開発中、バックエンドの実装を待たずに、Storybook上でフロントエンドの開発を進めたい場合、Mock Service Worker (MSW) を使用してAPIのモックを行うことができます。この記事では、maloguertin/msw-trpc を用いて、tRPC通信をMSWでモックする方法について解説します。実用例として、サンプルコードをGitHubリポジトリ silverbirder/trpc-msw-storybook-nextjs で共有しています。
Stable Diffusion は、文章を渡すと画像を生成してくれる AI で OSS です。これを自前で動かそうとすると、GPU が必要になります。
前々から気になっていた、CI/CD の非ベンダーロックインな Dagger というツールを試してみました。本記事では、試した内容について共有しようと思います。