GraphQLを始めれば人生が180度かわる。GraphQLを始めれば人生が180度かわる。GraphQLを始めれば人生が180度かわる。GraphQL謝辞タイトルは大袈裟に言いました。7度くらい変わります。誰のためのどんな記事かこの記事は、GraphQLを聞いたことがある、興味を持っているといった方からGraphQLを使ったけど良さが全然わからんという方向けです。この記事をとおして自分にGraphQLは必要かRailsでGraphQLを始める上でおすすめの構成がわかると思います。GraphQLとは?みたいな話は調べればいくらでも出てくるので特に話すつもりはありません。ここで話すGraphQLはRelayというスタイル(ページネーションについての規約)で説明を進めていきます。GraphQL、APIの認識よくRESTにするか、GraphQLにするかという文脈で語られるのでRESTとGraphQLがまるで別物かのような認識を持たれる方がいらっしゃいます。初めに正しい認識から入れていきたいのですが、イメージとしてはRESTという土台があってGraphQLに昇華するような感じです。APIは、世界のどこかにあるデータに対してXXが欲しいだの、YYYYみたいなものを作ってくれだの消してくれだのといった要求を送り付け、結果を受けとるための仕組みで、RESTはURLで「あるデータ」、つまりリソースを指定してHTTPメソッドで要求の種類(作って欲しい、渡して欲しい、更新して欲しい、削除して欲しい等)を指定し、必要があればBodyという要求を送る際の補足情報にJSON形式などでデータを添えます。Inputも同様にリソースに対して取得・変更要求を出します。わかりやすいように、それぞれを比較していきます。}]}}見比べてもわかるように、URL部でやっていることをBody部でやっているだけです。GraphQLのメリットとどういう人が使うといいのか先程の例を拡張して現場あるあるな事例を混ぜていきましょう。ニュースリーダーサイトを作っていたとして、ニュース一覧ページで先程のAPIは使われるでしょう。その現場ではフロントをReactで、サーバーをRailsで別々の人が実装しているとします。最初はニュース一覧ページではタイトルを表示するだけでしたが、ある日デザイナーがそこに著者情報を入れたいといってきました。モデル側の設計としてNewsに著者情報が保持されていることが前提となりますが、RESTだとバックエンドとフロントエンド双方で追加開発が必要となり、GraphQLを採用していればフロントのみの変更ですみます。いう話は日常茶飯事でフロントの都合に合わせてサーバー側のコードを書き換えが増えたり、無茶なテーブルの関連付けが行われたりします。「ここのページこうしたいからレスポンスをこういうふうにして」という要求に耳を傾ける必要性を下げられると、サーバーはデータやドメインオブジェクトがどうあるべきかという設計に注力できるのでハイパフォーマンスなシステムを構築しやすくなります。Railsを長く使っている人はわかると思いますが、サービスクラスやFormオブジェクトといった標準的にはRailsに存在しないレイヤーを追加して綺麗にリクエストに対する処理を実装しているが、そうなるとなんのためのRailsなんだ。いう疑念にかられる時があります。標準化された、リクエストに対して特化したオブジェクトを手に入れる方法としてもGraphQLには非常に大きな魅力があります。GraphQLが向いている人というのはフロントの仕様変更の多い現場サーバーサイドでフレームワークの標準仕様にないリクエスト処理機構を取り入れている人になるかと個人的には思います。APIを作る際のおすすめ会社でボイラープレートを作りました。こちらにおいておくので興味のある方はご覧ください。Railsで、GraphQLを採用して作りました。このボイラープレートに実装してあることも実際にその時に書いたコードから切り出して作っています。私のメンタリングでは初心者の方の学習サポートからサービス設計はもちろん、中級者の開発スキルの向上や、転職に向けて現場向けな知識までサポートさせていただきます。興味のある方はメッセージをお願いします。この記事を書いた人に相談してみるmackeee-orangeWeb開発はフロント、サーバー、インフラ、組み込みライブラリまで全部やってます。機械学習ライブラリの実装もやっていて、サービスに合わせたパイプラインも設計できます。その流れでGPUサーバーも作ってますがこれは趣味です。スマホアプリはiOS(Swift4)のみやっています。スタートアップを立ち上げて、エンジニア向けのプロダクトの企画・開発をしています。2022年9月10日mackeee-orangeWeb開発はフロント、サーバー、インフラ、組み込みライブラリまで全部やってます。機械学習ライブラリの実装もやっていて、サービスに合わせたパイプラインも設計できます。React.jsmackeee-orangeさんの他の記事メンター活動再開します。GraphQLを始めれば人生が180度かわる。Markdown記法の書き方Markdownを使った書き方をご紹介します。約3,000名のメンターから選べるプログラミング、デザイン、マーケティング、起業など学びたいスキルでピンポイントに探せます。見つからない場合は、メンターを募集することも可能です。個別に教えてもらえるあなたが悩んでいることをダイレクトに相談して、マンツーマンで解決までたどり着くことができます。リーズナブルスクールなどの企業ではなく、個人のメンターと直契約するため比較的リーズナブルに教えてもらうことができます。