見出し画像

Amplifyのすゝめ ~その1~

最初に

 こんにちは。株式会社GA technologies AISC(AI Strategy Center)室長の稲本です。先日我々のテクノロジーショーケースであるTechLabの紹介をしましたが、そこで採用しているAWS Amplify ついて何回かに分けて紹介していきたいと思います。

 AWS AmplifyはServerlessでフルスタックのウェブアプリケーションを提供できるサービスとなっていて、フロントサイドのスキルがあれば、ホスティングや認証、バックエンド処理、ストレージ、データベース等を統合的に扱うことが可能という、とても便利なサービスです。

 前置きはさておき、amplifyでどれだけ簡単にウェブアプリケーションを作れるのかを見ていきたいと思います。

前提条件

  • OS: windows WSL 上のUbuntu 22.04

  • editor: Visual Studio Code

  • front framework: React

  • build tool: Vite

  • amplify javascript: V6

  • IAMに"AdministratorAccess-Amplify"ポリシーがアタッチされている

  • aws cliにIAMのaccess Key IDとSecret Access Keyが設定されている

プロジェクト名は"amplify-sample"で進めます

導入準備

node.jsとnpm インストール

sudo apt install -y nodejs npm

 因みに、Ubuntu20.04の場合、aptでインストールできるnode.jsとnpmが古いので、アップデートすることをお勧めしますが、インストールがちょっと面倒になります。

Amplify 環境のsetup

sudo npm install -g @aws-amplify/cli
amplify configure 
  1. Region: ap-northeast-1選択

  2. User name: メアド選択

  3. accessKeyId: (AWS CLIに設定されていなければ入力 )

  4. secretAccessKey: (AWS CLIに設定されていなければ入力 )

  5. Profile Name: enter

  6. 何度もブラウザ開くけど無視して閉じてOK

一度設定してしまったら、次回からはここまでの操作は不要です。

ローカルでの開発

project作成

npm create vite@latest
  1. ok to proceed? → y

  2. project name: → amplify-sample

  3. Select a framework: → React

  4. Select a variant → Javascript

projectの起動

code amplify-sample
npm install
npm run dev

Webブラウザでhttp://localhost:5173/ 開く

 以下の様な画面になったら成功です。buildツールに高速なviteを採用したので、ここまで1分足らずだと思います。

amplifyの設定

 ここまで作ったプロジェクトはlocalhostつまり個人のPC上で動いているので、外部に発信できるようにホスティングを行っていきましょう。以下のようにコマンドを入力していきます。

初期化

amplify init

ひたすらEnterでOK

パッケージのインストール

npm install @aws-amplify/ui-react aws-amplify
npm install @aws-amplify/ui-react

ui-reactは無くても動きますが、公式のチュートリアルでも導入しているのでインストールしておきます。

ホスティング機能の追加

amplify add hosting

ここもEnterでOK !

Viteに合わせて設定変更

amplify configure project

Distribution Directory Pathはdefaultでbuildですが dist にしてください。defaultのままだと、次のamplify publishが通らなくなります。他はdefault valueで大丈夫です

デプロイ

amplify publish -y

 しばし待ちます。

 最後に表示されるURLを開くと、先ほどと同様の画面が表示されると思います。表示されている物は全く同じですが、このページに世界中のどこからでもアクセスできるようになっているという点で異なります。

 後はhtmlを変更→amplify publishを繰り返すことで、オリジナルのウェブページを全世界に配信することが出来ます。サーバーを借りたりする必要はありません。

プロジェクトの削除

amplify delete

 最後にサンプルプロジェクトなので消しておきましょう。

裏側の仕組み

 因みに「サーバーはどこにあるの?」って思いましたか?実は図のようにS3にファイルを置いて、CloudFrontと呼ばれる機能を使ってホスティングしています。

 S3(simple storage service)もCloudFrontも、起動そのものに課金されるサービスではないので、通常のサーバーのように起動させておくだけで月に数千円かかるようなことはありません。逆に、ストレージに置くファイル容量であったり、ユーザからのアクセスによって料金が発生しますが、無料枠もありますので、小規模なサービスである限り発生するコストは少ないです。(実際に生じるコストについて責任は負いかねますので、ご了承ください)

 あと、地味に嬉しいのがCloudFrontやS3は、Amazonの超一流のエンジニアが管理してくれているのでセキュリティ面でも安心だという事です。以前AISCの新卒が立ち上げたec2サーバーをエンジニアに確認してもらったところ、開発者のIAMが抜ける状態にあると警告されました。それ以降、メンバーがサーバーを立ち上げる度に少し恐怖感を感じてましたが、そういった恐怖から解放されたのもServerlessであるAmplifyの良いところだと思います。

まとめ

 どうでしたか?導入準備さえできてしまえば、ものの数分で自作のWebページをホスティングし、全世界に発信することが出来ました。しかもServerlessなので、起動しておくのに料金がかかる事もなく、セキュアなサーバー管理を実現するために苦労することもありません。

 AISCではリーンな開発プロセスを大切にしており、大量のMVP: Minimum ViableなPrototype(Productではない)が発生するのですが、それらを維持するコストも馬鹿にならないので、利用されない限り料金があまり発生しないAmplifyはとてもありがたいです。

 私自身のキャリアは企業の画像処理研究者、SaaSサービスの企画・プロダクトマネージャー、研究開発組織のマネージャーというキャリアを歩んでおり、業務でまっとうなエンジニアリングをした経験はありません。そんな私でもAmplifyを使えば本当に簡単に、外部提供可能なアプリが作れます。

 我々が重宝しているAWS Amplifyの魅力を読者の皆様にも感じて頂けたとしたら幸いです。次回は認証を導入しようと思います。

この記事が気に入ったらサポートをしてみませんか?