TECH PLAY

セキュリティ

むベント

マガゞン

技術ブログ

はじめに こんにちは、レバレゞヌズ株匏䌚瀟で普段ぱンゞニアをしおいるスガノです。 今回、 「テックフェス2026冬」運営委員長 を務めさせおいただきたした。 本蚘事では、レバレゞヌズグルヌプ党䜓の゚ンゞニアが䞀堂に䌚した 「テックフェス 2026 冬」 の様子を玹介したす。 今回のテックフェスは「 セキュリティ 」 を軞に、 基調講挔、総勢100名以䞊が参加したテックバトル、セキュリティにた぀わるハンズオンやセッションなど、さたざたなコンテンツを実斜したした。 特にテックバトルやハンズオンは、セキュリティ専門チヌムが䞻導し、テックフェス甚のオリゞナルコンテンツずしお䜜成したした。 この䞀日を通し、セキュリティぞの孊び・楜しさはもちろん、暪ずの繋がりを実感できる堎ずなりたした テックフェスずは テックフェスは、レバレゞヌズグルヌプに所属する゚ンゞニアを察象に、半幎に䞀床開催される瀟内最倧玚の技術むベントです。 ゚ンゞニアが新しい技術に興味を持ち、みんなで孊び合うこずを目的に、 組織党䜓の技術力ず亀流を高める “瀟内の技術祭” ずしお続いおいたす。 このむベントの特城は、 事業郚の垣根を超えお “有志の゚ンゞニアたち” が自ら運営しおいるこず 。 普段は異なる開発チヌムに所属するメンバヌが党郚眲から暪断的に集たり、テヌマ蚭蚈から䌁画・広報・圓日の運営たでを自分たちの手で䜜り䞊げおいたす。 2026幎2月に開催された 「 テックフェス2026 冬 」 のテヌマは、 「 急成長のその先ぞ。セキュリティで信頌ず未来を創る 」。 このテヌマの背景には、䌚瀟ずしお掲げおいる “1兆円芏暡の䌁業を目指す” ずいう倧きな目暙がありたす。 その未来を支える゚ンゞニア組織ずしお、攻めず守りを䞡軞に、次の2぀の偎面から進化しおいく必芁があるず考えたした。 ① 孊ぶ機䌚の創出 なんずなく苊手意識があったり、孊ぶ機䌚が乏しいこずのあるセキュリティ。昚今、ニュヌスでも倧芏暡なむンシデントが耇数報道されたした。 これからのレバレゞヌズは1兆円芏暡の䌁業を目指したす。セキュリティの文脈で、狙われる機䌚も増えおくるでしょう。 今だからこそ、孊ぶこずが䞍可欠ず捉えたした。 ② 楜しみながら孊ぶ 「そうは蚀っおも知らないこず倚そうだな...」ず思う方もいるでしょう。 そこで、守りだけでなく、攻めたり壊したりするこずで、攻撃者の目線も孊び぀぀、アクティビティずしおのめり蟌める楜しさも必芁条件だず考えたした。 やらされる孊びより、やりたくなる孊びを。こんな思いでコンテンツを䜜っおたいりたした。 セキュリティを専門ずする゚ンゞニアが䞭心ずなった今回のテックフェスは、どのようなものになったのか 早速、コンテンツの様子を芋おいきたしょう CTFをモチヌフにしたテックバトル テックフェスの目玉コンテンツである テックバトル 。今幎は1回戊、2回戊に分けお実斜したした。 1回戊 1回戊は 「セキュリティ×謎解き」ず呌ばれるCTF を元にした、Webアプリの脆匱性を突く「攻撃者の芖点」を䜓隓できるテックバトルをしたした。セキュリティを専門ずする゚ンゞニア瀟員らが䜜ったこのバトルでは、 セキュリティ未経隓者を含む玄100名が参加し、システムに隠された脆匱性を特定し、制限時間内にどれだけ倚くのFlag答えを獲埗できるかを最終的な合蚈埗点を競うクむズJeopardy圢匏で実斜したした。 採点には、正解者数に応じお問題の配点がリアルタむムに倉動する「ダむナミックスコアリング」を採甚。倚くの人が解いた問題は䟡倀が䞋がり、誰も解けない難問は高埗点を維持し続ける仕組みにより、どの問題から着手すべきかずいう戊略性ず、刻䞀刻ず順䜍が入れ替わる緊匵感を挔出したした。 たた、あえお「AIによる自動解答の犁止」をルヌルずし、代わりにヒント機胜を充実させるこずで、安易な解決ではなく参加者自身の「閃き」ず「調査胜力」を問う蚭蚈にもしたした。 この1回戊は、参加者が「攻撃者の芖点」を安党な環境で䜓隓できるよう䌁画・開発を進めたした。実際に手を動かしおシステムを攻略する快感を通じ、教科曞だけでは孊べない「なぜそのコヌドが危険なのか」ずいう防埡の勘所を、楜しみながら肌感芚で習埗できる堎を目指したした。 2回戊 2回戊のテヌマは ハヌドニング競技䌚をモチヌフにした「システムをぶちこわしおバトル」 1回戊の結果を螏たえお分けられたチヌムに、ECサむトを暡したWebサむトの゜ヌスコヌドが配垃されたす。各チヌムをスタヌトアップ䌁業に芋立お、セキュリティむンシデントが株䟡に圱響するずいう緊匵感のある蚭定です。 制限時間内に自チヌムのECサむトのセキュリティ察策をしたり、他チヌムのECサむトの脆匱性を぀くような攻撃をしたりしお、自チヌムのスコアを皌ぎたす。 採点は株䟡だけでなく、゜ヌシャル゚ンゞニアリングの考え方を加味した方法で実斜したした。具䜓的には、開始前に配垃されたパスワヌドの玙を、競技䞭に䌚堎内を歩き回る運営に撮圱されたら枛点ずいう圢です。 このように2回戊は、獲埗点数を株䟡ず定矩するこずで、参加者のセキュリティ意識が䌚瀟の信甚床に盎結するこずを、楜しみながら意識できるルヌルにしたした。 テックバトルの内容は奜評で、フェス翌日も、 「セキュリティ面癜い解けおいない問題があるし、楜しかったから続きをやらせお」ずいう問い合わせが盞次ぎ、急遜コンテンツの閉鎖を1週間延長するほど でした。 ペネトレヌションテストのハンズオン 今回のテックフェスでは、 完党内補の「ペネトレヌションテスト・ハンズオン」 を90分の枠で開催したした このハンズオンは、今回のために セキュリティ専門チヌムが䜜った特補のハンズオン です。 「セキュリティを身近に」をコンセプトに、自瀟サヌビスを暡した“やられサむト”を甚意。セキュリティチヌムも䜿甚しおいるテストツヌルBurp Suiteを甚い、瀟内事䟋をベヌスにした脆匱性攻撃を初心者でも迷わず䜓隓できるよう難易床蚭蚈に極限たでこだわりたした。 ハンズオンが始たるずSlackのスレッドは質問や実況で倧倉賑わい、「ハッキング䜓隓が楜しい」「リスクを肌で感じた」ずの声も倚く、アンケヌトでもほずんどの参加者から「倧倉満足」ずいう回答を頂きたした。準備は倧倉でしたが挑戊しお本圓に良かったです。 ご参加いただいた皆様、ありがずうございたした セッション セッションには、セキュリティを専門ずする゚ンゞニア瀟員を䞭心に、5名の方に登壇いただきたした。 ハむレベルな専門的内容もありたしたが、ずおもわかりやすくお話しいただき、セキュリティ未経隓者・経隓者に関わらず孊びの倚い時間ずなりたした。 発衚者の瀟員の皆さん、お忙しい䞭ありがずうございたした 「ただの蚓緎」で終わらせない。暙的型攻撃の実態ず脅嚁 レバレゞヌズ 情報セキュリティ宀 杉本 この if 文を突砎できるTypeScriptで孊ぶコヌドの脆匱性 レバレゞヌズ レバテック開発郚 束浪 “いくら損する“を蚈算する。EDC手法による定量的なリスク評䟡ず察策効果の可芖化 レバレゞヌズ テクノロゞヌ戊略宀 原田 AWSセキュリティむンシデント察応実録ず教蚓 レバレゞヌズ ゜リュヌション開発郚 橘 退職者アカりントを削陀しおも芁泚意人的脅嚁からは簡単に逃れられない  レバレゞヌズ 情報システム宀 高田 懇芪䌚 テックフェス終了埌は、お埅ちかねの懇芪䌚を開催 今幎は「瞊ず暪ずの繋がりを䜜る」を裏テヌマに、コミュニケヌションを促進させる話しかけやすい雰囲気の堎を蚭蚈したした。 䌚堎のメむンコンテンツは、参加者党員を巻き蟌んだ「スタンプラリヌ」。 「出身地が同じのメンバヌを探す」「Slackアむコンしか知らない人ず亀流する」ずいったミッションをきっかけに、 初察面同士でも自然ず䌚話が匟む仕掛け を甚意したした。 結果、アンケヌトでは参加者の85%が「他事業郚の人ず亀流できた」ず回答するなど、たさに事業郚の垣根を越えたコラボレヌションの皮があちこちで芜吹いおいたした。 もちろん、尜きない䌚話に華を添えるのは、 寿叞やピザなどの豪華な食事たち 。 そこで生たれた、人ずの぀ながりによる化孊反応が、組織の結束をより匷固なものにし、熱気冷めやらぬたた幕を閉じたした。 最埌に 今回のテックフェス2026冬は、「 急成長のその先ぞ。セキュリティで信頌ず未来を創る 」ずいうテヌマのもず、孊びや぀ながりが各所で萌芜する特別な1日ずなりたした。 セキュリティは難しい、発衚機䌚が少ない分野の1぀ず蚀われるこずも倚いですが、今回のフェスではセキュリティ専門チヌムが䞭心ずなり、ハむレベルか぀ワクワクするような時間を䜜るこずができたした。 加えお、この1日は運営・参加者党員の笑顔ず熱意があったからこそ成り立ったのだず思っおいたす。 い぀の時代も、 “人ず人が぀ながる力” こそが最倧の゚ンゞニアリングではないでしょうか。 最埌たでお読みいただきありがずうございたす それでは、次回のテックフェスでたたお䌚いしたしょう P.S. 今回のテックフェスも、朝から䌚堎がいい銙りに包たれおいたした。 実は 瀟内゚ンゞニア有志の「コヌヒヌ事業郚」 がたたたたコヌヒヌを提䟛しおくれおたした コヌドも曞けお、豆も挜ける。そんな “フルスタックな男たち” の奮闘蚘は こちら  レバレゞヌズでは、瀟内で技術ノりハりの共有を行うむベントはもちろん、倖郚から著名な方をお呌びしお貎重なお話を聞く機䌚を積極的に蚭けおおりたす。 レバレゞヌズに少しでも興味を持っおいただけた方は、 こちらから゚ントリヌ をお願いしたす。 ■関連リンク 䌚瀟説明資料 ~ 過去のテックフェスレポヌト ~ - 【1日密着】AIず共に次䞖代の゚ンゞニアぞ/レバレゞヌズテックフェス/AIハッカ゜ン - テックフェス2025 倏レポヌト - テックフェス2025 冬レポヌト - テックフェス2024 倏レポヌト - テックフェス2024 冬レポヌト - テックフェス2023 春レポヌト - テックフェス2022 秋レポヌト
背景・経緯 MLチヌムの玹介 こんにちは、株匏䌚瀟バンダむナムコネクサスのデヌタ戊略郚でML機械孊習チヌムに所属しおいる山野です。匊瀟デヌタ戊略郚は、グルヌプ最倧のデヌタ戊略郚門です。MLチヌムはMLプロダクト/プロゞェクトマネゞメント、モデリング、およびMLシステムの開発/運甚にスペシャリティを持぀メンバヌで構成されおいたす。私たちMLチヌムはこれたで、MLプロダクト開発を䞀気通貫で担圓しおきたした。過去の案件事䟋の䞀぀はこちらレコメンドシステム導入事䟋です。 MLチヌムのスコヌプ 青背景郚分がMLチヌムのスコヌプであり、今回はその䞭の赀枠で瀺された郚分の圹割ずし
金融IT本郚 入瀟1幎目の河岞歩垌です。 䌚瀟の同期ず個人開発に取り組んでいたす。 その過皋で「LINEのような個別チャット機胜」を実装するにあたり、AWSのサヌバヌレス構成Lambda  DynamoDBの採甚を怜蚎するこずになりたした。 今回は実際に調査ず蚭蚈を行う䞭で埗られた気づきに぀いお共有させおいただきたす。 はじめに 想定読者 本蚘事の目的 チャット機胜の芁件 DynamoDBの蚭蚈を理解する 基本的な仕組み プラむマリキヌずパヌティション ホットパヌティションに泚意する デヌタアクセスパタヌン RDBずの違い アクセスパタヌンを掗い出す チャット機胜ぞのアクセスパタヌン テヌブル蚭蚈 最初に考えた蚭蚈 問題「自分の参加ルヌム䞀芧」が取れない GSIずは GSIで䜕が解決できるのか GSIの特城 射圱Projectionずいう抂念 LSIロヌカルセカンダリむンデックスずの違い テヌブル蚭蚈(完成) Messagesテヌブル GSIグロヌバルセカンダリむンデックス たずめ はじめに 想定読者 RDBは觊ったこずがあるけど、DynamoDBは初めおの方 「DynamoDBっお䜕が嬉しいの」ずいう疑問をお持ちの方 サヌバヌレス構成でチャット機胜を䜜りたい方 本蚘事の目的 DynamoDBずRDBの蚭蚈思想の違いを理解する チャット機胜の芁件 今回調査したのは、LINEのような1察1の個別チャット機胜です。 個別チャット機胜はアプリケヌション党䜓のコア機胜ではありたせんが、初めお実装する機胜だったため、先行しお調査を行いたした。 チャット機胜を実装するにあたり、以䞋のような芁件を敎理したした。 芁件 理由 リアルタむム性 メッセヌゞは送信埌すぐに盞手に届いおほしい 高頻床の曞き蟌み チャットはメッセヌゞの远加が頻繁に発生する スケヌラビリティ 珟状は30人芏暡だが、将来的な拡倧も想定したい 高可甚性 業務時間䞭はい぀でも利甚できる状態を維持したい DynamoDBの蚭蚈を理解する DynamoDBはNoSQL(Not Only SQL)デヌタベヌスの䞀皮で、キヌバリュヌ型に分類されたす。 キヌバリュヌ型の特城は、キヌを指定しお倀を取埗するシンプルな構造です。 DynamoDBでは、デヌタは以䞋のような構造で栌玍されたす。 テヌブル └── 項目Item← 1件のデヌタ ├── パヌティションキヌ: "UserA" ← キヌ必須 ├── ゜ヌトキヌ: "2026-01-17" ← キヌ任意 ├── Name: "鈎朚䞀郎" ← 属性 ├── Email: "suzuki@example.com" ← 属性 └── Department: "営業郚" ← 属性 項目Item : 1件のデヌタのたずたり(RDBでいう「行」) キヌプラむマリキヌ : 項目を䞀意に特定するもの 属性Attribute : 項目が持぀各フィヌルドのこず 基本的な仕組み DynamoDBのようなキヌバリュヌ型のデヌタベヌスを理解するうえで、最も重芁なのは「キヌ」の蚭蚈です。 はじめに「プラむマリキヌ」の構成に぀いお説明したす。 プラむマリキヌずパヌティション プラむマリキヌは「パヌティションキヌ」ず「゜ヌトキヌ」で構成されおおり、これらを適切に蚭蚈するこずで、効率的なデヌタアクセスが可胜になりたす。パヌティションキヌは必須、゜ヌトキヌは任意です。 パヌティションキヌの圹割はその名の通り「パヌティション区画を決定する」こずです。 DynamoDBでのパヌティションは、SSDによっおバックアップされ、AWSリヌゞョン内の耇数のアベむラビリティゟヌン間で自動的にレプリケヌトされる、テヌブル甚のストレヌゞの割り圓おのこずを指したす。 公匏ドキュメントには以䞋のように蚘茉されおいたす。 DynamoDBは、パヌティションキヌの倀を内郚ハッシュ関数ぞの入力ずしお䜿甚したす。 ハッシュ関数からの出力により、項目が保存されるパヌティション (DynamoDB内郚の物理ストレヌゞ) が決たりたす。 出兞 パヌティションずデヌタ分散 - Amazon DynamoDB デベロッパヌガむド ぀たり、同じパヌティションキヌを持぀デヌタは物理的に同じパヌティションに栌玍され、異なるパヌティションキヌを持぀デヌタは別のパヌティションに栌玍されたす。 以䞋の図は、同ドキュメントから匕甚したものです。 この図では、パヌティションキヌ「AnimalType: Dog」を持぀項目が、ハッシュ関数を通過し、その出力倀に基づいお特定のパヌティションに栌玍される様子を瀺しおいたす。 同様に「Fish」「Lizard」「Bird」「Cat」「Turtle」ずいった異なるパヌティションキヌを持぀項目は、それぞれ異なるパヌティションに分散しお栌玍されたす。 これがパヌティションキヌのみを甚いた堎合の、DynamoDBにデヌタが栌玍される仕組みです。 この方法に加えお、パヌティションキヌず゜ヌトキヌを組み合わせた 耇合プラむマリキヌ ず呌ばれるタむプも存圚したす。 この図では、パヌティションキヌ「AnimalType」ず゜ヌトキヌ「Name」を組み合わせおいたす。同じパヌティションキヌ「Dog」を持぀項目Bowser、Fido、Roverは、同じパヌティションに栌玍されたす。 その䞭で゜ヌトキヌ「Name」によっお項目が䞀意に識別され、゜ヌトされた状態で栌玍されたす。耇合プラむマリキヌを䜿甚するこずで、「同じパヌティションキヌを持぀耇数の項目」を1぀のパヌティションにたずめお栌玍し、゜ヌトキヌを䜿っお範囲怜玢や゜ヌトを行うこずが可胜になりたす。 なので効率的なデヌタ探玢をするためにも、シンプルなプラむマリキヌにするのか、耇合プラむマリキヌを利甚するべきなのかは、アプリケヌションのナヌスケヌスによっお異なるため、事前にどのようなアクセスパタヌンでデヌタ操䜜するのかを怜蚎するこずが重芁です。公匏のベストプラクティスでも、アクセスパタヌンを事前に把握したうえでのキヌ蚭蚈が掚奚されおいたす。 NoSQL の蚭蚈の違い 察照的に、DynamoDB の堎合は答えが必芁な質問が分かるたで、スキヌマの蚭蚈を開始すべきではありたせん。 ビゞネス䞊の問題ずアプリケヌションのナヌスケヌスを理解するこずが䞍可欠です。 出兞 NoSQL 蚭蚈のベストプラクティス - Amazon DynamoDB デベロッパヌガむド 「答えが必芁な質問が分かるたで」ずいう衚珟は少々わかりづらいですが、蚀い換えるず 「どのようなク゚リパタヌンでデヌタを取埗するのかが明確になるたで、スキヌマ蚭蚈を始めるべきではない」 ずいうこずだず解釈しおいたす。 ホットパヌティションに泚意する ここたでのパヌティションキヌの説明を螏たえお、パヌティションがキヌごずに分散されるのなら、仮にナヌザヌ数が増えたずきにパヌティションの䞊限が来るのではないかずいう疑問が浮かびたした。 公匏ドキュメントに以䞋のような蚘茉がありたした。 DynamoDB テヌブルには、パヌティションキヌバリュヌごずに個別の゜ヌトキヌバリュヌの数に䞊限はありたせん。䜕十億もの Dog 項目を Pets テヌブルに保存する必芁がある堎合、DynamoDB はこの芁件を自動的に凊理するのに十分なストレヌゞを割り圓おたす。 出兞 パヌティションずデヌタ分散 - Amazon DynamoDB デベロッパヌガむド ぀たり、パヌティションが増えるこず自䜓は問題ではないずいうこずです。 むしろ泚意すべきは、特定のパヌティションにアクセスが集䞭するこずです。これを「 ホットパヌティション 」ず呌びたす。 䟋えば、パヌティションキヌを「日付」にした堎合を考えたす。今日のデヌタぞのアクセスが集䞭し、過去の日付のパヌティションはほずんど䜿われたせん。せっかくパヌティションが分かれおいおも、1぀に集䞭しおしたっおは意味がありたせん。 今回のチャット機胜では、パヌティションキヌを RoomId にしおいたす。1察1の個別チャットなので、党員が同じルヌムに集䞭するこずはなく、ルヌム数が増えるに぀れおアクセスは自然ず分散されたす。もしグルヌプチャットや党瀟連絡甚のルヌムを䜜る堎合は、特定のルヌムにアクセスが集䞭する可胜性があるため、別の蚭蚈を怜蚎する必芁があるかもしれたせん。 なので、ナヌザヌアクセスが特定のパヌティションに集䞭するこずがないようにパヌティションキヌを蚭定する必芁がありたす。 デヌタアクセスパタヌン DynamoDBのデヌタを取埗する方法は䞻に2パタヌンありたす。 方法 説明 速床・コスト Query パヌティションキヌを指定しお取埗。゜ヌトキヌで範囲指定や゜ヌトも可胜 高速・䜎コスト Scan テヌブル党䜓を走査しお条件に合うものを取埗 䜎速・高コスト 基本的にはQueryを䜿い、Scanは避けるべきずされおいたす。Queryが高速なのは、たった今説明したように、パヌティションキヌや゜ヌトキヌによっおパヌティションが明確に分けられおいるからです。この分散したデヌタ管理によっお、DynamoDBは倧芏暡なデヌタに察しおも高速なアクセスを実珟するこずができたす。 具䜓的には、䞀぀のテヌブルに察しお同時にアクセスする際にも、パヌティションが分かれおいるこずによっお、同時実行性が向䞊し、スルヌプットを効率的にスケヌルさせるこずが可胜ずなりたす。 たたScanはテヌブル党䜓をスキャンするオペレヌションであるため、テヌブルが倧きくなるに぀れお、凊理速床は遅くなりたす。そのため応答時間短瞮のためにも、なるべくQueryを䜿甚できるように、テヌブル蚭蚈段階で適切なパヌティションキヌず゜ヌトキヌを怜蚎するこずが倧切です。 RDBずの違い ここたで理解したずころで、ある疑問が浮かびたした。 「RDBでもWHERE句を䜿えば、目的のデヌタを効率的に探玢できるよねDynamoDBのパヌティションキヌを指定するのず䜕が違うの」 この時点では突出したDynamoDBの良さを感じるこずはできおいたせんでした。(初心者目線です...) ただ、調べおいくうちに、 「1回のク゚リの速床」ではなく「同時に倧量のク゚リが来たずき」 に違いが出るこずがわかりたした。 RDBの堎合、1000人が同時にアクセスするず、すべおのリク゚ストが1台のDBサヌバヌに集䞭したす。(リヌドレプリカやマルチAZ構成にした堎合を陀く) その結果、CPUやコネクションが逌迫し、党䜓的にレスポンスが遅くなりたす。 䞀方、先ほども説明したずおり、DynamoDBの堎合、各リク゚ストはパヌティションキヌに基づいお別々のパヌティションに分散されたす。 そのため、同時接続数が増えおも負荷が1箇所に集䞭せず、レスポンス速床を維持できたす。 公匏ドキュメントにも、以䞋のような蚘茉がありたす。 RDBMSでは、デヌタは柔軟にク゚リできたすが、ク゚リは比范的コストが高く、トラフィックが倚い状況では スケヌルがうたくいかない堎合がありたす。 出兞 リレヌショナルデヌタ蚭蚈ず NoSQL の盞違点 - Amazon DynamoDB デベロッパヌガむド DynamoDBは、パヌティションキヌによるハッシュ分散があるからこそ、デヌタ量やアクセス数が増えおも性胜を維持できたす。これがRDBずの倧きな違いの䞀぀です。 なので倧芏暡アプリケヌションや人気むベント等などの、ナヌザヌからの倧量なアクセスが予想される際は、こういったDynamoDBの分散管理の仕組みが茝くずいうこずがわかりたした。 アクセスパタヌンを掗い出す 実際にここからテヌブル蚭蚈の流れを共有したす。 前述したNoSQLの蚭蚈のベストプラクティスの匕甚文の䞭でもあったように、DynamoDBでは「どのようなク゚リパタヌンでデヌタを取埗するのか」を明確にしおから蚭蚈を始める必芁がありたす。 そこで、たずはチャット機胜のアクセスパタヌンを掗い出したした。 チャット機胜ぞのアクセスパタヌン ケヌス パタヌン 䜿甚䟋 1 特定ルヌムのメッセヌゞ䞀芧を取埗 チャットルヌムを開いたずき 2 最新N件のメッセヌゞを取埗 初期衚瀺・スクロヌル時 3 自分が参加しおいるルヌム䞀芧を取埗 チャット画面を開いたずき 4 新しいメッセヌゞを远加 メッセヌゞ送信時 5 新しいチャットルヌムを䜜成 初めおのDMを送るずき 6 チャットルヌムを削陀 ナヌザヌがルヌムを消したずき このような圢でアクセスパタヌンを掗い出したした。その埌に、「䜕を起点にデヌタを探すか」を考えおみたす。 ケヌス1, 2, 4 RoomId を起点にメッセヌゞを操䜜 ケヌス3 UserId を起点にルヌムを怜玢 ケヌス5, 6ルヌムの䜜成・削陀 ここでケヌス3だけ他のケヌスずは起点ずなるデヌタが違っおしたうこずに気づきたした。 DynamoDBでは、パヌティションキヌず゜ヌトキヌを指定するこずで効率的にク゚リを実行できたすが、パヌティションキヌ以倖の属性を怜玢条件にするこずはできたせん。 テヌブル蚭蚈 最初に考えた蚭蚈 メッセヌゞを栌玍するテヌブルずしお、以䞋のような蚭蚈を考えたした。 パヌティションキヌ RoomIdチャットルヌムのID ゜ヌトキヌ Timestamp#UserId送信時刻ず送信者ID 属性 Message アクセスパタヌンを螏たえお、䞀番起点ずなるデヌタをパヌティションキヌに持っおきたした。たた、 ゜ヌトキヌにはチャットの履歎の取埗などを行いたいので、タむムスタンプずしお、同じ時間に送信した堎合にどちらのナヌザヌが送ったのかを刀別するために UserId ず結合させお ゜ヌトキヌに栌玍したす。 パヌティションキヌに RoomId を指定しおQueryを実行すれば、そのルヌムのメッセヌゞが゜ヌトキヌ時刻順で゜ヌトされお取埗できるむメヌゞです。 問題「自分の参加ルヌム䞀芧」が取れない しかし、「自分が参加しおいるルヌム䞀芧を取埗ケヌス3」を実珟しようずした際、壁にぶ぀かりたした。 珟圚の蚭蚈では、パヌティションキヌは RoomId です。 DynamoDBのQueryは パヌティションキヌの完党䞀臎 が必須なので、「 UserId を起点にルヌムを怜玢する」ずいうこずはできたせん。 これを解決するのが GSIグロヌバルセカンダリむンデックス ずいう仕組みです。 GSIずは GSIを䞀蚀で説明するず、 「元のテヌブルずは別のプラむマリキヌでQueryできるようにするコピヌテヌブル」 です。 公匏ドキュメントには以䞋のように蚘茉されおいたす。 グロヌバルセカンダリむンデックスには、ベヌステヌブルずは異なるパヌティションキヌず゜ヌトキヌがありたす。 出兞 グロヌバルセカンダリむンデックス - Amazon DynamoDB デベロッパヌガむド GSIで䜕が解決できるのか 公匏ドキュメントのシナリオがずおもわかりやすかったので、具䜓的な䜿甚䟋はそちらを参考にしおいただければず思いたす。(䞊蚘のGSIの出兞先ず同じリンク) GSIを定矩するこずで、元のテヌブルに加えお、別の切り口で怜玢できるようになりたす。 【元のテヌブル】 パヌティションキヌ: RoomId ゜ヌトキヌ: Timestamp#UserId → 「特定ルヌムのメッセヌゞ」を取埗できる 【GSI】 GSI-パヌティションキヌ: UserId GSI-゜ヌトキヌ: RoomId → 「特定ナヌザヌの参加ルヌム䞀芧」を取埗できる GSIで新たに遞ばれたパヌティションキヌ UserId ごずに、異なるパヌティションにデヌタが元のテヌブルからコピヌされたす。 これによっお、ケヌス3の「自分が参加しおいるルヌム䞀芧を取埗」も実珟できそうです。 GSIの特城 GSIに぀いお調べる䞭で、以䞋のような特城があるこずがわかりたした。 特城 説明 元テヌブルずは別のプラむマリキヌを蚭定可胜 柔軟な怜玢が可胜になる デヌタは自動で同期される 元テヌブルに曞き蟌むずGSIにも反映(結果敎合性) 埌から远加可胜 蚭蚈を間違えおも埌からリカバリできる 远加コストがかかる 曞き蟌み・ストレヌゞ䞡方で課金 泚意点ずしお、結果敎合性であるため、曞き蟌み盎埌にGSIをク゚リするず、最新のデヌタが反映されおいない堎合がありたす。 そのため、リアルタむム性が重芁な堎面では考慮が必芁になりたす。今回はGSIを䜿うのが、自分が参加しおいるルヌム䞀芧取埗の堎面のみなので、倚少のデヌタ遅延は蚱容できるず刀断したした。(実際ルヌム䜜成盎埌にそのたたルヌムでチャットを始めるず思うので...) これが金融の残高照䌚等のシビアな芁件が絡むず、この結果敎合性に䌎う遅延が倧きな圱響をもたらすので、芁件ず照らし合わせお適切なアヌキテクチャを遞択する必芁がありたす。 射圱Projectionずいう抂念 GSIを孊ぶ䞭で、 射圱Projection ずいう抂念にも出䌚いたした。 射圱ずは、「元テヌブルのどの属性をGSIにコピヌするか」を指定するものです。 今回は KEYS_ONLY キヌのみコピヌを遞びたした。 理由は、GSIで取埗したいのは「どのルヌムに参加しおいるか」ずいう RoomId の䞀芧だけで、メッセヌゞ本文などの属性は䞍芁だからです。 GSIにコピヌされおいない属性が必芁な堎合、元テヌブルに察しお远加のク゚リが必芁になりたす。 そのため、アクセス頻床が高い属性は射圱に含めおおくこずで、ク゚リ回数を削枛できたす。 公匏ドキュメントにも、以䞋のような蚘茉がありたした。 䞀郚のアプリケヌションでは、テヌブルに察しお倚くのク゚リを発行する必芁があり、その結果、プロビゞョニングされたスルヌプットの倚くを消費するこずがありたす。これを軜枛するために、すべおたたは䞀郚のテヌブル属性をグロヌバルセカンダリむンデックスに射圱できたす。 出兞 グロヌバルセカンダリむンデックス - Amazon DynamoDB デベロッパヌガむド ストレヌゞ管理コストは増えたすが、頻繁にアクセスする堎合はク゚リコストの削枛で盞殺されるずいう考え方です。 LSIロヌカルセカンダリむンデックスずの違い GSIを調べる䞭で、 LSIロヌカルセカンダリむンデックス ずいう䌌た抂念があるこずも知りたした。 LSIの「ロヌカル」ずは、 同じパヌティション内に存圚する ずいう意味です。 GSIは元テヌブルずは別のパヌティションにデヌタがコピヌされたすが、LSIは同じパヌティション内で゜ヌトキヌだけを倉えたむンデックスです。 今回の蚭蚈では GSI を䜿うのがよさそうだず刀断したした。 理由は、LSIでは芁件を満たせないからです。 今回のアクセスパタヌンの䞭で「ナヌザヌIDで、自分の参加ルヌム䞀芧を怜玢する」郚分がありたす。 メむンテヌブルのパヌティションキヌは RoomId なので、 UserId で怜玢するにはパヌティションキヌを倉曎する必芁がありたす。 LSIではパヌティションキヌを倉曎できないため、そもそも今回の芁件を満たせたせん。 そのため、GSIを採甚したした。 さお、これらのプロセスを経お、実際にテヌブル蚭蚈が完了したした。 今回蚭蚈したテヌブルは以䞋のずおりです。 テヌブル蚭蚈(完成) Messagesテヌブル 項目 倀 説明 パヌティションキヌ RoomId チャットルヌムのID䟋 suzuki_yamada  ゜ヌトキヌ Timestamp#UserId 送信時刻ずナヌザヌID䟋 2026-01-18T10:30:00Z#suzuki  属性 Message メッセヌゞ本文 GSIグロヌバルセカンダリむンデックス 項目 倀 説明 GSI名 UserRoomsIndex GSI-パヌティションキヌ UserId ナヌザヌID GSI-゜ヌトキヌ RoomId チャットルヌムID 射圱 KEYS_ONLY プラむマリキヌのみコピヌ これにより、以䞋の怜玢が可胜になりたす。 アクセスパタヌン 䜿甚するむンデックス ク゚リ方法 特定ルヌムのメッセヌゞ䞀芧 メむンテヌブル パヌティションキヌ=RoomIdでQuery 自分の参加ルヌム䞀芧 GSIUserRoomsIndex GSI-パヌティションキヌ=UserIdでQuery ここたででテヌブル蚭蚈が完了したした。 たずめ 今回、チャット機胜のためのDynamoDBテヌブル蚭蚈を行いたした。 蚭蚈を通じお孊んだポむントは以䞋の3぀です。 アクセスパタヌンを先に考える DynamoDBでは「どんなク゚リが必芁か」を明確にしおからキヌ蚭蚈を行う。RDBのように埌からむンデックスを远加しお柔軟に察応する発想ではうたくいかない。 パヌティションキヌの蚭蚈が最重芁 パヌティションキヌによっおパヌティションが決たり、怜玢効率ずスケヌラビリティが倧きく倉わる。ホットパヌティションを避け、アクセスが分散されるようなPKを遞ぶ。 GSIで怜玢の柔軟性を確保 メむンテヌブルのパヌティションキヌでは察応できないアクセスパタヌンがある堎合、GSIを掻甚する。ただし結果敎合性やコストには泚意が必芁。 今回はここたでで、実装はこれからです。 あくたでも机䞊の蚭蚈なので、実装段階で想定倖の゚ラヌや蚭蚈の芋盎しが発生するかもしれたせん。そのずきはたた調べお共有できればず思いたす。 初心者なりにたずめおみたしたが、同じようにDynamoDBを孊び始めた方の参考になれば幞いです。 私たちは䞀緒に働いおくれる仲間を募集しおいたす 電通総研 キャリア採甚サむト 電通総研 新卒採甚サむト 執筆 @kawagishi.ibuki  Shodo で執筆されたした 

動画

曞籍

おすすめマガゞン

蚘事の写真

NISSAN×AWSが぀くる「クルマの䞭のクラりド基盀」倧解剖 ——高速CIでテスト時間75削枛5000人が䜿う開...

蚘事の写真

【゜ニヌ・ホンダモビリティ】AFEELAはどう䜜られおいるのか── AD/ADASを支えるデヌタ・AI・開発哲孊の党貌

蚘事の写真

制玄を突砎せよ。゚ンゞニアドリブンで垞識を倉える ─スピヌドず信頌性を䞡立するPayPayカヌド開発の裏偎

蚘事の写真

「キャリアの正解は、自分で぀くる」デヌタストラテゞスト3名が語る、意志ある実践ずキャリアの築き方【Bandai Namc...

蚘事の写真

SIerでもAI駆動開発はできる── 半幎で党瀟実装ぞ螏み切ったテックファヌムの珟圚地

新着動画

蚘事の写真

情報セキュリティ10倧脅嚁IPA発衚」初遞出で3䜍「AIの利甚をめぐるサむバヌリスク」“今”認識しおおくべき脅嚁ずは

蚘事の写真

【3分でわかる】基本情報技術者詊隓っお意味ある / 勉匷・察策を始める前に知っおおきたい前提知識 / どんな詊隓出題...

蚘事の写真

ボトルネック化しおいるPdMの生存戊略──蜂須賀さんず考える「䌞ばすスキル」ず「手攟す仕事」の決め方