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
cohe aoki
March 20, 2023
Programming
740
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
510
Amplify Boostup #2 Multi project using monorepo
coa00
0
74
LLMを使ったチームのプロダクト開発の生産性を向上させる取り組み
coa00
0
47
サーバレス技術を活用したエンジョイ スピード開発
coa00
1
380
【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
Laravel Boostに学ぶ、AIにPHPを書かせる技術 〜OSSの実装から蒸留するエージェント制御の王道〜
kentaroutakeda
3
640
Detecting Compromised CI with eBPF and Cilium Tetragon
lizrice
0
100
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
450
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
470
今さら聞けない .NET CLI
htkym
0
170
PHP Application における Kubernetes 内 gRPC 通信
ganchiku
0
580
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
4
1.8k
5分で問診!Composer セキュリティ健康診断
codmoninc
0
820
変わらないものが、変わるものを決める — 意図駆動開発 × イベントソーシング × イミュータブル | What Doesn't Change Decides What Can — IDD × Event Sourcing × Immutability
tomohisa
0
1.1k
全PRの83%がAIレビューだけでマージできるようになった開発組織はその後どうなったか
athug
1
1.3k
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
4
350
そこに3びきプロダクトがいるじゃろう——生成AI時代における“価値が届かない理由”の構造
kosuket
0
390
Featured
See All Featured
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
920
Ethics towards AI in product and experience design
skipperchong
2
340
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
650
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.2k
Paper Plane (Part 1)
katiecoart
PRO
1
10k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
560
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
Product Roadmaps are Hard
iamctodd
55
12k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
72
41k
Designing for Performance
lara
611
70k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
460
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