Google検索アルゴリズムの流出?と言われている物を実際に見てみた
最近(2024年5月)、Googleから検索に関連する内部APIのソースコードや内部文章がリークされたと話題ですね。
Google検索の検索順位はサイト運営する人には重要で、SEOなど検索アルゴリズムを逆手に取って検索順位をあげようと試みたりする場合があります。
その為、注目が集まっているのだと思います。
今回の流出を調べてみてわかったことは、Google検索の内部の重要なソースコードを何者かがリークしたと言うよりは、社内で使われているAPIの定義を誤って外部に見えるようしてしまった感じのようです。
Google側の温度感はそこまで高く無いように見えていて、流出した情報は未だに正式な手段で入手できる状況です。
そして、流出したものはあくまでもAPIについての文章であって、Google検索内部の仕組みについては依然不明なので、分かる事としてはGoogle内部のシステムの構造や、Googleの組織構造などくらいです。
Google APIとは
Googleでは顧客向けにAPIを公開していて、APIを使うことで顧客のシステムにGoogleの機能を利用する事ができるようになっています。
Googleはこの考え方を社内向けにも応用していて、Google内部の人も社内の機能を使いたいと考えたら、Google内部の向けのAPIを使用してその機能を利用するような仕組みになっているようです(こういう形態はマイクロサービスと言う概念と関係があります)。
つまり、Googleでは社外向けのAPIも社内向けのAPIも同一の仕組みで取り扱っていて、社外向けのAPIを抜粋して外部に公開する仕組みがあるようで、それらのフローで問題が起きたようです。
https://github.com/googleapis/elixir-google-api
Googleが誤って公開してしまったもの
今回誤って公開されてしまったものは、ContentWarehouseと呼ばれるものです。
Warehouseは直訳すると倉庫ですが、IT業界では一般的に大規模なデータを処理することに特化したデータベースの事を指します。
これらはコンテンツ情報(Webサイトなど)を処理する大規模なデータベースにアクセスするためのAPIのように見えます。
ただし、今回公開されてしまったものはContentWarehouse API内部のソースコード…ではなく、APIで取り扱うことが可能なデータの構造(モデル)の定義です。
実際のデータ
こちらが、Googleが誤って公開してしまったGitHubのPRです。
https://github.com/googleapis/elixir-google-api/pull/11021
こちらが、誤って公開した物を削除するPRです。
https://github.com/googleapis/elixir-google-api/pull/11378
GitHubでは一度誤って公開した情報を完全に消すにはファイルの削除だけでなく、Gitの履歴から削除するとともにリポジトリを作り直したりする必要があります。これらの対応をGoogleは行っていません。
削除する直前のコミットidは e6a95f9335bf2fcb3cef77d99eecf3e0ca8d65c7
です。
Gitに詳しい方であれば上記IDをチェックアウトしてもらえば該当の定義を見ることができると思います。
データ構造(モデル)の定義とは
モデルというものはAPI間や機能間でデータをやり取りするために、転送する予定のデータの内容を事前に取り決めをしておくためのものです。
つまり、このAPIのモデルの定義を見るとGoogle検索がContentWarehouseにアクセスする際に送っている情報が推測できる可能性があります。
ただ、このようなデータ構造の定義書というのはいくつかの点で注意する必要があります。例を挙げると
- 過去に使われていたものが互換性の問題で残されている
- 送っているけど内部では使われていない物
- システムでは使う予定はないが記録として併記されていると嬉しい物
- メソッド名やコメントが実態を表していない場合
- 開発版の可能性
- データ構造が複数の機能に参照されていて片方には必要の無い情報(Google広告向けなど)
これらは、どこの組織のシステムでも割とよくあることで特殊な事例ではありません。そのため、APIのドキュメントだけでは内部の動きを物語る確実な証拠にはならない感じです。
今回のAPIドキュメントに書いてある内容をそのまま鵜呑みにするのは良くないと思います。
APIデータの見方
ソースコードを直接見てもよいのですが該当のドキュメントはElixirというプログラミング言語で書かれていてExDocという機能でHTMLを生成できます。
Elixirをインストールした後に下記の様にコマンドを実行すると今回の件のHTMLドキュメントが生成されます。
cd clients/content_warehouse/
mix deps.get
mix docs
docsディレクトリにHTMLが生成されます。
index.htmlを開くとこんな感じです。
PerDocDataというデータ構造がGoogle検索のAPIリクエストを集約している物のように見えるのでそこから見ていくと面白いかもしれません。