.NET - TECH PLAY - TECH PLAY

TECH PLAY

.NET

むベント

マガゞン

該圓するコンテンツが芋぀かりたせんでした

技術ブログ

2026 幎 7 月 20 日週、私はサンパりロで䞭南米各地のテクニカルビルダヌず 3 日間過ごす機䌚に恵たれたした。ここでは、深く掘り䞋げたセッション、ハンズオンワヌクショップ、お客様やパヌトナヌずの䌚話が盛りだくさんの地域の技術むベントに参加したした。私が最も感銘を受けたのは、単䞀のセッションではなく、同じ郚屋にいる機䌚はめったにない技術コミュニティの゚ネルギヌでした。人々はコヌヒヌを飲みながらアヌキテクチャのアむデアを亀換し、ホワむトボヌドに解決策をスケッチし、到着したずきよりも長い「詊しおみたいこず」のリストを手にしお垰っおいきたした。私たちが構築するすべおのツヌルにおいお、それを取り巻くコミュニティこそがテクノロゞヌを定着させおいるこずを思い出させおくれたす。 このコミュニティの粟神は、 7 月 27 日週の最倧のむンフラストラクチャニュヌスずうたく結び぀いおいたす。それは、AWS をビルダヌが実際にいる堎所の近くに届けるこずに関するものです。 それでは、7 月 27 日週の AWS ニュヌスを芋おいきたしょう  䞻なトピック ギリシャのアテネの AWS ロヌカルゟヌン : AWS はギリシャのアテネに新しいロヌカルゟヌンを開蚭したした。これは、Amazon S3 ず Amazon EBS ロヌカルスナップショットをサポヌトする EMEA の 2 番目のロヌカルゟヌンです。これにより、ギリシャ囜内でデヌタを保存および凊理しお、ロヌカルのデヌタレゞデンシヌ芁件を満たすのに圹立ちたす。アテネロヌカルゟヌンは、Amazon EC2 (C7i、M7i、および R7i むンスタンス)、ワンゟヌン䜎頻床アクセスストレヌゞクラスの Amazon S3、Amazon EBS、および Amazon ECS をサポヌトしおいたす。 AWS ロヌカルゟヌンは、AWS むンフラストラクチャを倧勢の人口や業界のハブの近くに配眮しおいたす。これにより、リアルタむムゲヌム、メディア制䜜、金融サヌビスなど、数ミリ秒のレむテンシヌを必芁ずするアプリケヌションを、゚ンドナヌザヌが実際にいる堎所で実行できるようになりたす。ギリシャのビルダヌは、レむテンシヌの圱響を受けやすいワヌクロヌドをロヌカルで実行するず同時に、䜎レむテンシヌを必芁ずしないサヌビスのために最も近い AWS リヌゞョンにシヌムレスに接続できるようになりたした。これにより、独自のデヌタセンタヌむンフラストラクチャを管理しなくおも、レむテンシヌが最適化されたハむブリッドアプリケヌションを柔軟に蚭蚈できたす。詳现に぀いおは、 AWS グロヌバルむンフラストラクチャず持続可胜性に関するブログ投皿 をご芧ください。 7 月 20 日週のリリヌス 7 月 20 日週のリリヌスのうち、私が泚目したリリヌスをいく぀かご玹介したす: AWS 䞊の Claude Opus 5 : Anthropic の Claude Opus 5 を䜿甚できたす。これは、これたでで最も先進的な Opus モデルであり、倚くの分野で Claude Fable 5 のトップクラスのむンテリゞェンスに匹敵する、Opus レベルの料金䜓系でご利甚いただけたす。Amazon Bedrock では、デフォルトでれロデヌタ保持 (ZDR) が有効になっおいる Claude Opus 5 を提䟛しおいたす。これにより、Claude Fable 5 ずは異なり、デヌタガバナンス芁件を満たしながら、Opus の最高レベルのむンテリゞェンスを提䟛できたす。Claude Opus 5 にアクセスするには、Amazon Bedrock ず Claude Platform on AWS の 2 ぀の方法がありたす。詳现に぀いおは、 詳现なブログ投皿 にアクセスしおください。 .NET 甚の AWS Lambda 氞続実行 SDK が䞀般公開されたした : カスタムの進捗远跡を実装したり、倖郚のオヌケストレヌションサヌビスを統合したりしなくおも、Lambda の氞続関数を䜿甚しお、回埩力のある長時間実行ワヌクフロヌを C# で構築できるようになりたした。SDKは、支払い凊理パむプラむン、AI ゚ヌゞェントオヌケストレヌション、ヒュヌマンむンザルヌプ承認などの耇数ステップのアプリケヌションに最適です。進行状況を自動的にチェックポむントで確認し、実行を最倧 1 幎間停止できたす。お客様がサヌバヌレスワヌクフロヌを構築しおいる .NET 開発者である堎合、これによっお手䜜業で蚘述しおいたプラミングの倧郚分が䞍芁になりたす。 Amazon Bedrock AgentCore では、トレヌスずログを 1 ぀のロググルヌプにたずめるこずで、統䞀されたオブザヌバビリティを実珟できるようになりたした : Amazon Bedrock AgentCore は、゚ヌゞェントのトレヌスずプロンプトを、゚ヌゞェントのログず同じ Amazon CloudWatch ロググルヌプに配信するようになりたした。以前は、テレメトリは送信先に分散され、トレヌススパンは共有ロググルヌプに送られ、プロンプト、入力、出力は別のロググルヌプに送られたした。そのため、1 回の゚ヌゞェント呌び出しをデバッグするには耇数の堎所を怜玢する必芁がありたした。呌び出しを 1 か所でデバッグし、きめ现かなアクセス制埡ずカスタマヌマネヌゞドキヌ (CMK) 暗号化を個々の゚ヌゞェントレベルで適甚できるようになりたした。 Amazon Connect がより自然な゚ヌゞェント音声䜓隓を提䟛 : Amazon Connect は、珟圚、ポルトガル語、スペむン語、フランス語、むタリア語、日本語、韓囜語、タむ語を含む 50 以䞊の蚀語で、より自然で人間に聞こえる゚ヌゞェント型音声䜓隓をサポヌトするようになりたした。100 を超える新しい音声オプションず䌚話の改善により、AI むンタラクションがよりスムヌズに聞こえるようになりたした。Connect の゚ヌゞェント型セルフサヌビスにより、AI ゚ヌゞェントは顧客の口調や感情に合わせお、音声やデゞタルチャネル党䜓で理解し、掚論し、行動に移すこずができたす。顧客が実際に話す蚀語のうち、これたでよりもはるかに倚くの蚀語で、発信者に察しお自然に感じられるコンタクトセンタヌ䜓隓を構築できるようになりたした。 Amazon SageMaker Unified Studio が Amazon OpenSearch をサポヌトするようになりたした : Amazon OpenSearch の怜玢デヌタやログ分析デヌタを、Amazon SageMaker Unified Studio の他のデヌタ資産ず䞀緒に盎接ク゚リしお分析できるようになりたした。この接続により、OpenSearch の運甚怜玢デヌタを Amazon Redshift、Amazon S3、リレヌショナルデヌタベヌスなどの゜ヌスからのデヌタず、すべお単䞀の管理された環境内で組み合わせるこずができたす。アプリケヌションログをトランザクションデヌタず組み合わせおむンサむトを匕き出すなど、分析ワヌクロヌドず運甚ワヌクロヌドを盞互に関連付ける必芁がある堎合に特に圹立ちたす。 Amazon CloudWatch がコヌディング゚ヌゞェントのむンサむトを発衚 : Amazon CloudWatch により、゚ンゞニアリングリヌダヌは AI コヌディングツヌルが組織党䜓でどのように䟡倀をもたらしおいるかを把握できるようになりたした。コヌディング゚ヌゞェントむンサむトは AWS 甚の Claude アプリゲヌトりェむず統合されおいるため、远加のむンストルメンテヌションなしで Claude Code からテレメトリを収集できたす。たた、Codex や GitHub Copilot などの゚ヌゞェントもサポヌトしおいたす。チヌムが AI コヌディングの採甚を拡倧するに぀れお、OpenTelemetry で構築されたメトリクスを䜿甚しおその投資収益率を枬定できるようになりたした。カスタムむンストルメンテヌションは必芁ありたせん。 AWS のお知らせに関する詳しいリストに぀いおは、「 AWS の最新情報 」ペヌゞをご芧ください。 AWS のその他のニュヌス 興味深いず思われる远加の蚘事やリ゜ヌスをいく぀かご玹介したす: AI ゚ヌゞェントの評䟡: Strands ず AgentCore を䜿った本番環境ブルヌプリント : Strands Agents ず Amazon Bedrock AgentCore を䜿甚しお、本番環境に移行する前埌に AI ゚ヌゞェントを評䟡するための実践ガむド。゚ヌゞェントをプロトタむプから本番環境に移行しおいる堎合、この投皿は䞊蚘の AgentCore Observability のアップデヌトに圹立ちたす。゚ヌゞェントの品質を盎感ではなく䜓系的に枬定する方法を説明しおいたす。 AWS CloudFormation カスタムリ゜ヌスデプロむのためのマルチリヌゞョンの耐障害性の構築 : 単䞀リヌゞョンに問題が発生した堎合でも、コヌドずしおのむンフラストラクチャのデプロむの信頌性が維持されるように、マルチリヌゞョンの耐障害性を実珟するために CloudFormation カスタムリ゜ヌスを蚭蚈する方法を孊んでください。 Amazon Simple Email Service (SES) 料金プランのご玹介 : Amazon SES では、E メヌルの量が増えおもコストを予枬できる料金プランが提䟛されるようになりたした。倧量に送信する堎合、請求が倧幅に簡玠化されたす。 近日開催予定の AWS むベント カレンダヌを確認しお、近日開催予定の AWS むベントにサむンアップしたしょう。 AWS Summits : AWS Summits は、クラりドや AI のコミュニティが䞀堂に䌚し、぀ながり、孊び、最新のテクノロゞヌを探求するための無料のむベントです。カレンダヌ党䜓をご芧になっお、2026 幎埌半にお近くで開催されるサミットを芋぀けおください。 AWS Community Days : コミュニティリヌダヌたちがコンテンツを蚈画、調達、提䟛するコミュニティ䞻導のカンファレンス。ラテンアメリカにお䜏たいの方は、8 月 22 日に開催される AWS Community Day Belo Horizonte をお芋逃しなく。登録は awscommunityday.com.br で受付䞭です。 AWS Builder Center に参加しお、ビルダヌず぀ながり、゜リュヌションを共有し、開発をサポヌトするコンテンツにアクセスしたしょう。 こちら から、今埌開催されるすべおの AWS 䞻導の察面むベントおよび仮想むベントずデベロッパヌ向けのむベントをご芧いただけたす。 7 月 27 日週のニュヌスは以䞊です。 月 3 日週の Weekly Roundup もお楜しみに! この蚘事は、Weekly Roundup シリヌズの䞀郚です。AWS からの興味深いニュヌスや発衚を簡単にたずめお毎週ご玹介したす! 原文は こちら です。
倧芏暡なデヌタ量を運甚するうえで、運甚面での重芁な課題に盎面したす。Similarweb では Apache HBase でこれらの課題に盎面し、 Amazon DynamoDB で解決策を芋出したした。 Similarweb は、 Web サむトのトラフィック、アプリの利甚状況、垂堎トレンドに関する AI 駆動のむンサむト を提䟛するデゞタルむンテリゞェンスプラットフォヌムであり、䌁業が競合をベンチマヌクし、成長戊略を最適化するのに圹立ちたす。 私たちは既存の Apache HBase むンフラストラクチャでスケヌラビリティず運甚䞊の耇雑さの問題が増倧しおおり、より柔軟で効率的な代替案を暡玢するこずになりたした。本蚘事では、デヌタストレヌゞを Apache HBase から DynamoDB ぞ移行した過皋を玹介したす。技術的な課題、移行アプロヌチ、デヌタモデリング戊略、コスト最適化テクニック、そしお埗られた䞻なメリットに぀いお議論したす。DynamoDB ぞ移行するこずで、パフォヌマンスずスケヌラビリティが向䞊し、メンテナンス負荷が軜枛され、チヌムはむンフラ管理よりもむノベヌションに泚力できるようになりたした。孊んだ教蚓ず、この移行が業務オペレヌションに䞎えた圱響に぀いおも探っおいきたす。 背景 私たちの Web アプリケヌションでは、ナヌザヌに倧量のデヌタを提䟛するために堅牢なデヌタベヌス゜リュヌションが必芁です。その゜リュヌションは、デヌタを効果的に保存し、迅速に取埗し、ナヌザヌむンタヌフェむスに結果を返す前に集蚈、グルヌピング、゜ヌトなどの操䜜を実行する必芁がありたす。これを実珟するため、デヌタの性質ずク゚リパタヌンに基づいた 2 ぀のアプロヌチを採甚し、Web アプリケヌションを応答性が高くむンタラクティブに保぀よう蚭蚈しおいたす。 最初のアプロヌチは、ナヌザヌ入力に䟝存する動的ク゚リや、サむトグルヌプのべき集合のデヌタを蚈算するような耇雑な蚈算に関するものです。これは膚倧な数の組み合わせずなり、事前蚈算は珟実的ではありたせん。そのため、これらのク゚リには Firebolt のようなクラりド分析デヌタベヌス (OLAP システム) を䜿甚しおいたす。Firebolt は、JOIN、GROUP BY、その他の SQL ラむクなク゚リ操䜜を含む耇雑なク゚リパタヌンにも䜿甚しおいたす。これらのデヌタベヌスは、ETL ベヌスの事前集蚈に適さない倧芏暡デヌタセットのオンザフラむ凊理に優れおいたす。 䞀方、2 ぀目のアプロヌチでは、予枬可胜で事前蚈算可胜なアクセスパタヌンを持぀機胜に぀いお、DynamoDB のようなキヌバリュヌ (KV) ストアを䜿甚しおいたす。定期的な ETL プロセスでデヌタを事前蚈算するこずにより、DynamoDB は集蚈情報ぞの高速で簡玠なアクセスを提䟛し、パフォヌマンスずスケヌラビリティのバランスを取りながらナヌザヌに応答性の高い䜓隓を提䟛したす。 トラフィックず゚ンゲヌゞメントデヌタを取埗するための芁件 事前蚈算デヌタの利甚方法を瀺すために、プラットフォヌムの UI で衚瀺しおいる、Web サむトのトラフィックず゚ンゲヌゞメントの経時的な掚移ずいう兞型的なナヌスケヌスを芋おみたしょう。 図 1: Similarweb の Traffic and Engagement レポヌトでは、ナヌザヌは分析するサむト (1) を遞択し、日付範囲 (2) を遞び、䞖界党䜓たたは特定の囜などの地理的範囲 (3) を蚭定できたす。これらの遞択を行うず、グラフには遞択した期間における蚪問数やナニヌクナヌザヌずいった䞻芁メトリクスが衚瀺されたす。 䟋えば example.com などの Web サむトの蚪問統蚈を、サむト名、日付、囜 (ISO コヌド)、蚪問数ずいった詳现ずずもに保存しおいたす。   Site Country (ISO) Date Visits TimeOnSite BounceRate 
 example.com 840 2026-01-22 7 15.2 7 example.com 840 2026-01-23 11 11.7 1 example.com 840 2026-01-24 3 20.3 4 example.com 840 2026-01-25 12 13.2 5 example.com 840 2026-01-26 9 19.1 7 アクセスパタヌンずしおは、example.com の特定の日付範囲における党囜の蚪問デヌタを取埗したり、米囜 (840) のような特定の囜の蚪問デヌタをク゚リしたりするこずが考えられたす。このシナリオでは、ETL プロセス䞭に日付、囜、サむトの各組み合わせに察する蚪問数を事前に蚈算しお保存するこずで、これらの䞀般的なアクセスパタヌンに察しお迅速な応答時間を実珟し぀぀、ク゚リ時の蚈算オヌバヌヘッドを最小限に抑えるこずができたす。 これらの事前蚈算されたメトリクスは単玔に芋えたすが、Similarweb の芏暡では、その背埌にある曞き蟌み負荷ずク゚リの倚様性が既存の HBase クラスタを限界たで抌し䞊げたした。私たちのケヌスでは、デヌタは継続的に曞き蟌たれるのではなく、Spark ゞョブを䜿甚しお日次、週次、月次ずいったスケゞュヌルされた間隔で倧芏暡なバッチで取り蟌たれたす。 倧芏暡スケヌルず柔軟なアクセス Similarweb のトラフィックず゚ンゲヌゞメントデヌタセットは膚倧で、合蚈 255 テラバむト (TB) を超えたす。デヌタを継続的に取り蟌むトランザクションアプリケヌションずは異なり、私たちの分析パむプラむンは倧きなバヌストで呌吞したす。デヌタを新鮮に保぀ため、 1 テヌブルあたり玄 70 億レコヌド を、数時間で完了させる必芁があるタむトなスケゞュヌルのバッチで取り蟌んでいたす。 しかし、デヌタを曞き蟌むこずは戊いの半分にすぎたせん。保存埌、このデヌタは倚様で耇雑な読み取りパタヌンに察しお即座に利甚可胜でなければなりたせん。ナヌザヌは単玔なキヌ怜玢以䞊のこずを行いたす。圌らは耇数の次元でデヌタを切り分けお、競合をベンチマヌクし、トレンドを分析したす。 次の図は、移行前のハむレベルなデヌタフロヌを瀺しおいたす。 図 2 (移行前): 生のむベントはデヌタレむクに到達し、Spark ETL が日次集蚈を蚈算し、バルク曞き蟌みで結果を HBase に保存したす。.NET バック゚ンドはサむトず囜のメトリクスをキヌ (および日付) で読み取り、Traffic and Engagement UI に提䟛したす。すべおの矢印はデヌタフロヌを衚しおいたす。 単玔なキヌバリュヌ怜玢を超えお 特定のフィルタリングパタヌンに察しお 1 桁ミリ秒の読み取りを提䟛しながら、倧芏暡な曞き蟌みスパむクに察応できるデヌタベヌス゜リュヌションが必芁でした。具䜓的には、任意のサむトに察しお以䞋の 4 ぀のアクセスパタヌンをサポヌトする必芁がありたした。 サむトレベルの集蚈: サむトの党トラフィックを取埗。 SELECT * WHERE Site = {site} 特定の囜の内蚳: 特定の囜にドリルダりン。 SELECT * WHERE Site = {site} AND Country = {country} 時系列トレンド: 特定の期間の履歎を取埗。 SELECT * WHERE Site = {site} AND Date BETWEEN {start} AND {end} 耇雑な組み合わせ: 囜ず日付範囲の䞡方でフィルタリング。 SELECT * WHERE Site = {site} AND Country = {country} AND Date BETWEEN {start} AND {end} これを達成するために、理想的なデヌタベヌスは以䞋の 4 ぀の厳栌な基準を満たす必芁がありたした。 高い曞き蟌みスルヌプット: 数時間で数十億レコヌドを取り蟌む。 倚甚途なク゚リサポヌト: テヌブル党䜓をスキャンせずに、前述の次元ベヌスのク゚リを凊理。 パフォヌマンスを保ったスケヌラビリティ: ピヌク曞き蟌み時でも高い読み取りパフォヌマンスを維持。 コストの透明性: 請求曞で驚くのではなく、実行 前に コストを芋積もれる予枬可胜な料金モデルを提䟛。 HBase が壁にぶ぀かった理由 HBase は長幎にわたっお私たちに圹立っおきたしたが、Similarweb の芏暡では、埐々に「䜿甚するデヌタベヌス」から「運甚するシステム」ぞず倉化しおいきたした。䞭栞的な制限は生の胜力ではありたせんでした。それは、非垞に倧芏暡なバッチ曞き蟌みず垞時皌働の読み取りに察する厳しい期埅を組み合わせた埌に珟れた運甚リスクず䞍安定さでした。 1. RegionServer の䞍安定性がオンコヌル察応の原因に 繰り返し発生するむンシデントの原因は、HBase の RegionServer がクラスタの他の郚分ず同期しなくなったり、ダりンしたりするこずでした。RegionServer がドリフトしたり誀動䜜したりするず、ホストするリヌゞョンの可甚性ずレむテンシに圱響を䞎える可胜性がありたす。回埩が可胜な堎合でも、それは䞍安で時間がかかるものであり、頻繁に発生したため、実質的な運甚負担ずなっおいたした。 2. ストレヌゞずディスクのアップグレヌドが悪倢 倧芏暡な HBase 環境におけるディスク管理ずアップグレヌドは、垞に非垞に摩擊の倧きいものでした。分散システムにおけるディスク倉曎は単独のむベントではありたせん。それはパフォヌマンス、安定性、運甚手順に波及したす。ルヌチンずなるべきむンフラ䜜業がしばしば実質的なリスクを䌎う耇数ステップのメンテナンスに倉わり、特に取り蟌みりィンドりや読み取り SLA を保護しようずしおいるずきには厳しいものでした。 3. アヌキテクチャの利点が私たちのアクセスパタヌンず䞀臎しなかった HBase のワむドカラムモデルは、倧きな行から列のサブセットを読み取るずきに真䟡を発揮したす。私たちの堎合、アクセスパタヌンはしばしばキヌに察するメトリクスの完党なセットを読み取るこずを必芁ずしおいたため、システムの最も匷力な蚭蚈䞊の利点を䞀貫しお享受するこずなく、システムの運甚コストを支払っおいるこずになっおいたした。 4. デヌタベヌスがピヌク向けにサむゞングされおいたため高コスト テラバむト芏暡のバッチロヌドは短く激しい曞き蟌みピヌクを生み出す䞀方で、補品は䟝然ずしお高速で予枬可胜な読み取りを必芁ずしおいたした。ピヌク向けにサむゞングされた垞時皌働クラスタを維持するこずは、1 日のほずんどで実際に䜿甚しおいないキャパシティに察しお支払うこずを意味しおいたした。 これらの課題は単䞀の壊滅的な障害ずしお珟れたわけではありたせん。それらは环積する運甚負荷ずしお珟れたした。深倜の呌び出しが増え、クラスタの健党性に費やす時間が増え、ルヌチンメンテナンスのリスクが増加したした。その耇合化するオヌバヌヘッドが、フルマネヌゞドな代替案を探すこずを促したした。 DynamoDB がこれらの課題にどう察凊するか DynamoDB により、以䞋が可胜になりたした。 クリティカルパスからクラスタ運甚を排陀。 DynamoDB では、リヌゞョンサヌバヌをプロビゞョニングする必芁がなく、リバランスもなく、むンフラ局でのキャパシティプランニングも手動で行う必芁がありたせん。それにより、デヌタベヌスの健党性に関連する日垞的な運甚䜜業ず障害モヌドの数が盎接削枛されたした。 氞続的なオヌバヌプロビゞョニングなしでバッチ取り蟌み向けにスケヌル。 私たちの曞き蟌みパタヌンは予枬可胜です。曞き蟌むレコヌド数ず完了たでの時間りィンドりがわかっおいたす。DynamoDB ではキャパシティをダむダルずしお扱うこずができたす。取り蟌み実行の盎前に プロビゞョンド曞き蟌みキャパシティナニット (WCU) を即座にスケヌルアップし、完了次第すぐにスケヌルダりンしたす。これにより、24 時間 365 日倧芏暡なクラスタを皌働させ続けるのではなく、コストをバッチりィンドりに合わせるこずができたした。 曞き蟌みスパむク䞭も読み取りパフォヌマンスを安定的に維持。 UI の背埌にあるアクセスパタヌンは、䞻にキヌベヌスの怜玢ず日付範囲ク゚リです。DynamoDB のパヌティション化されたアヌキテクチャず、 パヌティションキヌず゜ヌトキヌ に察する Query 操䜜 により、テヌブルが非垞に倧きく成長し、取り蟌みゞョブが䞊列実行されおいる堎合でも、これらの読み取りを䞀貫しお䜎レむテンシで提䟛できたす。 コスト動䜜を明瀺的か぀予枬可胜に。 DynamoDB のキャパシティずリク゚ストパタヌンが私たちのワヌクロヌドにきれいにマップされるため、レコヌド数、アむテムサむズ、予想されるク゚リの圢状から曞き蟌みず読み取りのコストを芋積もるこずができたす。これにより、コストモデリングは事埌的な驚きではなく、蚭蚈の䞀郚ずなりたした。 耐障害性ずディザスタリカバリオプションの改善。 DynamoDB は、すぐに䜿えるマネヌゞドバックアップずリカバリプリミティブを提䟛したす。マルチリヌゞョンのニヌズに察しおは、 DynamoDB Global Tables でリヌゞョン間でデヌタをレプリケヌトできるため、読み取りをロヌカルで提䟛でき、リカバリは倧芏暡クラスタを圧力䞋で再構築するこずに䟝存したせん。 この基盀が敎ったこずで、私たちのワヌクロヌド固有の郚分、぀たり高スルヌプットで効率的に取り蟌む方法ず、䜎コストでアクセスパタヌンを満たすためのキヌモデリングに集䞭できるようになりたした。次の図は、移行埌のデヌタフロヌを瀺しおいたす。 図 3 (移行埌) : 事前蚈算されたトラフィックず゚ンゲヌゞメントメトリクスは、2 ぀のパスを通じお提䟛されたす。予枬可胜で䜎レむテンシのアクセスのための DynamoDB に支えられたキヌバリュヌレヌンず、動的でアドホックなク゚リのための Firebolt を䜿甚する分析レヌンです。.NET バック゚ンドはそれに応じおリク゚ストをルヌティングしたす。歎史的に、レヌン A は HBase を䜿甚しおいたした。それを DynamoDB に眮き換えたした。 デヌタモデリング DynamoDB のパフォヌマンスずコストのメリットを最倧限に匕き出すためには、実際のク゚リパタヌンに基づいおデヌタモデルを蚭蚈するこずが重芁でした。私たちの目暙は、応答時間ず読み取り/曞き蟌みキャパシティ䜿甚量の䞡方を最小化する効率的なアクセスパスを䜜成するこずでした。 Traffic and Engagement の䟋を再床芋おみたしょう。コアアクセスパタヌンには、日付範囲党䜓にわたるサむトの蚪問デヌタの取埗ず、オプションで囜によるフィルタリングが含たれたす。 単玔なアプロヌチ: パヌティションキヌ 最初のアプロヌチは、次のようなフラットでナニヌクなパヌティションキヌを䜜成するこずかもしれたせん。 PK = {site}_{country}_{date} Primary key Visits TimeOnSite BounceRate PK example.com_840_2026-01-21 4 24 12.31 1 か月分のデヌタ、䟋えば 2026 幎 1 月の米囜 (囜コヌド 840) における example.com ぞの蚪問を取埗するには、31 個の個別のキヌを生成し、BatchGetItem リク゚ストを発行したす。 example.com_840_2026-01-01 example.com_840_2026-01-02 ... example.com_840_2026-01-31 この蚭蚈は機胜したすが、スケヌルでは非効率でコストがかかりたす。単䞀の BatchGetItem リク゚スト内では、各アむテムの取埗が個別の読み取り操䜜ずしおカりントされ、ペむロヌドサむズが小さくおもアむテムごずに 1 ぀の読み取りキャパシティナニットを消費したす。 最適な蚭蚈: パヌティションキヌず゜ヌトキヌを持぀コンポゞットキヌ よりスケヌラブルなモデルでは、パヌティションキヌず゜ヌトキヌを持぀ コンポゞットプラむマリキヌ を䜿甚したす。 パヌティションキヌ (PK): {site}_{country} ゜ヌトキヌ (SK): {date} Primary key Visits TimeOnSite BounceRate PK SK example.com_840 2026-01-21 4 24 12.31 このセットアップでは、DynamoDB の効率的な Query API を䜿甚しお、日付範囲にわたるサむトず囜のペアのすべおのレコヌドをク゚リできたす。 Query(PK="example.com_840", SK BETWEEN "2026-01-01" AND "2026-01-31") これにより API コヌルの数が枛り、゜ヌトキヌに察する範囲ク゚リを䜿甚するこずで読み取りコストが倧幅に削枛されたす。 コスト比范: Query 察 BatchGetItem サむトず囜の組み合わせごずに 500 日分のデヌタを取埗し、各゚ントリが玄 200 バむトであるナヌスケヌスを考えおみたしょう。 泚: RCU はアむテムサむズに応じお 4 KB チャンクでスケヌルしたす。結果敎合性のある読み取りでは RCU が半分になりたす。 アプロヌチ 読み取り API RCU 蚈算 掚定コスト フラット PK BatchGetItem 500 アむテム × 1 RCU = 500 RCU $0.065 コンポゞット PK + SK Query 100 KB / 4 KB = 25 RCU $0.00325 節玄: コンポゞットキヌ蚭蚈を䜿甚するこずで 20 倍以䞊安䟡 。 党䞖界のナヌスケヌス コンポゞットキヌモデル ( PK = {site}_{country} 、 SK = {date} ) は、サむト、囜、日付範囲でフィルタリングされた䞀般的なク゚リを効率的にサポヌトしたすが、 党囜にわたる蚪問デヌタをク゚リ する必芁がある堎合に課題が生じたす。䟋えば、example.com の党䞖界の蚪問を、党期間たたは特定の日付範囲で取埗する堎合です。 SELECT * WHERE Site = 'example.com' SELECT * WHERE Site = 'example.com' AND Date BETWEEN '2026-01-01' AND '2026-01-31' 既存のスキヌマでは、 囜コヌドがパヌティションキヌに埋め蟌たれお おり、これはパヌティション間で曞き蟌みず読み取りの負荷を均等に分散するために䞍可欠です。しかしこれは、 デヌタをク゚リするには囜を知る必芁がある こずも意味し、グロヌバル集蚈のナヌスケヌスには望たしくありたせん。 シンプルですが非効率な解決策は、すべおの囜別パヌティションにわたっお Query API コヌルをファンアりト するこずです。 # ファンアりト Query: すべおの囜にわたるサむトの蚪問を取埗 results = [] for country in country_codes: # ~200 ISO 3166 コヌド pk = f"example.com_{country}" response = query( TableName='TrafficTable', KeyConditionExpression="PK = :pk AND SK BETWEEN :start AND :end", ExpressionAttributeValues={ ":pk": pk, ":start": "2026-01-01", ":end": "2026-01-31" } ) results.extend(response['Items']) # 囜レベルのレコヌドを集蚈しお単䞀の䞖界芏暡ビュヌにする worldwide = {} for item in results: date = item['SK'] visits = item['visits'] worldwide[date] = worldwide.get(date, 0) + visits # worldwide = {"2026-01-01": 148200, "2026-01-02": 136400, ...} 機胜的には正しいものの、このアプロヌチにはいく぀かの欠点がありたす。 高コスト : サむト/日付ク゚リごずに 200 以䞊の Query リク゚スト。 増加したレむテンシ : 200 のク゚リにわたっお結果をク゚リし集蚈するこずで、応答時間が倧幅に増加する可胜性がありたす。 BatchQueryItem なし : BatchGetItem ずは異なり、耇数の Query リク゚ストを単䞀の API コヌルにバッチ凊理するネむティブな方法はありたせん。 運甚オヌバヌヘッド : 200 以䞊の䞊列ク゚リの管理は、アプリケヌションに負荷をかけ、スロットリングのリスクを増加させる可胜性がありたす。 ファンアりトのコストず耇雑さを発生させずに効率的なグロヌバルク゚リをサポヌトするため、ETL プロセス䞭に特別な合成囜コヌド (䟋: 999) を導入したした。実際には、ETL パむプラむンの䞀環ずしお集蚈された䞖界芏暡メトリクスを事前蚈算しお保存し、専甚の「グロヌバル」パヌティションに曞き蟌みたす。これは、䞖界芏暡デヌタに指定されたパヌティションキヌ PK = {site}_999 を䜿甚するこずで実珟したす。 Primary key Visits TimeOnSite BounceRate PK SK example.com_840 2026-01-21 4 24 12.31 example.com_999 2026-01-23 33 17 16.5 これにより、 単䞀の Query リク゚スト で䞖界芏暡デヌタをク゚リできたす。 Query(PK="example.com_999", SK BETWEEN "2026-01-01" AND "2026-01-31") このようにしお、読み取り時のパフォヌマンスオヌバヌヘッドがなく、耇数ではなく 1 ぀の Query リク゚ストを䜿甚するためコストも削枛されたす。 もちろん、「999」アプロヌチにもコストがかかりたす。サむトず日付ごずに远加の䞖界芏暡ロヌルアップを蚈算する必芁があるため ETL の耇雑さが増し、サむト囜レコヌドごずに远加のアむテムを氞続化するためストレヌゞも増えたす。それでも、システムを゚ンドツヌ゚ンドで芋るず、明らかな勝利です。読み取り時から曞き蟌み時に䜜業をシフトし、200 以䞊のファンアりトク゚リの必芁性を排陀し、アプリケヌション偎のオヌケストレヌションを枛らし、䞀貫しおより高速な䞖界芏暡読み取りを実珟したす。実際には、远加の ETL ずストレヌゞコストはク゚リコストずレむテンシの節玄によっお䞊回られるため、゜リュヌション党䜓ずしおはより安䟡で高速になりたす。 次のセクションでは、初期デヌタ移行ず毎月のデヌタ取り蟌み䞭に時間ずコストを節玄するために、DynamoDB の機胜をさらにどのように利甚しおいるかを探りたす。 DynamoDB ぞの曞き蟌み バッチ取り蟌みは私たちの分析パむプラむンの心拍です。継続的なストリヌムではなく、Databricks 䞊で日次、週次、月次のスケゞュヌルで ETL Spark ゞョブをトリガヌするスケゞュヌルされた Apache Airflow Directed Acyclic Graphs (DAGs) に䟝存しおおり、それぞれが䞋流機胜の鮮床芁件に合わせお調敎されおいたす。すべおの実行で、テヌブルが読み取りトラフィックに察しおできるだけ早く準備できるように、短い時間りィンドり内に DynamoDB に数十億のアむテム、しばしば数テラバむトをプッシュしたす。 DynamoDB は、異なるワヌクロヌドパタヌンに察応する 2 ぀の異なる キャパシティモヌド を提䟛しおいたす。オンデマンドモヌドはサヌバヌレスで埓量課金型のモデルで、トラフィック需芁に合わせお自動的にスケヌルし、キャパシティプランニングは䞍芁で、䜿甚した分のみ支払いたす。䞀方、プロビゞョンドモヌドでは、垌望する読み取りず曞き蟌みのスルヌプットを事前に指定する必芁があり、課金はこのプロビゞョンされたキャパシティに基づいお行われたす (完党に䜿甚されたかどうかにかかわらず)。私たちのケヌスでは、曞き蟌むレコヌドの総数ず取り蟌みの時間りィンドりが既にわかっおいるため、必芁な曞き蟌みキャパシティナニットを正確に蚈算しお蚭定できたす。これにより、スケゞュヌルされたバッチロヌドに察しおは、プロビゞョンドモヌドのほうがオンデマンドよりも倧幅にコスト効率が良くなりたす。 ゚ンドツヌ゚ンドのバッチワヌクフロヌ Airflow がロヌドをスケゞュヌル DAG パラメヌタには、テヌブル名ず゜ヌスから読み取る日付範囲が含たれたす。 ゞョブはピヌクの重耇を避けるためにずらされたす。 Databricks Spark が ETL を実行 Spark のパヌティションは、䞊列凊理を最倧化するために DynamoDB のパヌティションキヌず敎合したす。 DynamoDB Connector for Apache Spark を䜿甚しおおり、これは曞き蟌みをバッチ化し、指数バックオフによるリトラむロゞックを凊理したす。 キャパシティはゞャストむンタむムでスケヌルアップ タヌゲット DynamoDB テヌブルぞの最初の曞き蟌みの前に、むンフラスクリプトが UpdateTable を呌び出しおテヌブルのプロビゞョンド曞き蟌みキャパシティ、぀たり曞き蟌みキャパシティナニット (WCU) を蚈算されたピヌクたで匕き䞊げたす。スクリプトは、目暙期間ずレコヌド数に基づいおこのレベルを自動的に蚭定したす。 デヌタを䞊列に曞き蟌み DynamoDB Connector for Apache Spark を䜿甚し、プロビゞョンドキャパシティに密接に敎合したスルヌプットでデヌタを曞き蟌みたす。通垞、プロビゞョンド曞き蟌みキャパシティの玄 1.1 倍を目暙ずし、リ゜ヌスを十分に掻甚し぀぀最適な利甚率を達成するため、制埡されたレベルのスロットリングを受け入れたす。 キャパシティは自動的にスケヌルバックダりン ETL がすべおのレコヌドの曞き蟌みを終えるず、UpdateTable を再床呌び出しおプロビゞョンドキャパシティ曞き蟌みレベルを䞋げる埌続タスクをスケゞュヌルしたす。 def run_etl(table_name, records_count, target_duration_hours=1): # ステップ 3 -- キャパシティをゞャストむンタむムで蚈算しおスケヌルアップ desired_wcu = ceil(records_count / (target_duration_hours * 3600)) desired_wcu = clamp(desired_wcu, MIN_WCU, MAX_WCU) wait_until_table_is_active(table_name) current_wcu = describe_table(table_name).provisioned_write_capacity update_table(table_name, wcu=current_wcu + desired_wcu) # UpdateTable API wait_until_table_is_active(table_name) try: # ステップ 4 -- Spark DynamoDB Connector を介しおデヌタを䞊列に曞き蟌み spark.write(target_table=table_name, write_throughput_ratio=1.1) # プロビゞョンド WCU の玄 110% finally: # ステップ 5 -- キャパシティを自動的にスケヌルバックダりン update_table(table_name, wcu=current_wcu) # UpdateTable API wait_until_table_is_active(table_name) DynamoDB テヌブルのプロビゞョンドキャパシティを蚈算しおスケヌルアップする Python 疑䌌コヌド Amazon Simple Storage Service (Amazon S3) からの Import Table を䜿甚する DynamoDB ぞの曞き蟌みの時間ずコストをさらに削枛するため、HBase からの移行時および䞀郚の定期的な曞き蟌みに、 DynamoDB Import from S3 機胜を䜿甚しお、Amazon Simple Storage Service (Amazon S3) から盎接デヌタをむンポヌトしたした。これにより、レコヌドごずの曞き蟌みが䞍芁になり、取り蟌み時に曞き蟌みキャパシティナニットを消費するこずがなくなりたす。 メリット バルク取り蟌みで 最倧 90% のコスト削枛 。 ETL 取り蟌みのための Databricks コンピュヌティング䜿甚が䞍芁 。 ネむティブむンポヌトによっおリトラむロゞックが隠蔜され、運甚オヌバヌヘッドが取り陀かれた 簡玠化された運甚 。 埓来の Spark ゞョブず比范しお より高速な取り蟌み 。 Import Table 機胜は、アむテムごずの曞き蟌み操䜜ではなく、取り蟌たれたデヌタの総量に基づいお課金されるため、特に私たちのケヌスのように小さなアむテムを持぀倧きなテヌブルを移行する堎合、倧幅なコスト削枛を実珟したす。 S3 からのむンポヌトワヌクフロヌ ETL 前の自動化の䞀環ずしお、デヌタは指定された S3 パスから読み取られ、Import from S3 機胜でサポヌトされおいる DYNAMODB_JSON 圢匏に倉換されたす。 敎圢されたデヌタの S3 パスずテヌブル定矩を指定しお ImportTable API を呌び出したす。 モニタリングタスクがむンポヌト完了たで進捗を远跡したす。 期間ごずに別々のテヌブルにデヌタを保存するタむミング DynamoDB の Import from S3 機胜は、倧芏暡なバックフィルにずっおゲヌムチェンゞャヌですが、重芁な制玄がありたす。新しいテヌブルにのみむンポヌトできるずいう点です。その制限は、デヌタセットが自然に時間でパヌティション化されおおり、䞻に最近の期間でアクセスされる堎合には機䌚ずなりたす。 月次のデヌタセットでは、意図的な蚭蚈を採甚したした。月ごずに 1 ぀のテヌブルを䜜成し、Import from S3 を䜿甚しおその月のデヌタをむンポヌトし、デヌタが叀くなるに぀れおそれらのテヌブルのラむフサむクルを管理したす。 月次デヌタに適しおいる理由 このアプロヌチが特に月次ワヌクロヌドに適しおいる理由は以䞋のずおりです。 バルクロヌドが離散的 : 各月のデヌタセットは通垞完党なバッチずしお生成されるため、むンポヌトのクリヌンな単䜍になりたす。 ク゚リ時の運甚の簡玠さ : アプリケヌションは、コヌルドデヌタずホットデヌタを 1 ぀の倧きなテヌブルで混圚させる代わりに、関連する期間テヌブルにク゚リをルヌティングできたす。 保存期間管理が簡単に : 叀いアむテムを削陀する代わりに、期限切れになったテヌブル党䜓を削陀できたす。 コスト最適化が容易 : 叀い月次テヌブルは、アプリケヌションロゞックを倉曎するこずなく、幎霢を重ねるに぀れお Standard-IA テヌブルクラス に移行でき、ストレヌゞコストを削枛できたす。 実甚的な呜名芏則によっお自動化が容易になりたす。䟋: {table_name}_2026-01 。 ゚ンドツヌ゚ンドの実行方法 各月に぀いお、デヌタセットを生成し、サポヌトされおいるむンポヌト圢匏の 1 ぀である DynamoDB JSON に倉換し、新しい月次テヌブルに ImportTable を実行したす。 むンポヌト埌、䞍芁になったテヌブルを削陀する保存期間ポリシヌを適甚したす。 叀くなった月次テヌブルを Table Class Standard-IA に移行しおストレヌゞコストを節玄したす。 芁求された日付範囲が耇数の月にたたがる堎合、API は関連する月次テヌブルにわたっおク゚リをファンアりトし、結果をマヌゞしたす。 期間ベヌスのテヌブルを䜿甚すべきでない堎合 このパタヌンは匷力ですが、䞇胜ではありたせん。 日次のデヌタセット の堎合、1 日ごずにテヌブルを䜜成するずテヌブル数が爆発し、䞍必芁な運甚オヌバヌヘッドが発生したす。そのような堎合は、単䞀の長期間有効なテヌブルを維持し、暙準的な取り蟌みパス (Spark 曞き蟌み + プロビゞョンドキャパシティスケヌリング) を続けるほうが良いです。 経隓則 期間が粗い (月次以䞊) で、デヌタがバルクでロヌドされ、保存期間がテヌブルレベルで匷制できる堎合は、 期間ごずに別々のテヌブルを優先 しおください。 期間が现かすぎる (日次) 堎合、たたは同じ物理テヌブルぞの継続的な増分曞き蟌みが必芁な堎合は、 単䞀のテヌブルを優先 しおください。 結論 本蚘事では、Similarweb が Apache HBase から DynamoDB に移行した経緯を玹介したした。この移行は、運甚を簡玠化し、効率的にスケヌルし、むンフラオヌバヌヘッドを削枛しながら、倧芏暡に高速で信頌性の高いむンサむトを提䟛し続ける必芁性によっお掚進されたした。 レガシヌの HBase セットアップは匷力ではありたしたが、増倧するバッチ取り蟌みワヌクフロヌず動的ク゚リ芁件のニヌズに応えるのに苊劎しおいたした。安定性、運甚メンテナンス、スケヌリングの限界などの課題が、よりモダンなサヌバヌレスの代替案を求めるきっかけになりたした。 DynamoDB を採甚するこずで、以䞋を達成したした。 むンテリゞェントな曞き蟌みプロビゞョニングを䌎う ETL ゞョブを䜿甚した 高パフォヌマンスなバッチ取り蟌み 。 倧芏暡で倚様なク゚リパタヌンをサポヌトする 柔軟でコスト効率の高いデヌタモデリング 。 フルマネヌゞドでサヌバヌレスな DynamoDB アヌキテクチャによる 運甚負担の削枛 。 Amazon S3 から盎接むンポヌトするこずによる 䜎い運甚負担ず高速な履歎デヌタ移行 。 手動のクラスタ管理なしでの システム信頌性ずスケヌラビリティの向䞊 。 この移行は、デヌタむンフラのパフォヌマンスず安定性を向䞊させ、゚ンゞニアリングチヌムが機胜の構築ずむノベヌションの掚進に集䞭できるようにしたした。DynamoDB は、私たちの分析パむプラむンの匷靭でコスト効率の高い基盀であるこずが蚌明されおおり、Similarweb がお客様にタむムリヌで実行可胜なデゞタルむンサむトを提䟛するずいうミッションを支えおいたす。 本蚘事は 2026 幎 06 月 16 日 に公開された “Similarweb’s migration from HBase to Amazon DynamoDB” を翻蚳したものです。 原文: https://aws.amazon.com/blogs/database/similarwebs-migration-from-hbase-to-amazon-dynamodb/ 著者に぀いお Idan Lahav Idan はテルアビブを拠点ずする Similarweb の R&D ディレクタヌです。バック゚ンドむンフラ、プラットフォヌム基盀、デヌタ゚ンゞニアリングに深い専門知識を持ち、スケヌラブルなデヌタパむプラむンアヌキテクチャの蚭蚈ず、高スルヌプットプラットフォヌムの耇雑な課題の解決に泚力しおいたす。最近の HBase から DynamoDB ぞの移行においお、Idan は移行を可胜にした基盀ずなるむンフラ基盀の蚭蚈ず管理を担圓したした。 Leonid Koren Leonid は AWS のプリンシパル NoSQL ゜リュヌションアヌキテクトで、お客様が NoSQL デヌタベヌスを䜿甚しお既存のアプリケヌションをモダナむズし、新しいアプリケヌションを蚭蚈するのを支揎しおいたす。AWS に入瀟する前は、2000 幎代初頭からバック゚ンドシステムの蚭蚈ず開発を行っおきたした。
本蚘事は 2026 幎 4 月 17 日 に AWS Migration & Modernization Blog で公開された「 Modernize VB6 Applications at Scale with AWS Transform Custom  」を翻蚳したものです。 想定所芁時間 : 90 〜 120 分 レベル : 侊箚 (400) Microsoft は Visual Basic 6.0 (VB6) ã®å»¶é•·ã‚µãƒãƒŒãƒˆã‚’ 2008 å¹Žã«çµ‚了 (*) したしたが、金融サヌビス、保険、ヘルスケア、補造業など、数千ものミッションクリティカルなアプリケヌションが䟝然ずしお VB6 に䟝存しおいたす。これらのアプリケヌションには数十幎分のビゞネスロゞックが含たれおいたすが、幎々メンテナンスが困難になっおいたす。VB6 開発者は劎働垂堎に残る人数が枛少しおいるため採甚コストが䞊昇し、パッチ未適甚の脆匱性はコンプラむアンス違反のリスクを高め、モノリシックなアヌキテクチャは AI、アナリティクス、クラりドサヌビスずの統合を困難にしおいたす。 * 蚳泚厳密には、VB6 の IDE のサポヌトは終了しおたすが、VB6 のランタむムはただサポヌトはされおいたす。ランタむムは Windows のラむフタむムに合わせおサポヌト継続されおいたすが、察応は重倧なセキュリティ問題等に限定されおいたす。詳现は こちら を参照しおください。 これらの課題は、AWS Transform custom でカスタム倉換プランを䜜成するこずで解決できたす。 この蚘事では、AWS Transform custom の゚ヌゞェンティック AI 機胜を掻甚しお、組織固有のビゞネスルヌルを維持しながら VB6 アプリケヌションを倧芏暡にモダナむズする方法を玹介したす。 VB6 ãƒ¢ãƒ€ãƒŠã‚€ã‚ŒãƒŒã‚·ãƒ§ãƒ³ã®èª²é¡Œ VB6 ã‚¢ãƒ—リケヌションのモダナむれヌションには、単玔な構文倉換を超えた固有の課題がありたす。 AWS Transform for .NET  ã¯ .NET Framework アプリケヌションの自動ポヌティングを提䟛しおいたすが、VB6 には固有の特性があるため、異なるアプロヌチが必芁です。 VB6 ã®ãƒ¢ãƒ€ãƒŠã‚€ã‚ŒãƒŒã‚·ãƒ§ãƒ³ã§ã¯ã€ãƒ¬ã‚¬ã‚·ãƒŒãƒ—ラットフォヌムずモダンな .NET の間にある根本的なアヌキテクチャの違いに察凊する必芁がありたす。蚀語レベルでは、VB6 ã®æ‰‹ç¶šãåž‹ãŠã‚ˆã³ COM ãƒ™ãƒŒã‚¹ã®ãƒ‘タヌンをオブゞェクト指向の C# æ§‹é€ ã«ãƒžãƒƒãƒ”ングする必芁がありたす。ナヌザヌむンタヌフェヌスも、ActiveX ã‚³ãƒ³ãƒˆãƒ­ãƒŒãƒ«ã‚’䜿甚した VB6 ãƒ•ォヌムから Blazor や ASP.NET Core MVC ãªã©ã®ãƒ¢ãƒ€ãƒ³ãª Web ãƒ•レヌムワヌクぞの倉換が必芁です。デヌタアクセスパタヌンはレガシヌな ADO や DAO ã‹ã‚‰ Entity Framework Core の async/await ãƒ‘タヌンに移行し、COM äŸå­˜é–¢ä¿‚は .NET ãƒã‚€ãƒ†ã‚£ãƒ–の代替手段や NuGet ãƒ‘ッケヌゞに眮き換える必芁があり、゚ラヌハンドリングは On Error Resume Next や On Error GoTo ãƒ‘タヌンから構造化された try-catch äŸ‹å€–凊理に移行したす。 サンプルアプリケヌションの玹介 Salmon King Seafood (SKS)  ずいう VB6 Multiple Document Interface (MDI) アプリケヌションを䜿っお AWS Transform custom を解説したす。これは兞型的な゚ンタヌプラむズモダナむれヌションの課題を衚すアプリケヌションです。SKS は以䞋の特城を持぀氎産物受泚管理システムです。 15 以䞊の VB6 フォヌム – 受泚、顧客管理、商品カタログ、圚庫管理、承認ワヌクフロヌを含む 3 ぀の VB6 モゞュヌル (modConnection.bas、modFunctions.bas、modMain.bas) – 共有ビゞネスロゞックずデヌタベヌス接続を含む SQLite デヌタベヌス (Orders.db) – ADO デヌタコントロヌルずデヌタバむンディングを通じおアクセス 暙準 VB6 コントロヌル – MSFlexGrid、ListView、Toolbar、ImageList、ComboBox、Control Arrays を含む MDI ã‚¢ãƒŒã‚­ãƒ†ã‚¯ãƒãƒ£  â€“ ãƒ¡ã‚€ãƒ³ã‚³ãƒ³ãƒ†ãƒŠãƒ•ォヌムずメニュヌからトリガヌされる子フォヌム このアプリケヌションは、゚ンタヌプラむズアプリケヌションでよく芋られる VB6 パタヌンを実装しおいたす。 むベントハンドラを持぀フォヌムベヌスの UI デヌタバむンディングを䜿甚した ADO デヌタアクセス COM ベヌスのコントロヌル モゞュヌル内の手続き型ビゞネスロゞック これらの芁玠により、SKS ぱンタヌプラむズ VB6 モダナむれヌションで遭遇する耇雑さを代衚するものずなっおいたす。 ゜リュヌション抂芁 VB6 ã‹ã‚‰ C# ãžã®ãƒ¢ãƒ€ãƒŠã‚€ã‚ŒãƒŒã‚·ãƒ§ãƒ³ã«ã¯ã€AWS Transform custom ã®è€‡é›‘な倉換パタヌンの孊習・適甚機胜を掻甚できたす。゚ンドツヌ゚ンドのプロセスは以䞋のステヌゞに埓いたす。 評䟡 – VB6 アプリケヌションポヌトフォリオのスコヌプず耇雑さを評䟡する 定矩 – VB6 から C# ぞの倉換パタヌン、ビゞネスルヌル、コヌディング暙準を含むカスタム倉換を定矩する 実行 – 倧芏暡に倉換を実行する レビュヌず反埩 – フィヌドバックルヌプによる継続的な改善を行いながらレビュヌず反埩を行う このアヌキテクチャにより、倉換定矩を䞀床䜜成しおテストし、数癟のアプリケヌションに適甚できたす。 前提条件 開始する前に、以䞋を確認しおください。 AWS Transform Custom ぞのアクセス暩を持぀ AWS アカりント 。珟圚の料金の詳现に぀いおは、AWS Transform の料金ペヌゞをご芧ください。 ATX CLI (Command Line Interface) がむンストヌルされた MacOS たたは Linux 環境。詳现なセットアップ手順に぀いおは、 AWS Transform custom 前提条件ガむド を参照しおください。 **Windows 開発者の堎合** : WSL2 (Windows Subsystem for Linux) をむンストヌルし、Ubuntu たたはその他の Linux ディストリビュヌションから ATX CLI を実行しおください。CLI は `/mnt/c/` パスを通じおロヌカルコヌドベヌスを盎接操䜜したす。 倉換埌のアプリケヌションをテストするための .NET 10 SDK 以降 コヌドレビュヌ甚の Visual Studio 2022 以降たたは Visual Studio Code VB6 および .NET の開発知識 有効な認蚌情報が蚭定されおいる Git があるこず 環境の準備 Salmon King Seafood (SKS)  ã‚µãƒ³ãƒ—ルアプリケヌションをダりンロヌドしたす。これには、兞型的な゚ンタヌプラむズ VB6 ワヌクロヌドを代衚する VB6 MDI アプリケヌションが含たれおいたす。 リポゞトリをロヌカルマシンにクロヌンしたす。 git clone https://github.com/GAPVelocityAI/SKSVB6.git  cd SKSVB6  Windows で WSL2 ã‚’䜿甚しおいる堎合は、䞡方の環境からアクセス可胜なパスにクロヌンしたす。 git clone https://github.com/GAPVelocityAI/SKSVB6.git /mnt/c/Projects/SKSVB6  cd <path-to-repository>  リポゞトリの内容を確認したす。VB6 ãƒ—ロゞェクトファむル (SKS.vbp)、フォヌムファむル (.frm/.frx)、モゞュヌル (.bas)、SQLite ãƒ‡ãƒŒã‚¿ãƒ™ãƒŒã‚¹ (Orders.db) ãŒè¡šç€ºã•れたす。 ls -la *.vbp *.frm *.bas *.db  倉換远跡甚にリポゞトリを初期化したす。 git add .  git commit -m "Baseline before VB6 to C# transformation"  次に、リファレンスドキュメントを含むリポゞトリをクロヌンしたす。このリポゞトリには、AWS Transform ã«ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆãšã—お枡すビゞネスルヌルず倉換䟋が含たれおおり、組織の暙準に合ったコヌドを生成したす。 git clone -b dotnet-transform-custom https://github.com/aws-samples/dotnet-genai-samples.git  りォヌクスルヌ 以䞋のセクションでは、AWS Transform CLI を䜿甚しお VB6 コヌドをモダンな C# プロゞェクトに倉換する手順を説明したす。 ステップ 1: VB6 アプリケヌションを評䟡する 倉換定矩を䜜成する前に、VB6 ポヌトフォリオのスコヌプず耇雑さを把握したす。SKS リポゞトリをクロヌンした状態で、ATX CLI を起動しお評䟡を開始したす。 atx custom def exec -p <path-to-repository> \  -n 'AWS/early-access-comprehensive-codebase-analysis' \  -t  パラメヌタ : -p: ゜ヌスプロゞェクトのパス (クロヌンした SKS リポゞトリ) -n: 倉換定矩名 -t: å€‰æ›ã«é–¢ã‚ã‚‹ã™ã¹ãŠã®ãƒ„ヌルを信頌し、実行䞭に AWS Transform ãŒèš±å¯ã‚’求めお䞀時停止するのを防ぐ 泚意 2026 幎 5 月 1 日時点では、倉換定矩名は AWS/early-access-comprehensive-codebase-analysis から AWS/comprehensive-codebase-analysis に倉曎になっおいたす AWS Transform custom ã¯ã€ã‚·ã‚§ãƒ«ã‚¹ã‚¯ãƒªãƒ—トなどの特定のアクションを実行するために蚱可を必芁ずしたす。䞊蚘のコマンドの â€“t åŒ•数により、ツヌルはナヌザヌに継続的にプロンプトを衚瀺するこずなく実行できたす。 評䟡では SKS プロゞェクトを分析し、フォヌム数 (15 以䞊)、モゞュヌル数 (3)、COM コンポヌネントの䟝存関係 (MSFlexGrid、ListView)、デヌタベヌスアクセスパタヌン (ADO with SQLite)、掚定倉換耇雑床スコアを含む包括的なレポヌトを生成したす。 この評䟡レポヌトを䜿甚しお、VB6 アプリケヌションを倉換する際に AWS Transform custom に远加のコンテキストを提䟛したす。 ステップ 2: VB6 から C# ぞのカスタム倉換定矩を䜜成する 次に、VB6 からモダンな C# ぞの倉換パタヌンずルヌルをキャプチャするカスタム倉換定矩を䜜成したす。AWS Transform custom は、提䟛された䟋、ドキュメント、ビゞネスルヌルから孊習し、これらのパタヌンを䞀貫しお適甚したす。 察話型 CLI を起動したす。 atx -t  プロンプトが衚瀺されたら、倉換の説明ずしお VB6 to C# ASP.NET Core web application migration ず入力したす。AWS Transform custom は既存の倉換を怜玢し、この特定のシナリオに該圓するものが芋぀からない堎合、カスタム倉換を䜜成するかどうかを尋ねたす。「create a new one」ず入力しお確認したす。 図 1 – atx cli の起動 倉換コンテキストずビゞネスルヌルの提䟛  AWS Transform custom ã¯ã€ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã€ç§»è¡Œã‚¬ã‚€ãƒ‰ã€ã‚µãƒ³ãƒ—ルコヌドの提䟛を求めたす。ここで組織固有の芁件を远加したす。SKS ã‚¢ãƒ—リケヌションに぀いおは、そのアヌキテクチャに関するコンテキストを提䟛したす。 Salmon King Seafood (SKS) ずいう VB6 MDI アプリケヌションがありたす。゜ヌスコヌドは <path-to-repository> にありたす。泚文受付、顧客管理、補品カタログ、圚庫管理、承認ワヌクフロヌなど、15 以䞊のフォヌムがありたす。3 ぀のモゞュヌル (デヌタベヌス接続甚の modConnection.bas、ナヌティリティ関数甚の modFunctions.bas、アプリケヌションの゚ントリ ポむント甚の modMain.bas) を䜿甚しおいたす。デヌタベヌスは SQLite で、デヌタ バむンディングを䜿甚した ADO デヌタ コントロヌルを介しおアクセスしたす。コントロヌルには、MSFlexGrid、ListView、Toolbar、ImageList、およびコントロヌル アレむが含たれたす。これを .NET 10 をタヌゲットずする ASP.NET Core Blazor Server アプリケヌションに倉換しおください。 組織向けの移行パタヌンのカスタマむズ  移行の粟床を向䞊させるために、組織固有のマッピングルヌルを提䟛したす。これらはナヌザヌが䜜成したマヌクダりンファむルで、AWS Transform custom からプロンプトが衚瀺された際に参照したす。AWS Transform custom はこれらを倉換プランに組み蟌みたす。プロンプトが衚瀺されたら、察話型セッション䞭に VB6 ゜ヌスコヌドずずもにこれらのファむルを参照したす。 図 2 – 倉換プランぞのビゞネスルヌルやその他のコンテキストの远加 倉換䟋の参照 <path-to-repository>/dotnet-genai-samples/src/Amazon.GenAI.TransformCustom/vb6-csharp-references/example-transformations.md ファむルを確認したす。ATX ゚ヌゞェントがサンプル倉換を求めるプロンプトを衚瀺したら、以䞋のように参照したす。 倉換前埌の䟋は、<path-to-repository>/dotnet-genai-samples/src/Amazon.GenAI.TransformCustom/vb6-csharp-references/example-transformations.md にありたす。 䌁業コヌディング芏玄の参照 AWS Transform custom ã§ã¯ã€çµ„織のコヌディング芏玄を倉換に䜿甚するこずでコヌド生成を制埡できたす。これには特定の C# ã®æ©Ÿèƒœã‚„芏玄を含めるこずができたす。AWS Transform custom はこれらを䜿甚しお、チヌムのスタむルに合ったコヌドを生成したす。<path-to-repository>/dotnet-genai-samples/src/Amazon.GenAI.TransformCustom/vb6-csharp-references/coding-standards.md ファむルを確認したす。組織のプラクティスに合わせお独自の芏玄を䜜成できたす。 䟋 : <path-to-repository>/dotnet-genai-samples/src/Amazon.GenAI.TransformCustom/vb6-csharp-references/coding-standards.md で定矩されおいるコヌディング芏玄を適甚しおください。 タヌゲットアヌキテクチャ仕様の参照 オプションずしお、 <path-to-repository>/dotnet-genai-samples/src/Amazon.GenAI.TransformCustom/vb6-csharp-references/target-architecture.md にあるような、望たしい出力アヌキテクチャを蚘述したドキュメントを䜿甚できたす。 AWS Transform custom ã¯å‚照されたすべおのファむルを読み取り、組織のパタヌン、芏玄、アヌキテクチャに合った倉換プランを生成したす。 生成された倉換定矩 あなたの入力に情報に基づいお、AWS Transform custom はフェヌズごずに敎理された包括的な倉換定矩を生成したす。 フェヌズ 1 – 分析 : VB6 コンポヌネントのむンベントリ、䟝存関係の特定、䟝存関係グラフの䜜成 フェヌズ 2 – プロゞェクト構造 : ASP.NET Core Blazor Server プロゞェクトの生成、NuGet パッケヌゞの蚭定、䟝存性泚入のセットアップ フェヌズ 3 – デヌタレむダヌ : ADO/DAO から Entity Framework Core ぞの倉換、DbContext ず゚ンティティモデルの生成 (適切な堎合は record 型を䜿甚) フェヌズ 4 – ビゞネスロゞック : モゞュヌルからサヌビスクラスぞの倉換 (プラむマリ コンストラクタヌを䜿甚)、関数から async メ゜ッドぞの倉換 フェヌズ 5 – UI レむダヌ : VB6 フォヌムから Blazor コンポヌネントぞの倉換、むベントハンドラの倉換 フェヌズ 6 – æ€œèšŒ : ビルド成功の確認、ナニットテストの生成、機胜的等䟡性のテスト 倉換定矩をすぐに適甚するか、レビュヌしお修正するか、レゞストリに公開しお再利甚するか、新しいプランを開始するかを遞択できたす。次のステップでは、倧芏暡に再利甚できるように倉換定矩を公開したす。 AWS Transform custom は倉換プランの名前ず説明を提案しおきたす。そのたた受け入れるか、必芁に応じお修正できたす。これで倉換定矩がチヌム党䜓で利甚可胜になりたす。 カスタム倉換定矩の衚瀺ず管理  公開埌、察話型゚ヌゞェントたたは以䞋の CLI コマンドを䜿甚しお、カスタム倉換定矩ず利甚可胜なすべおの AWS マネヌゞド倉換を衚瀺できたす。 atx custom def list 図 3 – ナヌザヌが䜜成したカスタム倉換プランの䞀芧 このコマンドは、AWS マネヌゞド倉換 (AWS/ プレフィックス付き) ずカスタム定矩の倉換の䞡方を衚瀺したす。カスタム定矩の䞋に VB6-to-CSharp-Blazor-Migration 倉換プランが衚瀺されたす。 ステップ 3: 倉換を実行する カスタム倉換定矩を公開したら、VB6 アプリケヌションのモダナむれヌションを実行できたす。プロンプトが衚瀺されたら、プロゞェクトに察しお倉換プランを実行したす。リポゞトリぞのパスず、倉換埌にプロゞェクトをビルドするためのビルドコマンドを䞎える必芁がありたす。 図 4 – 倉換を怜蚌するためのビルドコマンドの远加 以䞋のコマンドを䜿甚しお倉換プランを盎接タヌミナルから実行するこずもできたす。 atx custom def exec -p <path-to-repository>\  -n 'VB6-to-CSharp-Blazor-Migration' \  -t  AWS Transform custom が認識すべき远加のコンテキストを提䟛するかどうかを尋ねられたす。これは、保存された倉換定矩には含たれないその堎限りのコンテキスト (コヌド分析で生成されたドキュメントなど) を提䟛する堎合に䟿利です。 図 5 – 倉換プラン生成前の远加コンテキストの远加 プロンプトに回答するず、AWS Transform は実行たたはレビュヌ・修正するための倉換プランを生成したす。 図 6 – 倉換プランのレビュヌたたは続行 倉換プランの内容に問題なければ 続行する 倉換゚ヌゞェントは SKS プロゞェクトの構造を分析し、MDI コンテナ (frmMain.frm)、子フォヌム、モゞュヌル、デヌタベヌスパタヌンを特定しおから、倉換定矩を適甚したす。゚ヌゞェントは以䞋を倉換したす。 frmMain.frm (MDI コンテナ) → ナビゲヌションメニュヌ付きの Blazor MainLayout.razor frmCustomers.frm、frmProviders.frm など → 個別の Blazor ペヌゞコンポヌネント modConnection.bas → Entity Framework Core ず SQLite プロバむダヌを䜿甚した SksDbContext.cs modFunctions.bas → ドメむンごずに敎理された拡匵メ゜ッドクラス MSFlexGrid デヌタグリッド → デヌタバむンディング付きの Blazor テヌブルコンポヌネント ADO ãƒ‡ãƒŒã‚¿ã‚³ãƒ³ãƒˆãƒ­ãƒŒãƒ« â†’ async/await ã‚’䜿甚した Entity Framework Core ã‚¯ã‚šãƒª ステップ 4: ãƒ¬ãƒ“ュヌ、テスト、反埩 倉換が完了するず、AWS Transform custom は倉換されたコヌドを新しいブランチたたはディレクトリに出力し、倉換レポヌトず手動修正の次のステップを提瀺したす。 倉換結果のレビュヌ  倉換レポヌトには、以䞋を含む終了基準の怜蚌が含たれたす。 dotnet build が゚ラヌれロで成功 すべおの VB6 フォヌムが Blazor コンポヌネントに倉換枈み (䟋: frmCustomers.frm → Customers.razor、frmOrderReception.frm → OrderReception.razor) デヌタアクセスレむダヌが Entity Framework Core ず SQLite プロバむダヌおよび async パタヌンを䜿甚 (ADO/ADODC デヌタコントロヌルを眮換) COM 䟝存関係の排陀 — MSFlexGrid は Blazor テヌブルコンポヌネントに、Toolbar/ImageList は Blazor ナビゲヌションに眮換 ゚ラヌハンドリングが On Error 文から構造化された try-catch 䟋倖凊理に倉換 仕様に埓ったモダンな C# 機胜の適甚 (レコヌド型、プラむマリコンストラクタヌ、パタヌンマッチング) modConnection.bas が IDbContextFactory<SksDbContext> を䜿甚した登録枈み Dependency Injection (DI) サヌビスに倉換 AWS Transform は 1 回の実行で怜蚌基準を満たさない堎合がありたす。倉換の実行埌、成功した郚分ず倱敗した郚分のサマリヌを含む郚分的な倉換結果が埗られるこずがありたす。以䞋に倉換結果を瀺したす。 図 7 – 完了した倉換結果 フィヌドバックプロンプトから、未達成の基準に察凊するために倉換を再実行できたす。倉換された SKS ã‚¢ãƒ—リケヌションを怜蚌するには、タヌミナルに切り替えお以䞋を実行したす。 cd <path-to-your-project>  dotnet build  dotnet run  ブラりザで https://localhost:<port> ã«ã‚¢ã‚¯ã‚»ã‚¹ã—、以䞋に瀺すように Blazor ã‚¢ãƒ—リケヌションが受泚、顧客管理、商品カタログのペヌゞを正しくレンダリングするこずを確認したす。 図 8 – 請求曞䜜成ペヌゞ 図 9 – 泚文䜜成ペヌゞ 機胜が䞍足しおいる堎合は、CLI ã«ãƒ•ィヌドバックを返しお倉換結果を繰り返し改善したす。 Transform ã‚³ãƒžãƒ³ãƒ‰ã®ãƒ‘フォヌマンス Transform custom コマンドは、倉換察象のコヌドベヌスのサむズに応じお、完了たでに最倧 60 åˆ†ã‹ã‹ã‚‹å ŽåˆãŒã‚りたす。コヌドファむルや䟝存関係が倚い倧芏暡なプロゞェクトでは、圓然ながらより倚くの凊理時間が必芁になりたす。 倉換の制限事項に぀いお Transform custom の機胜では、VB6 アプリケヌションのすべおの機胜を自動的に倉換できるずは限りたせん。倉換完了埌、゜ヌスの VB6 ã‚¢ãƒ—リケヌションず倉換先の C# ã‚¢ãƒ—リケヌション間の機胜を比范・怜蚌する必芁がありたす。倉換されなかった䞍足機胜に぀いおは、 Kiro  ã‚„  Amazon Q Developer  ãªã©ã® AI 搭茉ツヌルを䜿甚しお、゜ヌスから倉換先のコヌドベヌスぞの倉換・移怍を支揎できたす。 ナニットテストの重芁性 ナニットテストは、倉換プロセス党䜓を通じお機胜の正圓性を怜蚌したす。倉換されたコヌドが元の VB6 アプリケヌションず同䞀の動䜜をするこずを確認し、倉換䞭に導入された䞍䞀臎やリグレッションを迅速に特定するのに圹立ちたす。倉換前に䞀連のテストを敎備しおください。これがリグレッションテストの基準ずなり、倉換埌も同等に動䜜するこずを怜蚌できたす。 たずめ 組織固有のパタヌン、ビゞネスルヌル、モダンな C# æ©Ÿèƒœã®èš­å®šã‚’含むカスタム倉換定矩を䜿甚するこずで、組織に蓄積された知芋を維持しながら数癟の VB6 ã‚¢ãƒ—リケヌションを䜓系的にモダナむズできるようになりたした。 倉換を䞀床定矩すれば、アプリケヌションポヌトフォリオ党䜓に適甚できたす。これにより、再利甚可胜な倉換定矩に組織に蓄積された知芋が保存されたす。フィヌドバックルヌプによる継続的な改善により、各倉換はより掗緎され、レコヌド型、プラむマリコンストラクタヌ、パタヌンマッチングなどのモダンな C# æ©ŸèƒœãŒã‚³ãƒŒãƒ‰ãƒ™ãƒŒã‚¹ã«è‡ªå‹•的に適甚されたす。モダナむズされたアプリケヌションは Linux ず AWS Graviton äžŠã§å‹•䜜し、むンフラストラクチャコストを削枛できる可胜性がありたす。 AWS Transform custom ã‚’䜿甚しお VB6 ã‚¢ãƒ—リケヌションポヌトフォリオのモダナむれヌションを始めたしょう。セットアップ手順に぀いおは、 AWS Transform custom Getting Started Guide  ã‚’ご芧ください。 远加リ゜ヌス AWS Transform custom Getting Started Guide AWS Transform custom Product Page AWS Transform custom Documentation AWS Transform custom Command Reference AWS Transform for .NET .NET on AWS Developer Center 翻蚳は゜リュヌションアヌキテクトの Yoshinori Sawada が担圓したした。原文は こちら です。 著者に぀いお David Kilzer David Kilzer は、AWS ゚コシステム内での Microsoft ワヌクロヌドの最適化を専門ずする゜リュヌションアヌキテクトです。C#、SQL Server、そしお AWS サヌビスを甚いた最新の゜フトりェア゜リュヌション構築に関する専門知識を有しおいたす。 Ashish Bhatia Ashish Bhatia は、AWS のシニア゜リュヌションアヌキテクトで、゚ンタヌプラむズのお客様のクラりドゞャヌニヌのガむドに泚力しおいたす。AWS のクラりドネむティブサヌビスを䜿甚しお最新の゜フトりェア゜リュヌションを構築するお客様を支揎するこずに情熱を泚いでいたす。たた、圌は Amazon Web Services のスペシャリスト゜リュヌションアヌキテクトです。最先端の生成 AI ゜リュヌションの䜜成に取り組み、お客様䞭心のアプロヌチを優先しおいたす。 Ty Augustine Ty Augustine は、.NET、SQL Server、コンテナを専門ずする Microsoft スペシャリスト゜リュヌションアヌキテクトです。ニュヌペヌクを拠点に、様々な業界の䌁業ず緊密に連携し、AWS クラりドぞの移行ずモダナむれヌションを加速させおいたす。AWS に入瀟する前は、20 幎以䞊にわたり Microsoft スタックの゜フトりェアアヌキテクトずしお掻躍しおいたした。

動画

該圓するコンテンツが芋぀かりたせんでした

曞籍

おすすめマガゞン

蚘事の写真

SDV時代の「むネヌブラヌ」を目指す。パナ゜ニック オヌトモヌティブシステムズが远求する「゜フトりェア・ファヌスト」の本...

蚘事の写真

SDV時代の「むネヌブラヌ」を目指す。パナ゜ニック オヌトモヌティブシステムズが远求する「゜フトりェア・ファヌスト」の本...

蚘事の写真

死亡亀通事故れロぞ。アむサむトを支えるステレオ画像認識ず半導䜓内補の裏偎

蚘事の写真

Claude Codeを組織で䜿いこなす— サヌバサむドAI゚ヌゞェント運甚の実践知

新着動画

蚘事の写真

クラりドAIが䜿えない珟堎は、どうAIを"持぀"のか補造業の事䟋から孊ぶロヌカルAIFOCUSTUDIO

蚘事の写真

【ルヌプ゚ンゞニアリングずは】AIに自動で仕事を任せる前に決めるべき4぀のこず

蚘事の写真

「Noetra」単なる囜産ChatGPTではない。3,800億円PJの本圓の狙い。゚ンゞニアが求められるスキルの倧転換