こんにちは。SHE株式会社エンジニアのおはるです🐱 📝 この記事について SHEでは、Rails GraphQL API の権限管理の仕組みとして directives を導入することになりました。 導入にあたりチームでとても良いディスカッションができたため、せっかくなので意思決定までの過程や実際の導入例を記事にしたいと思います。 検討した内容をまとめた前編と、実際の導入事例をまとめた後編の2本立てとなり、この記事は前編にあたります。 ▼ 後編はこちら 前提: 技術スタック バックエンド Ruby Ruby on Rails graphql-ruby フロントエンド TypeScript React 🌱 背景 まずは、そもそもなぜ Rails GraphQL API に 権限管理を導入することになったのか?どんな課題感があったのか?について記載します。 現状 SHE のアプリケーショ
こんにちは。 id:Pocke です。 graphql-coverage という gem をリリースしました。 github.com なにこれ GraphQL-Ruby を使っているときに、テストがすべてのフィールドを網羅して呼んでいることを検査するための gem です。 モチベーション 私は GraphQL-Ruby を使って GraphQL サーバーを実装するときに、テストからはすべてのフィールドを呼ぶようなルールで開発をしています。ですがこれを強制する良いツールはありませんでした。そのためフィールドにテストが書かれていることを開発者自身が確認する必要がありました。 「SimpleCovのようなカバレッジ測定ツールを使えば解決するのでは?」と思う方もいるかもしれません。ですが GraphQL-Ruby の場合は単純なコードカバレッジの測定ではこの問題は解決しません。なぜならば Grap
サマリー システム構成の変遷 創業フェーズ はじめての API と技術選定 GraphQL 移行直前 GraphQL への移行を決めたきっかけ GraphQL 移行方針 移行期間 ふりかえり 1つ目の方針は正解だった 2つ目の方針は微妙だったかもしれないけど、正解だったかもしれない 3つ目の方針はやはり苦戦した さいごに サマリー サービス開始から3年経った Next.js + Rails なシステム 全ての API を REST から GraphQL にリプレース 約9ヶ月かかりました 早速フロントエンドの都合でバックエンドにも手を入れるということが減って快適です という話です。 システム構成の変遷 創業フェーズ 1人目エンジニアとして入社して、何から手を付けようかなーと考えた結果、事業の肝の部分からシステム化していくことにしました。弊サービス https://moneiro.jp/ は
こんにちは、タイミー開発プラットフォームチームで業務委託として働いている宮城です。 タイミーはリリースから4年が経過したプロダクトで、2022年の前半から一部領域でGraphQLを利用し始め現在導入を進めています。 本記事では、GraphQLをプロダクトに導入する上で判断に迷った箇所や課題に対して、タイミーでの意思決定とその理由を紹介します。参考にしていただければ幸いです。 GraphQLの選定理由についてはこの記事では触れませんが、CTOの@kameike が以下のイベントで詳しく紹介する予定です。まだ参加申し込みは可能ですので、興味がある方はぜひ合わせてご覧ください。 timeedev.connpass.com なお、本記事のタイトルはソウゾウさんの以下の記事にインスパイアされています。 engineering.mercari.com GraphQLの「Getting Startedの
こんにちは、hibariya です。最近 ミートアップ が開催されるなど、GraphQL が静かに注目を集めていますね。GraphQL は Web API で使えるクエリ言語です。GraphQL 自体は特定のデータベースに依存しないため、RDBMS を使ったアプリケーションで採用することも可能です。PostgreSQL を使う Idobata でも GraphQL の Public API を公開しました。GraphQL 自体がどういうものかについては、graphql.org や以下の資料が参考になるのではないかと思います。 GraphQL APIをRailsアプリに実装した時のメモ GraphQL勉強会 2017.6.7 (補足) Building a Web API with GraphQL GraphQL でサーバ側を実装するときに起こりがちな問題として、クライアントから投げられるク
単純にGraphQLクエリを投げると、サーバサイドでの関連を含むレコード取得時にN+1問題が発生することがあります。こういうケースでは、複数のデータ取得リクエストをひとまとめにして、単一のリクエストとしてDBからデータを取得するbatchingが推奨されています*1。 GraphQLにおけるbatchingをgraphql gemを使ってやるためのGraphQL::Batchというgemがあります。先日リポジトリにサンプルコードが追加されて使いかたを把握しやすくなったので、サンプルコードを読みながら使ってみます。 github.com GraphQL::Batchの概要 GraphQL::Batchでは、Loaderというデータを取得するためのクラスを作って使うことが想定されています。これは、Facebookが開発しているDataLoaderでの考えかたが元となっています。Loaderがb
以前は純Railsで開発を行うことが多かったんですが、最近はgraphql-ruby + SPAを採用することも増えています。 フロントの表現力がやっぱり違いますね。最近はリッチな要望をいただくことも多く、うまいこと対応するには都合が良いです。あと作ってて楽しい。 というわけで、今回はRailsをGraphQLサーバにするgem、graphql-rubyを使ったCRUDを紹介しようと思います。 Dockerに乗せたサンプルアプリを用意したので、ぜひ活用してください。(かなり面倒な)環境構築をスキップすることができます。 基本的にサンプルのコード前提で話を進めますのでその点ご了承ください。 やること graphql-rubyを使った簡単なCRUD実装 やらないこと GraphQLとは?の説明や前提知識の解説 環境構築の解説 フロントの実装(リクエストはpostmanから投げます) サンプルア
GraphQL Ruby 公式ページ RailsでGraphQLを扱う場合↑のgemを使ってAPIを実装していきます。 graphiql-rails 合わせて graphiql-rails gemを入れておくとブラウザ上で実装したGraphQLの 確認ができるIDEが使えるようになります :sparkles: ※ graphql-rubyのinstall時に graphiql-rails のgemをGemfileに追加してくれます イメージ画像 環境構築 $ rails generate graphql:install create app/graphql/types create app/graphql/types/.keep create app/graphql/app_schema.rb create app/graphql/types/base_object.rb create a
はじめに Ruby on RailsでGraphQLに入門してみたのでその備忘録です。 環境は以下の通りです。 ruby: 3.0.2 rails: 6.1.4 graphql-ruby: 1.12 graphiql-rails: 1.8.0 GraphQLとは GraphQLはAPI用のクエリ言語で、REST APIと違って以下のようなメリットがあります。 1つのエンドポイントのみで呼び出せる 欲しい情報のみを指定でき、余分なものを取得しない セットアップ graphql-ruby graphiql-rails こちらを参考にRailsにGraphql、GraphiQLを導入していきます。 GraphiQLを導入することで、develop環境においてGUI上でGraphqlのqueryやmutaitonの設定の確認や実際に実行してテストといったことができるようになります。 phpMyAd
はじめに @june29 と申します。2021年5月からminne事業部のシニアエンジニアリングリードを担当しています。 「ペパボの採用目的2021」というムーブメントに乗っかって、この記事ではminne事業部の様子を紹介します。Webアプリケーションやモバイルアプリケーションの開発に携わるソフトウェアエンジニアが主な想定読者です。ペパボやminne事業部でのお仕事がどんなものか、少しでも興味を持ってもらえたらうれしいです。 minneの事業と組織 minne(ミンネ)は、ハンドメイド作品を「買いたい人」と「売りたい人」をつなぐ国内最大のハンドメイドマーケットです。iOSアプリ、Androidアプリ、Webブラウザからご利用いただけます。 すでに多くのみなさんにご利用いただいている状況ですが、今後も老若男女あらゆる立場の人にもっともっと楽しんでいただけるよう、ライフスタイル領域全般の素敵な
この記事は GraphQL Advent Calendar 2020 14 日目の記事です。 前回の記事は @joe-re さんの 「ライブラリの実装からCursor-based paginationにおけるcursorのフォーマットのベストプラクティスを探る」 でした。 前置き GraphQLは2010年代後半に出てきた技術の中でも個人的に特に強力なアプリケーション実装パターンの一つだと思っているのですが、シンプルな実装なのに利用用途が豊富にあることと利用する立場が違うと全く印象を抱く事から全体像を掴みづらく、本来持つべきポテンシャルに対してまだ認知が広がっておらず利用されていないように感じます。 今回はサーバーサイドからの視点を中心にGraphQLを構築する要素を分解して解説するのとともに、それを利用した際にWebアプリケーション開発やそれに関わるエンジニアに起きうる変化について書いて
技術部の外村(@hokaccha)です。今回はクックパッドのウェブサイトのフロントエンドを Next.js などを使って作り直している話を書きます。 この記事で紹介する新システムは、スマートフォン向けのレシピページで確認することができます。もし興味があるかたはレシピページをスマートフォンのユーザーエージェントで開いて DevTools などで確認してみてください。 Next.js と GraphQL で動いているのがわかると思います。 ご存じの方も多いかもしれませんが、クックパッドのウェブサイトはモノリシックな Rails で作られていて、10年以上 Rails で開発を続けてきました。10 年以上同じシステムで開発を重ねれば当然レガシーな部分が大量に生まれてきますが、特にフロントエンドはその影響が顕著でした。 どこから使われているかわからない CSS が大量にある、JS のコードは昔なが
はじめに ここ1,2週間くらいで GraphQL を Rails プロジェクトに導入したので、知見を共有できたらと思い書いていきます。 ハマったことを、解決したことと未だに困っていることに分けて書いていきます。 解決したこと graphql-ruby の ドキュメントが古く、最新の書き方がわからなかった graphql-rubyの commit 履歴を見て、ドキュメント、モジュールが古い場合は気をつけて使うようにしましょう。 重要! 5月頃リリースされたv1.8.0から大きく変わり、 class-based API になりました。 class-based APIの実装はこちらを参照してください。 http://graphql-ruby.org/schema/class_based_api 例えば、 Get Started の中で 以下のように genarate してくださいとありますが、こ
スペースマーケットは昨年の9月からproduction環境にgraphql-rubyで実装したGraphQL APIを導入しています。 今日はその際に設計方針として決めた事について書きます。これからRubyでGraphQLを導入する人の参考になれば幸いです。 対象読者 Railsに親しい方 GraphQLがどんなものか理解している方 この記事ではGraphQLの概要については解説しません。スペースマーケットのGraphQL導入の経緯については先日勉強会で発表したスペースマーケットのアーキテクチャ変遷のスライドに詳しく書いています。 Ruby On RailsでGraphQL APIを作るには? graphql-rubyを使えば導入は簡単です。 # Gemfileに追加 gem 'graphql' # installコマンドを叩く $ bundle install $ rails gener
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く