Slide 1

Slide 1 text

Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved. Amplify Boostup #2 monorepo 運用による複数プロジェクト開発 株式会社 PURPOM MEDIA LAB (ピュアポムメディアラボ) 青木光平

Slide 2

Slide 2 text

Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved. 自己紹介 青木光平 (フロントエンドプログラマー、開発ディ レクター、UIUXデザイナー) 趣味 音楽、スプラトゥーン、メディアアート Amplifyいにしえ歴 3年 所属 Purpom Media Lab CEO Active Core CTO

Slide 3

Slide 3 text

Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved. 目次 1. 自己紹介 2. 事例紹介 3. Ampfliy monorepo 4. nest.js による lambda の開発 5. 最後に

Slide 4

Slide 4 text

Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved. プロダクト開発は冒険。発注するお客さんに楽しんでもらいたい。

Slide 5

Slide 5 text

Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved. 最小からはじめてサービスを大きくしたい MVP(最小限のプロダクト)を早期に 実際にユーザが触れることができる状 態を継続的に構築します。 お客様が実際にユーザー目線で触れ、 フィードバックをすることで、大きな ずれを防ぎます。 またリリース後もフィードバックを通 してアップデートすることで市場の指 示が得られるサービスを構築すること ができます。

Slide 6

Slide 6 text

Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved. デザインシステム デザイン、フロント構築も早くするた めにReact、Figmaのデザインシステ ムを日々育てています。 Amplify UIを使うとこのあたりも完全 に自動化できます。

Slide 7

Slide 7 text

Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved. どんなもの作っているの?(事例

Slide 8

Slide 8 text

Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved. 介護IoT iOS アプリ(2023年リリース予定

Slide 9

Slide 9 text

Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved. スタートアップのプロダクト

Slide 10

Slide 10 text

Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved. Ampfliy monorepo

Slide 11

Slide 11 text

Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved. ユースケース)リソースを共有しつつ複数のフロントアプ リケーションに分けたい Front Web CMS Admin AppSync Congito S3 library

Slide 12

Slide 12 text

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を実行して生成しま す。

Slide 13

Slide 13 text

Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved. 2. ビルドの設定 フロント - next.js の ホスティングの みを記述します。

Slide 14

Slide 14 text

Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved. 3. ビルドの設定 バックエンド - バックエンドのみを生成し ます。 - フロントは特に何も行いま せん。

Slide 15

Slide 15 text

Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved. 4. Graphql のコードの生成場所の調整 その1 - Amplifyが生成するGraphQL のコー ドをそれぞれに出力する - backend 配下に.graphqlconfig.yml を作成し、生成する場所を指定する ことが可能です。 - こちらは複数記述可能です。 - backend の中で amplify codegen を行うと指定したディレクトリに graqphql ディレクトリを作成する ことが可能です。

Slide 16

Slide 16 text

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 で生成

Slide 17

Slide 17 text

Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved. 6. 接続情報共有 - 通常だけど複雑 - aws-exports.js 経由で取得します。そのためにはフロント エンドに amplify pull を行う必要があります。 - 完全に分離 - フロント側でシンプルにするために環境は固定で切り替え る - 例 dotenv など

Slide 18

Slide 18 text

Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved.

Slide 19

Slide 19 text

Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved. 6. コードの共有 - npm, yarn の packages を使う - typesciptなら tsconfig の path を使う。 - next-transpile-modules(next.js) 限定を使う

Slide 20

Slide 20 text

Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved. 6.1 packages workspace を使う - root の package に packages を作って、nodemodules も monorepo 管理することもできます。 - 注意点 yarn classic では動作しますが、yarn berry 以降での動 作が不安定です。他にもこのケースは動かないなどがあるよう です。 - 反省)はまりどころが多いので、個人的には設定しなくても良 いのではと思います。

Slide 21

Slide 21 text

Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved. 6.2 tsconfig

Slide 22

Slide 22 text

Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved. nest.js による lambda の開発

Slide 23

Slide 23 text

Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved. ユースケース)アプリケーションの開発が進んだことによる functions 数の増加した - アプリケーションの開発が増えると function 数が増加します。 - 同じようなコードが増える。ライブラリの共通化 - デバッグの高速化が課題。 解決策が二つ - lambda Layer - monorepo

Slide 24

Slide 24 text

Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved. Nest.jsの特徴 - Webpack, node.js でビルドが 可能 - monorepo ベースの開発に対 応 - library の構築も可能 - TypeScript で対応可能

Slide 25

Slide 25 text

Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved.

Slide 26

Slide 26 text

Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved. Demo

Slide 27

Slide 27 text

Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved. 最後に ピュアポムメディアラボではAmplifyを使ったMVP開発の研究を行っています。 さらに高速開発をどうすればいいのか、工夫しながらやっています。 一緒に研究してくれる仲間募集中です。 [email protected] Twitter: coa00

Slide 28

Slide 28 text

Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved. MVP 技術を 様々な案件を行いながら、PDCA回しながら改善してい ます

Slide 29

Slide 29 text

Copyright © 2022 Purpom Media Lab Inc. All Rights Reserved. Thank You