<mxfile host="www.iigtn.com" modified="2026-05-04T00:00:00.000Z" agent="iigtn-platform" version="24.0.0">
  <diagram name="ai-erabikata.com Architecture" id="aiera-arch">
    <mxGraphModel dx="1400" dy="900" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1200" pageHeight="780" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />

        <mxCell id="title" value="ai-erabikata.com — Next.js × AWS Amplify + 計測 + 収益化" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=18;fontStyle=1;" vertex="1" parent="1">
          <mxGeometry x="280" y="20" width="640" height="30" as="geometry" />
        </mxCell>

        <mxCell id="lyrA" value="A. 訪問者の閲覧フロー (Amplify Hosting → CDN/CloudFront)" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fafafa;strokeColor=#cccccc;dashed=1;fontSize=12;fontStyle=2;align=left;verticalAlign=top;spacing=8;" vertex="1" parent="1">
          <mxGeometry x="40" y="80" width="1120" height="290" as="geometry" />
        </mxCell>

        <mxCell id="user" value="🌐 訪問者&#xa;ai-erabikata.com" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666;fontSize=11;" vertex="1" parent="1">
          <mxGeometry x="80" y="180" width="160" height="50" as="geometry" />
        </mxCell>

        <mxCell id="r53" value="Route 53&#xa;hosted zone" style="sketch=0;outlineConnect=0;fontColor=#232F3E;fillColor=#8C4FFF;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=10;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.route_53;" vertex="1" parent="1">
          <mxGeometry x="310" y="170" width="78" height="78" as="geometry" />
        </mxCell>

        <mxCell id="acm" value="ACM&#xa;us-east-1" style="sketch=0;outlineConnect=0;fontColor=#232F3E;fillColor=#DD344C;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=10;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.certificate_manager_3;" vertex="1" parent="1">
          <mxGeometry x="320" y="280" width="58" height="58" as="geometry" />
        </mxCell>

        <mxCell id="amp" value="AWS Amplify&#xa;Hosting (Next.js App Router)" style="sketch=0;outlineConnect=0;fontColor=#232F3E;fillColor=#DD344C;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=10;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.amplify;" vertex="1" parent="1">
          <mxGeometry x="510" y="170" width="78" height="78" as="geometry" />
        </mxCell>

        <mxCell id="ssg" value="SSG ページ&#xa;30 記事 + AI セレクター + 法律ページ&#xa;構造化データ (Article/FAQPage/BreadcrumbList)&#xa;PWA / RSS / 動的 sitemap" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e3f2fd;strokeColor=#1565c0;fontSize=10;align=left;spacing=8;" vertex="1" parent="1">
          <mxGeometry x="700" y="160" width="280" height="100" as="geometry" />
        </mxCell>

        <mxCell id="ga" value="GA4&#xa;G-XXXXXXXXX" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff8e1;strokeColor=#ffa726;fontSize=10;" vertex="1" parent="1">
          <mxGeometry x="1010" y="170" width="120" height="40" as="geometry" />
        </mxCell>

        <mxCell id="aedge1" value="① DNS" style="endArrow=classic;html=1;fontSize=10;" edge="1" parent="1" source="user" target="r53">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="aedge2" value="② alias" style="endArrow=classic;html=1;fontSize=10;" edge="1" parent="1" source="r53" target="amp">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="aedge3" value="TLS" style="endArrow=classic;dashed=1;html=1;fontSize=10;" edge="1" parent="1" source="acm" target="amp">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="aedge4" value="serve" style="endArrow=classic;html=1;fontSize=10;" edge="1" parent="1" source="amp" target="ssg">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="aedge5" value="計測" style="endArrow=classic;dashed=1;html=1;fontSize=10;" edge="1" parent="1" source="ssg" target="ga">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>

        <mxCell id="lyrB" value="B. コンテンツ運用 / ビルドフロー" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fafafa;strokeColor=#cccccc;dashed=1;fontSize=12;fontStyle=2;align=left;verticalAlign=top;spacing=8;" vertex="1" parent="1">
          <mxGeometry x="40" y="400" width="1120" height="280" as="geometry" />
        </mxCell>

        <mxCell id="dev" value="👨‍💻 ローカル&#xa;MDX 記事執筆" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666;fontSize=11;" vertex="1" parent="1">
          <mxGeometry x="80" y="510" width="160" height="50" as="geometry" />
        </mxCell>

        <mxCell id="gh" value="GitHub iigtn/ai-erabikata&#xa;(private)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff8e1;strokeColor=#ffa726;fontSize=10;" vertex="1" parent="1">
          <mxGeometry x="320" y="510" width="180" height="50" as="geometry" />
        </mxCell>

        <mxCell id="ampbuild" value="Amplify webhook&#xa;auto build &amp; deploy" style="sketch=0;outlineConnect=0;fontColor=#232F3E;fillColor=#DD344C;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=10;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.amplify;" vertex="1" parent="1">
          <mxGeometry x="610" y="500" width="78" height="78" as="geometry" />
        </mxCell>

        <mxCell id="ogp" value="Next.js ImageResponse&#xa;OGP 動的生成" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e3f2fd;strokeColor=#1565c0;fontSize=10;" vertex="1" parent="1">
          <mxGeometry x="800" y="510" width="180" height="50" as="geometry" />
        </mxCell>

        <mxCell id="cdn" value="CDN 反映&#xa;〜数分" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e3f2fd;strokeColor=#1565c0;fontSize=10;" vertex="1" parent="1">
          <mxGeometry x="1010" y="510" width="120" height="50" as="geometry" />
        </mxCell>

        <mxCell id="bedge1" value="① push main" style="endArrow=classic;html=1;fontSize=10;" edge="1" parent="1" source="dev" target="gh">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="bedge2" value="② webhook" style="endArrow=classic;html=1;fontSize=10;" edge="1" parent="1" source="gh" target="ampbuild">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="bedge3" value="③ next build" style="endArrow=classic;html=1;fontSize=10;" edge="1" parent="1" source="ampbuild" target="ogp">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="bedge4" value="④ deploy" style="endArrow=classic;html=1;fontSize=10;" edge="1" parent="1" source="ogp" target="cdn">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>

      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
