今回から新シリーズです。
このシリーズでは、今年の年初に立てた目標の一つである Professional Cloud Developer 認定の取得に向けて、私自身が実際に学習した内容や理解したポイントを整理し、アウトプットしていきます。
Professional Cloud Developer は、単なる実装スキルだけでなく、設計・セキュリティ・運用まで含めた実践的なクラウド開発力が問われる資格です。そのため、学習過程で得た知識や考え方は、試験対策にとどまらず、日々の業務にも直結すると感じています。
本記事では、公式の試験範囲をベースにしながら、「どのような観点で理解すべきか」「なぜその知識が重要なのか」といった点も意識して解説していく予定です。
これから Professional Cloud Developer 認定資格を目指す方や、Google Cloud を使った開発力を体系的に整理したい方の参考になれば幸いです。
是非、最後までご覧いただけると嬉しいです。
試験概要と試験範囲
概要
Professional Cloud Developer は、Google Cloud が推奨するツールやベストプラクティスを用いて、スケーラブルかつ安全で可用性の高いクラウドネイティブなアプリケーションを構築・デプロイする能力を証明する資格です。
この試験では、単にコードを書くだけでなく、コンテナ化(GKE/Cloud Run)、API管理(Apigee)、サーバーレス、データベースの選択、さらにはアプリケーションのモニタリングやトラブルシューティングまで、開発ライフサイクル全般にわたる高度な専門知識が求められます。
試験範囲
セクション 1: スケーラビリティ、可用性、信頼性に優れたクラウド ネイティブなアプリケーションの設計(試験内容の約 33%)
1.1 高パフォーマンスのアプリケーションと API を設計する。 以下のような点を考察します。
● マイクロサービス アーキテクチャ
● ユースケースと要件に基づいた適切なプラットフォームの選択(例: IaaS [Infrastructure as a Service]、CaaS [Container as a Service]、PaaS [Platform as a Service]、FaaS [Function as a Service])
● アプリケーションのモダナイゼーション(コンテナ化など)
● Google Cloud サービスがどのように地理的に分散されるか(レイテンシ、リージョン サービス、ゾーンサービスなど)の理解
● ユーザー セッション管理
● キャッシュ ソリューション
● HTTP REST か gRPC(Google リモート プロシージャ コール)か
● API サービス(Apigee など)が提供する Service Control 機能の組み込み
● 疎結合した非同期アプリケーション(Apache Kafka、Pub/Sub、Eventarc など)
● 指標、ログ、トレースを作成するためのコードの計測
● 費用の最適化とリソースの最適化
● エラー、障害、スケーリング イベントの適切な処理
1.2 安全なアプリケーションを設計する。以下のような点を考慮します。
● 適用される規制要件に対するデータ ライフサイクルとデータ所在地の実装
● 脆弱性を特定し、サービスとリソースを保護するセキュリティ メカニズム(Identity-Aware Proxy [IAP]、Web Security Scanner など)
● アプリケーションのバイナリ、依存関係、マニフェストを保護またはスキャンするセキュリティ メカニズム(Container Analysis など)
● アプリケーション シークレットと暗号化キーの保存とアクセス、ローテーション(例: Secret Manager、Cloud Key Management Service)
● Google Cloud サービスに対する認証(アプリケーションのデフォルト認証情報、JSON Web Token [JWT]、OAuth 2.0 など)
● Identity Platform の使用によるエンドユーザー アカウント管理と認証
● ユーザー、グループ、サービス アカウントに対する Identity and Access Management(IAM)のロール
● サービス間の通信(サービス メッシュ、Kubernetes ネットワーク ポリシー、Kubernetes Namespace など)を保護する
● キーレスおよび最小限の特権アクセスでサービスを実行する(Workload Identity、Workload Identity 連携など)
● 証明書を利用した認証(SSL、mTLS など)
● ソフトウェア アーティファクトのためのサプライ チェーンレベル(SLSA)
1.3 アプリケーション データのストレージ オプションを選択する。 以下のような点を考察します。
● オブジェクトへの時間制限付きアクセス
● データ保持に関する要件
● 構造化データと非構造化データ(SQL と NoSQL など)
● 強整合性か結果整合性か
● データの量
● データのアクセス パターン
● オンライン トランザクション処理(OLTP)かデータ ウェアハウジングか
セクション 2: アプリケーションのビルドとテスト(試験内容の約 26%)
2.1 ローカル開発環境を設定する。 以下のような点を考察します。
● ローカル アプリケーション開発向けに Google Cloud サービスをエミュレートする
● Google Cloud コンソール、Google Cloud SDK、Cloud Shell、Cloud Workstations の使用
● デベロッパー ツールの使用(一般的な IDE、Cloud Code、Skaffold など)
● Google Cloud サービスに対する認証(Cloud SQL Auth Proxy、AlloyDB Auth プロキシなど)
2.2 構築する。 以下のような点を考察します。
● ソース コントロール管理
● コードから安全なコンテナ イメージを作成する
● デプロイメント アーティファクトを構成するサービス(Cloud Build、Artifact Registry など)を使用して、継続的インテグレーション パイプラインを開発する
● コードとテストビルドの最適化
2.3 テストする。以下のような点を考察します。
● 単体テスト
● 統合テスト(エミュレータの使用を含む)
● パフォーマンス テスト
● 負荷テスト
● 障害テストとカオス エンジニアリング
セクション 3: アプリケーションのデプロイ(試験内容の約 19%)
3.1 適切な機能ロールアウト戦略を適用する。 以下のような点を考察します。
● A/B テスト
● フィーチャー トグル
● 下位互換性
● バージョニング API( Apigee など)
3.2 アプリケーションをサーバーレス コンピューティング環境にデプロイする。以下のような点を考察します。
● ソースコードからのアプリケーションのデプロイ
● トリガーを使用して関数を呼び出す
● イベント レシーバの設定(Eventarc、Pub/Sub など)
● Eアプリケーション API の公開と保護(Apigee など)
3.3 Google Kubernetes Engine(GKE)にアプリケーションとサービスをデプロイする。以下のような点を考察します。
● コンテナ化したアプリケーションを GKE にデプロイする
● Kubernetes のロールベース アクセス制御(RBAC)と IAM を統合する
● ワークロードの仕様(リソース要件など)を定義する
● Cloud Build を使用してコンテナ イメージを作成する
セクション 4: アプリケーションと Google Cloud サービスの統合(試験内容の約 22%)
4.1 アプリケーションにデータサービスとストレージ サービスを統合する。以下のような点を考察します。
● データストアへの接続を管理する(Cloud SQL、Firestore、Bigtable、Cloud Storage など)
● さまざまなデータストアのデータの読み取りと書き込み
● データを非同期で(Pub/Sub やストリーミング データソースなどから)パブリッシュまたは使用するアプリケーションを作成する
● Workflows、Eventarc、Cloud Tasks、Cloud Scheduler を使用してアプリケーション サービスをオーケストレーションする
4.2 アプリケーションと Google Cloud API を統合する。 以下のような点を考察します。
● Google Cloud のサービスを有効にする
● 以下の点を考慮に入れて、サポートされているオプション(Cloud クライアント ライブラリ、REST API または gRPC、API Explorer など)を使用して API 呼び出しを行う
○ 一括処理リクエスト
○ 戻りデータの制限
○ 結果のページ分け
○ 結果のキャッシュ保存
○ エラー処理(指数バックオフなど)
● サービス アカウントを使用して Cloud APIs 呼び出しを行う
● Google Cloud のオペレーション スイートとの統合
次からは、各セクションで必要な知識について説明していきます。
セクション 1:クラウドネイティブなアプリケーションの設計
このセクションは試験全体の約33%を占めており、合格への最大の鍵となります。単にコードを書くスキルだけでなく、Google Cloudの各サービスを「なぜ、どこで、どのように使うか」というアーキテクチャ選定の判断力が問われます。
大きく分けて「設計」「セキュリティ」「データストレージ」の3つの観点から、必要な知識を整理しましょう。
1. 高パフォーマンスな設計とAPI
ここでは、システムの「骨組み」を作る力が求められます。
- プラットフォームの使い分け:Compute Engine (IaaS)、GKE (CaaS)、Cloud Run (PaaS/Serverless)、Cloud Functions (FaaS) の特性を理解し、要件(スケーラビリティや管理負荷)に応じて最適なものを選べるようにしましょう。
- 通信プロトコル:RESTとgRPCの使い分けや、非同期処理(Pub/Sub, Eventarc)によるシステムの疎結合化が重要です。
- グローバル設計:リージョン/ゾーンの概念を理解し、レイテンシを最小化するためのキャッシュ(Cloud CDN, Memorystore)や地理的分散の設計知識が必要です。
2. セキュリティ設計(最優先事項)
Google Cloudが提唱する「共有責任モデル」に基づき、アプリケーションをいかに守るかが問われます。
- 認証と認可:IAMの「最小権限の原則」はもちろん、Workload Identity を使用したキーレスな認証や、Identity-Aware Proxy (IAP) によるアクセス制御は頻出トピックです。
- 機密情報の管理:APIキーやパスワードをコードに直接書かず、Secret ManagerやCloud KMSで安全に管理・ローテーションする手法を学びます。
- サプライチェーンの安全:コンテナイメージの脆弱性スキャン(Container Analysis)や、ソフトウェアの信頼性を担保するSLSAの概念もカバーしておく必要があります。
3. データストレージの選択
「どのデータベースを使うべきか」という問いに対して、明確な根拠を持って答えられる必要があります。
- データの特性による使い分け
- 構造化データ(Cloud SQL, Spanner) vs 非構造化データ(Cloud Storage, Firestore)
- トランザクション重視(OLTP) vs 分析重視(BigQuery/データウェアハウス)
- 整合性とパフォーマンス:強整合性と結果整合性の違いを理解し、ユーザー体験とシステム負荷のバランスをどう取るかを考察します。
- ライフサイクル管理:データの保持期限やアクセス頻度に応じたストレージクラスの最適化も重要です。
セクション 2: アプリケーションのビルドとテスト
設計が終われば、次は実装と検証のフェーズです。ここでは「ローカルでの効率的な開発」「安全なビルド」「網羅的なテスト」の3つのステップが重要になります。
1. モダンなローカル開発環境の構築
クラウドネイティブな開発では、手元のPCでいかに「クラウド環境を再現するか」が生産性の鍵となります。
- エミュレータの活用:Pub/Sub、Firestore、Spannerなどのサービスをローカルで動かすエミュレータの使い方を理解しましょう。
- 開発ツール:Cloud Code(IDE拡張)や Skaffold を使って、ローカルのコード変更を即座にGKEやCloud Runへ反映させるワークフローが頻出です。
- 安全な接続:データベースへ接続する際の Cloud SQL Auth Proxy や AlloyDB Auth Proxy の仕組みと設定方法は必須知識です。
2. セキュアで高速なビルド(CIパイプライン)
コードを「動く成果物(アーティファクト)」に変えるプロセスを自動化・最適化する能力が問われます。
- Cloud Buildの習熟:
cloudbuild.yamlの構成方法や、ビルドの並列化・キャッシュ利用による高速化手法を学びます。 - コンテナの最適化と安全:小さくて安全なイメージ(Distrolessなど)の作成や、ビルドしたイメージを Artifact Registry で管理・スキャンする流れを押さえましょう。
- CI/CDの統合:ソース管理(GitHub/GitLabなど)からビルド、そしてアーティファクト保存までの一連のパイプライン設計が重要です。
3. クラウドにおけるテスト戦略
単なる単体テストだけでなく、分散システム特有のテスト手法が求められます。
- テストの階層:単体テスト、統合テストの役割の違いと、Google Cloud環境での実施方法を整理します。
- 負荷とレジリエンス:多くのユーザーに耐えられるかを確認する「負荷テスト」や、あえて障害を注入してシステムの堅牢性を確かめる「カオスエンジニアリング」の考え方も範囲に含まれます。
- デバッグと計測:ビルド時やテスト時に発生したエラーをどう特定し、コードの計測(インストルメンテーション)を行うかという視点も欠かせません。
セクション 3: アプリケーションのデプロイ
開発したコードを本番環境へ安全に、かつ効率的に送り出すプロセスがこのセクションのテーマです。Google Cloudの強力なデプロイツール群を使いこなす知識が求められます。
1. 戦略的なロールアウト(機能リリース)
新しい機能をリリースする際、ユーザーへの影響を最小限に抑えつつ、効果を検証する手法を学びます。
- リリーステクニック:特定のユーザーだけに新機能を公開する A/B テストや、コードを書き換えずに機能の有効/無効を切り替える フィーチャー トグルの考え方を整理しましょう。
- 互換性の維持:新旧バージョンが混在してもシステムが壊れないための 下位互換性 の確保や、Apigee を活用した API のバージョニング管理は非常に重要です。
2. サーバーレス環境へのデプロイ
運用負荷を下げ、イベント駆動で動作するサーバーレス(Cloud Run, Cloud Functions)へのデプロイ手法を深掘りします。
- イベント連携:Pub/Sub や Eventarc をトリガーとして、特定のイベントが発生したときに自動的に処理を走らせる設定方法を理解します。
- APIの公開と保護:作成したサービスを単に公開するだけでなく、Apigee などのAPI管理ツールを使用して、認証やクォータ制限をかけ、安全に外部へ公開する知識が必要です。
3. Google Kubernetes Engine (GKE) へのデプロイ
より複雑なオーケストレーションが必要な GKE 環境でのデプロイについて学びます。
- ワークロードの定義:CPUやメモリのリソース制限(requests/limits)をマニフェストでどう定義するかといった、コンテナの実行仕様に関する知識が問われます。
- 権限管理の統合:Kubernetes 独自の権限管理である RBAC と、Google Cloud の IAM をどのように組み合わせてセキュアな環境を作るか(Workload Identity など)がポイントです。
- 自動化のフロー:Cloud Build で作成したコンテナイメージを、シームレスに GKE クラスターへデプロイする一連の流れを押さえましょう。
セクション 4: アプリケーションと Google Cloud サービスの統合
このセクションでは、独立したアプリケーションをGoogle Cloudのエコシステムに組み込み、強力なマネージドサービスを自在に操るための知識が求められます。
1. データストアとの高度な連携
単にデータベースに接続するだけでなく、クラウドの特性を活かしたデータ操作の知識が必要です。
- 接続管理と読み書き:Cloud SQL、Firestore、Bigtable、Cloud Storageといった各種ストレージに対し、最適なクライアントライブラリを用いて、効率的かつセキュアにデータをやり取りする手法を理解しましょう。
- 非同期処理とメッセージング:Pub/Sub を利用したメッセージのパブリッシュ(送信)やサブスクライブ(受信)、およびストリーミングデータの扱い方が重要です。
- オーケストレーション:Workflows による複雑な業務プロセスの自動化、Cloud Tasks による非同期タスクの実行管理、Cloud Scheduler による定期実行など、サービス間を「つなぐ」ツールの使い分けがポイントです。
2. Google Cloud API のベストプラクティス
APIを通じてGoogle Cloudの機能を呼び出す際、エラーに強く、パフォーマンスの高い実装をするための知識が問われます。
- 効率的なAPI呼び出し:大量のデータを扱う際の 一括処理(Batching)、データ量を抑えるための ページ分け(Pagination)、レスポンスを高速化する キャッシュ の活用方法を押さえます。
- 回復性の高い設計:一時的なネットワークエラーやリミット超過に備える 指数バックオフ(Exponential Backoff) を用いたリトライ処理の実装は、試験でも実務でも必須のトピックです。
- 認証の仕組み:アプリケーションが API を呼び出す際に、サービスアカウント をどのように正しく使用し、権限を管理するかというセキュリティの側面も欠かせません。
3. 運用ツールとの統合
アプリケーションの状態を可視化するために、Google Cloud のオペレーション スイートとの連携を学びます。
- オブザーバビリティの組み込み:アプリケーション内からカスタム指標を送信したり、構造化ログを出力したりして、Cloud Logging や Cloud Monitoring と統合する手法を理解しましょう。
まとめ
今回は、下記5点について説明しました。
- 試験概要と試験範囲
- セクション 1:クラウドネイティブなアプリケーションの設計
- セクション 2:アプリケーションのビルドとテスト
- セクション 3:アプリケーションのデプロイ
- セクション 4:アプリケーションと Google Cloud サービスの統合
本記事では、Professional Cloud Developer 試験の全体像と、各セクションで求められる知識を体系的に整理しました。
この試験は、単なる実装力ではなく、要件に応じて最適なアーキテクチャやサービスを選択できる「設計力」を重視している点が大きな特徴です。
スケーラビリティや可用性を意識したクラウドネイティブ設計、最小権限を前提としたセキュリティ設計、そしてデータ特性に応じたストレージ選択は、合否を分ける重要なポイントとなります。また、CI/CD パイプラインの構築や多層的なテスト戦略など、実務に直結する開発・検証プロセスの理解も欠かせません。
デプロイにおいては、安全なロールアウト手法やサーバーレス、GKE の使い分けを通じて、運用を見据えた判断力が問われます。さらに、データサービスや API、運用ツールとの統合を通じて、Google Cloud のマネージドサービスを最大限活用する視点も重要です。
Professional Cloud Developer は、日々の開発経験を「なぜその設計を選ぶのか」という言語化された知識へ昇華できているかを確認する試験だと言えるでしょう。
この後の各セクション解説を通じて、試験対策と実務力の両方を高めるヒントを掴んでいただければ幸いです。
これからも、Macのシステムエンジニアとして、日々、習得した知識や経験を発信していきますので、是非、ブックマーク登録してくれると嬉しいです!
それでは、次回のブログで!
