📐

【設計】中学生が理解できるようGPT4-oにCORSパターンを説明させてみた

2024/05/28に公開

はじめに

こんにちは、Takeです。都内の自社開発企業でエンジニアとして働いています。

CORSパターンについて触れる機会があり理解及び検証がてら、こちらを実践してみることにしました。

https://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/modernization-data-persistence/cqrs-pattern.html

プロンプト

中学生が理解できるように具体例を用いて丁寧に説明してください。
(リンク先の本文全てコピペ)

CQRSパターンを中学生向けに解説

CQRSパターンって何?

CQRS(コマンドクエリ責任分離)パターンは、アプリケーションの動きを2つに分ける方法です。この方法では、データの変更とデータの読み取りを別々に扱います。簡単に言うと、「データを変える部分」と「データを読み取る部分」を分ける仕組みです。

具体的な例

例えば、学校の成績を管理するアプリを考えてみましょう。

1. データの変更(コマンド)

  • 先生が成績を入力する(追加する)。
  • 生徒の成績を更新する。
  • 成績のミスを削除する。

2. データの読み取り(クエリ)

  • 生徒が自分の成績を見る。
  • 保護者が子どもの成績を確認する。
  • 先生がクラス全体の成績を確認する。

CQRSパターンの仕組み

1. コマンド(データの変更)

  • 先生が成績を入力します。このとき、データベースに「成績を追加する」という命令(コマンド)を送ります。
  • コマンドがデータベースに書き込まれます。

2. イベント(変更の通知)

  • データベースに新しい成績が追加されると、「成績が追加された」というイベントが発生します。
  • このイベントが、読み取り用のデータベースに「新しい成績を反映してね」という合図を送ります。

3. クエリ(データの読み取り)

  • 生徒や保護者が成績を確認するときは、読み取り用のデータベースから情報を取得します。
  • 読み取り用のデータベースは、最適な形でデータを保持しているので、素早く成績を表示できます。

具体例:Amazonのサービスで説明

1. コマンド側:DynamoDB

  • DynamoDBはたくさんの書き込み操作に強いデータベースです。
  • 先生が成績を入力すると、DynamoDBにデータが書き込まれます。

2. クエリ側:Aurora

  • Auroraは複雑な検索に強いデータベースです。
  • 生徒や保護者が成績を確認すると、Auroraからデータが読み取られます。

なぜCQRSパターンを使うの?

  • 効率的なデータ管理:書き込みと読み取りを分けることで、それぞれの処理を効率的に行えます。
  • スケーラビリティ:多くの書き込みや読み取りリクエストがあっても、システム全体がスムーズに動きます。
  • 柔軟性:データの変更と読み取りが分かれているため、それぞれの要件に最適なデータベースを選べます。

まとめ

CQRSパターンは、データの変更(コマンド)とデータの読み取り(クエリ)を分けることで、システムのパフォーマンスを向上させる設計方法です。AmazonのDynamoDBやAuroraなどのサービスを使うことで、大量のデータ操作を効率的に処理し、ユーザーに素早く情報を提供できます。このパターンを使うことで、複雑なシステムでも簡単にデータ管理が可能になります。

いかがでしたか?CQRSパターンの基本的な概念についてご理解していただけたでしょうか。このパターンを用いることで、データの書き込みと読み取りの処理を分けて効率化し、システムのパフォーマンスを向上させることができます。






という部分まで出力してもらいました。
学校の成績を管理するアプリに例えるところから始まり、データの書き込みや読み取りを分けることで処理を効率化、その他のメリットまで述べてもらいました。これでもう一度公式ドキュメントを確認すると理解度が高まった気がします。

https://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/modernization-data-persistence/cqrs-pattern.html

今後も初対面の概念と対峙した際に、少し考えてから全体像を掴むために利用することは良いかもしれません。

最後に

ここまで読んでいただきありがとうございました!
今回の記事が良かったと思ったらぜひ「いいね」を押していただけると嬉しいです 🎉

noteでも記事を執筆していますので、ぜひチェックしてみてください。
https://note.com/take_lifelog/n/n58df7ce7af6f

他にもこのようなことについて記載しているのでお読みいただければ幸いです。

https://zenn.dev/take_tech/articles/275e5f4242973d

https://zenn.dev/take_tech/articles/374817f256ec9d

最後までお読みいただき、誠にありがとうございました!

Discussion