始める前に
- ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
- ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
- 画面左上の [ラボを開始] をクリックして開始します
Create HelloWorld HTTP Cloud Function
/ 50
Create Gopher HTTP Cloud Function
/ 50
Go は、シンプルで信頼性、効率性に優れたソフトウェアを簡単に構築できるオープンソースのプログラミング言語です。Cloud Shell を使用するとき、Go はすでにインストールされています。
Cloud Run functions は、クラウド サービスの構築と接続に使用できるサーバーレスの実行環境です。Cloud Run functions を使用すると、クラウド インフラストラクチャやサービスで生じたイベントに関連付けられた、単一目的の関数を作成できます。対象のイベントが発生すると、関数がトリガーされます。コードは Cloud Run のフルマネージド環境で実行されます。インフラストラクチャをプロビジョニングする必要はなく、サーバーの管理に悩まされることもありません。
Cloud Run 関数は、サポート対象のプログラミング言語を使用して作成できます。サポートされているいずれかの言語の標準的なランタイム環境で関数を実行できるため、移植性の確保やローカルテストの実施が簡単です。
このラボでは、Go を使用して独自の Cloud Run 関数を作成します。この関数は、HTTP 経由で呼び出すと、Renee French 氏がデザインした Go Gopher の画像を表示します。
このラボは、Go に精通していることを前提としています。Go コードについての説明はありますが、Go をまったく初めて使用するユーザーには十分ではない可能性があります。
こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。
このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。 左側の [ラボの詳細] ペインには、以下が表示されます。
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。
ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
[ラボの詳細] ペインでもユーザー名を確認できます。
[次へ] をクリックします。
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
[ラボの詳細] ペインでもパスワードを確認できます。
[次へ] をクリックします。
その後次のように進みます。
その後、このタブで Google Cloud コンソールが開きます。
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン をクリックします。
ウィンドウで次の操作を行います。
接続した時点で認証が完了しており、プロジェクトに各自の Project_ID、
gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
出力:
出力:
gcloud ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
一部の Compute Engine リソースは、リージョン内やゾーン内に存在します。リージョンとは、リソースを実行できる特定の地理的なロケーションです。1 つのリージョンには 1 つ以上のゾーンがあります。
Cloud Shell で次の gcloud コマンドを実行して、ラボのデフォルトのリージョンとゾーンを設定します。
curl を使用して、このラボのコードを含む zip ファイルをダウンロードします。unzip を使用してコードを解凍します。これにより、cloud.google.com 用のサンプル Go コードを含むディレクトリ(golang-samples-main)が展開されます。gopher ディレクトリは、次のディレクトリとファイルで構成されます。
Go を使った Cloud Run の HTTP 関数は、http.HandlerFunc 関数として記述します。これは Go の標準ライブラリで定義されているインターフェースです。関数は、次の条件を満たす必要があります。
http.HandlerFunc 型と一致すること、つまり関数が func(http.ResponseWriter, *http.Request) の形式になっていること(Go で完全なウェブ アプリケーションを作成するための詳細なガイドについては、ウェブ アプリケーションの作成に関するチュートリアルをご覧ください)。例として、「Hello, world」と出力する関数を以下に示します。
golang-samples-main/functions/codelabs/gopher/hello.go ファイルを開きます。functions/codelabs/gopher ディレクトリから、gcloud functions deploy を使用して関数名をデプロイできます。処理には 1~2 分かかります。
出力:
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
gcloud services enable cloudfunctions.googleapis.com コマンドで有効にすることもできます。gcloud を実行しているディレクトリ)が .go ファイルを含むディレクトリであることを確認します。cd golang-samples/functions/codelabs/gopher でディレクトリを移動できます。HelloWorld である必要があります。gcloud functions add-iam-policy-binding HelloWorld \
--member="allUsers" \
--role="roles/cloudfunctions.invoker" \
--region=
この IAM ポリシー バインディングが適用されたら、前のデプロイ コマンドを使用して関数を再デプロイします。httpsTrigger URL をコピーします。次のようになります。HelloWorld 関数をテストするには、最後の出力の URL に curl でアクセスします。出力:
Cloud Run の HTTP 関数を作成してデプロイしました。
次に、「Hello, world」関数を少し面白くするために、リクエストごとに Gopher の画像を出力します。
次のブロックは、これを実現するコードを示しています。このコードは、Cloud Shell の golang-samples-master/functions/codelabs/gopher/gopher.go で確認できます。
このファイルは、パッケージ宣言とコメントで始まります。すべての Go コードはパッケージ内に記述され、先頭に次のような宣言があります。
import ブロックには、このファイルが依存する他のパッケージのリストが含まれています。これらのパッケージは、ファイルの残りの部分内で名前を使用して参照されます。たとえば、http パッケージの ResponseWriter 型を使用するには、http.ResponseWriter と記述します。
次は Gopher 関数の宣言です。
この関数は、os.Open 関数を使用して gophercolor.png ファイル(サンプルコードを参照)を読み取ることから始まります。
次に、ファイルの読み取り中にエラーが発生したかどうかを確認します。これは、ファイルが破損している場合や、誤ってアップロードから除外された場合に発生する可能性があります。
io.Copy を使用して、gopher イメージを w(http.ResponseWriter 引数)にコピーします。w に書き込まれたすべてのものが HTTP レスポンスで送信されます。
レスポンスの書き込み時にエラーがなければ、関数は正常に返されます。
gcloud functions deploy と関数名 Gopher を使用して、先ほどの「Hello, world」関数と同じようにこの関数をデプロイします。新しい関数の未認証呼び出しを許可するかどうかを確認するメッセージが表示されたら、「Y」と入力します。
関数をテストするには、最後のコマンドの出力にある関数の URL にアクセスします。成功すると、ブラウザに Gopher が表示されます。
次のステップでは、関数が継続的に動作することを確認するためのテストを追加します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Go を使った Cloud Run の HTTP 関数は、標準ライブラリの testing パッケージと httptest パッケージを使用してテストします。関数をテストするためにエミュレータやその他のシミュレーションを実行する必要はなく、通常の Go コードで十分です。
Gopher 関数のテストは次のようになります。
func MyTest(t *testing.T) の形式です。エクスポートする必要があり、*testing.T 型の引数を 1 つ取ります。httptest パッケージを使用してテスト レスポンスとリクエストの値を作成します。cd で移動します。golang-samples-main/functions/codelabs/gopher ディレクトリで、go test コマンドを使用します。出力:
gopher.go ファイルおよび gopher_test.go ファイルと同じディレクトリ(golang-samples-main/functions/codelabs/gopher)にいることを確認します。次に、関数をローカルで実行し、ブラウザで試せるように、バイナリ(Go の package main)を作成します。
HTTP 関数をローカルで実行するには、HTTP サーバーを作成し、関数をハンドラとして登録します(Go で完全なウェブ アプリケーションを作成するための詳細なガイドについては、ウェブ アプリケーションの作成に関するチュートリアルをご覧ください)。
関数のサブディレクトリに関数の HTTP サーバーを記述できます。
Go の規則に沿って、そのディレクトリに cmd という名前を付け、その中に main.go ファイルを作成します。
package main を使用します。main パッケージは、実行可能なバイナリとしてビルドされます。go.mod の module 行に基づいて、github.com/GoogleCloudPlatform/golang-samples/functions/codelabs/gopher をインポートします。独自の関数を記述する際は、モジュールに任意の名前を付けることができます。func main() はバイナリのエントリ ポイントです。gopher.Gopher 関数を HTTP ハンドラとして登録し、http.ListenAndServe を使用してサーバーを起動します。出力:
関数は現在の作業ディレクトリから gophercolor.png 画像を読み込むため、gophercolor.png ファイルと同じディレクトリからバイナリを起動する必要があります。-o start フラグは、出力バイナリの名前に start を指定しています。./cmd は、cmd ディレクトリにあるバイナリをビルドするように指示しています。
次に、Cloud Shell のウェブ プレビューを使用して、ブラウザでサーバーをテストします。
8080 を選択します。プロキシ サービスのプレビュー用 URL が新しいブラウザ ウィンドウで開きます。ウェブ プレビューでは、HTTPS でのアクセスはユーザー アカウントのみに制限されます。
すべてが正常に機能している場合、Go Gopher が表示されます。
gopher.go ファイルおよび gopher_test.go ファイルと同じディレクトリ(golang-samples-main/functions/codelabs/gopher)にいることを確認します。go build -o start ./cmd コマンドでビルドし、./start を実行して起動します。Listening on localhost:8080 と出力されるはずです。8080 を必ず使用してください。このラボを終了すると、使用したすべてのリソースが削除されます。ご自身の環境を使用する場合は、費用を節約し、クラウドのマナーを守るために、常に不要なリソースを削除するようにしましょう。
Ctrl+C キーを押して URL の提供を停止します。
Cloud Run 関数のテストが完了したら、gcloud を使用して削除できます。
関数はコンソールから削除することもできます。
これで、Go で Cloud Run 関数を使用する方法を理解できました。このラボでは、Go で Cloud Run の HTTP 関数を作成する方法、関数をテストする方法、ローカルで実行する方法を学びました。
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2025 年 9 月 25 日
ラボの最終テスト日: 2025 年 9 月 25 日
Copyright 2025 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
1 回に 1 つのラボ
既存のラボをすべて終了して、このラボを開始することを確認してください