Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
コードファーストの考え方。 Amplify Gen2から学ぶAWS次世代のWeb開発体験
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
yoshitaka KOITABASHI
April 30, 2024
Technology
2.1k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
コードファーストの考え方。 Amplify Gen2から学ぶAWS次世代のWeb開発体験
yoshitaka KOITABASHI
April 30, 2024
More Decks by yoshitaka KOITABASHI
See All by yoshitaka KOITABASHI
変化と挑戦:NoSQLとNewSQL Serverless Databaseの技術革新とマルチテナンシーの秘密
yoshiitaka
23
6.6k
大規模なアジャイル開発の現場と技術負債 / Technical Debt
yoshiitaka
23
5.8k
Re:cap container Services
yoshiitaka
2
620
The_Frugal_Architectの観点から眺めるServerless.pdf
yoshiitaka
1
190
re:Inventに行くと何を得られ、なぜ人はラスベガスに行くのか
yoshiitaka
0
170
コンテナ支部recapをrecapしよう_気になったコンテナの周りのアップデートを紹介.pdf
yoshiitaka
1
1.1k
AWS re:Invent 2023の期間中に出たコンテナアップデート集
yoshiitaka
4
830
stripeを組み合わせたサーバレスアーキテクチャとシードのスタートアップ ビジネスをグロースするためにやったこと
yoshiitaka
3
660
アジャイル開発と時代の流れに伴うサーバレスアーキテクチャの変化
yoshiitaka
8
5.8k
Other Decks in Technology
See All in Technology
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
19k
【CEDEC2026】コードレビュー支援ツール開発から学ぶ:LLMを用いた業務システムの実践的な運用設計と誤出力対策
cygames
PRO
0
620
toio・myCobotでフィジカルAIっぽいことを行うための検討(とりあえず調査) / フィジカルAI LT(IoTLTによる開催)
you
PRO
0
300
【CEDEC2026】『Relink』を拡張せよ - 『GRANBLUE FANTASY: Relink - Endless Ragnarok』の開発速度と品質を守るCI運用
cygames
PRO
0
140
変化の早いClaude Codeを 書籍に落とし込む
oikon48
7
1.3k
20260801_スクフェス大阪
kgnkhkr
2
1.2k
Agent 時代の Kaggle 展望 / kaggle-in-the-agentic-era
upura
1
660
OSPN.JPバージョンアップ作業進捗のご報告 / 20260801-osc26kyoto
akkiesoft
0
390
AI駆動開発は個人技からチーム戦へ:組織でAIを使いこなすための実践設計
moongift
PRO
0
480
【CEDEC2026】『ウマ娘 プリティーダービー』 英語版のキャラクターの方言や口調をローカライズするための創造的アプローチ
cygames
PRO
1
200
Service Connect 上のサービスに ECS Service の外側から到達できなかった話
ota1022
1
150
FPGAが実現する遠方宇宙の高空間分解能天体撮影 -大型地上望遠鏡の視力を補正する「補償光学」とは?-
komei_mt
0
170
Featured
See All Featured
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
400
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
160
30 Presentation Tips
portentint
PRO
1
360
Scaling GitHub
holman
464
140k
Test your architecture with Archunit
thirion
1
2.3k
Into the Great Unknown - MozCon
thekraken
41
2.7k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
730
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Mobile First: as difficult as doing things right
swwweet
225
10k
What's in a price? How to price your products and services
michaelherold
247
13k
Transcript
コードファーストの考え方。 Amplify Gen2から学ぶAWS次世代のWeb開発体験 KOITABASHI Yoshitaka 1
2
アジェンダ • Amplify Gen2 • コードファーストとは? • Astro, Vite •
最近のJavaScript Bundler事情 • Demo • まとめ 3
4
Amplify Gen2 “コードファースト”な世界を目指したAmplifyの次世代機能群 5 Docs: https://docs.amplify.aws/gen2/ Workshop: https://catalog.us-east-1.prod.workshops.aws/workshops/386fd39b-01a5-44e9-9836-264c10039160/ja-JP
Gen1とGen2の大きな違い • TypeScriptが標準 • スキーマ定義/自動生成される型定義による“タイプセーフ”を実現 • 開発者ごとのサンドボックス環境 / 自動反映 •
AWS CDK L3 Construct 対応でインフラ作成の簡素化 • デプロイ環境の切り分けが容易になった 6
TypeScript標準と型定義 7 • バックエンド側で書いたスキーマ定義の型が フロント側でそのまま適用 • バリデーションは、Zodの書き方となっている https://github.com/aws-amplify/amplify-backend/blob/21f6292a159454bf929fdf89eca3a610229748a2/packages/backend-output-schemas/package.json#L25
開発者ごとのサンドボックス 8 ・ローカルのバックエンドコードをAWS上 にデプロイし、かつ、localhostから接続 が可能 ・作成される資源は開発者ごとに 専用で用意 ・コードの変更を監視しているので、開発 中のコード変更を自動で反映
AWS CDK L3 Construct 対応 9 ラップされているインフラリソースが簡単に利用できたり、 L1/L2コードをインラインで記述することもできる。
デプロイ環境の切り分け Gitリポジトリの各ブランチごとで デプロイが可能 => リリースブランチを作成して、 運用することができるようになった 今までは、下記のようなCLIを 実施する必要があった > amplify
add env dev > amplify env checkout dev > amplify push 10
地味に嬉しい機能: Amplify/backendで AppsyncのJS Resolverが追加 AppSyncのResolverは、GraphQLの スキーマで受けたリクエストに対してデータ を操作する部分。 従来は、VTLで記述する必要があった。 => この対応でResolverについて、
JSで記述が可能 11 マージされたバージョン:https://github.com/aws-amplify/amplify-backend/releases/tag/%40aws-amplify%2Fbackend%400.13.0-beta.4 PR: https://github.com/aws-amplify/amplify-backend/pull/1095
Amplify Gen2は何を目指しているのか? ・コードファーストな開発者体験 コードファースト = フロントエンド/バックエンドという 役割を意識させずにアプリ開発ができること ・最新のフロントエンド事情/動向を汲み取った機能整備 12
“コードファースト”な考え方 SOAP Webサービスの時代からコードファーストな 機能 / 考え方は存在していた => サンプルとなるサービスのコードをフレームワークに 挿入し、コードからWSDLやスキーマを生成すること 13
https://www.infoq.com/jp/articles/sosnoski-code-first/ その後、スキーマの自動生成ができる ツールが誕生 ・Microsoft: .NET framework ・Sun: JAX-WS 2.0/JAXB 2.0
.NET Framework におけるコードファースト • Entity Framework 4.1で導入されたのが 「コードファースト」という機能(2011年あたり) => Entity
Frameworkは、MicrosoftのADO.NETチームによって 開発された永続化フレームワークです。 • エンティティ(モデルのコード)を書いておけば、テーブルが自動生成 14 データベース エンティティクラス 自動生成
GraphQLにおけるコードファースト • GraphQLにおいてもコードファーストという考え方がある • 開発者はResolverだけを書くのみでよい • コードに含まれる型またはアノテーションに基づいて ビルドツールがスキーマと SDL をコンパイルし、schema.gql
を生成 15 https://www.apollographql.com/blog/schema-first-vs-code-only-graphql
Amplify Gen2が解決したもの • Gen1で歯痒かったCLI依存によるインフラリソースの マスク化されたものの可視化/管理化が可能 => Gen1の時の例だと: amplify add auth
• 個別のサンドボックス作成、自動反映、 Gitブランチごとでのデプロイなど一気通貫でリリースが可能 • タイプセーフの実現 16
余談 17
Next.js14の機能であるApp Router対応 • 2023年10月26日: Next.js 14 公開 => 仕様変更で一番大きかったのは、App Routerの導入
また、React Server Component (RSC)により、 基本サーバサードでの処理となる これにより、今までのPage Routingが変わる形となる • Next.js 14 の公開後すぐ(2023年11月15日)に AWS Amplify javascript v6が提供され App Routerへの対応が行われる 18 https://aws.amazon.com/jp/about-aws/whats-new/2023/11/aws-amplify-javascript-v6/
実際にやってみよう 19
20
Astro Gatsby,Hugoなどと同じモダンな静的サイトジェネレータ(SSG) [特徴] 1. 既存 UI フレームワークがコンポーネントに利用可 2. ビルドで必要最低限のJavascriptだけを出力 3.
ビルドツールにViteを使用 21 ビルド、Webサイトの読み込みがデフォルトで鬼早い https://github.com/withastro/astro Astroのパフォーマンスが分かる動画: https://www.youtube.com/watch?v=2ZEMb_H-LYE&t=8163s
Islands: フロントエンドアーキテクチャ Astroは、Islandsというフロントエンドアーキテクチャを採用 要は、必須ではないJavascriptを全てページから自動的に削除する ことで、フロントエンドのパフォーマンスを向上 22 柔軟性が高いので、React / Svelte /
Preact / Vue / SolidsJSなど 複数のフレームワークを混合可能
JavaScriptモジュールバンドラーの役割 • バンドラーとは、複数のJavaScriptファイルを1つのファイルにまと めるツール • ESモジュールやHTTP/2への対応、圧縮、トランスパイル、最適化 や、さまざまなブラウザ間の互換性確保などをする • Webpack •
Vite 23
Vite ・オンデマンドバンドル: 全てのコードとアセットを事前に バンドルする ・ES Moduleの仕組みを利用し、必要な時に必要な ファイルだけをコンパイルする => ほぼ瞬時にHot Module
Replacement(HMR)が行われる 24 https://github.com/vitejs/vite https://qiita.com/yoshii0110/items/6277626b0f558818da08
Viteの内部 Viteの内部は、esbuildとRollupというビルドツールを使用 • esbuild: ビルドツールで、Viteにおいては依存関係について事前 バンドルを生成するために使用 • Rollup: ビルドツールで、Viteでは最終的(本番環境向け)な バンドル(全てのファイルを一つにまとめる)を
作成するために使用 25 https://github.com/rollup/rollup https://github.com/evanw/esbuilda
最近のJavaScript Bundler事情 ここ最近動きがあり、Viteは今後esbuildとRollupの2つを 使用していたものを今後他のツールに置き換える それが Rolldown Rolldown ・Rust で書かれた JavaScript
バンドラ ・将来 Vite で使われることを念頭に開発されている(現在開発段階) ・Rollup 互換の API とプラグインインターフェースを提供 26 https://github.com/rolldown/rolldown
27 Demo
まとめ • CLIベースでラップされて気持ち悪かったGen1が 改善され使いやすくなった印象 • ”コードファースト”な体験により、開発者がアプリ開発に専念で きる • Node.jsのプロジェクトでローカル環境にて開発モードで 起動する(例:
"scripts": {"dev": "next dev"})ような感覚でサ ンドボックスのコードが自動反映されるなど、 フロントエンド開発に寄り添った機能を揃えてきた 28