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 Boostup #2 monorepo 運用による複数プロジェクト開発
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
cohe aoki
March 20, 2023
Programming
750
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Amplify Boostup #2 monorepo 運用による複数プロジェクト開発
cohe aoki
March 20, 2023
More Decks by cohe aoki
See All by cohe aoki
BMG が生成したピッチ資料のデモ
coa00
0
540
Amplify Boostup #2 Multi project using monorepo
coa00
0
76
LLMを使ったチームのプロダクト開発の生産性を向上させる取り組み
coa00
0
47
サーバレス技術を活用したエンジョイ スピード開発
coa00
1
390
【Amplify Japan UG x Startup】Amplify チームによる プロダクト開発
coa00
0
710
Expo と Amplifyを使って Webとアプリを同時開発
coa00
0
1.4k
Expo & Amplifyを使ってWebとアプリを同時開発した話
coa00
2
1k
Other Decks in Programming
See All in Programming
AIに既存システムを理解させる技術 ~レガシーを見捨てないハーネスエンジニアリング入門~
ochtum
0
150
まずはプロンプトガイドを読もう、話はそれからだ
kiakiraki
1
210
170k Jobs a Day on GKE: Scaling Mercari's CI Platform - and What's Next for AI-Native Development
junyaokabe
0
120
Pythonの実行はどこまで賢くなったのか? CPythonとPyPyから見る最適化のしくみ
curekoshimizu
3
1.9k
AI Readyの正体はデータマネジメントだ メダリオン2.0の最前線
freee
PRO
0
380
FastAPI の並行処理モデルを完全に理解する
hoto17296
8
3k
30年振りにコンパイラの定数整数除算を改善した
herumi
9
4.2k
How I Won Prize Money at a Hackathon Using Codex and Symphony Alpha
yasei_no_otoko
0
120
Claude Code全社展開のためにやったことn選~プラグイン302個・コミッター271人を支えるために~
kenchan
5
1.7k
tsc.rip を支える技術 / Kyoto.なんか #8
susisu
0
280
Go 1.27からのGODEBUG / Go 1.27 リリースパーティ #go127party
mazrean
0
220
AWS DevOps AgentのAzure接続機能を検証して見えた活用法/Use Cases Verified for the AWS DevOps Agent's Azure Connectivity Feature
masakiokuda
1
270
Featured
See All Featured
The Language of Interfaces
destraynor
162
27k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
580
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.5k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
Claude Code のすすめ
schroneko
67
230k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.8k
Mind Mapping
helmedeiros
PRO
1
330
How to make the Groovebox
asonas
2
2.3k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Visualization
eitanlees
152
17k
Transcript
Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved.
Amplify Boostup #2 monorepo 運用による複数プロジェクト開発 株式会社 PURPOM MEDIA LAB (ピュアポムメディアラボ) 青木光平
Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved.
自己紹介 青木光平 (フロントエンドプログラマー、開発ディ レクター、UIUXデザイナー) 趣味 音楽、スプラトゥーン、メディアアート Amplifyいにしえ歴 3年 所属 Purpom Media Lab CEO Active Core CTO
Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved.
目次 1. 自己紹介 2. 事例紹介 3. Ampfliy monorepo 4. nest.js による lambda の開発 5. 最後に
Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved.
プロダクト開発は冒険。発注するお客さんに楽しんでもらいたい。
Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved.
最小からはじめてサービスを大きくしたい MVP(最小限のプロダクト)を早期に 実際にユーザが触れることができる状 態を継続的に構築します。 お客様が実際にユーザー目線で触れ、 フィードバックをすることで、大きな ずれを防ぎます。 またリリース後もフィードバックを通 してアップデートすることで市場の指 示が得られるサービスを構築すること ができます。
Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved.
デザインシステム デザイン、フロント構築も早くするた めにReact、Figmaのデザインシステ ムを日々育てています。 Amplify UIを使うとこのあたりも完全 に自動化できます。
Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved.
どんなもの作っているの?(事例
Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved.
介護IoT iOS アプリ(2023年リリース予定
Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved.
スタートアップのプロダクト
Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved.
Ampfliy monorepo
Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved.
ユースケース)リソースを共有しつつ複数のフロントアプ リケーションに分けたい Front Web CMS Admin AppSync Congito S3 library
Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved.
1. ディレクトリを作る apps/ backend amplify nextApp1 src nextApp2 https://docs.aws.amazon.com/ja_jp/amplify/latest/userguide/monorepo-configuration.html - apps ディレクトリ配下にbackend 飲み のディレクトリ、フロントエンドディレ クトリをそれぞれ作成 - backend は amplify init を行いバックエ ンド生成を実施。 - nextApp1, nextApp2 はnpx create-next-appを実行して生成しま す。
Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved.
2. ビルドの設定 フロント - next.js の ホスティングの みを記述します。
Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved.
3. ビルドの設定 バックエンド - バックエンドのみを生成し ます。 - フロントは特に何も行いま せん。
Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved.
4. Graphql のコードの生成場所の調整 その1 - Amplifyが生成するGraphQL のコー ドをそれぞれに出力する - backend 配下に.graphqlconfig.yml を作成し、生成する場所を指定する ことが可能です。 - こちらは複数記述可能です。 - backend の中で amplify codegen を行うと指定したディレクトリに graqphql ディレクトリを作成する ことが可能です。
Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved.
4. Graphql のコードの生成場所の調整 その2 1. フロントエンドで aws appsync get-introspection-schema --api-id {API ID} --format JSON schema.json 2. .graphqlconfig.yml を作成、 schemePathは、1でダウン ロードしたファイルを指定 3. amplify code gen で生成
Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved.
6. 接続情報共有 - 通常だけど複雑 - aws-exports.js 経由で取得します。そのためにはフロント エンドに amplify pull を行う必要があります。 - 完全に分離 - フロント側でシンプルにするために環境は固定で切り替え る - 例 dotenv など
Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved.
Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved.
6. コードの共有 - npm, yarn の packages を使う - typesciptなら tsconfig の path を使う。 - next-transpile-modules(next.js) 限定を使う
Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved.
6.1 packages workspace を使う - root の package に packages を作って、nodemodules も monorepo 管理することもできます。 - 注意点 yarn classic では動作しますが、yarn berry 以降での動 作が不安定です。他にもこのケースは動かないなどがあるよう です。 - 反省)はまりどころが多いので、個人的には設定しなくても良 いのではと思います。
Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved.
6.2 tsconfig
Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved.
nest.js による lambda の開発
Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved.
ユースケース)アプリケーションの開発が進んだことによる functions 数の増加した - アプリケーションの開発が増えると function 数が増加します。 - 同じようなコードが増える。ライブラリの共通化 - デバッグの高速化が課題。 解決策が二つ - lambda Layer - monorepo
Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved.
Nest.jsの特徴 - Webpack, node.js でビルドが 可能 - monorepo ベースの開発に対 応 - library の構築も可能 - TypeScript で対応可能
Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved.
Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved.
Demo
Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved.
最後に ピュアポムメディアラボではAmplifyを使ったMVP開発の研究を行っています。 さらに高速開発をどうすればいいのか、工夫しながらやっています。 一緒に研究してくれる仲間募集中です。
[email protected]
Twitter: coa00
Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved.
MVP 技術を 様々な案件を行いながら、PDCA回しながら改善してい ます
Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved.
Thank You