LoginSignup
0
1

More than 1 year has passed since last update.

GCPユーザのためのGoogle APIs入門

Last updated at Posted at 2022-09-19

はじめに

みなさんは下記のリポジトリを目にしたことはあるでしょうか。

image.png
Google APIs

主にGoogle Cloud(以下、GCP)のクライアントライブラリが格納されているリポジトリで、任意のプログラミング言語からGCPを触ろうと思うと、基本的にはこちらのリポジトリにお世話になるかなと思います。

ここで疑問に思うのが「Google APIsとは何?」です。
Googleが開発者に提供するWeb API(以下、API)の総称なのでしょうか。
はたまた、GoogleのAPIの内、一部のAPIに関する名称なのでしょうか。
Wikipedia英語版のGoogle APIs記事もありますが、詳しくは何も書いてありません。
GCPのAPIを表すCloud APIsというカテゴリーもあり更に混乱します🤔

個人的に、GCP開発者はその全ての操作をAPI越しに行うわけなので、GoogleのAPIを把握しておくことは非常に重要だと感じています(もちろん、コンソールを使う場合も裏側でAPIを叩いています)。

この記事では、

  • Google APIsとは何か
  • Google APIsの歴史
  • Google APIsの豆知識

等が分かるようにまとめました。
(※調査して帰納的に導いた結論を多分に含むため、もしより詳細な情報お持ちな方がいらっしゃれば教えていただけると幸いです🙇‍♂️)

Google APIsとは何か?

まず結論から言ってしまうと、GCPやFirebase、Google Play、Workspaceといった、私たちが普段触るGoogleのAPIは全てGoogle APIsに該当すると考えて問題ないです。
API Strategy & Practice Conference 2017にてHong Zhang(GoogleのAPI基盤を統括)が発表したスライドに「Google APIsとは何か?」の答えが載っていました。

image.png
Google API Design & Practice

ここで重要なのは「Hosted on *.googleapis.com domain」、つまり*.googleapis.comにホストされたGoogleのAPIこそがそのままズバリGoogle APIsの定義とされています。
実際に、例えばCloud RunのAPIはrun.googleapis.comですし、Firebase Authはidentitytoolkit.googleapis.com1、Gmailはgmail.googleapis.comといったように、確かにgoogleapis.comのサブドメインになっています。
(前述のCloud APIsについても基本的にgoogleapis.comのサブドメインになっていることから、Google APIsの内Google Cloudに関するAPI即ち「Google APIs ⊃ Cloud APIs」の関係性だと考えられます)

Googleが開発者向けにAPIを公開したのは2002年からなのですが、黎明期は仕様が統一されておらず様々な仕様が乱立した状態でした。
そこで仕様の統一に関する模索が始まり、OAuthやリクエストの形式等に関する統一された仕様であるGoogle APIsが確立していった流れのようです。

Google APIsの歴史

できごと
2002 Google最古のAPI「Google Web API」を発表
2010 - 2012 2010年頃からGoogleのAPIを統一化する流れが加速。Google I/Oにて、APIが統一されていない問題から、新世代APIへの移行を開始していることを発表。今日のGoogle APIsの土台が作られ始める
2014 API design guide(Google APIsのデザインガイドライン)がGoogle社内で導入
2015 Google APIsのGitHubリポジトリが公開
2019 API Improvement Proposalが一般公開

順番に見ていきましょう。
まず、2002年にGoogle最古のAPIである「Google Web API(後にGoogle Search APIと名称変更)」が公開されます。
これはSOAPベースのAPIで、Googleの検索エンジンをAPI越しに利用できるものでした。
認証方式としては、同時に公開されたGoogleアカウントが担っていたようです。

Google Web APIs (Google SOAP Search API に名称が変更されました)

Google Web APIs を使ってみる

また、副次的な点ではあるが、今回新たに「Google Account」がGoogleAPIの利用のために公開されたことも興味深い。Google Accountの説明ではこのアカウントが将来的にGoogle Group、Google AdWords、Google StoreなどGoogleが提供するさまざまなサービスにアクセスするためのアカウントになる可能性を示しており、今後どのような利用方法が提示されるのか興味があるところだ。

米GoogleがWebサービスに~「Google Web API」を公開

その後、マッシュアップ界隈で幅広く使われたGoogle Maps API(2006年)や、約25種のAPIプラットフォームであるGoogle Data APIs(2008年)がリリースされ、GoogleのAPIエコシステムは拡充されていきました。
拡充しつつも、さまざまな設計が入り混じった様相を呈していきます。

image.png
Google G Data Reading And Writing Data On The Web

そんな中、2010年前後よりAPI仕様が統一されていない問題点や、JSONではなくXMLを採用している問題点が社内で指摘され始め、新世代のAPIへの移行を開始し始めます。
この新世代のAPI基盤こそが、今日のGoogle APIsに続くモノです2

この頃の様子はGoogle I/O 2010 - How Google builds APIsGoogle I/O 2011: Life of a Google API DeveloperThe next generation of google APIsを観ると詳細を確認できるかと思います。

image.png

image.png

How Google builds APIs(アーカイブ)

Google APIsの目指す思想は、

- Easy to learn
- Easy to use, even without documentation
- Hard to misuse
- Easy to read and maintain code that uses it
- Sufficiently powerful to satisfy requirements
- Easy to extend
- Appropriate to audience

# How to Design a Good API and Why it Matters
# https://static.googleusercontent.com/media/research.google.com/ja//pubs/archive/32713.pdf

といったように「シンプルでありながら使いやすい」が一貫したデザインになっています。

2014年頃からAPI設計ガイド(API design guide)がGoogle社内で導入され、Google APIsをデザインする上で用いられていきます。

2019年にはAPI設計ガイドをより詳細に説明したAPI Improvement Proposal(AIP)が一般に公開され、Google APIsの仕様について私たちもより深く知ることができるようになりました。

これは、ネットワーク API の一般的な設計ガイドです。2014 年以来 Google 内部で使用され、Cloud API やその他の Google API を設計するときに Google が従うガイドです。

API設計ガイド

Today we're sharing many of our API Design guidelines via AIPs (basically Python's PEPs for API style). Check out http://aip.dev for more information and feel free to file bugs if you find them.

@jgeewax - 2019年5月14日

Google APIsの仕様

Google APIsの仕様を知りたい場合は、前述のAPI設計ガイドAPI Improvement Proposalsを読むとGoodです。

Google APIsの一覧

基本的にGoogle APIsはGoogle API Discovery ServiceをもとにしたAPIエクスプローラーに載っています。

この一覧を見ると如何にGoogle APIsが多く存在するかが分かります。

Google APIsに関わる人物

Introduction to Google Developer Relationsによると、Google APIsの発展に寄与した人物としてインターネットの父Vint CerfやGoogle最古のAPIを作ったNelson Minar、Google Mapsを作ったBret Taylor、開発者向けAPIに携わったChris DibonaやGreg Steinらが挙げられています。

API Improvement Proposalsには、2022年9月現在のテクニカルリードがEric Brewerであること、インフラはHong Zhang、設計はJJ Geewaxが見ていることが書いてあり、もしGoogle APIsをより深く知りたくなった場合はこの界隈の発信をキャッチアップすると良さそうです。

The current TL (technical lead) for APIs is Eric Brewer; he has delegated some responsibilities for API Infrastructure to Hong Zhang (@wora) and API Design to JJ Geewax (@jgeewax).

AIP Purpose and Guidelines

Google APIsとコンソール

現状、基本的にGoogle APIsはGoogle Cloudコンソール内の「APIとサービス」で管理することができます。
また、Google CloudコンソールにてAPIを有効化することで利用を開始できます。
image.png

Twitter等の各種プラットフォームにはAPIコンソールがありますが、Googleの場合はAPIコンソールがGoogle Cloudのコンソールと統合されているためです。

過去のブログを漁ると分かることですが、元からGoogle Cloudコンソールと統合されていたわけではありません。
2010年の記事Introducing the Google APIs Console and our latest API updatesで「APIコンソールを作りました!」と発表した際のURLはhttps://code.google.com/apis/console/です。

We’re announcing the Google APIs console,

Introducing the Google APIs Console and our latest API updates

2016年の記事では、APIコンソールのドメインはconsole.developers.google.comとなっています。

Google APIsとSOAP / REST

前述のように、GoogleのAPIはSOAPベースのGoogle Web APIから始まっています。
その後、Google Web APIに携わっていたNelson MinarがWhy SOAP sucksなる記事を出す等、脱SOAPの動きが進みます。
理由のひとつとしてはXMLを採用しているため取り扱いがしんどいということも挙げられました。

SOAPが(標準としては)死んだ云々は新鮮な話ではなく、SOAP is Comatose But Not Officially Dead!に代表されるようにかなり前から「もはや死に体で、死亡宣告が行われていないだけだ」という見方はあった。ただ今回、Googleが実質的に息の根を止めたというように受け止めましたね

GoogleがSOAPにトドメを刺した日

エンタープライズを念頭において定義された SOAP では,プラットフォームに依存しないプロトコルが採用されています。この SOAP XML には冗長性があり,JavaScript や Ruby などの Web 技術で扱うには少なからぬ苦痛を伴います。

SOAP から REST へ - その方法と意義

Googleは当初、XMLを共通言語として利用し、異なるサーバ間でデータをやり取りする考えだった。だが、XMLを使った作業は複雑になる場合がある。さらに重大な問題として、XMLで作成された大容量のファイルは、アプリケーションのパフォーマンスを低下させる可能性がある。

グーグル、XMLに代わるデータ交換ツール「Protocol Buffers」をオープンソース化

その後Google Data APIではRESTベースのものを採用する等、GoogleのAPIにおいてもRESTが主流になっていきます。
現在のGoogle APIsはプロトコルバッファをもとに吐き出されたgRPCベースのAPIと、それを変換したRESTベースのものが準備されています。
SOAPはRPCなので、RPC→REST→RPC(gRPC)みたいな変遷を辿っていることになりますね。

This repository contains the original interface definitions of public Google APIs that support both REST and gRPC protocols.

googleapis/googleapis

企業が公開するWeb APIの歴史

Intro to APIs: History of APIsも示すように、セールスフォースやeBayからWeb APIを公開してDevRel的な動きを推進する流れは本格化していったようです。

  1. ちなみになぜFirebase Authのドメイン名がidemtitytoolkit.googleapis.comなのかというと、元々Google Identity Toolkit APIという名のソーシャルログインを可能にするAPIがあったようです。そのAPIと相乗りする形で実装されたからだと考えられます。ref. Google API 第23回

  2. 実際にこのあたりの動画で新仕様APIとして解説されているGoogle Buzz APIもgoogleapis.comドメインになっている

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1