App Engine フレキシブル環境で Node.js を使用するためのクイックスタート

このクイックスタートでは、短いメッセージを表示する小さな App Engine アプリケーションを作成する方法について説明します。

始める前に

このサンプルを実行してデプロイする前に、次の手順を行います。

  1. Cloud Platform Console を使用して新しい Cloud Platform プロジェクトを作成し、App Engine アプリケーションを作成し、課金を有効にします。
    App Engine に移動

    プロンプトが表示されたら、App Engine アプリケーションを配置するリージョンを選択し、課金を有効にします。

  2. 次の前提条件をローカルにインストールします。
    1. git をダウンロードしてインストールします
    2. Node.js 開発用に環境を準備します
    3. Google Cloud SDK をダウンロードし、インストールしてから、gcloud ツールを初期化します。
      SDK をダウンロード
  3. 別の方法: git に付属で Cloud SDK でインストールされる Google Cloud Shell と、言語サポートやコードエディタなどの他の多くの機能を組み合わせて使用することができます。

    Google Cloud Shell が起動されたら、このチュートリアルの残りの部分に進んで、Cloud Shell 内でコマンドを実行することができます。

App Engine のロケーション

App Engine はリージョナルです。つまり、アプリを実行するインフラストラクチャは特定のリージョンに配置され、そのリージョン内のすべてのゾーンで冗長的に利用できるように Google によって管理されます。

レイテンシ、可用性、耐久性の要件を満たすことが、アプリを実行するリージョンを選択する際の主な要素になります。通常は、アプリのユーザーに最も近いリージョンを選択しますが、アプリで利用する他の Cloud Platform プロダクトやサービスのロケーションも考慮する必要があります。使用するサービスが複数のロケーションにまたがっていると、アプリのレイテンシだけでなく、料金にも影響します。

App Engine は次のリージョンで利用できます。

  • us-central1
  • us-east1
  • us-east4
  • southamerica-east1 *
  • europe-west1
  • europe-west2
  • europe-west3
  • asia-northeast1
  • australia-southeast1

* サンパウロ リージョンをご利用のお客様の場合、すべてのリージョンの SLA が有効に存続します。ただし、北アメリカおよび南アメリカにまたがるマルチリージョンおよびクロスリージョンの機能の可用性またはパフォーマンスが一時的に低下している可能性があります。

このクイックスタートでは、Express.js フレームワークで記述されたシンプルな Node.js アプリケーションについて具体的に説明します。

Hello World アプリをダウンロードする

Node.js 用のシンプルな Hello World アプリが用意されています。これを使用することで、App Engine フレキシブル環境へのアプリのデプロイをすぐに試すことができます。次の手順で、コマンドラインから Hello World アプリをローカルマシンにダウンロードします。

サンプルアプリをダウンロードし、アプリのディレクトリに移動するには:

  1. 次のように、Hello World サンプルアプリ レポジトリのクローンをローカルマシンに作成します。

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples
    

    または、Zip ファイルでサンプルをダウンロードし、展開します。

  2. サンプルコードが入っているディレクトリに移動します。

    cd nodejs-docs-samples/appengine/hello-world
    

ローカルマシン上で Hello World を実行

  1. 次のコマンドを入力して、このプロジェクトの依存関係をインストールします。

    npm install
    

    Yarn を使用している場合は、次のコマンドを入力します。

    yarn install
    
  2. 起動スクリプトを実行します。

    npm start
    

    Yarn を使用している場合は、次のコマンドを入力します。

    yarn start
    
  3. ウェブブラウザに次のアドレスを入力します。

    http://localhost:8080
    

サンプルアプリから「Hello World」というメッセージがページに表示されます。

ターミナル ウィンドウで Ctrl+C キーを押してウェブサーバーを終了します。

Hello World を App Engine にデプロイして実行する

App Engine フレキシブル環境にアプリをデプロイするには、次の手順を実行します。

  1. hello-world ディレクトリで次のコマンドを実行し、Hello World アプリをデプロイします。
    gcloud app deploy
    詳細については、オプションのフラグをご覧ください。

    一般的な gcloud コマンドフラグ

    • アプリのバージョンを一意に識別する ID を指定するには --version フラグを含めます。これを含めない場合、自動的に生成されます。例: --version [YOUR_VERSION_ID]
    • gcloud ツールでデフォルトとして初期設定したものに代わる Cloud Platform プロジェクト ID を指定するには、--project フラグを含めます。例: --project [YOUR_PROJECT_ID]

    例:

    gcloud app deploy --version pre-prod-5 --project my-sample-app

    コマンドラインからアプリをデプロイする方法については、アプリのテストとデプロイをご覧ください。すべてのコマンドフラグのリストについては、gcloud app deploy リファレンスをご覧ください。

  2. 次のコマンドを実行してブラウザを起動し、http://YOUR_PROJECT_ID.appspot.com でアプリを表示します。
    gcloud app browse
今回の Hello World メッセージが表示されるページは、App Engine インスタンスで実行されているウェブサーバーから配信されます。

これで完了です。 最初の Node.js アプリが App Engine フレキシブル環境にデプロイされました。

クリーンアップの詳細については、以下の説明をご覧ください。また、活用できる次のステップへのリンクも併せてご覧ください。

クリーンアップ

課金されないようにするには、Cloud Platform プロジェクトを削除してプロジェクト内のすべてのリソースへの課金を停止します。

  1. Cloud Platform Console で、[プロジェクト] ページに移動します。

    [プロジェクト] ページに移動する

  2. プロジェクト名の右側にある、ゴミ箱アイコンをクリックします。

次のステップ

これで、Hello World が完了しました。次のサンプルアプリとして Bookshelf アプリについて詳しく見ていきましょう。Bookshelf アプリも基礎的な Node.js ウェブアプリですが、もう少し複雑で、データ ストレージ、認証、ロギング、Pub/Sub など複数の Cloud Platform 機能を使用します。

Bookshelf アプリのチュートリアルを開始

App Engine フレキシブル環境の詳細については、App Engine の概要をご覧ください。

Hello World コードレビュー

Hello World は、1 つのサービスのみが含まれ、1 つのバージョンのみが存在し、すべてのコードがアプリのルート ディレクトリに存在する、最もシンプルな App Engine アプリです。このセクションでは、このアプリの各ファイルを詳細に説明します。

app.js

app.js ファイルには、サーバーの起動やリクエストへの応答を行う JavaScript コードが含まれています。

次のコードは、ウェブ クライアントからのリクエストに応答して、ポート 8080 で動作するサーバーを通して「Hello World」というメッセージを表示します。

const express = require('express');

const app = express();

app.get('/', (req, res) => {
  res.status(200).send('Hello, world!').end();
});

// Start the server
const PORT = process.env.PORT || 8080;
app.listen(PORT, () => {
  console.log(`App listening on port ${PORT}`);
  console.log('Press Ctrl+C to quit.');
});

app.yaml

app.yaml ファイルには、アプリケーションのデプロイ設定が記述されています。

runtime: nodejs
env: flex

app.yaml では、このアプリで使用するランタイムを指定します。また、env: flex を設定してアプリがフレキシブル環境を使用することを指定します。

package.json

package.json は、アプリケーションの依存関係、ノードのバージョン、アプリケーションの起動を指定するために使用します。

{
  "name": "appengine-hello-world",
  "description": "Simple Hello World Node.js sample for Google App Engine Flexible Environment.",
  "version": "0.0.1",
  "private": true,
  "license": "Apache-2.0",
  "author": "Google Inc.",
  "repository": {
    "type": "git",
    "url": "https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git"
  },
  "engines": {
    "node": ">=4.3.2"
  },
  "scripts": {
    "deploy": "gcloud app deploy",
    "start": "node app.js",
    "lint": "samples lint",
    "pretest": "npm run lint",
    "system-test": "samples test app",
    "test": "npm run system-test",
    "e2e-test": "samples test deploy"
  },
  "dependencies": {
    "express": "4.15.4"
  },
  "devDependencies": {
    "@google-cloud/nodejs-repo-tools": "1.4.17"
  },
  "cloud-repo-tools": {
    "test": {
      "app": {
        "msg": "Hello, world!"
      }
    },
    "requiresKeyFile": true,
    "requiresProjectId": true
  }
}

この package.json では、アプリケーションが Node.js v4.3.2 以降を使用すること、express に依存すること、node app.js を使用してアプリケーションを起動することを指定します。ユーザーアプリのインストール方法や実行方法については、Node.js ランタイム ドキュメントをご覧ください。

フィードバックを送信...