妖怪ポストに依頼が届きました

 

先日ガールズチャンネルさんを見ていると、チャンネル登録者数表示サイトについて解説して欲しいと書き込みがあり、これはブログネタに良さそうと早速飛びつかせて頂きました(ネタ提供ありがとうございます!)。

 

さて、問題のサイトですがYouTube Subscriber Counterというサイトでして、YouTubeのチャンネルごとにチャンネル登録者数をリアルタイムで表示することができるウェブサービスです。

 

https://subscribercounter.com/channel/UC38USpiXhfzHZZWUJT9-VSA

 

なぜ解説が必要なのかと言いますと、このサービスを使っているとチャンネル登録者数が一瞬で数百人増減するような変な挙動があり、本当にサービスが表示する数値を信用してよいか不安に思っている方がいらっしゃるためです。

 

結論から申しますと、表示されている大まかな値は信用して良いですが、リアルタイムの値の変化は信用しない方が良いと思います。

 

  まとめ

 

以前解説したRYDの問題と比較し分かりにくいため、先にまとめです。

 

・Subscriber counterはYouTube API経由でチャンネル登録者数を取得していると考えられる。

・YouTube API経由で取得した登録者数は有効数字3桁の粗々の数値しかなく、細かい数値の変化を追うことができない(問題①)。

・YouTubeの統計値の更新頻度は1時間間隔程度と長いのに、subscriber counterは無理やり秒単位の変化としてとらえようとする。

→ データ補完により無理やり1時間間隔のデータを秒間隔に変換している。

・sunny journeyさんの登録者数は有効数字の関係で1週間に一度程度しか変わらないのにかかわらず、subscriber counterはこの遅すぎる変化を秒単位の変化に無理やり変換しようとする(問題②)。

→ データが良くわからないことになる。

 

  YouTubeの統計情報の取得

 

まず、YouTubeのチャンネル登録者数を取得する方法についてです。

登録者数や動画数の数値はYouTubeチャンネルの統計情報(statistics)と呼ばれておりまして、統計情報へのアクセスは以下の3つの方法があり、利用者の立場によって異なるアクセス方法をとります

 

① ウェブブラウザ、専用アプリによるアクセス(視聴者)

② YouTube Data APIによるアクセス(開発者)

③ YT Studio・YouTubeアナリティクスによるアクセス(発信者)

 

まず、①ですが、我々がYouTubeを見るときにChrome、Safariのようなウェブブラウザや、専用のアプリを使ってYouTubeにアクセスし、チャンネルページを開くとチャンネル登録者数を見ることができます。

 

次に②ですが、Googleは視聴者ではなくサービスの提供を行う人たち(開発者)のためにYouTubeの統計情報に直接アクセスできる方法を用意しております(これが今回重要です)。

 

YouTube Data API (v3)はYouTubeが提供するデータアクセス用のAPIであり、YouTubeの統計情報を扱う多くのサービスがこのAPIを利用しております。

(ユーチュラ様やsubscribercount様、もちろんshiny BOTもこのAPIを使用しております🍀)

 

 

使い方は簡単で、YouTube Cloud consoleからAPIの利用申請をして、APIキー(アクセス用の鍵)を取得。

APIキー、sunny journeyのチャンネルid(UC38USpiXhfzHZZWUJT9-VSA)、取得したいパラメータ名(今回は統計情報なのでstatistics)を乗せてAPIのページにアクセスするだけです。

 

https://www.googleapis.com/youtube/v3/channels?key=(APIキーを記載)&part=statistics&id=UC38USpiXhfzHZZWUJT9-VSA

 

※APIキーを乗せていないため上記のページはエラーが返答されます。

 

正しいAPIキーを乗せている場合、以下のような返答が得られます。

 

{
  "kind": "youtube#channelListResponse",
  "etag": "TzthpF8dhcUje209TXP3C4AvU3E",
  "pageInfo": {
    "totalResults": 1,
    "resultsPerPage": 5
  },
  "items": [
    {
      "kind": "youtube#channel",
      "etag": "GJ-rOwKaOnJoCoCHG4l4DwCpvBI",
      "id": "UC38USpiXhfzHZZWUJT9-VSA",
      "statistics": {
        "viewCount": "34149623",
        "subscriberCount": "227000",
        "hiddenSubscriberCount": false,
        "videoCount": "276"

      }
    }
  ]
}

 

上記の赤い数値がチャンネルの統計情報で、viewCount:視聴回数の合計値、subscriberCount:チャンネル登録者数、hiddenSubscriberCount:登録者数を非表示にするオプション、videoCount:投稿した動画数、がご覧いただけると思います。

 

この中のsubscriberCountが今回のブログで紹介しているチャンネル登録者数に該当し、subscriber counterを含むほとんどのサービスが同様の方法でチャンネル登録者数を取得していると考えられます。

 

  チャンネル登録者数の問題点

 

さて、YouTube API経由で無事チャンネル登録者数を取得できたわけですが、感の良い方はおや?っと思われるかもしれません。

統計情報なのに得られた数値は227,000と下三桁が0で変にキリの良い数値となっております。

 

ここにチャンネル登録者数を取得する際の問題点があります。

 

実はYouTubeの2019年の仕様変更によりチャンネル登録者数の表示方法が有効数字3桁に制限されるようになったためです。

仮に227,341人登録だったら227,000と頭三桁のみ値が表示され、残りの桁は0で表示されるような仕様です。

(リファレンスによると、四捨五入等は行っておらず、単純に切り捨てとのことです。)

 

ポイントとして、チャンネル登録者数の正しい値は③のYT StudioやYouTubeアナリティクスで確認はできるのですが、③はチャンネル運営をする発信者のみしか行えません。

すなわち、我々YouTubeの視聴者(①)やsubscriber counterを含むウェブサービスの開発者(②)は大まかなチャンネル登録者数しか知ることができません

 

  subscriber counterの問題点

 

さて、subscriber counterに戻りますが、subscriber counterの表示を見ると、227000とかではなく、ちゃんと全ての桁が表示されております。

まず、1つ目の問題として、有効数字よりも細かい桁数で再生数を表示している点が挙げられます。

そのため、表示されている値は推定値であり、実際のチャンネル登録者数を反映しておりません

 

次はYouTube APIの出力とsubscriber counterの出力を同時に計測し、比較してみました。

YouTube APIの出力は227,000の値に張り付いているのに対し、subscriber counterの値は227,000と227,757の値を行き来し続けております。

仮にsubscriber counterの挙動が正しく登録者数を追えているとすると、数秒単位で757人の登録、登録解除を繰り返し行っていることとなり、現実的に考えておかしな挙動です。

以上のように、subscriber counterの値は推定値であり、少なくともsunny journeyさんのチャンネルの場合は推定値の変化自体も信用できないことがご覧いただけると思います。

 

  YouTube統計値の更新頻度


では、そもそもですが、subscriber counterが数秒の感覚で値を表示できるのに対し、YouTube統計値はどの程度の頻度で更新されているのでしょうか。

 

登録者数とは異なる指標にはなるのですが、YouTubeの動画の統計値であるコメント数と実際のコメント数を比較してあげると、実際のコメント数が増えているのに、統計値のコメント数は1時間単位で遅れており、YouTubeの統計値がリアルタイムで実際の数値の変化を追えていないことがご覧いただけると思います。

以上のように、YouTubeの統計値のリアルタイム性は悪く、1時間程度の頻度でしか値が更新されません


一方で、subscriber counterの更新頻度は秒単位であり、YouTube統計値の更新頻度よりもはるかに短い頻度で更新されております。

 

ここからは予想ではありますが、subscriber counterは1時間の変化を秒の変化に変換するために、データを補間していると考えております。

データの補間は、データとデータの間にデータを無理やり埋め込んで、より高い頻度でデータを取得しているように見せるテクニックです(画像を無理やり高解像度にするアップスケーリング等で使われています)。


上のグラフは100分おきに取得している登録者数を無理やり10分間隔に取得しているように補間したものです。

このように、データを補間することで、実際のデータ取得感覚よりも短い間隔で変化を追っているように見せることができます

(実際は上記の例よりも複雑な計算を行っていると思います)

 

以上のようなテクニックを用いて、subscriber counterは無理やり数秒間隔で登録者数の変化を追っているように見せていると考えられます。

 

  sunny journeyさんの登録者数をsubscriber counterで追う問題点

 

では、sunny journeyさんの登録者数の変化はどの程度の頻度で起こっているのでしょうか。

ユーチュラ様からお借りしたsunny journeyさんのチャンネル登録者数の時間変化です。

この1か月で登録者数の変化は230,000→229,000→228,000→227,000と変化しており、このような登録者数の変化は1週間に1回程度の頻度で起こっております。

実際は徐々に登録者が減り続けているはずなのですが、前述のとおり有効数字の関係で数値に変化があるのは1週間に一回程度になってしまっております。

すなわち、sunny journeyさんのチャンネル登録者数は数値上は1週間近く同じ数値を示してしまうぐらいには変わらないのです。

 

一方で、subscriber counterは見かけ上ですが秒単位の変化を追えるように設計されております。

 

ここで、両者の時間のスケールにとんでもない乖離があることに気づかれるでしょう。

・sunny journeyさん:1週間

・subscriber counter:数秒
 

つまり、subscriber counterでsunny journeyさんの登録者数の変化を追おうと思うと、1週間に1度しか変わらないデータを秒刻みのデータに変換する必要がります。

速度違反を検出するスピードチェッカーでカタツムリの速さを測ろうとしているようなものですので、そりゃ数値がおかしくなったり変なことが起こりますよねって話です。

 

このように、sunny journeyさんの登録者数変化をsubscriber counterで見ようとすると、

・問題①:有効数字3桁しかない粗々の登録者数

・問題②:1週間に一度程度の数値変化を数秒の変化に変換

 

以上の2つの問題のあわせ技が起こり、まともな数値が表示できなくなっていたと考えられます。

 

sunny journeyさんの登録者数変化を追うのにsubscriber counterが不適切であることは分かりました。

では、どのような時ならsubscriber counterの本領が発揮されるのでしょうか。

 

subscriber counterの性質として、

 

・秒単位のリアルタイムの数値表示

・数値補間による時間分解能の向上

 

以上のようにリアルタイムのライブ表示に特化した設計になっております。

 

すなわち、秒単位で変化が起こり続けるような、具体的にはチャンネルが急にバズって登録者数が一気に増えたときを想定して設計されていると考えられます。

sunny journeyさんが癌告知を報告しチャンネル登録者が10倍以上に膨れ上がった時なんかはsubscriber counterの本領が発揮されたと考えられます。

 

過去の事例で言うと、YouTuberのヒカルさんがvalueという株相当のサービスを用いてリスナーから大量にお金を巻き上げた際にチャンネル登録解除祭りが起こり、その時5chではsubscriber counterがフル稼働しておりました。

 

このように、subscriber counterは急激な登録者数変化を検出するのに特化した作りとなっており、1週間に1度しか登録者数変化が起こらないsunny journeyさんのチャンネル数を監視するには不向きなサービスであると考えられます。

 

YouTubeの世界は変化が早く、それを捉えるために設計されたsubscriber counterは、緩やかな衰退を続けるsunny journeyさんのチャンネルにはオーバースペックだったのでしょう。