
始める前に
- ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
- ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
- 画面左上の [ラボを開始] をクリックして開始します
Google Cloud Datastore は、自動スケーリングと高パフォーマンスを実現し、アプリケーション開発を簡素化するように構築された NoSQL ドキュメント データベースです。このラボでは、この Datastore を使用してオンライン クイズ アプリケーションのアプリケーション データを保存します。また、クイズのデータを Datastore から取得して表示するようアプリケーションを構成します。
クイズ アプリケーションのスケルトンがあらかじめ用意されていますので、まずは Google Cloud Shell を使用して、スケルトンを含むリポジトリのクローンを作成します。次に、Cloud Shell エディタを使ってコードを確認し、Cloud Shell のウェブ プレビュー機能でアプリケーションを表示します。その後、Cloud Datastore を使用してデータを保存するようコードを変更します。
このラボでは、次のタスクの実行方法について学びます。
Cloud Shell を開発環境として利用する
アプリケーションをプレビューする
アプリケーション コードを更新して Cloud Datastore を統合する
各ラボでは、新しい Google Cloud プロジェクトとリソースセットを一定時間無料で利用できます。
Qwiklabs にシークレット ウィンドウでログインします。
ラボのアクセス時間(例: 1:15:00
)に注意し、時間内に完了できるようにしてください。
一時停止機能はありません。必要な場合はやり直せますが、最初からになります。
準備ができたら、[ラボを開始] をクリックします。
ラボの認証情報(ユーザー名とパスワード)をメモしておきます。この情報は、Google Cloud Console にログインする際に使用します。
[Google Console を開く] をクリックします。
[別のアカウントを使用] をクリックし、このラボの認証情報をコピーしてプロンプトに貼り付けます。
他の認証情報を使用すると、エラーが発生したり、料金の請求が発生したりします。
利用規約に同意し、再設定用のリソースページをスキップします。
Google Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。
Google Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
Google Cloud コンソールで、右上のツールバーにある [Cloud Shell をアクティブにする] ボタンをクリックします。
[続行] をクリックします。
環境がプロビジョニングされ、接続されるまでしばらく待ちます。接続した時点で認証が完了しており、プロジェクトに各自のプロジェクト ID が設定されます。次に例を示します。
gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
出力:
出力例:
出力:
出力例:
virtualenv
を使用してユーザー空間の仮想環境を作成します。この環境では、プロジェクトごとに異なる Python パッケージ セットをインストールできます。また、virtualenv を使用すると、Python パッケージをグローバルにインストールする必要がなくなるので、インストールが原因で発生するシステムツールや他の Python プロジェクトの障害を回避できます。このラボでは、virtualenv を使用してすべての Python コマンドに Python3 が使用されるようにします。
Python 3 の virtualenv 環境を構成します。
仮想環境をアクティブにします。
クイズ アプリケーションを含むリポジトリは github.com にあります。 このセクションでは、Cloud Shell を使用してコマンドを入力し、リポジトリのクローンを作成してからアプリケーションを実行します。
クラスのリポジトリのクローンを作成します。
作業ディレクトリへのショートカットとしてソフトリンクを作成します。
このラボのファイルが含まれているディレクトリに移動します。
GCP プロジェクト ID を参照する環境変数 GCLOUD_PROJECT
をエクスポートします。
アプリケーションの依存関係をインストールします。
アプリケーションを実行します。
アプリケーションの実行が開始されると、次のようなメッセージが表示されます。
Cloud Shell で、[ウェブでプレビュー] > [ポート 8080 でプレビュー] をクリックして、クイズ アプリケーションをプレビューします。
このウェブ アプリケーションのユーザー インターフェースが表示されます。主に次の 3 つの部分で構成されています。
ナビゲーション バーで、[Create Question] をクリックします。
質問と答えのテキストボックスと正しい答えを選択するためのラジオボタンを含む、簡単なフォームが表示されます。
ナビゲーション バーで [Take Test]、[GCP] の順にクリックし、GCP の質問にアクセスします。
質問の例が表示されます。
アプリケーションのこの箇所で解答者が質問に答えます。
サーバー側アプリケーションに戻るには、ナビゲーション バーの [Quite Interesting Quiz] リンクをクリックします。
このラボでは、ファイルの閲覧と編集を行います。Cloud Shell にインストールされている nano
や vim
などの shell エディタや、Cloud Shell コードエディタを使用できます。
このラボでは、Cloud Shell コードエディタを使用してこのクイズ アプリケーションのコードを確認します。
Cloud Shell で [エディタを開く] をクリックして、コードエディタを起動します。
エディタの左側にあるファイル ブラウザ パネルを使用して、/datastore/start
フォルダに移動します。
...run-server.py
ファイルを選択します。
このファイルにはアプリケーションのエントリポイントが含まれ、ポート 8080 でアプリケーションを実行します。
...quiz/__init__.py
ファイルを選択します。
このファイルは、ウェブ アプリケーションと REST API のルートをインポートします。
...quiz/webapp/questions.py
ファイルと ...quiz/webapp/routes.py
ファイルを選択します。
これらのファイルには、URI をハンドラにマッピングするルートが含まれています。ハンドラには、フォームを表示するものと、出題者がこのウェブ アプリケーションに投稿したフォームデータを収集するものがあります。
...quiz/webapp/templates
フォルダを選択します。
このフォルダには、Jinja2 テンプレートを使用するウェブ アプリケーション ユーザー インターフェースのテンプレートが含まれています。
...quiz/webapp/templates/add.html
ファイルを表示します。
このファイルには、[Create Question] フォームの Jinja2 テンプレートが含まれています。
クイズを選択するための選択リスト、出題者が質問と答えを入力できるテキストボックス、正しい答えを選択するためのラジオボタンがあることを確認してください。
...quiz/api/api.py
ファイルを選択します。
このファイルには、テストを受ける解答者に JSON データを送信するハンドラが含まれています。
...quiz/gcp/datastore.py
ファイルを選択します。
このファイルに、Cloud Datastore を使用してクイズの質問の保存と読み込みを行うための Datastore コードを記述します。
このモジュールは、ウェブ アプリケーションと API にインポートされます。
このセクションでは、フォームデータを Cloud Datastore に保存するためのコードを記述します。
Cloud Shell に戻り、Ctrl+C キーを押してアプリケーションを停止します。
次のコマンドを実行して、プロジェクトに App Engine アプリケーションを作成します。
App Engine アプリケーションが作成されると次のメッセージが表示されます。
Cloud Shell エディタで ...quiz/gcp/datastore.py
ファイルを開き、以下の処理を実行するコードを追加します。
os
モジュールをインポートする。GCLOUD_PROJECT
環境変数を取得する。google.cloud
パッケージから datastore
モジュールをインポートする。datastore_client
という名前の datastore.Client
クライアント オブジェクトを宣言する。更新後の datastore.py
引き続き ...quiz/gcp/datastore.py
で作業します。
save_question()
関数に移動して、既存の pass
プレースホルダ ステートメントを削除してから、以下の処理を実行するコードを追加します。
'Question'
の Datastore エンティティのキーを作成する。datastore.py - save_question() 関数
datastore.py
を保存します。
...quiz/gcp/datastore.py
ファイルを保存し、Cloud Shell コマンド プロンプトに戻ります。
次のコマンドを実行して、アプリケーションを実行します。
フォームの項目 |
値 |
Author |
|
Quiz |
|
Title |
|
Answer 1 |
|
Answer 2 |
|
Answer 3 |
|
Answer 4 |
|
アプリケーションのホームページに戻ります。
作成した新しい質問が表示されます。
このセクションでは、Cloud Datastore からエンティティ データを取得してアプリケーションに質問を表示するためのコードを記述します。
コードエディタで ...quiz/gcp/datastore.py
ファイルを開き、list_entities(quiz, redact)
関数のコードを削除して、次の処理を実行するクエリに置き換えます。
元のコード:
更新後のコード:
datastore.py
を保存します。
最後に、先ほどの質問が Datastore から取得されてクイズ アプリケーションに読み込まれるかどうかをテストします。
Cloud Shell で、Ctrl+C キーを押してアプリケーションを停止してから、再びアプリケーションを開始します。
クイズをプレビューします。クイズを実行しているブラウザがまだ開いている場合は、ブラウザを再読み込みします。それ以外の場合は、[ウェブでプレビュー] > [ポート 8080 でプレビュー] をクリックします。
[Take Test] > [GCP] をクリックします。
先ほど作成した質問が表示されるはずです。
ラボが完了したら、[ラボを終了] をクリックします。ラボで使用したリソースが Google Cloud Skills Boost から削除され、アカウントの情報も消去されます。
ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。
星の数は、それぞれ次の評価を表します。
フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。
フィードバックやご提案の送信、修正が必要な箇所をご報告いただく際は、[サポート] タブをご利用ください。
Copyright 2020 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
1 回に 1 つのラボ
既存のラボをすべて終了して、このラボを開始することを確認してください