異なるParse・バージョンにおけるGraphQLクエリと変異
Parseが時間とともに進化するにつれ、より良いパフォーマンス、より良い互換性、より簡単な開発のために、いくつかの側面が変化しています。
その一つがGraphQLのサポートで、Parse 3.5.0から最新の3.9へと進化しています。
ここBack4appでは、GraphQLクエリと変異の変更を実装する3つの主要なバージョンを用意しています:3.7.2、3.8、3.9です。今日はこれらのバージョン間の違いを説明し、何が変更され、何が変更されなかったかを示します。
はじめに
顧客に長期的なソリューションを展開する場合、進化は必須であり、Parseも例外ではありません。
Parseも例外ではありません。GraphQLの標準が普及し、使用されるようになるにつれ、コミュニティはより良い統合、簡素化された使用方法、直感的な操作性を求めるようになりました。Parseのメンテナであり、積極的な貢献者であるBack4appは、そのような声を聞き、オープンソースのParseプラットフォームでそのような結果を達成するために多くの努力をしました。
私たちの開発者たちは、Cloud Codeとの統合など、時間をかけて新しい機能をもたらしましたが、コミュニティはフレームワークやプラットフォームを超えてより一貫したGraphQL構文を求め続け、Parse 3.9で私たちはそれを実現し、コミュニティが恩恵を受けられるように提供しました。
この構文が進化する一方で、いくつかの重要な変更が行われたため、使用するParseのバージョンに応じて、正しい構文を選択する必要があります:3.7.2、3.8、3.9では、同じ結果を得るための構文が若干異なります。
このため、私はこの記事を書いています。そうすることで、すべてのドキュメントを一か所にまとめることができます。
以下にいくつかの例をお見せします。
APIヘルス
API ヘルス・クエリはバージョン間で変更されていません:
とすることで一貫して呼び出すことができる:
オブジェクトの作成
オブジェクトを作成するための変異は、異なるGraphQLフレームワーク間でより一貫性を持たせるために時間の経過とともに変更されました。
汎用変異の使用
Parse 3.7.2では、オブジェクトの作成を要求するだけで、自動的にクラスが作成されました:
Parse 3.8では、objectsクエリが削除されましたが、オブジェクトの作成を要求すると自動的にクラスが作成されるようになりました:
しかし、Parse 3.9では、まずクラスを作成し、明示的にフィールドを追加する必要があります:
そして、特定のメソッド(下記)を使って初めてオブジェクトを保存することができます。
特定のメソッドの使用(クラスの変異)
特定のメソッド(クラスメソッド、この場合はクラス変異)も変更されました:
Parse 3.7.2では、以下のようになりました:
Parse 3.8 では、objects プロパティが削除されました:
そして最後に、Parse 3.9では、ObjectIdがidに改名され、標準に準拠できるようになりました:
オブジェクトの取得
オブジェクトの取得も、一貫性と互換性を高めるために進化してきました。
汎用クエリの使用
特定のオブジェクトを取得するために、クラス名とオブジェクト ID を指定することができます。
Parse 3.7.2:
その後、Parse 3.8ではオブジェクトが削除され、よりシンプルな呼び出しが可能になりました:
Parse 3.8:
Parse 3.9の登場により、ジェネリック・メソッドGETは削除され、オブジェクトを取得するには特定のクラス・メソッドを使用することになりました(詳細は後述します)。
特定のメソッドを使う(クラス・クエリー)
特定メソッドもParseのバージョンによって変わりました。
Parse 3.7.2では以下のようになりました:
その後、Parse 3.8ではobjectsプロパティも削除され、呼び出しやすくなりました:
そしてParse 3.9では、フレームワーク間の整合性を高めるために、objectIdがidに置き換えられました:
オブジェクトの検索
オブジェクトの検索も、一貫性と互換性を高めるために進化してきました。
汎用クエリの使用
汎用的な FIND メソッドを使ってオブジェクトのリストを取得するには、クラス名を指定します。
Parse 3.7.2:
その後、Parse 3.8ではオブジェクトが削除され、よりシンプルな呼び出しが可能になりました:
Parse 3.8:
Parse 3.9の登場により、ジェネリック・メソッドFINDは削除され、オブジェクトを取得するには特定のクラス・メソッドを使用する必要があります(詳細は後述します)。
特定のメソッドを使う(クラス・クエリー)
特定メソッドもParseのバージョンによって変わりました。
Parse 3.7.2では以下のようになりました:
その後、Parse 3.8ではobjectsプロパティも削除され、呼び出しやすくなりました:
そしてParse 3.9では、フレームワーク間の整合性を高めるために、objectIdがidに置き換えられました:
オブジェクトの更新
オブジェクトの更新も、一貫性と互換性を高めるために変更する必要がありました。
汎用クエリの使用
オブジェクトを更新するために、クラス名と ObjectID を指定することができるようになりました。
Parse 3.7.2:
その後、Parse 3.8ではオブジェクトが削除され、よりシンプルな呼び出しが可能になりました:
Parse 3.8:
Parse 3.9の登場により、汎用メソッドUPDATEは削除され、オブジェクトを取得するには特定のクラス・メソッドを使用する必要があります(詳細は後述します)。
特定のメソッドを使う(クラス・クエリー)
特定のメソッドも Parse のバージョンによって変更されました。
Parse 3.7.2では以下のようになりました:
その後、Parse 3.8ではobjectsプロパティも削除され、呼び出しやすくなりました:
そして、Parse 3.9では、呼び出しは3.8と同様にしていますが、呼び出しの中でobjectIdがidにリネームされています:
アプリケーションメソッド
アプリケーション・メソッドは、変更に従って新しい標準に準拠する必要がありました。アプリケーション固有のクエリとミューテーションも変更された。
ユーザー登録
新規ユーザーのサインアップは、時間の経過とともにプロトコルに従うようになり、それに応じて調整された:
Parse 3.7.2:
その後、Parse 3.8では、この呼び出しが維持されました:
Parse 3.8:
Parse 3.9の登場により、objectIdプロパティはidに変更されました:
ユーザーのログイン
ユーザーのログインも同様に変更されました:
Parse 3.7.2:
その後、Parse 3.8でもこの呼び出しは維持されました:
Parse 3.8:
Parse 3.9の登場により、objectIdプロパティはidに変更されました:
ログインユーザーの取得
ログに記録されたユーザーの情報を取得する方法も変更されました。X-Parse-Session-Token “ヘッダと、そのユーザーの有効な Session Token を渡す必要はありますが、クエリ自体は変わりました:
Parse 3.7.2:
その後、Parse 3.8はMEクエリを新しいVIEWERフォーマットに変更しました:
Parse 3.8:
Parse 3.9の登場により、objectIdプロパティはidに変更されました。必要なければ、構文は3.8と同じです:
結論
Parseが他のプラットフォームやフォーマットと共に進化していく中で、開発を簡素化し、一貫性と相互運用性を保つためにParseが変化し続けるのは当然のことでした。
新しい標準が登場すると、Parseは統合先の主要コンポーネントと異なることがないように変更を加えなければなりませんでした。
熱心なParseユーザーである私自身は、時間の経過とともにもう少し変化があることを期待している。良い変更。理にかなった、誰もが目標を達成できるような変更です。
私たちBack4appは、この進化を手助けできたことを誇りに思っており、GraphQLを使用している皆さんには、GraphQLクエリや変異と一緒にParseを3.9にアップデートすることをお勧めします。より一貫性のあるクエリ言語から恩恵を受けることができるでしょう。
バージョン4.0は準備中です。それは何をもたらすのでしょうか?
GraphQL はこれまでどのような変化を遂げてきましたか?
主な変更点は以下の通りです。
– クラウドコード統合
– 使いやすさの向上
– 直感性の向上
– 新しいテクノロジーの採用
– 一貫した構文
これらは、時間の経過とともに行われた変更の一部です。
オブジェクト作成の Mutation に変更を加える必要があったのはなぜですか?
この点を変更するにあたっては、一貫性を最優先に考慮しました。Parse 3.9では、まずクラスを作成し、その後にオブジェクトを作成する必要があります。そのため、今回のアップデートでは一貫性を重視しました。
色々な面で変化があって良かったですか?
はい、変更が必要でした。新しい標準規格が登場し、Parseを使用している人々は大きな期待を抱いていました。彼らはより良いものになるよう変更を望んでおり、Parseも同様でした。今後もより良いバージョンとなるよう、アップデートを続けていきます。