<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>相互作用設計 on 設計書</title><link>https://Hitamuki.github.io/image-upload/design/interaction/</link><description>Recent content in 相互作用設計 on 設計書</description><generator>Hugo</generator><language>ja</language><atom:link href="https://Hitamuki.github.io/image-upload/design/interaction/index.xml" rel="self" type="application/rss+xml"/><item><title>画像アップロード機能</title><link>https://Hitamuki.github.io/image-upload/design/interaction/ia001-upload/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://Hitamuki.github.io/image-upload/design/interaction/ia001-upload/</guid><description>&lt;h1 id="画像アップロード機能"&gt;画像アップロード機能&lt;a class="anchor" href="#%e7%94%bb%e5%83%8f%e3%82%a2%e3%83%83%e3%83%97%e3%83%ad%e3%83%bc%e3%83%89%e6%a9%9f%e8%83%bd"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="id"&gt;ID&lt;a class="anchor" href="#id"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;ia001-upload&lt;/p&gt;
&lt;h2 id="概要"&gt;概要&lt;a class="anchor" href="#%e6%a6%82%e8%a6%81"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;画像アップロード機能の相互作用設計を定義する&lt;/p&gt;
&lt;h2 id="関連仕様設計"&gt;関連仕様・設計&lt;a class="anchor" href="#%e9%96%a2%e9%80%a3%e4%bb%95%e6%a7%98%e8%a8%ad%e8%a8%88"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;種別&lt;/th&gt;
 &lt;th&gt;ドキュメント&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;要件&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://Hitamuki.github.io/image-upload/requirements/req001-upload/"&gt;req001-upload&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;UI&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://Hitamuki.github.io/image-upload/design/ui/scr001-upload/"&gt;scr001-upload&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;API&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://Hitamuki.github.io/image-upload/design/api/images/api001-upload/"&gt;api001-upload&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;API&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://Hitamuki.github.io/image-upload/design/api/images/api002-upload/"&gt;api002-upload&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;API&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://Hitamuki.github.io/image-upload/design/api/images/api003-upload/"&gt;api003-upload&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;API&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://Hitamuki.github.io/image-upload/design/api/images/api004-upload/"&gt;api004-upload&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;インフラ&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://Hitamuki.github.io/image-upload/design/infra/infra001-upload/"&gt;infra001-upload&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;セキュリティ&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://Hitamuki.github.io/image-upload/design/security/sec001-upload/"&gt;sec001-upload&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="ユースケース"&gt;ユースケース&lt;a class="anchor" href="#%e3%83%a6%e3%83%bc%e3%82%b9%e3%82%b1%e3%83%bc%e3%82%b9"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;pre class="mermaid"&gt;graph LR
 Actor((ユーザー))

 subgraph アップロード
 UC1[画像を選択してプレビューする]
 UC2[画像をアップロードする]
 end

 subgraph 閲覧
 UC3[アップロード済み画像の一覧をファイル名で確認する]
 UC4[ファイル名を選択して画像を閲覧する]
 end

 Actor --&amp;gt; UC1
 Actor --&amp;gt; UC2
 Actor --&amp;gt; UC3
 Actor --&amp;gt; UC4&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id="シーケンス"&gt;シーケンス&lt;a class="anchor" href="#%e3%82%b7%e3%83%bc%e3%82%b1%e3%83%b3%e3%82%b9"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="画像アップロード"&gt;画像アップロード&lt;a class="anchor" href="#%e7%94%bb%e5%83%8f%e3%82%a2%e3%83%83%e3%83%97%e3%83%ad%e3%83%bc%e3%83%89"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;pre class="mermaid"&gt;sequenceDiagram
 autonumber
 actor User as ユーザー
 participant FE as フロントエンド
 participant BE as バックエンド
 participant S3 as S3
 participant DB as DB

 User-&amp;gt;&amp;gt;FE: ファイル選択
 FE-&amp;gt;&amp;gt;FE: クライアントバリデーション
 FE-&amp;gt;&amp;gt;FE: プレビュー表示

 User-&amp;gt;&amp;gt;FE: アップロードボタン押下
 FE-&amp;gt;&amp;gt;BE: api001-upload
 Note over FE,BE: X-Trace-ID ヘッダー付与

 BE-&amp;gt;&amp;gt;BE: サーバーバリデーション
 BE-&amp;gt;&amp;gt;S3: PutObject 署名付きURL生成
 S3--&amp;gt;&amp;gt;BE: uploadUrl
 BE--&amp;gt;&amp;gt;FE: uploadUrl, key

 FE-&amp;gt;&amp;gt;S3: PUT uploadUrl（バイナリ直接送信）
 S3--&amp;gt;&amp;gt;FE: 200 OK

 FE-&amp;gt;&amp;gt;BE: api002-upload
 BE-&amp;gt;&amp;gt;S3: HeadObject（存在確認）
 BE-&amp;gt;&amp;gt;BE: サーバーバリデーション
 BE-&amp;gt;&amp;gt;DB: メタデータ保存
 DB--&amp;gt;&amp;gt;BE: 保存完了
 BE--&amp;gt;&amp;gt;FE: 201 Created（id, url）

 FE-&amp;gt;&amp;gt;User: 成功メッセージ・リスト更新&lt;/pre&gt;&lt;hr&gt;
&lt;h3 id="画像閲覧"&gt;画像閲覧&lt;a class="anchor" href="#%e7%94%bb%e5%83%8f%e9%96%b2%e8%a6%a7"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;pre class="mermaid"&gt;sequenceDiagram
 autonumber
 actor User as ユーザー
 participant FE as フロントエンド
 participant BE as バックエンド
 participant DB as DB
 participant S3 as S3

 User-&amp;gt;&amp;gt;FE: 初期表示
 FE-&amp;gt;&amp;gt;BE: api003-upload
 Note over FE,BE: メタデータ（ID・ファイル名）のみ取得。画像実体は取得しない
 BE-&amp;gt;&amp;gt;DB: 画像一覧取得
 DB--&amp;gt;&amp;gt;BE: [{id, fileName, createdAt}]
 BE--&amp;gt;&amp;gt;FE: リスト返却
 FE-&amp;gt;&amp;gt;User: ファイル名リスト表示

 User-&amp;gt;&amp;gt;FE: ファイル名クリック
 Note over FE,BE: 選択時に初めて画像実体（閲覧用URL）を取得
 FE-&amp;gt;&amp;gt;BE: api004-upload
 BE-&amp;gt;&amp;gt;S3: GetObject 閲覧用 Presigned URL 生成
 BE--&amp;gt;&amp;gt;FE: url
 FE-&amp;gt;&amp;gt;User: プレビュー表示&lt;/pre&gt;</description></item></channel></rss>