<mxfile host="www.iigtn.com" modified="2026-05-04T00:00:00.000Z" agent="iigtn-platform" version="24.0.0">
  <diagram name="hojinka.com Architecture" id="hojinka-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="hojinka.com — 配信フロー / OIDC デプロイ" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=18;fontStyle=1;" vertex="1" parent="1">
          <mxGeometry x="320" y="20" width="560" height="30" as="geometry" />
        </mxCell>

        <mxCell id="lyrA" value="A. 訪問者の閲覧フロー" 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;hojinka.com" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666;fontSize=11;" vertex="1" parent="1">
          <mxGeometry x="80" y="180" width="140" 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="290" y="170" width="78" height="78" as="geometry" />
        </mxCell>

        <mxCell id="cf" value="CloudFront&#xa;(OAC)" style="sketch=0;outlineConnect=0;fontColor=#232F3E;fillColor=#8C4FFF;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.cloudfront;" vertex="1" parent="1">
          <mxGeometry x="500" 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="510" y="280" width="58" height="58" as="geometry" />
        </mxCell>

        <mxCell id="s3" value="S3 (private)&#xa;hojinka-web-prod-XXXXXX" style="sketch=0;outlineConnect=0;fontColor=#232F3E;fillColor=#7AA116;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=10;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.s3;" vertex="1" parent="1">
          <mxGeometry x="700" y="170" width="78" height="78" as="geometry" />
        </mxCell>

        <mxCell id="content" value="6 ステージ&#xa;/kaigyo /hanrei /setsuritsu /zeimu /card /freelance&#xa;+ 法人化シミュレーター (Vanilla JS)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e3f2fd;strokeColor=#1565c0;fontSize=10;align=left;spacing=8;" vertex="1" parent="1">
          <mxGeometry x="880" y="170" width="240" height="80" as="geometry" />
        </mxCell>

        <mxCell id="aedge1" value="① DNS resolve" 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 → CF" style="endArrow=classic;html=1;fontSize=10;" edge="1" parent="1" source="r53" target="cf">
          <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="cf">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="aedge4" value="③ OAC sigv4" style="endArrow=classic;html=1;fontSize=10;" edge="1" parent="1" source="cf" target="s3">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="aedge5" value="serve" style="endArrow=classic;html=1;fontSize=10;dashed=1;" edge="1" parent="1" source="s3" target="content">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>

        <mxCell id="lyrB" value="B. デプロイフロー (GitHub Actions OIDC、静的キーレス)" 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="320" as="geometry" />
        </mxCell>

        <mxCell id="dev" value="👨‍💻 ローカル&#xa;git push main" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666;fontSize=11;" vertex="1" parent="1">
          <mxGeometry x="80" y="490" width="140" height="50" as="geometry" />
        </mxCell>

        <mxCell id="gh" value="GitHub Actions&#xa;workflow" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff8e1;strokeColor=#ffa726;fontSize=10;" vertex="1" parent="1">
          <mxGeometry x="290" y="490" width="140" height="50" as="geometry" />
        </mxCell>

        <mxCell id="oidc" value="OIDC Provider&#xa;token.actions.githubusercontent.com" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff;strokeColor=#666;fontSize=10;dashed=1;" vertex="1" parent="1">
          <mxGeometry x="290" y="580" width="240" height="50" as="geometry" />
        </mxCell>

        <mxCell id="iam" value="IAM Role&#xa;hojinka-github-actions-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.identity_and_access_management;" vertex="1" parent="1">
          <mxGeometry x="610" y="480" width="78" height="78" as="geometry" />
        </mxCell>

        <mxCell id="s3dep" value="S3 sync" style="sketch=0;outlineConnect=0;fontColor=#232F3E;fillColor=#7AA116;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=10;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.s3;" vertex="1" parent="1">
          <mxGeometry x="800" y="450" width="78" height="78" as="geometry" />
        </mxCell>

        <mxCell id="cfinv" value="CloudFront&#xa;Invalidation /*" 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.cloudfront;" vertex="1" parent="1">
          <mxGeometry x="800" y="570" width="78" height="78" as="geometry" />
        </mxCell>

        <mxCell id="bedge1" value="① push" 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="② OIDC token request" style="endArrow=classic;html=1;fontSize=10;" edge="1" parent="1" source="gh" target="oidc">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="bedge3" value="③ AssumeRoleWithWebIdentity" style="endArrow=classic;html=1;fontSize=10;" edge="1" parent="1" source="oidc" target="iam">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="bedge4" value="④ aws s3 sync" style="endArrow=classic;html=1;fontSize=10;" edge="1" parent="1" source="iam" target="s3dep">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="bedge5" value="⑤ create-invalidation" style="endArrow=classic;html=1;fontSize=10;" edge="1" parent="1" source="iam" target="cfinv">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>

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