GraphQL API自動生成サービス(EzQL)をリリースしました。
GraphQL API自動生成サービス(EzQL)のリリース
フロントエンドエンジニアの齊藤です。前回から間が空き、創業から五年目の時期を迎えました。
ここまでの紆余曲折はまた機会があれば記事にしようかなと思いつつ、本日は創業時からずっと温めていたアイデアを元にした自社プロダクトである EzQL
のリリースについてご報告しようと思います。
EzQLとは
リンク(LP): https://ezql.com/
サービス名は EzQL(イージーキューエル)
といいます。 "Easy + GraphQL(GQL)" にしつつ、4文字ぐらいにいい感じに収めるために "easy -> ez" と短縮してみました。 実は easyql.com ドメインも弊社で保持しているのでそちらからもアクセスできます。名前だけ覚えていればスペルを忘れても安心です。
EzQL
はGraphQL APIを自動生成するサービスです。DBスキーマを解析し、実際のコードを生成するEzQL CLIと、各言語毎に用意されたパッケージ(ライブラリ)の組み合わせで利用するものとなります。
初期リリース時点ではRails(Ruby)とNode.js(TypeORM)に対応しており、それらの言語向けのGraphQL API(Schema) + ORM向けのモデル定義を生成することができます。
なぜ作ったのか
会社員時代から今日に至るまでに、様々なビジネス領域のWebアプリケーション開発を担当してきました。当然それぞれの案件で扱う領域(データの種類)は違うものの、作るものには一定のパターンがあるように感じています。例えばこのようなものです。
- 一覧画面
- 一定のルール(近隣 / 地名)に合致する飲食店の一覧
- サービスに登録されているユーザ・商品の一覧
- 画像を含むカード表示での一覧 / 表形式での一覧表示
- 詳細画面
- 飲食店・商品のレビュー
- 商品と関連する画像データ
- 商品と関連するタグ
一覧画面では商品の属性(フィールド / DBのカラム)による絞り込み、ページネーションと呼ばれる30件ごとのページ表示といった機能が求められます。これらの機能はフレームワークがサポートしていればその機能を使い、されていなければプログラマ自身で実装する必要があります。
自分がプログラマを始めた頃(2010年頃)は著名なWebアプリケーションフレームワークであるRailsの全盛期でした。当時からRailsは多くの機能をサポートしており、かんたんなものであればRails自身の機能だけで開発が完結するため、様々な企業のプロジェクトでRailsが活用されていました。
そこからしばらく経ち、いろんな案件を担当する中でRailsだけでなくGo, PHP(Laravel), Node.js(Express)など多様な言語を使った案件に携わりました。言語毎に強み・弱みがあるので一概に良し悪しはないのですが、言語が変わればフレームワーク(や似た概念のライブラリ)の機能は様々で、Railsだったら〇〇機能を使えばすぐできることが、今使っているフレームワークではできない。といった事に出くわします。 その度にそういった足りない機能を補うライブラリを探したり、なければ自前で実装。といった事に多くの時間を割いてきました。端的に言い換えると 言語・フレームワーク毎の機能の差異
の解消に時間がかかるとも言えます。
また、Webアプリケーション開発では日々変わる業務要件(や利用ユーザ向けの新機能のアイデア)に基づいてデータを足したり、設計を変更したりする必要があります。サービスの初期段階では苦にならないプログラミングも、年数を経て機能が増えたり関わる開発者の人数が増えてくると、さまざまな問題に出くわします。例えばこういったものです。
- 既存のAPIの実装を参考に(コピペして)新しいAPIを作った。その後元のAPIにバグが見つかり直したが、コピペ先のAPIにはバグが残ったままとなった。 ->
コピペによる修正漏れ
- よく分からずChatGPTにサジェストされたコードを使って新しいAPIを作った。 ->
品質の低いコード
EzQLでどう解決するのか
EzQLは利用者の利用している技術毎(初期リリース段階はRails/TypeORMのみ)に適切なコードを自動生成する事で、
利用しているプログラミング言語・フレームワークを問わず統一された、すぐWebアプリケーション開発に使えるコードを提供します。主要な絞り込み条件・ページネーションへの対応を始め、 GraphQLを用いて、複数の関連データ(Relation / 関連モデル)を一度のリクエストで取得できるので、効率の良いWebアプリケーション開発が行えるようになります。
またGraphQLのエコシステムにより提供される、主要な言語向けのGraphQLクライアント(Web = TypeScript, iOS = Swift, Android = Kotlin)を使うことで、APIサーバとのやりとりを型安全かつかんたんに行うことができます。
利用の流れについて
ご契約後に発行されるEzQLアカウントを使ってEzQLサイトにログインいただき、 ezql
CLIをダウンロードする事で利用を開始できます。ezql
コマンドの実行時にのみ有効なサブスクリプション(= 契約)が必要となりますが、 ezql
コマンドによって生成されたソースコードは、EzQLサービスの解約以降も含めご自由にご利用いただけます。
ターゲットとなる方
EzQLはDB(データベース)を用いたアプリケーション開発を行っているチームであればどなたでも対象となります。
様々な用途にご利用いただけますが、現時点ではこういった用途を主に想定しています。
- 自社サービスへの管理画面開発
- プロトタイプ開発
- 多種のデータ(テーブル)を扱う業務アプリケーション開発
当面の目標
EzQLは法人単位でのご契約を前提としていますが、開発チームもまだ小さいため(2名程度)、まずは数社(~5社ぐらい?)のご契約を目標にしています。そのため、費用感については記事公開時点で 月額20万円~
(※)を目安としています。
※ 席数ライセンス。ユーザあたり5万円x4席分。保守(サポート)代含む
これは安い費用ではないと思いますが、この値段にはプロジェクトの状況をヒアリングしつつ、適切なコミュニケーション(サポート)や、必要に応じてGraphQL(および関連するフロントエンド技術)への技術サポートを行うための稼働の費用を含んでおります。
プロジェクトごとのご要望などもお聞きしつつ、ものによっては新たな機能として追加で開発しご提供したりするような、そういった試行錯誤に付き合っていただける企業さんがいらっしゃれば、是非 LP や当HPの お問い合わせフォーム からお気軽にお問い合わせください!