Slide 1

Slide 1 text

爆速でフルスタックなアプリケー ションが作れる!? Nx Plugin for AWSに⼊⾨しよう! クラスメソッド株式会社 クラウド事業統括本部 プロフェッショナルサービス事業本部 yoshii-hiroki

Slide 2

Slide 2 text

はじめに

Slide 3

Slide 3 text

今日のテーマ 2026年9⽉8⽇、AWS LabsからNx Plugin for AWSのv1.0.0がリリースされました。 Nx Plugin for AWSを使うと、アプリとインフラのひな形を爆速で作成できるらしい 今回はその全体像と、アプリ開発でどう役⽴つのかをざっくり紹介します。 3

Slide 4

Slide 4 text

アジェンダ 1. Nxについて 2. Nx Plugin for AWSを使うと何ができる? 3. ユースケースとメリット 4. 実際に触ってみる 4

Slide 5

Slide 5 text

本題

Slide 6

Slide 6 text

Nxについて 6

Slide 7

Slide 7 text

Nxを知る Nx Plugin for AWSを理解する上で、ベースとなるのがNxという ツールです。 ⼀⾔で⾔うと、Nxはモノレポの管理ツールです。 ※モノレポとは、複数のアプリケーションやコンポーネントを、1つのリポジトリでまとめて管理する構成 7

Slide 8

Slide 8 text

Nxの機能 ● ● ● ● モノレポによるプロジェクトの管理 プロジェクト間の依存関係の可視化 アプリケーションのビルドやテストのキャッシュ Generatorによるコード⽣成 8

Slide 9

Slide 9 text

NxのGeneratorとPlugin Generator コードや設定ファイルの⽣成を⾃動化する仕組み。 コマンドひとつで、アプリや機能のひな形を作成できる Plugin ツールやフレームワークとNxを連携する拡張パッケージ。 様々なGeneratorやタスク設定などを内包できる 9

Slide 10

Slide 10 text

NxとNx Plugin for AWSの関係性 Nx nx generate Nx Plugins nx generate Nx Plugin for AWS Developer My WorkSpace React App(ひな形) React Generator Python API Generator DynamoDB Generator Auth Generator … Other Plugins.. 10

Slide 11

Slide 11 text

Nx Plugin for AWSを使うと何ができる? 11

Slide 12

Slide 12 text

できること

Slide 13

Slide 13 text

Generatorを組み合わせて、アプリのひな形を作れる 対応している技術コンポーネント 13

Slide 14

Slide 14 text

デプロイ用のインフラ定義も生成される NX Plugin for AWSではサーバーレス中⼼のインフラが準備されており Terraform or CDKを通してAWSにデプロイできる React Generator FastAPI Generator 14

Slide 15

Slide 15 text

できないこと(⾃分でやること)

Slide 16

Slide 16 text

ひな形の先は⾃分で作る NX Plugin for AWSは機能実装を進めるための、スタートライン を作ってくれる。 下記のような機能の設計‧実装‧テスト‧拡張は開発者の責務 ● ● ● ● Reactで〇〇機能の画⾯を作る FastAPIで〇〇のAPIを作る DynamoDBのデータモデルを作成する TerraformでVPC等のリソースを作る(スタートラインからの拡張) 16

Slide 17

Slide 17 text

ユースケースとメリット 17

Slide 18

Slide 18 text

今までのアプリケーションの開発で⾟かったところ 初速と拡張性を両⽴させづらい... PaaSやBaaSを使って、初速を取ると拡張性が落ちる 逆に拡張性を考えて設計すると、1から⾃分たちで作る必要があ り初速がでない。 18

Slide 19

Slide 19 text

Nx Plugin for AWSなら... Nx Plugin for AWSは初速と拡張性を両⽴できる。 ● 初速 ○ Generatorを組み合わせることで、アプリケーションを素早く構築で きる ○ PaaSやBaaSを使わずとも、初速が得られる ● 拡張性 ○ 技術ロックインが⼩さく、要件に合わせて構成を変更しやすい ■ Nx Plugin for AWSが⽣成するのは⼀般的なフレームワークの コードでしかない 19

Slide 20

Slide 20 text

ユースケース ● ⼩さく初めて、そのまま育てていくアプリケーション ○ PoCとして簡単なアプリケーションを構築したい。 ○ ⼀般的な認証と業務データのCRUD機能が必要。 ○ 将来的に機能追加(拡張)する前提 20

Slide 21

Slide 21 text

やってみた 21

Slide 22

Slide 22 text

作成するもの 今回は、React‧FastAPI‧Cognito‧DynamoDB‧Terraformのひな形を⽣成してみ ます。 コンポーネント 使⽤するGenerator フロントエンド ts#website バックエンド py#api Cognito認証 ts#website#auth データベース py#dynamodb インフラ管理 terraform#project 22

Slide 23

Slide 23 text

アーキテクチャ図

Slide 24

Slide 24 text

ReactとFastAPIのひな形を⽣成 ワークスペースを作成 $ pnpm create @aws/nx-workspace demo-app --iac=terraform --containers=docker $ cd demo-app React Webサイトを⽣成 $ pnpm nx g @aws/nx-plugin:ts#website demo-website --no-interactive FastAPIを⽣成 $ pnpm nx g @aws/nx-plugin:py#api \ --name=demo-api --framework=fastapi --auth=cognito --no-interactive 24

Slide 25

Slide 25 text

認証‧DBを追加 Reactに認証を追加 $ pnpm nx g @aws/nx-plugin:ts#website#auth --project=demo-website --no-interactive DynamoDBを追加 $ pnpm nx g @aws/nx-plugin:py#dynamodb --name=demo-db --no-interactive 接続を追加 $ pnpm nx g @aws/nx-plugin:connection --sourceProject=@demo-app/demo-website --targetProject=demo_app.demo_api --no-interactive $ pnpm nx g @aws/nx-plugin:connection --sourceProject=demo_app.demo_api --targetProject=demo_app.demo_db --no-interactive 25

Slide 26

Slide 26 text

Terraformのインフラ管理を作成 インフラ管理を作成 $ pnpm nx g @aws/nx-plugin:terraform#project infra --no-interactive 26

Slide 27

Slide 27 text

AWSにデプロイする Generatorで⽣成されたリソースのTerraform Moduleを/packages/infra/src/main.tfで読み込み、デプロイコマンドを叩く。 # Cognito 認証 module "user_identity" { source = "../../common/terraform/src/core/user-identity" } デプロイコマンド $ pnpm build $ pnpm nx bootstrap infra $ pnpm nx plan infra $ pnpm nx apply infra # Lambda のデプロイ成果物を配置するバケット module "asset_bucket" { source = "../../common/terraform/src/core/asset-bucket" } # Cognito 認証付き FastAPI module "demo_api" { source = "../../common/terraform/src/app/apis/demo-api" asset_bucket_name = module .asset_bucket .bucket_name user_pool_id = module .user_identity .user_pool_id user_pool_client_ids = [module .user_identity .user_pool_client_id ] } 27

Slide 28

Slide 28 text

⽣成されたアプリケーションの ひな形を確認してみよう

Slide 29

Slide 29 text

Reactのサンプル画⾯ ログイン後に、表⽰されるサイドメニュー付きのWelcomeページ

Slide 30

Slide 30 text

⽣成されたサンプルAPI オウム返しするだけのAPI(/echo)

Slide 31

Slide 31 text

画⾯とAPIのサンプルを⾒て思ったこと ● AIに作らせれば、すぐできそう? ● これだけなら下記のようなコマンドで始めるのと変わらないので は? $ pip install fastapi $ pnpm create vite sample-app --template react-ts 画⾯とAPIのサンプル以外にも、ひな形には他にも⾊々いいポイント があります!!!

Slide 32

Slide 32 text

⽣成されたひな形にある いい感じな仕組みを紹介したい

Slide 33

Slide 33 text

いい感じなポイント(1/3) ● ログ‧トレース‧メトリクスの設定が最初からある ○ AWS Lambda Powertoolsを使った、ログ‧トレース‧メトリクスの設定 が導⼊済み。 from .init import app, tracer # init.py で用意された Tracerを読み込む @app.get ("/echo") @tracer.capture_method # このAPIの処理をトレース対象にする def echo(message: Annotated[ str, Query( max_length =1024)]) -> EchoOutput: return EchoOutput( message=f"{message}")

Slide 34

Slide 34 text

いい感じなポイント(2/3) ● テストを始めるための設定が揃っている ○ FastAPIにはtests/にテストファイルが準備されている ○ ビルド時にテストを実⾏する処理がすでに組み込まれている APIのテスト実⾏ $ pnpm nx test demo_app.demo_api APIのビルド実⾏ $ pnpm nx build demo_app.demo_api ビルドの内容

Slide 35

Slide 35 text

いい感じなポイント(3/3) ● APIスキーマ管理の仕組み(OpenAPI Generator)が導⼊済 ○ ビルド時にFastAPIのOpenAPI仕様からReact⽤の型付きAPIクライアント を⽣成できる。 // サンプルAPI(/echo)の型定義 // レスポンス export type EchoOutput = { message: string; }; // リクエスト export type EchoRequestQueryParameters = { message: string; };

Slide 36

Slide 36 text

最後に

Slide 37

Slide 37 text

まとめ Nx Plugin for AWSは、モノレポ管理ツール「Nx」を拡張し、 AWS向けのアプリやインフラのひな形を⽣成できるPlugin ● ● ● Pluginに内包されている、Generatorを組み合わせることで、React‧FastAPI‧認証 ‧DB‧Terraformのフルスタックアプリケーションのひな形を数個のコマンドで⽣成でき ます ⽣成される、ひな形にはログ‧トレース‧メトリクスやビルド‧テスト等の仕組みが⽤意 されており、開発者は機能実装に集中できます ⼀般的な技術コンポーネントで構成されるため、技術ロックインを少なくしながら、⾃分 たちでアプリケーションを育てて⾏くことができます

Slide 38

Slide 38 text

ご清聴ありがとうございました

Slide 39

Slide 39 text

No content