🔥
Amplify リモート開発の環境構築 (Vue.js)
要約
- Visual Studio Code(VSCode) と Docker で再現性のあるクリーンな開発環境をつくる
- プロジェクトごと開発環境を保持できる
- 手軽に再構築と共有ができる
はじめに
Amplifyを使うことになり、一通りチュートリアルを行いました。
Next Stepとして、何か作ってみようとしたところ、鬼のようにアップデートのあるライブラリと、たくさんのAmplifyという言葉に惑わされました。
他にもmockが不安定な動きをしたり、amplify pushが失敗したりと七転八倒を繰り返し、開発環境自体を再構築をするようになりました。
Vueの開発についてもメージャーバージョンの違いにより、環境側(nodejsとvue/cli)の設定の共有が必要です。
環境例
ファイル構成
amplify-vuejs-docker
├── .devcontainer/
│ ├── devcontainer.json
│ ├── docker-compose.yml
│ └── web/
│ └── Dockerfile
└── server/
- docker-compose.yml
docker-compose.yml
version: '3.8'
services:
amplify:
image: amplify-vuejs/app:1.0
container_name: amplify-vuejs
build: ./web
ports:
# yarn serve
- 8080:8080
# mock api
- 20002:20002
stdin_open: true
working_dir: '/app'
volumes:
- ../server:/app
# credential,configを保管したい人向け
- ../dev/aws/:/root/.aws/
tty: true
- Dockerfile
Amplify Mocking(ローカルモック)を使うためにjavaを入れます。
Amazon Correttoを使ってみます。
大事なことはバージョン指定をすることです。
Dockerfile
FROM node:16.14.0
# java for Amplify Mock
RUN apt update; apt install -y wget software-properties-common apt-transport-https
RUN wget -O- https://apt.corretto.aws/corretto.key | apt-key add -
RUN add-apt-repository 'deb https://apt.corretto.aws stable main'
RUN apt update; apt-get install -y java-18-amazon-corretto-jdk
# git-flow
RUN apt install git-flow
# amplify
RUN npm install -g npm@8.5.1
RUN npm install -g @aws-amplify/cli@7.6.22
# vue
RUN npm install -g @vue/cli@5.0.1
- devcontainer.json
Vueは3.xを使う場合volarを使うことになります。(misterj.vue-volar-extention-pack)
フォーマッターとしてのvolarは少し弱いところがあるようです。
あとは個人的な好みです。
devcontainer.json
{
"name": "Amplify Vue3",
"dockerComposeFile": "docker-compose.yml",
"service": "amplify",
"workspaceFolder": "/app",
"extensions": [
"misterj.vue-volar-extention-pack",
"aws-amplify.aws-amplify-vscode",
"GraphQL.vscode-graphql",
"oderwat.indent-rainbow",
"eamodio.gitlens"
],
"settings": {
"editor.formatOnSave": true,
"editor.tabSize": 2,
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[vue]": {
"editor.defaultFormatter": "johnsoncodehk.volar"
},
"[json]": {
"editor.defaultFormatter": "vscode.json-language-features"
},
"eslint.workingDirectories": [{ "mode": "auto" }]
}
}
使い方
-
Dockerをインストールします
-
VSCodeをインストールします
-
VSCodeに拡張機能Remote Developmentをインストールします
-
リポジトリをクローンします
git clone https://github.com/covasue/amplify-vuejs-docker
- クローンした
amplify-vuejs-docker
に移動します
cd amplify-vuejs-docker
- VSCodeを起動して Reopen in container をクリックします
code .
初回はコンテナの構築があるので4~5分かかりますが、2回目以降は4~5秒でコンテナ(開発環境)が立ち上がります。
VSCodeを閉じるとコンテナが自動終了します。
Windowsの場合はWSL2から実行する
爆速で開発できるはずがリモート開発を実装するとやたら遅いのと
webpack5(vue/cli@5)でホットリロードしない現象が起きてしまいました。
調べたところFileSystemを混ぜちゃダメとのことでした。
こちらのサイトに丁寧に書かれています。
yarn serve や buildが なんならDocker使う前より早いんじゃないかと思えるようになりました。
上記環境でよいところ
- Amplify CLIとVue CLIとMockの必須条件のJDKをそれぞれバージョン指定した状態でインストールした状態になる。
- 構築作業を終えると、VSCodeのワークスペースを開くだけで、Docker操作を特に意識することなくコンテナに入り、ローカル環境のようにVSCodeからターミナルをたたくことができる
- git clone ,git checkout xxx, amplify init ,npm install 概ね4ステップで環境再現
- VSCodeの設定を共有できる。例えばセミコロン、クォーテーションなどの設定を保持できる
Amplify でハマったところ
- AmplifyあるいはAWS Amplifyから始まる言葉多すぎ。あと意味変わりすぎ。
- 破壊的変更が多くビビる。
- 公式の半年前のチュートリアルが動かないことがある。(ライブラリのバージョン指定がないサンプルは動かないと考える。バージョン指定がある場合は必ず合わせる)
適宜追加予定
たくさんのAmplifyから始まる言葉について
Amplify Framework
- Amplifyの仕組み全体を示します。
- 当初はフロントエンドのライブラリのことを意味していました。
そのためLibrriesとUIのことを意味していることもあります←罠です。
Amplify CLI
- バックエンド構築をCLIで行う(amplify add *** 等)
- 公式ドキュメントが見やすい。だが破壊的変更があることについての誘導が分かりにくい(最近一部できつつある)
- Amplify CLIのAPI(GraphQL)≒AppSyncのAmplify CLI版
Amplify Console
- WebのConsole画面のこと
- Hostingことを意味している場合もある←辞めてくれ
Amplify Librries
- javascript/iOS/Android/Flutter別のライブラリを通してAWSのリソースを使う仕組み
- フロントエンド側からAmplify CLIを使っていない既存のバックエンドリソースを使うことができる
Amplify UI Components
- https://ui.docs.amplify.aws/
- Framework別(開発におけるアプリケーションの枠組み)のコンポーネント
主にReactのものが多い
Amplify Hosting
- 単純なホスティングあるいはリポジトリに接続してCI/CDを行う仕組み
- たまに単純なホスティングのことをAmplifyと略していることがある
Amplify Studio(旧Admin UI)
- ノンプログラミングとかローコードとかノーコードとかいろいろ言われていますがそれだけではない
- FigmaからReactコンポーネント作れます
- AWSのアカウントを持っていなくてもAmplifyで作ったバックエンドの設定をGUIでできます←とても便利
Amplify Mocking
- ローカル環境でバックエンド環境を試すことができます
- 爆速で開発できるという売りですが構築に4~5分かかることがしばしばあるため、トライアンドエラーで試すのはMockを使うのが良いと思います
- Javaの環境が必要です
上記環境の既知の問題点
- amplify mock apiを実行してAmplify Librriesを利用するとaws-exports.jsのaws_appsync_graphqlEndpointを書き換える必要がある。
- Vue CLIはメンテナンスモードのためVite等を使うようになる。
次回以降の予定
- 今回の環境を使って公式のTutorialをやってみる ← 書きました。
https://zenn.dev/sueyoshi/articles/1ddeba3352fcd9 - リポジトリを共有して共同開発する際のハマりどころ
- Amplify SNS WorkshopのVue版としてやる
Discussion