Shogo's Blog

Nov 16, 2022 - 1 minute read - github

GitHub GraphQL のノードIDフォーマットが変わるらしい (続報)

以前 GitHub GraphQL のノードIDフォーマットが変わるらしい に書いたように、 将来ノードIDフォーマットが変わるらしいらしいです。 これについて、旧式のノードIDを使用した場合に警告がでるようになった、とアナウンスがありました。

というわけで、どんな警告文がでるのか試してみました。

実際の挙動

試しに僕の名前を取得するクエリを実行してみると、以下のような警告文がでました。

$ gh api graphql -f query='query {
  node(id: "MDQ6VXNlcjExNTczNDQ=") {
    ... on User {
      id
      name
      login
    }
  }
}'
{
  "data": {
    "node": {
      "id": "MDQ6VXNlcjExNTczNDQ=",
      "name": "ICHINOSE Shogo",
      "login": "shogo82148"
    }
  },
  "extensions": {
    "warnings": [
      {
        "type": "DEPRECATION",
        "message": "The id MDQ6VXNlcjExNTczNDQ= is deprecated. Update your cache to use the next_global_id from the data payload.",
        "data": {
          "next_global_id": "U_kgDOABGo4A"
        },
        "link": "https://docs.github.com"
      }
    ]
  }
}

「ID MDQ6VXNlcjExNTczNDQ= は非推奨になりました。 data ペイロードに含まれる next_global_id でキャッシュを更新してください。」と 親切に新しいIDも教えてくれます。 (しかし、ドキュメントへのリンク・・・大雑把過ぎない?)

移行スケージュール

今回のアップデートでは移行スケージュールへの明言はありませんでした。 さきほどの実行結果からわかる通り、古いオブジェクトに対しては相変わらず古いIDが返ってくるので、まだマイグレート期間のようです。

マイグレート: 既存のオブジェクトについて新旧どちらのフォーマットでもリクエストが可能になります。 レスポンスに含まれるIDに関しては、HTTPヘッダーを使って新旧を切り替えることが可能です。およそ3ヶ月で完了の予定です。

↑約一年前の記事なんですがね・・・「およそ3ヶ月で完了の予定です」とは・・・ まあそう簡単に移行が進むわけない、ってことですね。

今回のアップデートも何割のユーザーが気がつくのか。 レスポンスの結果を読むのは大抵ニンゲンではないので、効果うすいような気もします。

まとめ

GitHub GraphQLのノードIDの形式が変わります。 ちゃんと移行しましょうね。

・・・そういえば、僕がこの件について調べたのは Terraform Providerが発端だった んだけど、あれどうなった?

参考