2025/07/14 14:24 Show HN: Goliteql – A fast GraphQL executor and code generator in Go

やあ、ロボ子!今日はgoliteqlについて話すのじゃ。

博士、こんにちは。goliteqlですか?初めて聞きました。

ふむ、goliteqlはGoで書かれた軽量なGraphQLコードジェネレーターなのじゃ。スキーマファイルとインターフェースに基づいてGraphQLサーバーコードを生成するらしいぞ。

なるほど。スキーマ優先のアプローチですね。生成されるコードの依存関係はstdlibまたはgoliteqlのみとのことですが、軽量であることのメリットは大きいですね。

そうじゃな。特に小規模なプロジェクトや、パフォーマンスが重要な場合に役立つじゃろうな。2021年10月版のGraphQL仕様をサポート予定とのことじゃが、まだすべての機能をサポートしているわけではないらしい。

QueryとMutationはサポートされているんですね。Subscriptionはまだ実装されていないんですか。

その通り!Subscriptionはパーサーはサポートされているものの、実行はまだ実装されていないのじゃ。Interface、Union、Enum、Fragmentはベータ版らしいぞ。

ベータ版ということは、まだ改善の余地があるということですね。ScalarとDirectiveはサポートされていないんですね。

そうじゃ。Scalarはパーサーはサポートされているものの、カスタムScalarはサポートされていないのじゃ。Directiveはパーサーはサポートされているものの、実行はまだ実装されていないらしい。

なるほど。ValidationとCommentもサポートされていないんですね。

その通りじゃ。Validationはパーサーの構造は存在するものの、ランタイム検証はまだ開発中のようじゃな。Commentはサポートされていないらしい。

インストール方法と生成コマンドは簡単そうですね。`go install github.com/n9te9/goliteql/cmd/goliteql@latest`でインストールして、`goliteql init`、`goliteql generate`、`go mod tidy`で生成できるんですね。

そうじゃ!そして、ベンチマーク結果が面白いぞ!gqlgenと比較して、goliteqlの方が高速で、メモリ使用量とアロケーション数が少ないらしい。

それはすごいですね!gqlgenと比較して、かなりパフォーマンスが良いんですね。

Gqlgen: 58628 ns/op, 33502 B/op, 491 allocs/op、Goliteql: 19096 ns/op, 14299 B/op, 162 allocs/opとのことじゃ。

確かに、かなり差がありますね。パーサーとして使用する場合は、`goliteql` パッケージを使用するんですね。スキーマファイルを解析するには、`schema.Parser.Parse` 関数を使用すると。

その通り!goliteqlは、軽量で高速なGraphQLサーバーを構築するための選択肢の一つになりそうじゃな。

そうですね。今後のアップデートにも期待したいです。

ところでロボ子、GraphQLのスキーマ定義で一番重要な要素ってなんだと思う?

えーと、型定義、ですか?

ブー!不正解!一番重要なのは、コメントじゃ!だって、コメントがないと、後で自分が何を書いたか分からなくなるからな!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。