PHPでGoogle Cloudを使う際に車輪の再開発を避ける方法
こんな状況を想像してみてください:Cloud Storageへのファイルアップロードを素早く追加する必要がある、またはVision APIでテキスト認識をセットアップする必要がある。Googleの公式ドキュメントを開くと、情報の大波が襲ってきます。クライアントライブラリ、サービスアカウント認証、果てしなく続くJSON設定。「ファイルを1つアップロードしたいだけなのに、こんなに複雑なのか?」という考えが頭の中を駆け巡ります。
答えは、いいえ、複雑ではありません。Googleにはphp-docs-samplesというリポジトリがあります。メインのSDKの影に隠れることが多いですが、まさにこれが何時間(時には何日も)の検索を節約してくれるものです。PHP開発者向けの、完成されたコードスニペットの巨大なコレクションです。
このリポジトリの中身
端的に言えば、あらゆる考えられるGoogle Cloud Platform(GCP)サービスの動作例を集めたものです。複雑な抽象化や「完璧なフレームワーク」を構築しようとする試みは一切ありません。特定のタスクを解決する、骨太のコードだけです。
このプロジェクトは2012年から存在します。この年月を経て、素晴らしい規模に成長しました。中身には以下の例の他多数が含まれています:
- データストレージ(Cloud Storage、Firestore、Spanner)
- 機械学習(Vision、Translation、Natural Language)
- インフラ(Compute Engine、Cloud Functions)
- キューとメッセージング(Pub/Sub)
実践での活用方法
公式SDKの主な問題は、それらが汎用過ぎて複雑であることです。php-docs-samplesではアプローチが異なります:「これが関数で、こうやって呼び出します」。
画像とニューラルネットワークの操作
Vision APIに送信する画像を適切にパッケージ化する方法を調べる代わりに、visionフォルダを覗くだけで済みます。顔検出、テキスト認識、ロゴ検索の例があります。メソッドをコピーし、APIキーを置き換えたら、そのまま動作します。
Cloud Functionsをスムーズに
Cloud FunctionsでPHPを書く場合、ローカルデバッグは結構骨の折れる作業です。リポジトリにはセクションfunctionsがあり、HTTPリクエストの処理方法和またはCloud Storageイベントの応答方法を示しています。これにより、すべての変更をクラウドにデプロイして確認することなく、呼び出しシグネチャを理解できます。
データベースの操作
認証の特殊性 인해、Google Cloud SpannerまたはFirestoreへのPHPでの接続セットアップはtrivialなタスクではありません。例では明確に分離されています:どこでインスタンスを作成し、データスキーマをどのように記述し、トランザクションをどのように実行するかを説明します。
技術的な側面
すべてのコードは公式ライブラリgoogle/cloud-*を使用した純粋なPHPで書かれています。つまり、Composerで必要なパッケージを追加する必要があります。
興味深いポイント:リポジトリ構造はGoogle Cloudドキュメント構造と一致しています。Google Docsで記事を読んでいて、PHPコードブロック看到了場合、それはここから引用された可能性が高いです。これにより、リポジトリをオフラインリファレンスとして使用できます。
マシン上で任意のサンプルを実行するには、通常は以下の手順が必要です:
- リポジトリをクローンする。
- 目的のディレクトリに移動する(例:vision/src/detect_face.php)。
- composer installを実行する。
- サービスアカウントキーファイルを指す環境変数GOOGLE_APPLICATION_CREDENTIALSを設定する。
学ぶ価値はあるか
APIリファレンスだけを読み込んでクラウド統合を「ゼロから」実装しようとする開発者に頻繁に遭遇します。それは痛い道です。php-docs-samplesは本質的に、試験で許可されているカンニングシートです。
このプロジェクトが最も恩恵を受けるのは次のような人々です:
- ローカルサーバーからGCPに移行したばかりで、ドキュメントを読むのに1週間をかけたくない人。
- GoogleのAIサービスを使用して素早くプロトタイプを構築する必要がある開発者。
- PHPで自動化スクリプトを書くシステム管理者。
もちろん、このプロジェクトは完璧ではありません。エラー処理が最小限で、アーキテクチャが単一ファイルに縮小されているなど、一部の例は単純化しすぎているに見えるかもしれません。しかし、学習目的やクイックスタートには、利用可能な最良のリソースです。
Google Cloudでの作業を予定しているなら、このリポジトリをブックマークするかフォークしておきましょう。早かれ遅かれ、Pub/Subにメッセージを正しく送信する方法の例が必要になり、Stack Overflowで検索しなくてよかったと、きっと喜ぶことになるでしょう。
関連プロジェクト