Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JAWS-UG千葉支部 x 彩の国埼玉支部 LTバトル形式勉強会 〜目黒より愛をこめて〜

Avatar for komakichi komakichi
July 18, 2025
40

JAWS-UG千葉支部 x 彩の国埼玉支部 LTバトル形式勉強会 〜目黒より愛をこめて〜

Avatar for komakichi

komakichi

July 18, 2025
Tweet

Transcript

  1. Amplify Gen 2 で OpenSearch を 併用したファセット検索の実現 2025 / 07

    / 09 JAWS-UG千葉支部 x 彩の国埼玉支部 LTバトル形式勉強会 〜目黒より愛をこめて〜 小巻 玖美 (こまきち)
  2. WHO AM I ? X:@komakichidev 職種: Webエンジニア(バックエンドメインR " 2025 Japan

    AWS Top Engineers (ServiceR " AWS Community Builders (AI Engineering) 小巻 玖美(こまきち) こころは埼玉県ふじみ野市(出身) からだは千葉県船橋市(在住)
  3. AWS Amplify とは? 主な機能 6 認証 (Auth7 6 AP2 6

    データベー# 6 ホスティン 6 ストレー 6 関数 サーバーレスなアプリケーションの開発・運用を効率化するフレームワーク API接続や認証処理の追加がアプリケーション側で簡単に実装可能 https://aws.amazon.com/jp/amplify/
  4. 1 2 3 4 5 6 7 8 9 10

    11 12 13 14 15 16 17 query SearchPeanuts { ( filter { minPrice , maxPrice , flavorProfiles [ , ] } ) { items { varietyId name price flavorProfiles } nextToken } } listPeanuts : : : : 1000 3000 "甘い" "濃厚" 実際のクエリ例 AppSync のクエリの と DynamoDB の は違う Query Query なぜ Amazon DynamoDB では難しい?(おまけ) フロントエンド側で叩く時は query と見えるが、 実際の Amazon DynamoDB への操作は PK が 指定されていないのでScan
  5. G Amazon DynamoDBでも GSI 前方一致は実現可能
 → Scanにすれば中間一致、後方一致も可E G Scan を使わずパフォーマンスも出したい。中間一致もやりたい。

    なぜ Amazon DynamoDB では難しい? こういう時は Amazon OpenSearch Service を検討してみましょう 最小構成で2ノードで100ドルかかるけど…
  6. Amplify Gen 1 時代は簡単でした 1 2 3 4 5 6

    7 8 9 10 11 12 type type Chat @ (rules [ { allow owner } ]) { id name String message [Message] } Message @ (rules [ { allow owner } ]) { id text String chatId chat Chat @ (fields [ ]) } @ @ : : : ! : : @ @ @ : : : ! : : ! @ : : model searchable auth hasMany model searchable auth index belongsTo ID ID ID "chatId" どうやって AWS Amplify で Amazon OpenSearch Service を作るか DynamoDBで定義したスキーマに@searchable を加えるだけでOpenSearch連携が可能
  7. OpenSearch側の作成、AppSyncのクエリ、 GraphQLリゾルバー 全て自分で作成する必要があります こんな長いのを書かないといけないです  → その代わりW  Amazon OpenSearch Service

    のエンジン・バージョンを選べるようにな りました
 (ElasticSearch → OpenSearchも選べる™  Amazon OpenSearch Service 側の設定も自由にできるようになりました CDKで全て定義しないといけなくなりました。 Gen 2 からちょっと大変になりました
  8. 再掲)AWS Amplify とは? 主な機能 9 認証 (Auth@ 9 AP5 9

    データベー& 9 ホスティン# 9 ストレー! 9 関数 サーバーレスなアプリケーションの開発・運用を効率化するフレームワーク API接続や認証処理の追加がアプリケーション側で簡単に実装可能 https://aws.amazon.com/jp/amplify/
  9. 「AWS Amplify、全然簡単じゃないじゃん」そう思った方もいるはず 結果的に 要件に柔軟に対応するなら以下が必要ƒ H OpenSearch (Elasticsearch) の知D H DynamoDBのNoSQLの設計知D

    H AppSyncを使うならGraphQLの知識 https://aws.amazon.com/jp/amplify/ クラウドの専門知識は不要だけど、 クラウドじゃ無い専門知識は必要に なる!!!(こともある)
  10. AWS Amplify といい関係性でありたい a Gen2からはスキーマをTypeScriptで定義して、
 その定義したものを型として参照できる  作りたいアプリが爆速でデプロイできる点は、何にも変え難い体験  基本的な

    AWS AppSync, Amazon DynamoDB, Amazon Cognito の構成を取る のであれば、最も簡単にアプリケーションが作成できる AWS Amplify 好きなんですが、やっぱり運用していくと疑問に思うこともある 「「これ CDK の方がいいんじゃないか??」」 → フロントエンドの実装が楽になりました → 昨今の生成AIのコーディングとも相性がいい → Amazon RDS, Amazon Aurora のような VPC が必要になるサービスを使いたいのであれば、
   CDKと併用したり、全てをCDKに寄せた方がいい場合もある But
  11. “抽象化は、作業する時間を省略してくれるが、 学ぶ時間を省略するわけではない” “So the abstractions save us time working, but

    they don’t save us time learning.” Joel Spolsky, "The Law of Leaky Abstractions", Joel on Software https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-abstractions/ 漏れのある抽象化
  12. “抽象化は、作業する時間を省略してくれるが、 学ぶ時間を省略するわけではない” “So the abstractions save us time working, but

    they don’t save us time learning.” Joel Spolsky, "The Law of Leaky Abstractions", Joel on Software https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-abstractions/ 漏れのある抽象化 AWS Amplify も作業する時間を省略してくれるが、 学ぶ時間を省略するわけではない Amplifyの欠点というよりは、 高度な抽象化ツールに共通するトレードオフの性質