react-apollo の調査で GraphQL サーバーをさっくり実装する必要があり、 今 graphqool どうなってるんだっけ、と見に行ったら prisma が推奨されていました。 日本語情報がまったくなかったので、調査した結果をまとめておきます。 prisma とはなにか GraphQL の形をした ORM MySQL/Postgre への マイグレーションヘルパー付き モデル定義からインデックス自動生成 CRUD自動生成 graphqoolの次期版? PaaS に依存せず、自分でデプロイ可能なマイクロサービス 自分も最初よくわからなかったのですが、 使ってみた感じでは、 GraphQL の形をとった ORM + Migration Helper です。 $ npm i -g prisma $ prisma init my-graphql-server # REPL で実装を選
概要 GraphQL で柔軟なリクエストができるようになれば、サーバー側の実装をせずとも新しい機能を効率よく作れて便利みたいな話を見かけた GraphQL では独自のクエリ言語でサーバーに対してデータを要求するが、クエリ言語と言えば SQL というものがあるので、どうせなら SQL をサーバーに投げつけるようにすれば、似たようなことが出来るのではないかと考えたのでやってみた サンプルアプリケーション ソースコード sqlql_sample 仕様 ユーザー ユーザーは key(Token) を持っていて、リクエストの時にヘッダーに Token をつける privacy という属性を持つ。privacy が true のユーザーは他のユーザーからは不可視となる コメント ユーザーが投稿する事ができる privacy という属性を持つ。privacy が true のコメントはコメントのオーナー
connpass.com 五反田のfreeeさんでGraphQLナイトが開催されたので参加してきました。会社のSlackの開発者チャンネルで@hsbtさんが貼ったリンクを見て開催に気づけたので、ありがたい限りでした。 また、LT枠が急遽空いたので、前日に飛び入りでLTすることに決めました。LT資料はこちらです。 内容としては、これまでの記事から、あまり他の人と被りなくRubyに特化しすぎることもない次のネタをあらためて紹介した感じです。 blog.kymmt.com どういう反応になりそうかあんまりわからなかったのですが、ある程度こういう話に興味がある人は多いのかな?という感想でした。 先程のLT資料です #gqnight https://t.co/CfwNOkd0GZ— kymmt90 (@kymmt90) June 28, 2018 あと、いい機会なのでサンプルを作りました。 gith
Create React App(CRA)を使ってアプリケーションを生成します。任意の作業用ディレクトリに移動後、下記のコマンドを実行します。 再現性を高めるために、パッケージのバージョンを固定してインストールしています。 npx create-react-app@3.4.1 --template typescript react-appsync-protected-by-auth0 cd react-appsync-protected-by-auth0 React RouterとAuth0のSPA用SDKをインストールします。 yarn add react-router-dom@5.1.2 @auth0/auth0-spa-js@1.8.1 yarn add -D @types/react-router-dom@5.1.2 Auth0をReactで利用する為のCustom Hookを作成
GraphQL Editor https://graphqleditor.com/ GraphQL Editorの特徴 「GraphQL Editor」は、GUIでGraphQLスキーマを作成できるIDEです。 https://github.com/graphql-editor/graphql-editor/ なおこちら、オープンソースとしても公開されており、ライクが4kを超えるほど人気のプロジェクトになっています。 スキーマを作成する まずはプロジェクトを作っていきます。フリープランでは、Publicプロジェクトになりますので管理に注意してください。 実際にスキーマも作成していきます。まずはtype(型)を指定。 続いてtypeが持つフィールドを追加します。 するとこのように、グラフィカルなスキーマとコードが自動生成されます。 作成したtypeは、オブジェクトとして指定することも可能。
こんにちは、メルペイのライブラリとか作るおじさんの @vvakame です。 インフラ編に続きGraphQL(API)編です。 MTC2018のカンファレンスLPのGraphQLによるAPI実装について紹介していきます。 リポジトリをこちらで公開しているので気が向いたら見ていってください。 Playgroundもあって、しばらくは生きている状態のままだと思います。 GraphQLやっていき 筆者は最近GraphQL、特にGo言語用のライブラリであるgqlgenに入れ込んでいます。 そこで、APIの実装にGraphQLを使うことによりgqlgenの使い方を社内に示し、ついでクライアント側の人たちにGraphQLの良さを体感してもらおう!という思惑です。 MTCでもCSToolをgqlgenでやっていき!という話題がありましたし! …と思ったらアプリの人たちはFlutterを選び、Dartには
この記事について 今年の7/27にGitHub Projectベータと呼ばれていたものがGAになりました。 新しくGAになったProject(以下ProjectV2と書きます)は、 フィールドを用いて、アイテムに様々なメタデータを追加できる カードに設定した様々なメタデータごとにかんばんを作ることができる アイテムのグループ化・ソート・フィルタが簡単にできる 日付・各種メタデータを軸として指定したグラフを作ることができるので可視化が簡単 といった、classic Projectではできなかったあれこれが一つのProjectでできるようになっており、とても便利になりました。 そしてProjectV2がGAした今、一部例外を除いてclassic Projectを新規作成するというのはできなくなっています。 そのため、ProjectV2への移行というのは今後どんどん進んでいくと思われます。 Yo
このあいだ GitHub が公開していた GraphQL API が便利そうだったので使おうと思ったのだけど、求めたライブラリがなかったので作った次第です。 ここで GraphQL についての説明はしませんが、結果の JSON とクエリが同じ形を持っているのが便利で美しいですね。ということは API の結果の JSON を受け取る struct から GraphQL のクエリが生成できるのが自然でしょう。そういうことをやってくれるシンプルなライブラリです。 GitHub - motemen/go-graphql-query API シンプルな例 ディレクティブとエイリアス 引数と変数 インラインフラグメント 複雑な例 軽い気持ちで書きはじめたところ GraphQL に予想外の表現力があることがわかったのでけっこう無理をしているところもあります。一般的にどんな使い方がなされるのかわかってない
カヤックSREの池田です。 先月は、カヤックのプロダクトの一つ『Tonamel』で導入したエラーバジェット算出ツール『shimesaba』の話をしました。 techblog.kayac.com github.com 今回は、実際にどのようにSLI/SLOを運用しているのか?という内容をshimesabaを使った設定例を交えつつ話します。 SLI/SLOの運用にお悩みの方の助けになれば幸いです。 最初のSLI/SLOはどう決定したのか? SLI/SLOの運用を始めるにあたって、多くの人が悩むのは以下の2つだと思います。 一体何をSLIとすれば良いのか? 最初のSLOはどのくらいにしたら良いのか? つまりは、最初の1歩をどうしたら良いか?と言う話ですが、こちらに関しては2つ参考になるものがあります。 『SLO決定のためのArt of SLO』 https://sre-next.dev/2022
Airbnb’s Server-Driven UI System(Ghost Platform) とは何か Airbnbが社内で取り組んでいる最新UI開発システム Ghost Platformとそのコンセプトの名前 元Airbnb AndroidエンジニアRyan Brooksによるポストを参照 A Deep Dive into Airbnb’s Server-Driven UI System | by Ryan Brooks | The Airbnb Tech Blog | Medium A Deep Dive into Airbnb’s Server-Driven UI System どういうものか サーバー(API)からデータと画面構造(UI)を配信して各プラットフォームで再生する仕組み UI言語部分を抽象化したもの Web、iOS、Androidに対応する なぜ画面構造を配信するの
GMOペパボ Advent Calendar 2017の23日目の記事です。 今回はJavaScriptでGraphQLのサーバ/クライアントや関連ツールを提供しているApolloのツールセットでRailsプロジェクトでGraphQLのモックサーバを立ち上げるところまでを試してみます。 業務でRails製の(RESTishな)Web APIとVue.js製のSPAからなるアプリケーションを開発していて、スキーマファースト開発を取り入れています。また、GraphQLで通信するAPIを実験的に導入しはじめていますが、こちらは明示的な開発フローを決めず導入しようとしているため、なかなかサクサクと開発が進まないのが現状です。そこで、GraphQLでも先にインタフェースだけを決めてから、モックサーバを使ってフロントエンドとバックエンドで並行開発していけばよいのでは、という発想になります。 しかし、そ
こんにちは、 @mugi_uno です。 Misocaがサービスローンチされたのは 2011年です。実は2021年は10年目ということで何気に節目の年だったりします。 10年もあれば世の中的にもさまざまな技術変遷があり、Misocaもその波に乗っていけるよう、日々改善を繰り返してきました。 というわけで今回は、私自身がフロントエンド側の作業を多くやってきたこともあり「この10年間でMisocaのアーキテクチャがどのように変わってきたのか?」をフロントエンド側に焦点を絞って振り返ってみたいと思います。 ※ 意思決定に関する資料が無いものも存在するため、一部は情報に基づく推察になる点をご承知おきください。 年表 いきなりですが、ざっくり年表を書いてみました。 上部の黄色いラインは、フロントエンドに大きい影響を与えたMisocaの機能です。 これをもとに、サービスローンチから順を追って見てみます
こんにちは。ソウゾウで Software Engineer をしている @sottar です。連載:メルカリShops 開発の裏側 Vol.2の 5 日目を担当させていただきます。 この記事ではメルカリShops における、開発をサポートするための Automation 化について紹介します。 メルカリShops での開発手法 先日のプロダクト組織に関する記事でも言及がありましたが、ソウゾウでは全員ソフトウェアエンジニアを標榜しており、これまで経験がない分野でも積極的にコードを書いていく文化があります。 組織の人数も当初に比べ増えてきており、より様々なバックグラウンドを持ったエンジニアが参画しています。 エンジニアが自らの経験が少ない分野のコードを書くと、その言語ならではの書き方がわかっていなかったり、意図していない変更が起きてしまったりすることが起こりやすくなります。基本的にはコードレビ
こんにちは。Mercari Advent Calendar 2019 14日目は、CSTool Domainチームの @Peranikov がお送りします。 メルカリではお客さまに安心して取引を楽しんでいただくため「あんしん・あんぜん宣言」に取り組んでおり、プロダクトの開発と同じレベルの課題感でカスタマーサービスの質の向上にも力をいれています。私の所属するCS(Customer Service) Tool Domainチームでは、カスタマーサービスのメンバーがお客さまからのお問い合わせ対応に使用するシステムの開発・運用を担っています。 商品通報対応とは メルカリでは利用規約に反するような出品がされた場合、お客さまや権利者さまからの通報・ルールベースやMachine Learningによる監視などで違反出品を検知し、カスタマーサービスチームが確認・対応するという業務を行っています。 ただ、サ
GraphQL Mesh は何を解決するのか? ~ Qiita API を GraphQL でラップして理解する GraphQL Mesh ~QiitaJavaScriptNode.jsGraphQLgraphql-mesh GraphQL Mesh とは The Guild から GraphQL Mesh が発表されました。 🚀 GraphQL Mesh - Query Anything, Run Anywhere 🚀https://t.co/PlZpAC9b54 🎉 I'm very proud to announce our new open source library - GraphQL Mesh! Use #GraphQL to query: 🔹 openapi/Swagger 🔹 gRPC 🔹 SOAP 🔹 SQL 🔹 GraphQL 🔹 More! Wit
GraphQLのFragment活用テクニック: colocationとmasking こんにちは。N 予備校 Webフロントエンド開発チームの中村です。 現在開発中のZEN CompassではGraphQLを採用しました。我々のチームでは(そして私個人としても)GraphQLを採用したのは初めてだったのですが、実際に設計を進めていくうちに色々と知見を得ることができました。今回はその中でも特に重要だと思った、GraphQLのFragmentという仕様を活用したコンポーネント設計のテクニックについてお話ししようと思います。GraphQLを使用したWebアプリケーションに興味がある方にとって何か参考になりましたら幸いです。 【ZEN Compass】 学習者を導く先生方などが利用するコーチング支援Webサービスです。 LMS(Learning Management System)として学習状況
こんにちは.マンガチームの id:mangano-ito です.最近は GraphQL API の開発を担当しており,GraphQL に関することを勉強したり実践したりしています.今回は開発ツールについてのお話です. GraphiQL とは GitHub API での使用例 GraphiQL を導入してみよう ツールバーをカスタマイズしてみよう ヘッダーやクエリをカスタマイズしてみよう 実際に開発ではどう使っているか GraphiQL とは graphql/graphiql: GraphiQL & the GraphQL LSP Reference Ecosystem for building browser & IDE tools. GraphQL API の使いやすい GUI クライアントです.GUI クライアントなので GraphQL ではなく Graph i QL となっているのが
開発言語と主要フレームワーク 95%以上Swiftで、特に古いテストやエンティティはObjective-Cが少しだけあります。新規のものは必ずSwiftで開発していて、残っているObjective-Cは少しずつ減らしています。 使っているSDKのバージョンに関しては、Xcode 12への移行対応が終わっており、近日中に12でビルドしたバイナリーを公開する予定です。 ほぼほぼUIKitですが、いくつかの画面でSwiftUIを使っています。最低対応のSDKはiOS 13なので、LazyStack系やLazyGrid系がまだ使えないのですが、設定周りの画面など、CollectionViewっぽくない画面を今年中にたくさん移行しようと思っています。移行自体は色々考えてプロトタイプを作るなどして、2020年のiOSDCで発表しました。また、UIKitはモダンなAPIを使うように心がけており、例えば、
今回は graphql-codegen を使い説明します。今回の例は、graphql-codegen 以外でも発生する可能性がありますが自動生成系が一番顕著に影響がわかりやすいです。 graphql-codegen はよく、graphql のスキーマから typescript の型定義/react の hooks 等を自動生成するのに使われますが、これは next.js と組み合わせた場合、少しトリッキーな部分があります。 graphql-codegen はデフォルトでは 1 ファイルにすべて出力されますが、それに対し next.js は各ページを chunks として吐くため何も考えずに実装すると、バンドルされるファイル量が膨大になる可能性があります。next.config.js から webpack の設定を上書きできますが、optimization はかなり上書きしづらくそもそも上書
iOSDC2021登壇資料、スライドのまとめです。 Twitter等で見つけ次第掲載しますが、もし資料を見かけた方or資料を公開した登壇者の方がいらっしゃいましたら、コメント等でお声がけください。 スライドや資料のリンクが見つかった場合はタイトルにリンクをつけてありますので、タイトルがリンクになっていない場合はまだ資料が見つかっていないものになります。 Day 0 Track A 大規模リファクタリングの極意 forteeのリンク SwiftUIで使ったアプリを1年運用してみてわかったこと forteeのリンク Initiatives in Rakuma iOS App forteeのリンク SwiftUI で実プロダクトを音速リリースした話 forteeのリンク Track B agoraを使ってライブ配信機能を1ヶ月半でリリースした話 forteeのリンク A Swift Stack
この記事は はてなエンジニア Advent Calendar 2022 の2023年1月3日の記事です。 昨日は id:onk で ストーリー性のあるプレゼン - id:onk のはてなブログ でした。 『Production Ready GraphQL』といえば Production Ready GraphQLはGraphQLを採用するなら必ず読んでおきたい良書 などでも紹介されていますが、GraphQL APIを設計・開発・利用するなら大変参考になる良書ですね。はてな社内でもGraphQL開発における前提本ですね、などと言われている模様です。 この中で好きな箇所の1つが「Specific or Generic」という節の「Anemic GraphQL」という項です。たくさん引用するわけにもいかないので冒頭だけ見ますと、 Anemic GraphQL is something I sto
のようなクエリをクライアントが発行することになります。 なぜこのようなシステムが必要かの説明の前に、RESTの問題点を挙げてみます。 RESTの問題点 Server Side Renderingの場合 コントローラでEager Loading等のクエリ最適化を意識しないといけない ビューを実装するときも結局裏側でどのようなクエリが発生するかを意識しないといけない Client Side Renderingの場合 コンポーネント毎に必要な情報をリクエストする場合、AJAXリクエストを何度も発行する必要がある 提供されているAPIが不十分だと、クライアント側でテーブル結合が必要となる 共通する問題 クライアント毎にちょっとずつ違うAPIを用意してメンテしないといけない 端末に応じて異なるサイズの画像を返す ネイティブアプリとウェブアプリで異なる結果を返す 等など APIに「暗黙的な契約」が発生
最近、GraphQL APIをインターネット上に晒す上で何を考慮したらいいのだろうか、的なことを考える機会が多く、空いた時間でチマチマと素振りしています。 今日はGraphQLのクライアント - サーバー間に挟むリバプロ的な機能について書いてみようと思います。 やりたいこと 1. 想定しないクエリの排除 例えばECやメディアサイトのような、未ログインでも情報の閲覧が可能なサービスのWeb API層をGrahpQLで実装したとします。ECにしろメディアにしろ、詳細ページでの回遊率を上げるため、詳細同士を関連付けるようなスキーマ設計となるのは自然なことでしょう。 GrahpQLのスキーマ定義で書くと、下記のようなイメージです。 type Product { id: ID! name: String! relatedProducts: [Product] } type Query { produ
ワールドカップ2018の2次予選が始まった後で、私たちは、参加チームについての人々のあらゆる問いに答える 簡単な手段 を作りたいと思いました。 要約 ワールドカップ2018のために、グラフデータベースNeo4jを使ったGraphQL APIを作成しました。試してみたい人は、 ここをクリック してください。 グラフデータベースNeo4jを使ったGraphQL APIの作成 既に私たちは、 ワールドカップについての全てのデータのデータベース を作成して、人々がクエリに使えるようにしましたが、これを、Neo4jのクエリ言語、Cypherを知らない人でもアクセスできるようにしたいと思いました。 GraphQLに助けてもらおう GraphQLの話をする前に、まず、私たちが作ったNeo4jグラフモデルを見てください。 グラフの中央に WorldCup ノードがあって、その周りにモデルの他のパーツが散ら
今回、GraphQLバックエンドの構築にはAsync-graphqlを使用しています。 RustのGraphQLライブラリとして、もうひとつ有名なJuniperも存在しますが、 Async-graphqlの方が機能が豊富で、実現できる仕様の幅が広いです。 また、不具合が非常に少なく、この手のライブラリを使用する際に稀に発生する、 「ライブラリの不具合を回避するためのハック的な実装」みたいなものは今回一切必要ありませんでした。 このライブラリの使い勝手がよかったがために、 ミニマムに抑えようとしていたアプリ機能が少し大きくなった気がします。 ■ セッション管理について 本アプリにおいてセッションの管理は、一般的なWebアプリに用いられるものと同じ、 サーバーでセッションデータを保持し、紐づくセッションIDをクライアントのCookieに保存する方式をとっています。 この手のアプリ構成において、
こんにちは、多様な食を多様に届け、「まいにちの食事」を、おいしく笑顔にしたい @yagitatsu です。 (ちょっと長い?w) 息を吸うように仕事のことを発信できるようになりたいな、ということで仕事でも、noteを再開しようと企んでおります。 会社の近く。秋の目黒川も良きですね🍂本日はCTOらしく、今まで行ってきた技術的な意思決定について、成功と失敗について自分の言葉で語ってみようと思います。 注意点なのですが、前提として、環境やチームによって何を成功とするかは違うと思うので、「へー、こういう考え方なんだね〜」という感じで、軽い気持ちで読んでもらえればうれしいです 😃 技術選定の成功/失敗とはどういう状態かそもそも、技術選定について、成功とはどういう状態で、失敗とはどういう状態か、言語化してみようと思います。 まず、技術選定の成功とは、「この技術を選んでよかった。今後も続けていきたい
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く