[訳]Hello Apollo:GraphQLを使用したAndroid Appを作成
4922 ワード
原文タイトル:Hello Apollo Writing Your First Android App With GraphQL原文アドレス:https://android.jlelse.eu/hello-apollo-writing-your-first-android-app-with-graphql-d8edabb35a2 作者:Pranay Airan翻訳:leesniper
モバイルアプリケーション開発者であれば、より速いAPIとより速いアプリケーションの重要性を理解するに違いありません.特に、データトラフィックが高い国では、必要なデータだけを取得することが特に重要になります.
しかし、APIは複数のクライアントのために設計されており、各クライアントには異なる要求があり、多くの場合、これらのAPIはモバイルアプリケーションに対して最適化されていないことがわかります.これがGraphQLのような新しい技術が役に立つ場所です.
GraphQLは、クライアントが必要とするデータを正確に取得できるAPI向けのクエリー言語です.GraphQLをまだ知らない場合は、次のリンクで詳細を確認できます.http://graphql.org/.
GraphQL on Android
AndroidプラットフォームでGraphQL APIを使用する方法を見てみましょう.ネット上にはサードパーティ製のライブラリがたくさんありますが、これまでアンドロイドプラットフォームにはGraphQLライブラリ:Apolloが1つしかありませんでした.
Apollo Androidは素晴らしいGraphQLライブラリで、GraphQL APIを使いやすくすることができます.2つの主要なコンポーネントがあります. Apolloコード生成(Apollo Codegen).このコンポーネントはButterKnifeのようにコードを生成できるgradleプラグインで、apollo codegenはコンパイル時に標準graphqlクエリからJava modelを生成します. ネットワークとキャッシュ(Networking/Caching).Apollo Androidのもう一つのコンポーネントは、GraphQL APIとすべてのネットワーク通信を担当し、返されたデータを正しいmodelに解析し、動的データをGraphQLクエリーと応答キャッシュに渡すことができます.
Hello World
GraphQLとApollo Androidの動作原理を知っています.次に、ApolloをAndroidアプリケーションに統合する方法を見てみましょう.
既存のプロジェクトがない場合は、空のアンドロイドプロジェクトを作成します.プロジェクトレベルのbuild.gradleファイルにこの行を追加します.
この行はcom.android.tools.の後に置くべきです.アプリケーションのbuild.gradleファイルを開き、この行を追加します.
この行はcom.android.applicationの下にあるはずです.KotlinプロジェクトでApolloを使用したい場合は、ApolloプラグインをKotlinプラグインの前に追加します.この2つの依存があれば、Apolloを私たちのプロジェクトに追加しました.
コード生成(Codegen)
ApolloはGraphQLリクエストとschemaファイルを受信し、Javaクラスを生成します.それがどのように働いているのか研究してみましょう. src/mainの下にjava/resフォルダと同じレベルのフォルダを作成します.このフォルダに任意の名前を付けることができます.graphqlと名付けます. このフォルダの下にschema.jsonファイルを追加します.Schema.jsonは、GraphQL API、すべてのフィールド、入力パラメータなどの情報を記述するファイルです.ここにschemaファイルの例があります. 同じフォルダに拡張子.graphqlというGraphQLクエリー(query)ファイルを追加します.これらのクエリーは、Apollo codegenによって返されるデータ構造を生成するために使用されます.ここにはGraphQLファイルの例があります.
schemaファイルと.graphqlファイルを追加した後、プロジェクトを再buildします.Apolloはこれらのクエリー(query)とモード(schema)を解析し、コードを生成します.buildが完了すると、app/build/generated/source/apolloフォルダの下に生成されたファイルを表示できます.
に糸を通す
Apollo依存関係を追加し、コードを生成しました.次に、すべてをつなぎ、最初のGraphQLネットワークリクエストを作成します.
この例示的なアプリケーションでは、GitHubの例示的なGraphQL APIを使用します.https://githunt-api.herokuapp.com/graphql
ApolloはOkHTTPをネットワーククライアントとして使用しています.OkHttpに慣れている場合は、OkHttpを使用してheadersとinterceptorsを追加できることを知っています.
要求ヘッダ情報の追加
キャッシュを有効にしたい場合は、apolloが3レベルのキャッシュをサポートしています.このリンクを使用して、キャッシュに関する詳細を参照してください.https://github.com/apollographql/apollo-android.キャッシュを使用する場合は、次の依存関係を追加する必要があります.
OkHttp ClientとCacheがあり、Apollo clientオブジェクトを作成できます.
キャッシュの部分はオプションで、Apolloクライアントが作成されると、すべてのネットワークリクエストが同じクライアントを使用できます.
最初のGraphQL リクエスト
私たちの例のAPPでは、Apolloは私たちの例.graphqlファイルからFeedQueryクラスを生成します.このクラスを使用してネットワーク呼び出しを行い、新しく作成したapolloClientオブジェクトを使用します.
要求を作成し、すべてのパラメータを渡す
LimitとTypeはgraphQLクエリの動的パラメータであり、Apolloはこれらのパラメータのsettersメソッドを自動的に作成し、javaコードからこれらのパラメータを渡すことができます.
ApolloCallの作成
Apolloは通常のコールバックとRxJavaをサポートします.サンプルプログラムには2つのAPIがあり、1つは通常のコールバックで使用され、1つはRxJavaで使用されます.この文章では、コールバック方式がどのように働いているかを見てみましょう.
通常のコールバックメソッドを使用するには、enqueue関数を呼び出すときにApolloCall.Callbackコールバックを転送する必要があります.Retrofitのスタイルに似ています.
Androidアプリケーションで最初のGraphQL APIを使用することに成功しました.
GraphQLは強力で、RESTベースのAPIに代わることができます.複雑なAPIを処理しており、GraphQLをサポートしている場合は、GraphQLに切り替えることでアプリケーションを簡素化できます.
ここには完全なサンプルプログラムがありますhttps://github.com/apollographql/apollo-android/tree/master/apollo-sample.しかし、Apolloのサンプルアプリには、すべてのプロジェクトレベルの依存関係が追加されており、うまく機能していません.
そこで、サンプルappを修正し、すべてのプロジェクトレベルの依存関係を削除しました.次のリンクから、ApolloとGraphQLを使用する完全な有効なアプリを見つけることができます.https://github.com/pranayairan/HelloApolloAndroid
モバイルアプリケーション開発者であれば、より速いAPIとより速いアプリケーションの重要性を理解するに違いありません.特に、データトラフィックが高い国では、必要なデータだけを取得することが特に重要になります.
しかし、APIは複数のクライアントのために設計されており、各クライアントには異なる要求があり、多くの場合、これらのAPIはモバイルアプリケーションに対して最適化されていないことがわかります.これがGraphQLのような新しい技術が役に立つ場所です.
GraphQLは、クライアントが必要とするデータを正確に取得できるAPI向けのクエリー言語です.GraphQLをまだ知らない場合は、次のリンクで詳細を確認できます.http://graphql.org/.
GraphQL on Android
AndroidプラットフォームでGraphQL APIを使用する方法を見てみましょう.ネット上にはサードパーティ製のライブラリがたくさんありますが、これまでアンドロイドプラットフォームにはGraphQLライブラリ:Apolloが1つしかありませんでした.
Apollo Androidは素晴らしいGraphQLライブラリで、GraphQL APIを使いやすくすることができます.2つの主要なコンポーネントがあります.
Hello World
GraphQLとApollo Androidの動作原理を知っています.次に、ApolloをAndroidアプリケーションに統合する方法を見てみましょう.
既存のプロジェクトがない場合は、空のアンドロイドプロジェクトを作成します.プロジェクトレベルのbuild.gradleファイルにこの行を追加します.
classpath 'com.apollographql.apollo:gradle-plugin:0.3.2'
この行はcom.android.tools.の後に置くべきです.アプリケーションのbuild.gradleファイルを開き、この行を追加します.
apply plugin: 'com.apollographql.android'
この行はcom.android.applicationの下にあるはずです.KotlinプロジェクトでApolloを使用したい場合は、ApolloプラグインをKotlinプラグインの前に追加します.この2つの依存があれば、Apolloを私たちのプロジェクトに追加しました.
コード生成(Codegen)
ApolloはGraphQLリクエストとschemaファイルを受信し、Javaクラスを生成します.それがどのように働いているのか研究してみましょう.
schemaファイルと.graphqlファイルを追加した後、プロジェクトを再buildします.Apolloはこれらのクエリー(query)とモード(schema)を解析し、コードを生成します.buildが完了すると、app/build/generated/source/apolloフォルダの下に生成されたファイルを表示できます.
に糸を通す
Apollo依存関係を追加し、コードを生成しました.次に、すべてをつなぎ、最初のGraphQLネットワークリクエストを作成します.
この例示的なアプリケーションでは、GitHubの例示的なGraphQL APIを使用します.https://githunt-api.herokuapp.com/graphql
ApolloはOkHTTPをネットワーククライアントとして使用しています.OkHttpに慣れている場合は、OkHttpを使用してheadersとinterceptorsを追加できることを知っています.
要求ヘッダ情報の追加
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.addInterceptor(logging)
.build();
キャッシュを有効にしたい場合は、apolloが3レベルのキャッシュをサポートしています.このリンクを使用して、キャッシュに関する詳細を参照してください.https://github.com/apollographql/apollo-android.キャッシュを使用する場合は、次の依存関係を追加する必要があります.
compile "com.apollographql.apollo:apollo-android-support:0.3.2"
OkHttp ClientとCacheがあり、Apollo clientオブジェクトを作成できます.
apolloClient = ApolloClient.*builder*()
.serverUrl(*BASE_URL*)
.okHttpClient(okHttpClient)
.normalizedCache(normalizedCacheFactory, cacheKeyResolver)
.build();
キャッシュの部分はオプションで、Apolloクライアントが作成されると、すべてのネットワークリクエストが同じクライアントを使用できます.
最初のGraphQL リクエスト
私たちの例のAPPでは、Apolloは私たちの例.graphqlファイルからFeedQueryクラスを生成します.このクラスを使用してネットワーク呼び出しを行い、新しく作成したapolloClientオブジェクトを使用します.
要求を作成し、すべてのパラメータを渡す
FeedQuery feedQuery = FeedQuery.*builder*()
.limit(*FEED_SIZE*)
.type(FeedType.*HOT*)
.build();
LimitとTypeはgraphQLクエリの動的パラメータであり、Apolloはこれらのパラメータのsettersメソッドを自動的に作成し、javaコードからこれらのパラメータを渡すことができます.
ApolloCallの作成
ApolloCall githuntFeedCall = apolloClient
.query(feedQuery);
Apolloは通常のコールバックとRxJavaをサポートします.サンプルプログラムには2つのAPIがあり、1つは通常のコールバックで使用され、1つはRxJavaで使用されます.この文章では、コールバック方式がどのように働いているかを見てみましょう.
githuntFeedCall.enqueue(new ApolloCall.Callback() {
@Override
public void onResponse(@Nonnull Response response) {
FeedQuery.Data data = response.data();
}
@Override
public void onFailure(@Nonnull ApolloException e) {
}
});
通常のコールバックメソッドを使用するには、enqueue関数を呼び出すときにApolloCall.Callbackコールバックを転送する必要があります.Retrofitのスタイルに似ています.
Androidアプリケーションで最初のGraphQL APIを使用することに成功しました.
GraphQLは強力で、RESTベースのAPIに代わることができます.複雑なAPIを処理しており、GraphQLをサポートしている場合は、GraphQLに切り替えることでアプリケーションを簡素化できます.
ここには完全なサンプルプログラムがありますhttps://github.com/apollographql/apollo-android/tree/master/apollo-sample.しかし、Apolloのサンプルアプリには、すべてのプロジェクトレベルの依存関係が追加されており、うまく機能していません.
そこで、サンプルappを修正し、すべてのプロジェクトレベルの依存関係を削除しました.次のリンクから、ApolloとGraphQLを使用する完全な有効なアプリを見つけることができます.https://github.com/pranayairan/HelloApolloAndroid