はじめに
今回はSimpleGraphQL-For-Unity
というUnity用のGraphQL
クライアントライブラリを紹介しようと思います。
This package attempts to provide a simple API that is able to interact with a GraphQL server. Nothing more, nothing less. No complicated setup.
Also, the world could use some more Unity-friendly GraphQL libraries.
That being said, this is intended to be a primarily code based package, so keep that in mind if you decide to use this.
このパッケージは、GraphQLサーバーと対話できるシンプルなAPIを提供しようとするものです。それ以上でもそれ以下でもありません。複雑な設定もありません。
また、世界にはもっとUnityに優しいGraphQLライブラリが必要です。
とはいえ、これは主にコードベースのパッケージであることを意図しているので、これを使用する場合はそれを念頭に置いてください。
またこの記事ではGraphQL
について説明はしないのであしからず。
graphql.org
環境
.NET 4.6 or higher
Platforms | Queries & Mutations | Subscriptions |
---|---|---|
Mono | ✔ | ✔ |
IL2CPP | ✔ | ✔ |
WebGL | ✔ | ❌ |
Unity 2019.4 and higher (up to 2021.1)では確認済み
それ以外は保証はしないよとのこと
https://github.com/ngoninteractive/SimpleGraphQL-For-Unity#requirements
導入方法
PackageManager
のAdd package from git URL
にて、https://github.com/LastAbyss/SimpleGraphQL-For-Unity.git
を打ち込みます。
利用させてもらうWebAPI
試しに無料で公開してくれているWebAPIを利用させてもらいます。
https://github.com/trevorblades/countries
ブラウザでお試しできるので、こんなクエリを書いて実験してみました。
{ country(code: "BR") { name native capital emoji currency languages { code name } } }
結果として以下のjson
が返ってきます。
{ "data": { "country": { "name": "Brazil", "native": "Brasil", "capital": "Brasília", "emoji": "🇧🇷", "currency": "BRL", "languages": [ { "code": "pt", "name": "Portuguese" } ] } } }
使い方(Queries)
SimpleGraphQL-For-Unity
を用いて先ほどのWebAPIにリクエストを送ってみましょう。
public class Sample : MonoBehaviour { private async Task Start() { // endpointを指定してClient生成 var client = new GraphQLClient("https://countries.trevorblades.com/"); // クエリを記述 var request = new Request { Query = @" { country(code: ""BR"") { name native capital emoji currency languages { code name } } }", }; // リクエストを送り、Jsonを取得する var response = await client.Send(request); // {"data":{"country":{"name":"Brazil","native":"Brasil","capital":"Brasília","emoji":"□□","currency":"BRL","languages":[{"code":"pt","name":"Portuguese"}]}}} Debug.Log(response); } }
シンプルですね。ちゃんと動作しました。