1. システムアーキテクチャ

Diagram

これは、ソフトウェア開発と展開の高レベルの概要を示すUMLダイアグラムです。開発者、本番環境、およびリポジトリの3つの主要なコンポーネントが示されています。

開発者はアクターによって表され、利用者のアクターもあり、ダイアグラム上では「利用者」と表記されています。

本番環境には、Webアプリケーションを展開するためのプラットフォームであるVercelとHerokuの2つのクラウドがあります。本番環境は、「Production Environment」のUIのためにUIコンポーネントのみを含むパッケージと、「Production Environment」のAPIとデータベースを含むパッケージの2つに分かれています。

リポジトリは、Gitバージョン管理システム「Git Hub」と継続的インテグレーションシステムの「GitHub Action」という2つのパッケージを含むGitHubクラウドで表されています。

このダイアグラムは、開発者がコードをリポジトリにプッシュすることで、GitHub Actionを使用した継続的インテグレーションプロセスがトリガーされることを示しています。継続的インテグレーションプロセスは、コードをビルドしてテストし、VercelとHerokuの本番環境の両方に展開します。

最終的に、利用者はVercelのUIコンポーネントを介してアプリケーションとやり取りし、Herokuの本番環境のAPIとデータベースコンポーネントと通信します。

2. GitHubとは

GitHubは、GitリポジトリをホストするためのWebベースのホスティングサービスです。GitHubを使用すると、コードを共有し、他の人と協力してプロジェクトを管理できます。

2.1. GitHubのセットアップ

  1. [GitHub](https://github.com/)にアクセスして、アカウントを作成します。

  2. リポジトリを作成します。

  3. リポジトリにコードをプッシュします。

3. GitHub Actionsとは

GitHub Actionsは、GitHubでホストされる継続的インテグレーション/継続的デプロイメント(CI/CD)サービスです。GitHub Actionsを使用すると、コードの変更を自動的にビルド、テスト、デプロイできます。

3.1. GitHub Actionsのセットアップ

  1. リポジトリに .github/workflows ディレクトリを作成します。

  2. ワークフローファイルを作成します。

    node.js.yml を作成します。

    # This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node
    # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs
    
    name: Node.js CI
    
    on:
      push:
        branches: [ "main" ]
      pull_request:
        branches: [ "main" ]
    
    jobs:
      build:
    
        runs-on: ubuntu-latest
    
        strategy:
          matrix:
            node-version: [14.x, 16.x, 18.x]
            # See supported Node.js release schedule at https://nodejs.org/en/about/releases/
    
        steps:
        - uses: actions/checkout@v3
        - name: Use Node.js ${{ matrix.node-version }}
          uses: actions/setup-node@v3
          with:
            node-version: ${{ matrix.node-version }}
            cache: 'npm'
        - run: npm ci
        - run: npm run build --if-present
        - run: npm test
  3. レポジトリにコミット・プッシュしてワークフローを有効にします。

  4. READMEにバッジを追加します。

  5. package.json にテストタスクを追加します

      "scripts": {
        "start": "npx gulp",
        "test": "echo \"Error: no test specified\" && exit 0",
        "build": "npx gulp build",
        "slides": "npx gulp slides",
        "docs": "npx gulp docs"
      },

4. Herokuとは

Herokuは、クラウドプラットフォームであり、開発者がアプリケーションを構築、実行、スケールするためのツールを提供します。

4.1. Herokuにアプリをデプロイする手順

4.1.1. Heroku アカウントの作成

  1. Herokuにアクセスして、アカウントを作成します。

4.1.2. Heroku CLI のインストール

  1. Heroku CLIをダウンロードしてインストールします。

4.1.3. Heroku アプリケーションの作成

  1. Herokuにログインします。

  2. heroku create コマンドを実行して、新しいアプリケーションを作成します。

    heroku create sample-project
  3. HTTPサーバーを起動するために、パッケージをインストールして Procfile ファイルを作成します。

    npm install http-server
    web: npx http-server -p $PORT

    package.jsonに以下の内容を追加します。

    "scripts": {
      ...
      "heroku-postbuild": "webpack --config ./webpack.config.js --progress"
      ...
    },

4.1.4. アプリケーションのデプロイ

  1. git add . コマンドを実行して、変更をステージングします。

  2. git commit -m "Initial commit" コマンドを実行して、変更をコミットします。

  3. git push heroku master コマンドを実行して、アプリケーションをデプロイします。

    git push heroku

    mainブランチ以外をデプロイする場合は以下のコマンドを実行します。

    take01ブランチをデプロイする場合

    git push heroku take01:master

    別のアプリケーションを作ってデプロイする場合

    heroku create sample-project-take01

    .git/config に以下の内容を追加します。

    [remote "heroku-take01"]
      url = https://git.heroku.com/sample-project-take01.git
      fetch = +refs/heads/*:refs/remotes/heroku/*

    以下のコマンドを実行して別のアプリケーションにmain以外のブランチをデプロイします。

    git push heroku-take01 take01:master

4.1.5. アプリケーションの起動

  1. heroku open コマンドを実行して、アプリケーションを起動します。

5. Vercelとは

Vercelは、サーバーレスのプラットフォームで、フロントエンドの開発者が簡単にWebサイトやアプリケーションをデプロイできるようにするものです。

5.1. Vercelにデプロイする手順

以下は、Vercelにデプロイする手順です。

5.1.1. Vercelのサインアップ

まず、Vercelにサインアップする必要があります。Vercelには、GitHub、GitLab、Bitbucket、またはVercelのアカウントでサインアップできます。

5.1.2. ビルドコマンドの入力

次に、アプリケーションのビルドコマンドを入力する必要があります。ビルドコマンドは、アプリケーションをビルドするために必要なコマンドです。

5.1.3. 環境変数の設定(必要な場合)

必要に応じて、環境変数を設定することができます。環境変数は、アプリケーションで使用される変数です。

5.1.4. デプロイするブランチの選択

次に、デプロイするブランチを選択する必要があります。通常、デプロイするブランチは、masterブランチです。

5.1.5. デプロイの開始

最後に、デプロイを開始する必要があります。デプロイが完了すると、VercelはURLを提供します。

5.1.6. デプロイの確認

デプロイが完了したら、Webサイトやアプリケーションを確認することができます。

5.2. VercelにCLIでデプロイする手順

  1. Vercel CLIをインストールする Vercel CLIをインストールするには、ターミナルで以下のコマンドを実行します。

    npm install -g vercel
  2. Vercelにログインする Vercel CLIを使用するには、Vercelにログインする必要があります。以下のコマンドを実行して、Vercelにログインしてください。

    vercel login
  3. プロジェクトをデプロイする webpack.config.jsのビルドファイルの出力先をpublicに変更します。

     output: {
        path: __dirname + '/public',
        filename: 'bundle.js'
      },

    Vercel CLIを使用して、プロジェクトをデプロイするには、以下のコマンドを実行します。

    vercel