image_generation_plan.storage_ts
| ID | File Name | Proposed Image Filename | Relative Link Path | Prompt | Insertion Point |
|---|---|---|---|---|---|
| 1223 | docs/firebase_storage_ts_index.md | firebase_storage_ts_index_01_warehouse.png | ./picture/firebase_storage_ts_index_01_warehouse.png | Theme: Storage Metaphor Labels to Render: - Warehouse: "Cloud Storage ☁️" - Box: "File (Blob) 📦" - Tag: "Reference (Path) 🏷️" Visual Details: 1. Core Concept: Cloud Storage acts as a massive warehouse. 2. Metaphor: A clean, futuristic warehouse with infinite shelves. 3. Action: A robot placing a box labeled 'Blob' onto a shelf. 4. Layout: Isometric view. | ## 1) Storageって結局なに?(巨大な倉庫)📦 |
| 1224 | docs/firebase_storage_ts_index.md | firebase_storage_ts_index_02_roadmap.png | ./picture/firebase_storage_ts_index_02_roadmap.png | Theme: Course Roadmap Labels to Render: - Step 1: "Basic (Upload) 📤" - Step 2: "Security (Rules) 🛡️" - Step 3: "Advanced (Resize) 🖼️" - Step 4: "AI (Analyze) 🤖" Visual Details: 1. Core Concept: The learning path for the Storage module. 2. Metaphor: A winding road with 4 milestones. 3. Action: Progression from basic upload to advanced AI analysis. 4. Layout: Map view. | ## 全体アウトライン(章の流れ)🗺️ |
| 1225 | docs/firebase_storage_ts_index.md | firebase_storage_ts_index_03_app_goal.png | ./picture/firebase_storage_ts_index_03_app_goal.png | Theme: App Goal Wireframe Labels to Render: - Screen 1: "Select Image 📷" - Screen 2: "Preview (Crop) ✂️" - Screen 3: "Upload Complete ✅" Visual Details: 1. Core Concept: The profile image uploader app. 2. Metaphor: Three smartphone screens showing the user flow. 3. Action: User selecting, cropping, and uploading an image. 4. Layout: Three screens side-by-side. | ## この教材で作るミニアプリ(題材)🎨 |
| 1226 | docs/firebase_storage_ts_index.md | firebase_storage_ts_index_04_blob_vs_file.png | ./picture/firebase_storage_ts_index_04_blob_vs_file.png | Theme: Blob vs File Labels to Render: - Blob: "Raw Data 💧" - File: "Blob + Name 📄" Visual Details: 1. Core Concept: A File is just a Blob with a name. 2. Metaphor: A water droplet (Blob) vs a water bottle with a label (File). 3. Action: Comparison. 4. Layout: Side-by-side. | ### 第01章:Blob(ブロブ)とFileの関係💧📄 |
| 1227 | docs/firebase_storage_ts_index.md | firebase_storage_ts_index_05_ref_concept.png | ./picture/firebase_storage_ts_index_05_ref_concept.png | Theme: Reference Concept Labels to Render: - Path: "users/123/profile.jpg" - Ref: "Pointer 📍" - Target: "File in Cloud ☁️" Visual Details: 1. Core Concept: A reference is a pointer to a location. 2. Metaphor: A signpost or GPS pin pointing to a cloud icon. 3. Action: Pointing. 4. Layout: Connection diagram. | ### 第04章:Storage参照を作ってみる(refの考え方)🧭📦 |
| 1228 | docs/firebase_storage_ts_index.md | firebase_storage_ts_index_06_security_rules.png | ./picture/firebase_storage_ts_index_06_security_rules.png | Theme: Security Rules Gatekeeper Labels to Render: - User: "User 123 🧍" - Gate: "Rules 🛡️" - Check: "auth.uid == 123" - Access: "Granted ✅" Visual Details: 1. Core Concept: Rules checking user identity. 2. Metaphor: A security guard checking an ID card against the allowed list. 3. Action: Allowing entry. 4. Layout: Gate interaction. | ### 第08章:Security Rules入門(自分だけ書ける)🔐🛡️ |
| 1229 | docs/firebase_storage_ts_index.md | firebase_storage_ts_index_07_ai_integration.png | ./picture/firebase_storage_ts_index_07_ai_integration.png | Theme: AI Integration Labels to Render: - Image: "Photo 🖼️" - AI: "Gemini 🤖" - Output: "Tags: [Cat, Cute] 🏷️" Visual Details: 1. Core Concept: AI analyzing an image. 2. Metaphor: A robot looking at a photo and printing out tag cards. 3. Action: Analysis. 4. Layout: Process flow. | ### 第13章:AIで画像解析(タグ付け・不適切検知)🤖🖼️ |
| 1235 | docs/firebase_storage_ts_study_001.md | firebase_storage_ts_study_001_01_role_separation.png | ./picture/firebase_storage_ts_study_001_01_role_separation.png | Theme: Storage vs Firestore Labels to Render: - Storage: "Heavy Files (Images) 📷" - Firestore: "Metadata (Tags/Path) 🗃️" - App: "User App 📱" Visual Details: 1. Core Concept: Separation of concerns. 2. Metaphor: A heavy safe (Storage) for gold bars (Files) and a filing cabinet (Firestore) for inventory lists. 3. Action: App connecting to both. 4. Layout: Side-by-side comparison. | ## 3) Firestoreとの役割分担が“現実アプリ感”の正体😎✨ |
| 1236 | docs/firebase_storage_ts_study_001.md | firebase_storage_ts_study_001_02_hierarchy.png | ./picture/firebase_storage_ts_study_001_02_hierarchy.png | Theme: Storage Hierarchy Labels to Render: - Bucket: "Bucket 🪣" - Path: "Path (Folder) 🗂️" - File: "Object (Image) 📄" Visual Details: 1. Core Concept: The structure of Cloud Storage. 2. Metaphor: A bucket containing folders, which contain files. 3. Action: Zooming in from Bucket to File. 4. Layout: Nested structure. | ## 2) 画像は「バケット→パス→ファイル」で置かれる🪣🗂️ |
| 1237 | docs/firebase_storage_ts_study_001.md | firebase_storage_ts_study_001_03_rules_gate.png | ./picture/firebase_storage_ts_study_001_03_rules_gate.png | Theme: Rules Gatekeeper Labels to Render: - Input: "Upload Request 📤" - Gate: "Rules 🛡️" - Check: "Image? Size < 5MB?" - Result: "Pass/Block" Visual Details: 1. Core Concept: Rules filtering uploads. 2. Metaphor: A security gate scanning a package for dangerous items. 3. Action: Scanning. 4. Layout: Flowchart. | ## 5) Rulesは「サーバー側の門番」🛡️🚪 |
| 1238 | docs/firebase_storage_ts_study_001.md | firebase_storage_ts_study_001_04_plan_warning.png | ./picture/firebase_storage_ts_study_001_04_plan_warning.png | Theme: 2026 Plan Warning Labels to Render: - Date: "2026-02-03 📅" - Spark: "Limit/Block 🛑" - Blaze: "Safe ✅" Visual Details: 1. Core Concept: The mandatory move to Blaze plan. 2. Metaphor: A calendar marking a deadline. A barrier blocking the Spark path after that date. 3. Action: Warning/Blocking. 4. Layout: Timeline. | ## 6) 2026年の最新注意:Storageを触るならプラン周りも知っておく💸🧯 |
| 1239 | docs/firebase_storage_ts_study_001.md | firebase_storage_ts_study_001_05_ai_vision.png | ./picture/firebase_storage_ts_study_001_05_ai_vision.png | Theme: AI Vision Labels to Render: - Image: "Photo 🖼️" - AI: "Analyze 🤖" - Output: "Alt Text / Tags 📝" Visual Details: 1. Core Concept: AI analyzing an image to generate text. 2. Metaphor: A robot eye scanning a photo and typing on a screen. 3. Action: Analysis. 4. Layout: Left-to-right flow. | ## 7) AIを最初から絡める:画像アップロードは“AIの入口”🤖🖼️ |
| 1240 | docs/firebase_storage_ts_study_002.md | firebase_storage_ts_study_002_01_blaze_warning.png | ./picture/firebase_storage_ts_study_002_01_blaze_warning.png | Theme: Blaze Plan Warning Labels to Render: - Deadline: "2026-02-03 📅" - Requirement: "Blaze Plan 🔥" - Target: "Default Bucket 🪣" Visual Details: 1. Core Concept: Mandatory upgrade to Blaze plan by the deadline. 2. Metaphor: A timeline ending at a wall labeled 2026-02-03. To pass, you need the 'Blaze' key. 3. Action: Blocking/Warning. 4. Layout: Timeline view. | ## 1) まず知っておくべき “最新” 地雷ポイント🧨 |
| 1241 | docs/firebase_storage_ts_study_002.md | firebase_storage_ts_study_002_02_cost_factors.png | ./picture/firebase_storage_ts_study_002_02_cost_factors.png | Theme: Three Cost Factors Labels to Render: - Storage: "GB Stored 📦" - Bandwidth: "Download GB 🌐" - Ops: "Upload/List 📨" Visual Details: 1. Core Concept: The three main drivers of cost. 2. Metaphor: Three meters or gauges. Storage is a filling box. Bandwidth is a flowing pipe. Ops is a counter. 3. Action: Measuring. 4. Layout: Three panels. | ## 2) 課金の正体を “3つだけ” 覚える🧠✨ |
| 1242 | docs/firebase_storage_ts_study_002.md | firebase_storage_ts_study_002_03_budget_alert.png | ./picture/firebase_storage_ts_study_002_03_budget_alert.png | Theme: Budget Alert Setup Labels to Render: - Console: "Google Cloud Billing ☁️" - Setting: "Budget Alert 🔔" - Threshold: "50% / 90% / 100%" Visual Details: 1. Core Concept: Setting up alerts to prevent bill shock. 2. Metaphor: An alarm clock wired to a wallet. It rings at 50%, 90%, and 100%. 3. Action: Alerting. 4. Layout: Configuration steps. | ### Step B:予算アラート(Budget alerts)を作る🔔💸 |
| 1243 | docs/firebase_storage_ts_study_002.md | firebase_storage_ts_study_002_04_monitoring.png | ./picture/firebase_storage_ts_study_002_04_monitoring.png | Theme: Monitoring Dashboard Labels to Render: - Graph 1: "Stored Bytes 📈" - Graph 2: "Object Count 📊" - Graph 3: "Bandwidth 📉" Visual Details: 1. Core Concept: Visualizing usage metrics. 2. Metaphor: A dashboard with line graphs showing trends. 3. Action: Monitoring. 4. Layout: Dashboard view. | ### Step C:Firebase 側で “増え方” を毎日見える化📊 |
| 1244 | docs/firebase_storage_ts_study_002.md | firebase_storage_ts_study_002_05_accident_patterns.png | ./picture/firebase_storage_ts_study_002_05_accident_patterns.png | Theme: Cost Accident Patterns Labels to Render: - Leak: "Viral URL 💥" - Loop: "Infinite Trigger 🔁" - Result: "Bill Shock 💸" Visual Details: 1. Core Concept: Common scenarios that lead to high costs. 2. Metaphor: A leaking pipe (URL leak) and a hamster wheel spinning out of control (Infinite loop). 3. Action: Leaking/Spinning. 4. Layout: Hazard warning signs. | ## 4) よくある “課金事故” パターン集🔥(先に潰そう) |
| 1245 | docs/firebase_storage_ts_study_003.md | firebase_storage_ts_study_003_01_ui_mockup.png | ./picture/firebase_storage_ts_study_003_01_ui_mockup.png | Theme: Image Picker UI Labels to Render: - Empty: "Select Image 📷" - Filled: "Preview (Circle) 🖼️" - Buttons: "Change / Remove" Visual Details: 1. Core Concept: A clean UI for selecting a profile picture. 2. Metaphor: Before (Empty box) and After (Filled circle with controls). 3. Action: Transition from empty to filled. 4. Layout: Side-by-side UI mockup. | ## 1) 読む:この章のキモ🧠🔑 |
| 1246 | docs/firebase_storage_ts_study_003.md | firebase_storage_ts_study_003_02_preview_logic.png | ./picture/firebase_storage_ts_study_003_02_preview_logic.png | Theme: createObjectURL Flow Labels to Render: - Input: "File Object 📄" - Browser: "createObjectURL() ⚙️" - Output: "blob:http://... 🔗" - Img: " Visual Details: 1. Core Concept: How the browser generates a local URL for the file. 2. Metaphor: A machine converting a file into a temporary key (URL) that opens a viewer (img tag). 3. Action: Generating URL. 4. Layout: Left-to-right flow. | ### ✅ プレビューは URL.createObjectURL(file) が速い⚡ |
| 1247 | docs/firebase_storage_ts_study_003.md | firebase_storage_ts_study_003_03_component_structure.png | ./picture/firebase_storage_ts_study_003_03_component_structure.png | Theme: Component Logic Labels to Render: - Props: "onChange" - State: "file / previewUrl" - UI: "Input / Img" Visual Details: 1. Core Concept: The internal structure of the React component. 2. Metaphor: A transparent box showing the wiring (State) connecting the input to the output. 3. Action: Data flow. 4. Layout: Diagram. | ### 実装:ProfileImagePicker.tsx を作る🧩 |
| 1248 | docs/firebase_storage_ts_study_003.md | firebase_storage_ts_study_003_04_ui_states.png | ./picture/firebase_storage_ts_study_003_04_ui_states.png | Theme: UI States Labels to Render: - Default: "Click to Upload" - Error: "Too Big! 🔴" - Done: "Ready to Upload ✅" Visual Details: 1. Core Concept: Handling different user states. 2. Metaphor: Three cards showing different feedback messages. 3. Action: Displaying states. 4. Layout: Triptych. | ## 3) ミニ課題:UIを“それっぽく”分岐させよう🎨✨ |
| 1249 | docs/firebase_storage_ts_study_003.md | firebase_storage_ts_study_003_05_memory_leak.png | ./picture/firebase_storage_ts_study_003_05_memory_leak.png | Theme: Memory Leak Prevention Labels to Render: - No Revoke: "Trash Piling Up 🗑️" - With Revoke: "Clean Memory ✨" - Action: "revokeObjectURL()" Visual Details: 1. Core Concept: Garbage collection of blob URLs. 2. Metaphor: A room filling with trash vs a room being cleaned by a robot (Revoke). 3. Action: Cleaning. 4. Layout: Comparison. | ### 🧠 プレビューでメモリが増えていく |
| 1250 | docs/firebase_storage_ts_study_003.md | firebase_storage_ts_study_003_06_ai_analysis.png | ./picture/firebase_storage_ts_study_003_06_ai_analysis.png | Theme: Client-side AI Analysis Labels to Render: - Local: "Browser 🌍" - File: "Image 🖼️" - AI: "Gemini (Client SDK) 🤖" - Text: "Alt Text 📝" Visual Details: 1. Core Concept: Analyzing the image directly in the browser before upload. 2. Metaphor: The browser holding the image and showing it to the AI, which whispers the description back. 3. Action: Analyzing. 4. Layout: Interaction. | ### B) おまけ:選んだ画像から “altテキスト” をAIで作る📝🤖 |
| 1251 | docs/firebase_storage_ts_study_004.md | firebase_storage_ts_study_004_01_ref_concept.png | ./picture/firebase_storage_ts_study_004_01_ref_concept.png | Theme: Reference Concept Labels to Render: - Cloud: "Storage Bucket ☁️" - File: "Image 🖼️" - Ref: "Ref (Pointer) 📍" Visual Details: 1. Core Concept: A Reference is a lightweight pointer to a location in the cloud. 2. Metaphor: A luggage tag string connected to a suitcase in the cloud. 3. Action: Pointing. 4. Layout: Cloud and Tag. | ## 1) refってなに?超ざっくり言うと「住所札」🏷️📍 |
| 1252 | docs/firebase_storage_ts_study_004.md | firebase_storage_ts_study_004_02_path_design.png | ./picture/firebase_storage_ts_study_004_02_path_design.png | Theme: Path Design Tree Labels to Render: - Root: "users/" - User: "{uid}/" - Folder: "profile/" - File: "{fileId}.jpg" Visual Details: 1. Core Concept: Hierarchical structure of the storage path. 2. Metaphor: A folder tree or directory structure. 3. Action: Branching. 4. Layout: Tree diagram. | ## 2) まずは「パス設計」を決めよう📁🧠(ここが実務力!) |
| 1253 | docs/firebase_storage_ts_study_004.md | firebase_storage_ts_study_004_03_uuid.png | ./picture/firebase_storage_ts_study_004_03_uuid.png | Theme: UUID vs Filename Labels to Render: - Bad: "image.jpg (Conflict) 💥" - Good: "UUID (Unique) ✨" - Result: "Safe Storage 📦" Visual Details: 1. Core Concept: Preventing file overwrites using unique IDs. 2. Metaphor: Two people trying to put a box in the same slot (Conflict) vs putting boxes in separate numbered slots (UUID). 3. Action: Collision vs No Collision. 4. Layout: Comparison. | ## 3) ファイル名(fileId)を“衝突しない”ようにする💥🚫 |
| 1254 | docs/firebase_storage_ts_study_004.md | firebase_storage_ts_study_004_04_path_constraints.png | ./picture/firebase_storage_ts_study_004_04_path_constraints.png | Theme: Path Constraints Labels to Render: - Length: "1-1024 bytes 📏" - Bad Chars: "# [ ] * ? 🚫" - Good: "a-z 0-9 _ - / ✅" Visual Details: 1. Core Concept: Allowed and forbidden characters in paths. 2. Metaphor: A security scanner allowing clean text but rejecting special symbols. 3. Action: Filtering. 4. Layout: Checklist. | ## 4) パスに入れてOK/避けたい文字の話🧨🧯(地味に重要) |
| 1255 | docs/firebase_storage_ts_study_004.md | firebase_storage_ts_study_004_05_ref_code_flow.png | ./picture/firebase_storage_ts_study_004_05_ref_code_flow.png | Theme: Ref Creation Code Labels to Render: - Input: "Path String 📝" - Function: "ref(storage, path) ⚙️" - Output: "StorageReference 📍" Visual Details: 1. Core Concept: The code transformation from string to object. 2. Metaphor: A machine stamping a raw address onto a formal shipping label. 3. Action: Processing. 4. Layout: Function flow. | ## 5) 手を動かす:パス生成&ref作成ユーティリティを作る🛠️✨ |
| 1256 | docs/firebase_storage_ts_study_004.md | firebase_storage_ts_study_004_06_ai_path_context.png | ./picture/firebase_storage_ts_study_004_06_ai_path_context.png | Theme: AI Path Key Labels to Render: - Path: "Key (ID) 🔑" - AI: "Analyze 🤖" - DB: "Store Result 🗃️" Visual Details: 1. Core Concept: The path acts as the primary key linking the image to AI analysis results. 2. Metaphor: A key (Path) unlocking a data vault (DB) where the AI stores its report. 3. Action: Unlocking/Storing. 4. Layout: Connection. | ## 8) AIサービスにもつながる話:画像×AIの“鍵”になるのが path 🗝️🤖🖼️ |
| 1257 | docs/firebase_storage_ts_study_005.md | firebase_storage_ts_study_005_01_simple_flow.png | ./picture/firebase_storage_ts_study_005_01_simple_flow.png | Theme: Simple Upload Flow Labels to Render: - 1: "File 📎" - 2: "Path 📁" - 3: "uploadBytes ⬆️" - 4: "getDownloadURL 🔗" - 5: "Display 🖼️" Visual Details: 1. Core Concept: The minimum steps to upload and display. 2. Metaphor: A linear assembly line. File enters, gets an address (Path), goes up to cloud (Upload), returns a key (URL), and appears on screen (Display). 3. Action: Flowing right. 4. Layout: Linear sequence. | ## 1) まず頭に入れる“最小の流れ”🧠✨ |
| 1258 | docs/firebase_storage_ts_study_005.md | firebase_storage_ts_study_005_02_upload_function.png | ./picture/firebase_storage_ts_study_005_02_upload_function.png | Theme: Upload Function Concept Labels to Render: - Input: "File + UID" - Process: "uploadBytes()" - Output: "{ path, url }" Visual Details: 1. Core Concept: Encapsulating the upload logic. 2. Metaphor: A black box function. Ingredients (File, UID) go in, a finished package (Path, URL) comes out. 3. Action: Processing. 4. Layout: Input -> Box -> Output. | #### 2-1. uploadProfileImage.ts(アップロードしてURLを返す) |
| 1259 | docs/firebase_storage_ts_study_005.md | firebase_storage_ts_study_005_03_ui_states.png | ./picture/firebase_storage_ts_study_005_03_ui_states.png | Theme: React UI States Labels to Render: - State 1: "Select (Empty) 📷" - State 2: "Preview (Local) 👀" - State 3: "Uploading... ⏳" - State 4: "Done (Remote) ✅" Visual Details: 1. Core Concept: The visual progression of the UI. 2. Metaphor: A storyboard showing 4 frames of the same component changing state. 3. Action: Transitioning. 4. Layout: Four panels. | #### 3-1. ProfileImageUploader.tsx |
| 1260 | docs/firebase_storage_ts_study_005.md | firebase_storage_ts_study_005_04_errors.png | ./picture/firebase_storage_ts_study_005_04_errors.png | Theme: Common Upload Errors Labels to Render: - Auth: "Unauthorized 🔐" - Plan: "402 Payment 💸" - Quota: "Exceeded 📦" Visual Details: 1. Core Concept: Three main error types. 2. Metaphor: Three roadblocks. A locked gate (Auth), a toll booth asking for money (Plan), and a full warehouse (Quota). 3. Action: Blocking. 4. Layout: Triptych. | ## 4) つまずきポイント集(ここが“沼”😇)🧯 |
| 1261 | docs/firebase_storage_ts_study_005.md | firebase_storage_ts_study_005_05_ai_alt_text.png | ./picture/firebase_storage_ts_study_005_05_ai_alt_text.png | Theme: AI Alt Text Generation Labels to Render: - Input: "Image 🖼️" - AI: "Gemini 🤖" - Output: "'A cute cat' 📝" Visual Details: 1. Core Concept: AI analyzing image to create text. 2. Metaphor: A robot artist looking at a painting and writing a description on a notepad. 3. Action: Analyzing. 4. Layout: Left-to-right flow. | ## 7) おまけ:AIで「画像の説明(altテキスト)」を自動生成🤖🖼️✨ |
| 1262 | docs/firebase_storage_ts_study_006.md | firebase_storage_ts_study_006_01_resumable_concept.png | ./picture/firebase_storage_ts_study_006_01_resumable_concept.png | Theme: Resumable Upload Concept Labels to Render: - Task: "UploadTask 📦" - Event: "'state_changed' 📡" - Data: "Snapshot (Progress) 📊" Visual Details: 1. Core Concept: An object that lives over time and reports status. 2. Metaphor: A radio tower (UploadTask) broadcasting signals (Events) to a receiver (App). 3. Action: Broadcasting. 4. Layout: Signal flow. | ### uploadBytesResumable は「途中経過が取れるアップロード」📦 |
| 1263 | docs/firebase_storage_ts_study_006.md | firebase_storage_ts_study_006_02_progress_calc.png | ./picture/firebase_storage_ts_study_006_02_progress_calc.png | Theme: Progress Calculation Labels to Render: - Top: "Transferred" - Bottom: "Total" - Result: "Percentage %" Visual Details: 1. Core Concept: The math behind the progress bar. 2. Metaphor: A fraction visual. A partially filled beaker. 3. Action: Filling. 4. Layout: Equation/Diagram. | ### 進捗は state_changed で取る📡 |
| 1264 | docs/firebase_storage_ts_study_006.md | firebase_storage_ts_study_006_03_controls.png | ./picture/firebase_storage_ts_study_006_03_controls.png | Theme: Upload Controls Labels to Render: - Pause: "⏸️" - Resume: "▶️" - Cancel: "🛑" Visual Details: 1. Core Concept: Controlling the upload flow. 2. Metaphor: A remote control or media player interface. 3. Action: Pressing a button. 4. Layout: Button array. | ### 一時停止・再開・キャンセルは UploadTask のメソッド💡 |
| 1265 | docs/firebase_storage_ts_study_006.md | firebase_storage_ts_study_006_04_state_machine.png | ./picture/firebase_storage_ts_study_006_04_state_machine.png | Theme: Upload State Machine Labels to Render: - State 1: "Idle" - State 2: "Running 🏃" - State 3: "Paused ⏸️" - State 4: "Error / Done" Visual Details: 1. Core Concept: The transitions between states. 2. Metaphor: A flowchart showing allowed paths (e.g., Running <-> Paused). 3. Action: Flowing. 4. Layout: State diagram. | ## サンプル:進捗・停止・再開・キャンセル付きコンポーネント🧩 |
| 1266 | docs/firebase_storage_ts_study_006.md | firebase_storage_ts_study_006_05_ai_ui_text.png | ./picture/firebase_storage_ts_study_006_05_ai_ui_text.png | Theme: AI UI Text Polish Labels to Render: - Input: "Rough Text ('Error 500') 📝" - AI: "Gemini ✨" - Output: "Friendly Message ('Something went wrong, try again!') 💬" Visual Details: 1. Core Concept: Improving user-facing text with AI. 2. Metaphor: A rough stone going into a machine and coming out as a polished gem. 3. Action: Polishing. 4. Layout: Process flow. | ### 1) Antigravity / Gemini CLI で「UI文言」を一瞬で整える🧠💬 |
| 1267 | docs/firebase_storage_ts_study_007.md | firebase_storage_ts_study_007_01_three_gates.png | ./picture/firebase_storage_ts_study_007_01_three_gates.png | Theme: Three Validation Gates Labels to Render: - Gate 1: "Size < 5MB 🧱" - Gate 2: "MIME Type 🧾" - Gate 3: "Decode Check 🖼️" Visual Details: 1. Core Concept: Three layers of security checks. 2. Metaphor: An obstacle course. A file must jump over the Size wall, pass through the MIME shape-sorter, and prove it can be opened (Decode). 3. Action: Passing through. 4. Layout: Sequential gates. | ## 3) 本命:validate関数を作る(ここが第7章の核心🔥) |
| 1268 | docs/firebase_storage_ts_study_007.md | firebase_storage_ts_study_007_02_decode_check.png | ./picture/firebase_storage_ts_study_007_02_decode_check.png | Theme: Image Decode Check Labels to Render: - Input: "File (Fake Image) 📄" - Process: "createImageBitmap()" - Result: "Error (Rejected) 🚫" Visual Details: 1. Core Concept: Verifying if the file is truly an image. 2. Metaphor: A scanner trying to project a file. If it's just a text file renamed to .jpg, the scanner shows static/error. 3. Action: Scanning failure. 4. Layout: Scanner view. | // 3) デコードできるか(=ほんとに画像っぽいか) |
| 1269 | docs/firebase_storage_ts_study_007.md | firebase_storage_ts_study_007_03_react_validation.png | ./picture/firebase_storage_ts_study_007_03_react_validation.png | Theme: React Validation Flow Labels to Render: - User: "Select File" - Logic: "validate()" - OK: "Preview 🖼️" - NG: "Error Message ⚠️" Visual Details: 1. Core Concept: The UI reaction to validation. 2. Metaphor: A fork in the road. Left path (OK) leads to a gallery. Right path (NG) leads to a warning sign. 3. Action: Branching. 4. Layout: Flowchart. | ## 4) Reactに組み込む(エラー表示+プレビュー)👀✨ |
| 1270 | docs/firebase_storage_ts_study_007.md | firebase_storage_ts_study_007_04_error_translation.png | ./picture/firebase_storage_ts_study_007_04_error_translation.png | Theme: Error Code Translation Labels to Render: - Code: "storage/unauthorized" - Translator: "Function" - Message: "Permission Denied 🛡️" Visual Details: 1. Core Concept: Converting technical codes to human-friendly text. 2. Metaphor: A translation robot or dictionary converting a cryptic barcode into a speech bubble. 3. Action: Translating. 4. Layout: Conversion flow. | ## 6) (おまけ)Storageのエラーコードを人間語にする🧑🍳💬 |
| 1271 | docs/firebase_storage_ts_study_007.md | firebase_storage_ts_study_007_05_ai_review.png | ./picture/firebase_storage_ts_study_007_05_ai_review.png | Theme: AI Validation Review Labels to Render: - Code: "validate()" - Rules: "firestore.rules" - AI: "Check Consistency ✅" Visual Details: 1. Core Concept: AI ensuring client validation matches server rules. 2. Metaphor: A judge comparing two documents (Client Code and Server Rules) to ensure they agree. 3. Action: Comparing. 4. Layout: Side-by-side comparison. | ## 7) AIでラクする(Antigravity / Gemini CLI / MCP)🤖🚀 |
| 1272 | docs/firebase_storage_ts_study_008.md | firebase_storage_ts_study_008_01_compression_goals.png | ./picture/firebase_storage_ts_study_008_01_compression_goals.png | Theme: Compression Goals Labels to Render: - Target: "512px / 200KB 🎯" - Format: "JPEG / WebP 🖼️" - Avoid: "Original (4000px) 🛑" Visual Details: 1. Core Concept: Defining the target specs. 2. Metaphor: A target board with the optimal values in the bullseye. 3. Action: Aiming. 4. Layout: Target view. | ## 2) まず“目標スペック”を決めよう🎯📏 |
| 1273 | docs/firebase_storage_ts_study_008.md | firebase_storage_ts_study_008_02_canvas_pipeline.png | ./picture/firebase_storage_ts_study_008_02_canvas_pipeline.png | Theme: Canvas Compression Pipeline Labels to Render: - Step 1: "File 📄" - Step 2: "Bitmap (Decode) 🖼️" - Step 3: "Canvas (Draw) 🎨" - Step 4: "Blob (Encode) 📦" Visual Details: 1. Core Concept: The steps to compress an image using Canvas. 2. Metaphor: A factory assembly line. Raw material (File) -> Processing (Bitmap/Canvas) -> Finished Product (Blob). 3. Action: Processing. 4. Layout: Sequential flow. | ## 3) 実装①:ライブラリ無しでやる(Canvas版)🧰✨ |
| 1274 | docs/firebase_storage_ts_study_008.md | firebase_storage_ts_study_008_03_before_after.png | ./picture/firebase_storage_ts_study_008_03_before_after.png | Theme: Compression Before/After Labels to Render: - Before: "5MB / 4000px 🐘" - After: "200KB / 512px 🐁" - Action: "Compress 🗜️" Visual Details: 1. Core Concept: Visualizing the reduction in size. 2. Metaphor: A balance scale showing a heavy elephant (Before) and a light mouse (After). Or a big box shrinking to a small box. 3. Action: Shrinking. 4. Layout: Comparison. | ## 4) Reactで “元サイズ / 圧縮後サイズ” を見せるUI 🧑🍳📊 |
| 1275 | docs/firebase_storage_ts_study_008.md | firebase_storage_ts_study_008_04_pica_vs_canvas.png | ./picture/firebase_storage_ts_study_008_04_pica_vs_canvas.png | Theme: pica vs Canvas Labels to Render: - Canvas: "Fast / Simple ⚡" - pica: "High Quality ✨" - Choice: "Use pica if blurry" Visual Details: 1. Core Concept: Comparing two methods. 2. Metaphor: A standard tool (Canvas) vs a precision tool (pica). 3. Action: Comparison. 4. Layout: Side-by-side. | ## 5) 実装②:画質をもっと良くしたい人向け(pica)🪄✨ |
| 1276 | docs/firebase_storage_ts_study_008.md | firebase_storage_ts_study_008_05_ai_config.png | ./picture/firebase_storage_ts_study_008_05_ai_config.png | Theme: AI Config Helper Labels to Render: - User: "Best settings?" - AI: "Quality 0.85, Max 1024px 🧠" - Result: "Optimized ✅" Visual Details: 1. Core Concept: AI suggesting the best compression settings. 2. Metaphor: A consultant or mechanic advising on the best engine tuning. 3. Action: Advising. 4. Layout: Interaction. | ## 6) Antigravity / Gemini CLI で“設定決め”を爆速にする🚀🤖 |
| 1277 | docs/firebase_storage_ts_study_009.md | firebase_storage_ts_study_009_01_metadata_tags.png | ./picture/firebase_storage_ts_study_009_01_metadata_tags.png | Theme: Metadata Tags Labels to Render: - File: "Image 📄" - Tag 1: "ContentType (ID) 🏷️" - Tag 2: "CacheControl (Timer) ⏲️" Visual Details: 1. Core Concept: Metadata attached to a file. 2. Metaphor: A file folder with sticky notes or tags attached to it. 3. Action: Labeling. 4. Layout: Object view. | ## 1) まず読む:メタデータって何?🤔📎 |
| 1278 | docs/firebase_storage_ts_study_009.md | firebase_storage_ts_study_009_02_cache_strategy_a.png | ./picture/firebase_storage_ts_study_009_02_cache_strategy_a.png | Theme: Cache Strategy A (History) Labels to Render: - Path: ".../uuid-v1.jpg" - Cache: "1 Year (Long) 🧊" - Path 2: ".../uuid-v2.jpg" Visual Details: 1. Core Concept: Immutable files allow long caching. 2. Metaphor: A library archive. Old books (v1) stay on the shelf forever. New books (v2) get a new spot. 3. Action: Archiving. 4. Layout: Timeline. | ### パターンA:**毎回パスが変わる(履歴を残す設計)**📚✨ ← 今回のロードマップ寄り |
| 1279 | docs/firebase_storage_ts_study_009.md | firebase_storage_ts_study_009_03_cache_strategy_b.png | ./picture/firebase_storage_ts_study_009_03_cache_strategy_b.png | Theme: Cache Strategy B (Overwrite) Labels to Render: - Path: ".../profile.jpg" - Cache: "1 min (Short) ⏱️" - Action: "Overwrite 🔄" Visual Details: 1. Core Concept: Overwriting requires short caching to reflect changes. 2. Metaphor: A whiteboard. Content is erased and rewritten, so you must check it frequently. 3. Action: Updating. 4. Layout: Cyclic. | ### パターンB:同じパスに上書き(常に profile.jpg)♻️🫠 |
| 1280 | docs/firebase_storage_ts_study_009.md | firebase_storage_ts_study_009_04_devtools.png | ./picture/firebase_storage_ts_study_009_04_devtools.png | Theme: DevTools Inspection Labels to Render: - Tool: "Network Tab" - Header: "cache-control: max-age=..." - Status: "200 (from disk cache)" Visual Details: 1. Core Concept: verifying metadata in browser. 2. Metaphor: A magnifying glass inspecting the technical specs of a car (Header). 3. Action: Inspecting. 4. Layout: Screen mockup. | ## 5) 動作確認:キャッシュが効いてるかを目で見る👀⚡ |
| 1281 | docs/firebase_storage_ts_study_009.md | firebase_storage_ts_study_009_05_ai_metadata.png | ./picture/firebase_storage_ts_study_009_05_ai_metadata.png | Theme: AI Metadata Assistant Labels to Render: - User: "Which cache?" - AI: "Use 'immutable' for UUID paths! 🤖" - Context: "Project Info" Visual Details: 1. Core Concept: AI giving context-aware advice. 2. Metaphor: A smart assistant reviewing the project structure and giving specific advice. 3. Action: Advising. 4. Layout: Interaction. | ### ✅ Antigravity / Gemini CLI で“メタデータ相談”を爆速に💻🚀 |
| 1282 | docs/firebase_storage_ts_study_010.md | firebase_storage_ts_study_010_01_metadata_separation.png | ./picture/firebase_storage_ts_study_010_01_metadata_separation.png | Theme: Storage vs Firestore Metadata Labels to Render: - Storage: "Technical (Cache/Type) ⚙️" - Firestore: "App Info (Tags/Desc) 📝" - Rule: "Separation of Concerns ⚖️" Visual Details: 1. Core Concept: Distinguishing where to store what data. 2. Metaphor: A shipping label (Storage Metadata) vs a product catalog description (Firestore Data). 3. Action: Separation. 4. Layout: Side-by-side comparison. | ## 使い分け早見表👀✨ |
| 1283 | docs/firebase_storage_ts_study_010.md | firebase_storage_ts_study_010_02_data_structure.png | ./picture/firebase_storage_ts_study_010_02_data_structure.png | Theme: Profile Image Data Structure Labels to Render: - User: "users/{uid} 👤" - Subcollection: "profileImages/{id} 🗂️" - Field: "status: 'ready' ✅" Visual Details: 1. Core Concept: The database schema for profile images. 2. Metaphor: A folder structure or tree diagram. 3. Action: Branching. 4. Layout: Hierarchical view. | ### 作るデータ構造(おすすめ)🧱 |
| 1284 | docs/firebase_storage_ts_study_010.md | firebase_storage_ts_study_010_03_upload_flow.png | ./picture/firebase_storage_ts_study_010_03_upload_flow.png | Theme: Upload Sync Flow Labels to Render: - Step 1: "Firestore (Uploading) ⏳" - Step 2: "Storage (Upload) ⬆️" - Step 3: "Firestore (Ready) ✅" Visual Details: 1. Core Concept: Synchronizing Firestore state with Storage upload status. 2. Metaphor: A relay race or sequential process. 3. Action: Status changing from hourglass to checkmark. 4. Layout: Sequential flow. | #### 2) アップロード→Firestore反映(本体)⬆️🗃️ |
| 1285 | docs/firebase_storage_ts_study_010.md | firebase_storage_ts_study_010_04_metadata_limit.png | ./picture/firebase_storage_ts_study_010_04_metadata_limit.png | Theme: Custom Metadata Limit Labels to Render: - Limit: "Max 8KB 📏" - Warning: "Costly 💸" - Good: "Use Firestore 🗃️" Visual Details: 1. Core Concept: The limitations of custom metadata. 2. Metaphor: A small box bursting at the seams vs a spacious warehouse (Firestore). 3. Action: Overfilling. 4. Layout: Warning visualization. | ## 「customMetadata を入れるなら」この程度でOK👌(入れすぎ注意⚠️) |
| 1286 | docs/firebase_storage_ts_study_010.md | firebase_storage_ts_study_010_05_ai_integration.png | ./picture/firebase_storage_ts_study_010_05_ai_integration.png | Theme: AI Alt Text Generation Labels to Render: - Input: "Image URL 🔗" - AI: "Generate Alt Text 🤖" - Output: "Firestore (Save) 📝" Visual Details: 1. Core Concept: Using AI to generate text from an image URL and saving it. 2. Metaphor: A robot looking at a picture through a link and writing a note in a book (Firestore). 3. Action: Analyzing/Writing. 4. Layout: Left-to-right flow. | ## AIを絡める🤖✨:説明文(alt)とタグはFirestoreへ🗃️🏷️ |
| 1287 | docs/firebase_storage_ts_study_010.md | firebase_storage_ts_study_010_06_mcp_review.png | ./picture/firebase_storage_ts_study_010_06_mcp_review.png | Theme: MCP Design Review Labels to Render: - User: "Is this design OK?" - AI: "Antigravity / Gemini 🤖" - Check: "Reviewing Rules/DB 🔍" Visual Details: 1. Core Concept: AI tools reviewing the architecture. 2. Metaphor: An architect (AI) reviewing a blueprint with a magnifying glass. 3. Action: Reviewing. 4. Layout: Interaction. | ## Antigravity / Gemini CLI を「設計レビュー役」にする🧑🏫⚡ |
| 1288 | docs/firebase_storage_ts_study_010.md | firebase_storage_ts_study_010_07_checklist.png | ./picture/firebase_storage_ts_study_010_07_checklist.png | Theme: Implementation Checklist Labels to Render: - Task 1: "Upload Status ⏳" - Task 2: "AI Alt Text 📝" - Task 3: "Minimal Metadata 👌" Visual Details: 1. Core Concept: Summary of the chapter's tasks. 2. Metaphor: A clipboard with checked items. 3. Action: Checking off. 4. Layout: List view. | ## ミニ課題🎒✨ |
| 1289 | docs/firebase_storage_ts_study_011.md | firebase_storage_ts_study_011_01_golden_pattern.png | ./picture/firebase_storage_ts_study_011_01_golden_pattern.png | Theme: Data Separation of Concerns Labels to Render: - Storage: "File Entity 📦" - Firestore: "Reference / Metadata 📝" - App: "Reads Reference 👓" Visual Details: 1. Core Concept: Files go to Storage, their location info goes to Firestore. 2. Metaphor: A warehouse (Storage) holding a box, and a catalog (Firestore) listing the box's location. 3. Action: Separation and Reference. 4. Layout: Side-by-side with app reading Firestore. | ## 1) まず結論:この章の“勝ちパターン”🏆 |
| 1290 | docs/firebase_storage_ts_study_011.md | firebase_storage_ts_study_011_02_data_structure.png | ./picture/firebase_storage_ts_study_011_02_data_structure.png | Theme: User Document Schema Labels to Render: - Doc: "users/{uid} 👤" - Field 1: "photo.path (users/.../fileId) 📍" - Field 2: "photo.updatedAt (Timestamp) ⏱️" - Field 3: "photo.url (Optional) 🔗" Visual Details: 1. Core Concept: The recommended fields for storing image info. 2. Metaphor: A data card or sticky note showing the JSON structure. 3. Action: Displaying structure. 4. Layout: Card view. | ### ✅ users/{uid} に置くと強いフィールド例(“今の画像”だけ)🧩 |
| 1291 | docs/firebase_storage_ts_study_011.md | firebase_storage_ts_study_011_03_update_sequence.png | ./picture/firebase_storage_ts_study_011_03_update_sequence.png | Theme: Update Order of Operations Labels to Render: - Step 1: "Upload to Storage ⬆️" - Step 2: "Get URL (Optional) 🔗" - Step 3: "Update Firestore 🗃️" - Result: "UI Updates 🔁" Visual Details: 1. Core Concept: The correct order prevents broken links. 2. Metaphor: A stepping stone path. You must step on 1 before 2, then 3. 3. Action: Progressing. 4. Layout: Sequential flow. | ### 4-1) 1本で完結する関数:アップロード→URL→Firestoreコミット🧩 |
| 1292 | docs/firebase_storage_ts_study_011.md | firebase_storage_ts_study_011_04_ui_update.png | ./picture/firebase_storage_ts_study_011_04_ui_update.png | Theme: onSnapshot Data Flow Labels to Render: - Firestore: "Data Change ⚡" - Listener: "onSnapshot() 👂" - UI: "Auto Update 🔄" Visual Details: 1. Core Concept: Firestore changes automatically trigger UI updates. 2. Metaphor: A broadcast tower (Firestore) sending a signal to a radio (Listener) which plays music (UI Update). 3. Action: Broadcasting. 4. Layout: Signal flow. | ### 4-2) UIを“現実アプリ感”にするコツ:Firestoreを購読して自動反映🔁👀 |
| 1293 | docs/firebase_storage_ts_study_011.md | firebase_storage_ts_study_011_05_failure_handling.png | ./picture/firebase_storage_ts_study_011_05_failure_handling.png | Theme: Error Handling Strategy Labels to Render: - Scenario A: "Upload Fail ❌ -> No DB Change" - Scenario B: "DB Fail ❌ -> Retry DB 🔁" - Result: "App State Safe 🛡️" Visual Details: 1. Core Concept: How to handle failures gracefully. 2. Metaphor: A fork in the road where barriers prevent bad states. 3. Action: Blocking/Retrying. 4. Layout: Flowchart with error paths. | ## 5) 失敗しても壊れないための“実務メモ”🧯 |
| 1294 | docs/firebase_storage_ts_study_011.md | firebase_storage_ts_study_011_06_mcp_integration.png | ./picture/firebase_storage_ts_study_011_06_mcp_integration.png | Theme: Firebase MCP Tools Labels to Render: - Tool: "Gemini CLI / Antigravity 🤖" - Feature: "Review Design 📝" - Feature: "Check Rules 🛡️" - Connection: "Firebase Project 🔥" Visual Details: 1. Core Concept: AI tools integrating with Firebase project. 2. Metaphor: A robot plugging into the Firebase console to offer help. 3. Action: Connecting/Reviewing. 4. Layout: Integration view. | ## 8) Antigravity / Gemini CLIで設計レビューを爆速にする🚀🧩 |
| 1295 | docs/firebase_storage_ts_study_011.md | firebase_storage_ts_study_011_07_mini_task.png | ./picture/firebase_storage_ts_study_011_07_mini_task.png | Theme: Chapter 11 Task Labels to Render: - Task 1: "Save photo.path 📍" - Task 2: "Order: Storage -> DB ➡️" - Task 3: "onSnapshot UI 🔄" Visual Details: 1. Core Concept: The three main objectives of the mini task. 2. Metaphor: A checklist with icons. 3. Action: Checking off. 4. Layout: List view. | ## 9) ミニ課題🧪🎯 |
| 1296 | docs/firebase_storage_ts_study_012.md | firebase_storage_ts_study_012_01_history_structure.png | ./picture/firebase_storage_ts_study_012_01_history_structure.png | Theme: Profile Image History Schema Labels to Render: - Current: "users/{uid} (currentImageId) 👑" - History: "profileImages/{id} (status: active/archived) 📚" - Connection: "Reference 🔗" Visual Details: 1. Core Concept: The relationship between the user doc and the history subcollection. 2. Metaphor: A king (User) pointing to a specific book in a library (History). 3. Action: Referencing. 4. Layout: Hierarchical view. | ### ✅ Firestoreのおすすめ構造(シンプル&強い)💪 |
| 1297 | docs/firebase_storage_ts_study_012.md | firebase_storage_ts_study_012_02_transaction_flow.png | ./picture/firebase_storage_ts_study_012_02_transaction_flow.png | Theme: Atomic Update Transaction Labels to Render: - Step 1: "Create New History 🆕" - Step 2: "Update Current ID 🔄" - Step 3: "Archive Old History 📦" - Wrapper: "Transaction (All or Nothing) 🧱" Visual Details: 1. Core Concept: Multiple updates happening as a single atomic unit. 2. Metaphor: A sealed package containing three distinct actions. If the seal breaks, everything falls out. 3. Action: Packaging. 4. Layout: Grouped steps inside a container. | ## なぜトランザクション?🤔💥 |
| 1298 | docs/firebase_storage_ts_study_012.md | firebase_storage_ts_study_012_03_rollback_logic.png | ./picture/firebase_storage_ts_study_012_03_rollback_logic.png | Theme: Revert Image Logic Labels to Render: - Target: "Target History (Archived -> Active) ↩️" - Current: "Current (Active -> Archived) 📦" - User: "Update ID 🔄" Visual Details: 1. Core Concept: Swapping the status of two history items and updating the pointer. 2. Metaphor: A switch track or swapping places. Old active goes to the back, target comes to the front. 3. Action: Swapping. 4. Layout: Cycle/Swap diagram. | ## 実装②:「元に戻す」ボタン用の巻き戻し関数↩️🖲️ |
| 1299 | docs/firebase_storage_ts_study_012.md | firebase_storage_ts_study_012_04_ui_layout.png | ./picture/firebase_storage_ts_study_012_04_ui_layout.png | Theme: Profile History UI Labels to Render: - Top: "Current Image ✨" - List: "History List 📜" - Item: "Image + Revert Button ↩️" Visual Details: 1. Core Concept: The visual layout of the profile settings page. 2. Metaphor: A wireframe showing a large image at the top and a scrollable list below. 3. Action: Scrolling/Clicking. 4. Layout: UI Wireframe. | ## 実装③:React UI(履歴一覧+戻すボタン)🖼️📜↩️ |
| 1300 | docs/firebase_storage_ts_study_012.md | firebase_storage_ts_study_012_05_ai_integration.png | ./picture/firebase_storage_ts_study_012_05_ai_integration.png | Theme: AI Enhanced History Labels to Render: - History Doc: "Image Record 📄" - AI: "Add Tags/Alt Text 🤖" - Result: "Rich Data ✨" Visual Details: 1. Core Concept: Enriching history records with AI data. 2. Metaphor: A robot stamping extra info (Tags, Alt Text) onto a history file. 3. Action: Stamping/Enriching. 4. Layout: Data enhancement flow. | ## AIを絡めて“現実アプリ感”を爆上げする🤖✨ |
| 1301 | docs/firebase_storage_ts_study_012.md | firebase_storage_ts_study_012_06_mcp_review.png | ./picture/firebase_storage_ts_study_012_06_mcp_review.png | Theme: MCP Transaction Audit Labels to Render: - Code: "runTransaction() 📝" - AI: "Antigravity / Gemini 🤖" - Check: "Integrity Check ✅" Visual Details: 1. Core Concept: AI reviewing the transaction logic for errors. 2. Metaphor: A code auditor (AI) checking a complex contract (Transaction) with a magnifying glass. 3. Action: Auditing. 4. Layout: Code review scene. | ## Antigravity / Gemini CLI / MCP を“この章”でどう使う?🧑💻🚀 |
| 1302 | docs/firebase_storage_ts_study_012.md | firebase_storage_ts_study_012_07_checklist.png | ./picture/firebase_storage_ts_study_012_07_checklist.png | Theme: Chapter 12 Mini Tasks Labels to Render: - Task 1: "Limit 10 Items 🔟" - Task 2: "Revert Button ↩️" - Task 3: "AI Alt Text 📝" Visual Details: 1. Core Concept: The mini tasks for the chapter. 2. Metaphor: A checklist on a clipboard. 3. Action: Checking off. 4. Layout: List view. | ## ミニ課題 🧪🏁 |
| 1303 | docs/firebase_storage_ts_study_013.md | firebase_storage_ts_study_013_01_deletion_risk.png | ./picture/firebase_storage_ts_study_013_01_deletion_risk.png | Theme: Accidental Deletion Risk Labels to Render: - User: "Delete! 🗑️" - App: "Current Image Gone 😱" - Result: "Broken Icon 🚫" Visual Details: 1. Core Concept: The danger of deleting the image currently in use. 2. Metaphor: A user cutting the branch they are sitting on. 3. Action: Falling/Breaking. 4. Layout: Cause and effect. | ## 1) なぜ「削除」は事故りやすいの?😱 |
| 1304 | docs/firebase_storage_ts_study_013.md | firebase_storage_ts_study_013_02_deletion_policies.png | ./picture/firebase_storage_ts_study_013_02_deletion_policies.png | Theme: Deletion Strategy Comparison Labels to Render: - Immediate: "Fast / Risky ⚡" - Grace Period: "Safe / Undo ⏳" - Manual: "Control / Clutter 🧑💻" Visual Details: 1. Core Concept: Comparing three deletion strategies. 2. Metaphor: Three paths. A steep cliff (Immediate), a gentle slope with a safety net (Grace Period), and a path full of boxes (Manual). 3. Action: Comparison. 4. Layout: Triptych. | ## 2) 削除ポリシー3択(どれが正解?)🤔🧩 |
| 1305 | docs/firebase_storage_ts_study_013.md | firebase_storage_ts_study_013_03_firestore_status.png | ./picture/firebase_storage_ts_study_013_03_firestore_status.png | Theme: Image Status State Machine Labels to Render: - Active: "Active ✅" - Archived: "Archived 📦" - Pending: "Pending Delete ⏳" - Deleted: "Deleted 🗑️" Visual Details: 1. Core Concept: The lifecycle of an image status. 2. Metaphor: A flowchart showing transitions between states. 3. Action: Transitioning. 4. Layout: State diagram. | ## 3) まず「削除できる状態」をFirestoreに持たせよう🧠🗃️ |
| 1306 | docs/firebase_storage_ts_study_013.md | firebase_storage_ts_study_013_04_grace_period_flow.png | ./picture/firebase_storage_ts_study_013_04_grace_period_flow.png | Theme: Grace Period Deletion Flow Labels to Render: - User: "Delete Request 🗑️" - Firestore: "Status: Pending ⏳" - Timer: "7 Days Later 📅" - System: "Cleanup 🧹" Visual Details: 1. Core Concept: The process of delayed deletion. 2. Metaphor: Putting trash in a bin that gets collected once a week. 3. Action: Waiting/Collecting. 4. Layout: Timeline. | ## 6) 手を動かす③:猶予期間つき削除(おすすめ)⏳🌟 |
| 1307 | docs/firebase_storage_ts_study_013.md | firebase_storage_ts_study_013_05_scheduled_cleanup.png | ./picture/firebase_storage_ts_study_013_05_scheduled_cleanup.png | Theme: Scheduled Cleanup Function Labels to Render: - Clock: "Every Day 03:00 🕒" - Function: "Cleanup Job ⚙️" - Target: "Expired Items 🗑️" Visual Details: 1. Core Concept: A background job running periodically to clean up. 2. Metaphor: A robot janitor waking up at 3 AM to sweep the floor. 3. Action: Sweeping. 4. Layout: Process view. | ## 7) 自動掃除(期限が来たら消す)🧹🤖 |
| 1308 | docs/firebase_storage_ts_study_013.md | firebase_storage_ts_study_013_06_ai_usage.png | ./picture/firebase_storage_ts_study_013_06_ai_usage.png | Theme: AI Deletion Assistant Labels to Render: - User: "Which to delete?" - AI: "These are duplicates 👯" - AI: "This is blurry 🌫️" Visual Details: 1. Core Concept: AI helping the user decide what to delete. 2. Metaphor: A smart assistant sorting photos and pointing out bad ones. 3. Action: Sorting/Advising. 4. Layout: Interaction. | ## 9) AIを絡めると“現実アプリ感”が一気に増える🤖✨ |
| 1309 | docs/firebase_storage_ts_study_013.md | firebase_storage_ts_study_013_07_checklist.png | ./picture/firebase_storage_ts_study_013_07_checklist.png | Theme: Chapter 13 Tasks Labels to Render: - UI: "Delete Button 🗑️" - Logic: "Confirmation Dialog ✅" - Safety: "Undo Feature ↩️" Visual Details: 1. Core Concept: The main tasks to complete in this chapter. 2. Metaphor: A checklist with icons. 3. Action: Checking off. 4. Layout: List view. | ## 10) ミニ課題🧩🏁 |
| 1310 | docs/firebase_storage_ts_study_014.md | firebase_storage_ts_study_014_01_url_risk.png | ./picture/firebase_storage_ts_study_014_01_url_risk.png | Theme: Download URL Risks Labels to Render: - URL: "Long URL + Token 🔑" - DB: "Stored Forever 🗃️" - Risk: "Leak / Revoke Fail 😱" Visual Details: 1. Core Concept: The danger of treating a download URL as a permanent, safe link. 2. Metaphor: A key left under a doormat (URL in DB) that anyone can find, or a broken key (Revoked Token). 3. Action: Leaking/Breaking. 4. Layout: Warning visualization. | ## まず知っておく話🧠:「ダウンロードURL」は“秘密の合言葉付きURL”になりがち🤫 |
| 1311 | docs/firebase_storage_ts_study_014.md | firebase_storage_ts_study_014_02_path_first.png | ./picture/firebase_storage_ts_study_014_02_path_first.png | Theme: Path vs URL Storage Labels to Render: - Path: "users/uid/profile.jpg (Safe) 🟢" - URL: "https://...token=... (Risky) 🔴" - App: "Generates URL on demand 🔄" Visual Details: 1. Core Concept: Storing the path is safer than storing the URL. 2. Metaphor: A recipe (Path) vs a pre-made meal (URL) that might spoil. 3. Action: Generating. 4. Layout: Comparison. | ## 安全寄りの結論✅:「Firestoreは path 主、URLは“その場で再取得”」🧭 |
| 1312 | docs/firebase_storage_ts_study_014.md | firebase_storage_ts_study_014_03_fallback_ui.png | ./picture/firebase_storage_ts_study_014_03_fallback_ui.png | Theme: Image Loading Fallback Labels to Render: - Loading: "Spinner ⏳" - Success: "Image 🖼️" - Error: "Placeholder 🙂" Visual Details: 1. Core Concept: Handling different loading states gracefully. 2. Metaphor: Three cards showing the UI in different states. 3. Action: Transitioning. 4. Layout: Triptych. | ## 3) React:フォールバック込みの表示コンポーネント🖼️🧯 |
| 1313 | docs/firebase_storage_ts_study_014.md | firebase_storage_ts_study_014_04_blob_fetch.png | ./picture/firebase_storage_ts_study_014_04_blob_fetch.png | Theme: Direct SDK Fetch Labels to Render: - App: "getBlob() 📥" - Storage: "Data Stream 🌊" - URL: "objectURL (Local) 🏠" Visual Details: 1. Core Concept: Fetching binary data directly without a public URL. 2. Metaphor: A direct pipe from the cloud to the app, bypassing the public internet. 3. Action: Streaming. 4. Layout: Direct connection. | # 発展:URLを使わない表示(getBlob → objectURL)🧊🖼️ |
| 1314 | docs/firebase_storage_ts_study_014.md | firebase_storage_ts_study_014_05_troubleshooting.png | ./picture/firebase_storage_ts_study_014_05_troubleshooting.png | Theme: Image Error Troubleshooting Labels to Render: - Error 1: "White Screen? -> Check UI Fallback" - Error 2: "Not Found? -> Check Path" - Error 3: "Unauthorized? -> Check Rules" Visual Details: 1. Core Concept: A flowchart for diagnosing image problems. 2. Metaphor: A decision tree or medical diagnosis chart. 3. Action: Diagnosing. 4. Layout: Flowchart. | # トラブルシュート最短ルート🧯(詰まりがちな症状→原因) |
| 1315 | docs/firebase_storage_ts_study_014.md | firebase_storage_ts_study_014_06_ai_assistant.png | ./picture/firebase_storage_ts_study_014_06_ai_assistant.png | Theme: AI Error Analysis Labels to Render: - Error: "storage/unauthorized" - AI: "Gemini / MCP 🤖" - Advice: "Check Rules! 🛡️" Visual Details: 1. Core Concept: Using AI to interpret error codes. 2. Metaphor: A detective (AI) analyzing a clue (Error) and giving a report. 3. Action: Analyzing. 4. Layout: Interaction. | # AIで爆速にする🤖🚀(ここが2026の勝ち筋) |
| 1316 | docs/firebase_storage_ts_study_014.md | firebase_storage_ts_study_014_07_checklist.png | ./picture/firebase_storage_ts_study_014_07_checklist.png | Theme: Chapter 14 Mini Tasks Labels to Render: - Task 1: "Save Path Only 📁" - Task 2: "Fallback UI 🙂" - Task 3: "URL Cache Logic 🧠" Visual Details: 1. Core Concept: The main tasks to complete in this chapter. 2. Metaphor: A checklist with icons. 3. Action: Checking off. 4. Layout: List view. | # ミニ課題✍️🎒 |
| 1317 | docs/firebase_storage_ts_study_015.md | firebase_storage_ts_study_015_01_gatekeeper.png | ./picture/firebase_storage_ts_study_015_01_gatekeeper.png | Theme: Rules Gatekeeper Labels to Render: - Guard: "Rules (Gatekeeper) 🛡️" - User: "Unauthorized User 🚫" - Storage: "Cloud Storage ☁️" Visual Details: 1. Core Concept: Rules act as a gatekeeper stopping unauthorized access. 2. Metaphor: A stern guard blocking a user from entering a secure warehouse. 3. Action: Blocking entry. 4. Layout: Gate scene. | ## 1) Rulesって何者?ざっくり理解🧠✨ |
| 1318 | docs/firebase_storage_ts_study_015.md | firebase_storage_ts_study_015_02_or_logic_warning.png | ./picture/firebase_storage_ts_study_015_02_or_logic_warning.png | Theme: OR Logic Warning Labels to Render: - Rule 1: "Allow (Open) 🟢" - Rule 2: "Deny (Closed) 🔴" - Result: "Access Granted (Leak) ⚠️" Visual Details: 1. Core Concept: If any rule allows access, it overrides denials. 2. Metaphor: A sieve with one large hole letting water through, despite many small blocked holes. 3. Action: Leaking. 4. Layout: Sieve or filter. | ### ✅ ルールは AND じゃなくて OR になりやすい⚠️ |
| 1319 | docs/firebase_storage_ts_study_015.md | firebase_storage_ts_study_015_03_flat_namespace.png | ./picture/firebase_storage_ts_study_015_03_flat_namespace.png | Theme: Flat Namespace Labels to Render: - User View: "Folders 📁" - Storage View: "Long Filename 📄" - Path: "users/123/profile.png" Visual Details: 1. Core Concept: Storage treats paths as strings, not actual folders. 2. Metaphor: A user seeing a folder tree vs the system seeing a long flat label. 3. Action: Comparison. 4. Layout: Side-by-side. | ### ✅ Storageは「フォルダがあるように見えて、実体はファイル名」📁(地味に大事) |
| 1320 | docs/firebase_storage_ts_study_015.md | firebase_storage_ts_study_015_04_read_write_breakdown.png | ./picture/firebase_storage_ts_study_015_04_read_write_breakdown.png | Theme: Read/Write Granularity Labels to Render: - Read: "Get + List 📖" - Write: "Create + Update + Delete ✍️" - Concept: "Granular Control ⚙️" Visual Details: 1. Core Concept: Breaking down broad permissions into specific actions. 2. Metaphor: A large box labeled 'Read' containing smaller boxes 'Get' and 'List'. Same for 'Write'. 3. Action: Unpacking. 4. Layout: Hierarchy. | ### allow:何を許可?(read/write だけじゃない)📌 |
| 1321 | docs/firebase_storage_ts_study_015.md | firebase_storage_ts_study_015_05_full_lockdown.png | ./picture/firebase_storage_ts_study_015_05_full_lockdown.png | Theme: Full Lockdown Labels to Render: - Bucket: "Storage 🪣" - Lock: "Allow: False 🔒" - Status: "Closed 🛑" Visual Details: 1. Core Concept: Starting with a fully closed security posture. 2. Metaphor: A large padlock securing the entire storage bucket. 3. Action: Locking. 4. Layout: Object focus. | ## 4) 手を動かす②:いったん「全閉じ」ルールを入れる🚪🔒 |
| 1322 | docs/firebase_storage_ts_study_015.md | firebase_storage_ts_study_015_06_private_vs_public.png | ./picture/firebase_storage_ts_study_015_06_private_vs_public.png | Theme: Private vs Public Read Labels to Render: - Private: "Owner Only 👤" - Public: "Everyone 🌍" - Asset: "Profile Image 🖼️" Visual Details: 1. Core Concept: Choosing between restricting access to the owner or allowing public viewing. 2. Metaphor: A diary (Private) vs a billboard (Public). 3. Action: Comparison. 4. Layout: Split view. | ### パターンA:読み取りも「本人だけ」🫥(まずは安全寄り) |
| 1323 | docs/firebase_storage_ts_study_015.md | firebase_storage_ts_study_015_07_playground_testing.png | ./picture/firebase_storage_ts_study_015_07_playground_testing.png | Theme: Playground Testing Labels to Render: - Tool: "Rules Playground 🧪" - Input: "Test Request 📄" - Output: "Allowed / Denied ✅❌" Visual Details: 1. Core Concept: Testing security rules in a safe environment. 2. Metaphor: A scientist testing a chemical reaction in a lab flask. 3. Action: Testing. 4. Layout: Lab scene. | ## 6) 手を動かす④:Rules Playground で即テスト🧪⚡ |
| 1324 | docs/firebase_storage_ts_study_016.md | firebase_storage_ts_study_016_01_final_gatekeeper.png | ./picture/firebase_storage_ts_study_016_01_final_gatekeeper.png | Theme: Final Gatekeeper Labels to Render: - Gate 1: "Client Check (Bypassed) 🔓" - Gate 2: "Storage Rules (Blocked) 🛡️" - Intruder: "Malicious File 👾" Visual Details: 1. Core Concept: Storage Rules act as the ultimate defense. 2. Metaphor: An intruder sneaking past a sleeping guard (Client) but being stopped by a giant armored gate (Rules). 3. Action: Blocking. 4. Layout: Sequential gates. | ## 1) まず“腹落ち”させたいこと🍞🧠 |
| 1325 | docs/firebase_storage_ts_study_016.md | firebase_storage_ts_study_016_02_metadata_scanner.png | ./picture/firebase_storage_ts_study_016_02_metadata_scanner.png | Theme: Metadata Scanner Labels to Render: - Package: "File 📦" - Screen: "Size: 2MB ✅" - Screen 2: "Type: image/jpeg ✅" Visual Details: 1. Core Concept: Checking file attributes. 2. Metaphor: A futuristic scanner analyzing a package on a conveyor belt. 3. Action: Scanning. 4. Layout: Scanner view. | ### ✅ Rulesができること(この章の主役) |
| 1326 | docs/firebase_storage_ts_study_016.md | firebase_storage_ts_study_016_03_resource_vs_request.png | ./picture/firebase_storage_ts_study_016_03_resource_vs_request.png | Theme: Resource vs Request Labels to Render: - Shelf: "resource (Existing) 🗄️" - Forklift: "request.resource (Incoming) 🚚" - Comparison: "Old vs New" Visual Details: 1. Core Concept: Distinguishing between existing data and incoming data. 2. Metaphor: A warehouse shelf holding a box vs a forklift bringing a new box. 3. Action: Moving. 4. Layout: Side-by-side. | ### ✅ “request.resource” と “resource” の違い🔍 |
| 1327 | docs/firebase_storage_ts_study_016.md | firebase_storage_ts_study_016_04_granular_write.png | ./picture/firebase_storage_ts_study_016_04_granular_write.png | Theme: Granular Write Operations Labels to Render: - Master Key: "Write 🗝️" - Key 1: "Create ➕" - Key 2: "Update 🔄" - Key 3: "Delete 🗑️" Visual Details: 1. Core Concept: Splitting the broad 'write' permission into specific actions. 2. Metaphor: A large master key splitting into three smaller, specific keys. 3. Action: Splitting. 4. Layout: Hierarchy. | ### ⚠️ つまずきポイント(先に潰す)💥 |
| 1328 | docs/firebase_storage_ts_study_016.md | firebase_storage_ts_study_016_05_operation_flow.png | ./picture/firebase_storage_ts_study_016_05_operation_flow.png | Theme: Operation Logic Flow Labels to Render: - Create: "Check Size + Type ✅" - Update: "No Type Change 🔒" - Delete: "Owner Only 👤" Visual Details: 1. Core Concept: Different rules for different operations. 2. Metaphor: Three distinct security checkpoints with different requirements. 3. Action: Checking. 4. Layout: Three paths. | ### 手順A:まず“運用版”のRulesを用意する🧩 |
| 1329 | docs/firebase_storage_ts_study_016.md | firebase_storage_ts_study_016_06_ai_rule_architect.png | ./picture/firebase_storage_ts_study_016_06_ai_rule_architect.png | Theme: AI Rule Architect Labels to Render: - AI: "Gemini / Antigravity 🤖" - Blueprint: "Secure Rules 📐" - Output: "Code 📝" Visual Details: 1. Core Concept: AI helping to design secure rules. 2. Metaphor: A robot architect drawing a blueprint for a secure building. 3. Action: Designing. 4. Layout: Blueprint view. | ## 3) AIを絡めて“強いRules”を最速で作る🤖⚡ |
| 1330 | docs/firebase_storage_ts_study_016.md | firebase_storage_ts_study_016_07_checklist_summary.png | ./picture/firebase_storage_ts_study_016_07_checklist_summary.png | Theme: Concept Checklist Labels to Render: - Item 1: "Size Limit 📏" - Item 2: "Type Check 🏷️" - Item 3: "Granular Ops ⚙️" Visual Details: 1. Core Concept: Summary of key takeaways. 2. Metaphor: A clipboard with checked items. 3. Action: Checking off. 4. Layout: List view. | ## 5) チェック✅✅✅ |
| 1331 | docs/firebase_storage_ts_study_017.md | firebase_storage_ts_study_017_01_bouncer_metaphor.png | ./picture/firebase_storage_ts_study_017_01_bouncer_metaphor.png | Theme: Bouncer Metaphor Labels to Render: - Bouncer: "App Check 🛡️" - Guest: "Official App 📱" - Badge: "Token 🎫" - Intruder: "Bot 🤖" Visual Details: 1. Core Concept: App Check verifies the authenticity of the app. 2. Metaphor: A club bouncer allowing a guest with a badge to enter, while blocking a robot. 3. Action: Checking ID. 4. Layout: Entrance scene. | ## 1) まず腹落ち:App Check で何が変わるの?🤔 |
| 1332 | docs/firebase_storage_ts_study_017.md | firebase_storage_ts_study_017_02_chaos_vs_order.png | ./picture/firebase_storage_ts_study_017_02_chaos_vs_order.png | Theme: Chaos vs Order Labels to Render: - Without: "No Check 🔓" - With: "App Check 🧿" - Crowd: "Unknown Traffic 🌫️" - Line: "Verified Traffic ✅" Visual Details: 1. Core Concept: The difference in traffic control. 2. Metaphor: A disorderly crowd surging through an open gate vs an orderly line passing through a checkpoint. 3. Action: Crowding vs Queuing. 4. Layout: Side-by-side. | ### App Check なしだと…😇 |
| 1333 | docs/firebase_storage_ts_study_017.md | firebase_storage_ts_study_017_03_init_sequence.png | ./picture/firebase_storage_ts_study_017_03_init_sequence.png | Theme: Initialization Sequence Labels to Render: - Step 1: "Init App 🔥" - Step 2: "Init App Check 🧿" - Step 3: "Get Storage 📦" Visual Details: 1. Core Concept: Correct order of code initialization. 2. Metaphor: Building blocks stacked in a specific order. App Check must come before Storage. 3. Action: Stacking. 4. Layout: Vertical stack or horizontal flow. | #### 2) firebase.ts(最小セット) |
| 1334 | docs/firebase_storage_ts_study_017.md | firebase_storage_ts_study_017_04_debug_token_key.png | ./picture/firebase_storage_ts_study_017_04_debug_token_key.png | Theme: Debug Token Key Labels to Render: - Developer: "Dev 🧑💻" - Key: "Debug Token 🔑" - Gate: "Localhost 🏠" Visual Details: 1. Core Concept: Using a special token for local development. 2. Metaphor: A developer using a glowing key to open a gate specifically labeled 'Localhost'. 3. Action: Unlocking. 4. Layout: Interaction. | ### Step D:ローカル開発(localhost)は debug token でやる🧪🔐 |
| 1335 | docs/firebase_storage_ts_study_017.md | firebase_storage_ts_study_017_05_monitor_to_enforce.png | ./picture/firebase_storage_ts_study_017_05_monitor_to_enforce.png | Theme: Monitor to Enforce Labels to Render: - Phase 1: "Monitor 📈" - Phase 2: "Enforce 🚨" - Slider: "Mode Switch 🎛️" Visual Details: 1. Core Concept: Transitioning from observation to enforcement. 2. Metaphor: A control panel slider moving from a green zone (Monitor) to a red zone (Enforce). 3. Action: Sliding. 4. Layout: Control panel. | ### Step E:まずは“監視”してから、強制(Enforce)へ📈➡️🚨 |
| 1336 | docs/firebase_storage_ts_study_017.md | firebase_storage_ts_study_017_06_pitfall_warning.png | ./picture/firebase_storage_ts_study_017_06_pitfall_warning.png | Theme: Pitfall Warning Labels to Render: - List: "Allowed Domains 📝" - Item: "localhost 🏠" - Warning: "Don't add! 🚫" Visual Details: 1. Core Concept: Warning against adding localhost to the allowed domains list. 2. Metaphor: A checklist where 'localhost' is crossed out with a big red X. 3. Action: Prohibition. 4. Layout: Warning sign. | ## 5) よくある詰まりポイント集🧯😵💫 |
| 1337 | docs/firebase_storage_ts_study_017.md | firebase_storage_ts_study_017_07_ai_assistant.png | ./picture/firebase_storage_ts_study_017_07_ai_assistant.png | Theme: AI Assistant Labels to Render: - Error: "403 Forbidden 🚫" - AI: "Gemini 🤖" - Solution: "Check Token! 💡" Visual Details: 1. Core Concept: AI helping to troubleshoot App Check errors. 2. Metaphor: A robot detective analyzing an error message and holding up a magnifying glass to a token. 3. Action: Troubleshooting. 4. Layout: Diagnostic view. | ## 6) AIで爆速にする(Antigravity / Gemini CLI / Console AI)🤖⚡ |
| 1338 | docs/firebase_storage_ts_study_018.md | firebase_storage_ts_study_018_01_sandbox_metaphor.png | ./picture/firebase_storage_ts_study_018_01_sandbox_metaphor.png | Theme: Sandbox Metaphor Labels to Render: - Sandbox: "Local Emulator 🏖️" - Outside: "Production ⛈️" - Developer: "Safe 😌" Visual Details: 1. Core Concept: Testing safely in a local environment. 2. Metaphor: A developer playing in a protected sandbox, while chaos happens outside the glass wall. 3. Action: Playing/Building. 4. Layout: Inside vs Outside. | ## 読む:エミュレーターが“最強の保険”な理由 🧠🛟 |
| 1339 | docs/firebase_storage_ts_study_018.md | firebase_storage_ts_study_018_02_emulator_ports.png | ./picture/firebase_storage_ts_study_018_02_emulator_ports.png | Theme: Port Mapping Labels to Render: - UI: "4000 🖥️" - Auth: "9099 🔐" - Firestore: "8080 🗃️" - Storage: "9199 📦" Visual Details: 1. Core Concept: The specific ports used by the emulators. 2. Metaphor: A server rack or control panel with labeled ports and status lights. 3. Action: Operating. 4. Layout: Panel view. | ### Step 1:エミュレーターを初期化&起動 🔥 |
| 1340 | docs/firebase_storage_ts_study_018.md | firebase_storage_ts_study_018_03_wiring_blueprint.png | ./picture/firebase_storage_ts_study_018_03_wiring_blueprint.png | Theme: Wiring Blueprint Labels to Render: - Config: "firebase.json 📄" - Wiring: "Rules Path 🔗" - Modules: "Auth / DB / Storage" Visual Details: 1. Core Concept: Connecting the configuration to the emulator services. 2. Metaphor: A blueprint showing wires connecting the config file to the service modules. 3. Action: Connecting. 4. Layout: Circuit diagram. | ### Step 2:firebase.json の例(雰囲気)🧩 |
| 1341 | docs/firebase_storage_ts_study_018.md | firebase_storage_ts_study_018_04_limbo_limit.png | ./picture/firebase_storage_ts_study_018_04_limbo_limit.png | Theme: Limbo Bar Limit Labels to Render: - Bar: "Limit: 200KB 📏" - File: "300KB 📦" - Result: "Blocked 🛑" Visual Details: 1. Core Concept: Setting a strict limit to test failure. 2. Metaphor: A limbo bar set very low. A box representing a file hits the bar and cannot pass. 3. Action: Blocking. 4. Layout: Side view. | ### Step 3:Storage Rules を“わざと厳しく”して失敗を作る🛡️💥 |
| 1342 | docs/firebase_storage_ts_study_018.md | firebase_storage_ts_study_018_05_connection_switch.png | ./picture/firebase_storage_ts_study_018_05_connection_switch.png | Theme: Connection Switch Labels to Render: - Switch: "USE_EMULATORS 🎛️" - ON: "Localhost 🏠" - OFF: "Cloud 🔥" Visual Details: 1. Core Concept: Switching the app's connection destination. 2. Metaphor: A large industrial switch connecting a pipe to either a local tank or a cloud tank. 3. Action: Switching. 4. Layout: Control panel. | ### Step 4:React 側を「本番 / エミュ」切り替えにする🔁✨ |
| 1343 | docs/firebase_storage_ts_study_018.md | firebase_storage_ts_study_018_06_failure_test_tubes.png | ./picture/firebase_storage_ts_study_018_06_failure_test_tubes.png | Theme: Failure Testing Labels to Render: - Test 1: "Size Fail 🔴" - Test 2: "Auth Fail 🔴" - Test 3: "Success 🟢" Visual Details: 1. Core Concept: Verifying different failure scenarios. 2. Metaphor: Three test tubes in a lab rack. Two are red (failed/blocked), one is green (passed). 3. Action: Testing. 4. Layout: Lab equipment. | ### Step 5:アップロードして、成功→失敗を観察する👀📷 |
| 1344 | docs/firebase_storage_ts_study_018.md | firebase_storage_ts_study_018_07_ai_verification.png | ./picture/firebase_storage_ts_study_018_07_ai_verification.png | Theme: AI Verification Labels to Render: - AI: "Gemini 🤖" - Task: "Audit Rules 📝" - Result: "Secure ✅" Visual Details: 1. Core Concept: Using AI to verify the rules and tests. 2. Metaphor: An AI robot checking a security list against the emulator results. 3. Action: Auditing. 4. Layout: Checklist view. | ## AI活用:Antigravity / Gemini CLI で“検証の質”を上げる🤖🚀 |
| 1345 | docs/firebase_storage_ts_study_019.md | firebase_storage_ts_study_019_01_strategy_map.png | ./picture/firebase_storage_ts_study_019_01_strategy_map.png | Theme: Strategy Map Labels to Render: - Goal: "Thumbnail Strategy 🗺️" - Path 1: "Client 🖥️" - Path 2: "Function ⚙️" - Path 3: "Extension 🧩" Visual Details: 1. Core Concept: Deciding the best approach for thumbnail generation. 2. Metaphor: A strategic map with three routes leading to the destination. 3. Action: Planning. 4. Layout: Map view. | ## 1) まずサムネって何が嬉しいの?🤔📷 |
| 1346 | docs/firebase_storage_ts_study_019.md | firebase_storage_ts_study_019_02_performance_comparison.png | ./picture/firebase_storage_ts_study_019_02_performance_comparison.png | Theme: Performance Comparison Labels to Render: - Heavy: "Original (5MB) 🐢" - Light: "Thumb (20KB) 🐇" - User: "Happy 😊" Visual Details: 1. Core Concept: Thumbnails improve performance and user experience. 2. Metaphor: A slow, heavy snail representing the original image vs a fast, light rabbit representing the thumbnail. 3. Action: Racing. 4. Layout: Comparison. | ## 2) サムネを作る場所は3択だよ🧩 |
| 1347 | docs/firebase_storage_ts_study_019.md | firebase_storage_ts_study_019_03_three_methods.png | ./picture/firebase_storage_ts_study_019_03_three_methods.png | Theme: Three Generation Methods Labels to Render: - Client: "Browser Resize 🖥️" - Server: "Cloud Function ☁️" - Auto: "Extension 🧩" Visual Details: 1. Core Concept: The three architectural options. 2. Metaphor: Three distinct icons representing the methods. A screen, a cloud gear, and a puzzle piece. 3. Action: Displaying options. 4. Layout: Triptych. | ### ① クライアント(ブラウザ)で縮小して「1枚だけ」置く🖥️➡️🗜️ |
| 1348 | docs/firebase_storage_ts_study_019.md | firebase_storage_ts_study_019_04_design_triangle.png | ./picture/firebase_storage_ts_study_019_04_design_triangle.png | Theme: Design Triangle Labels to Render: - Corner 1: "Size (128/512) 📐" - Corner 2: "Path (thumb/) 📁" - Corner 3: "UI Priority 🖼️" Visual Details: 1. Core Concept: The three key design decisions. 2. Metaphor: A triangle where each corner represents a decision point. 3. Action: Balancing. 4. Layout: Triangle diagram. | ## 3) ここを決めれば勝ち🏆(サムネ設計の3点セット) |
| 1349 | docs/firebase_storage_ts_study_019.md | firebase_storage_ts_study_019_05_data_schema.png | ./picture/firebase_storage_ts_study_019_05_data_schema.png | Theme: Firestore Schema Labels to Render: - Doc: "User Profile 👤" - Field: "photo.originalPath" - Field: "photo.thumbPaths {128, 512}" Visual Details: 1. Core Concept: Storing thumbnail paths in Firestore. 2. Metaphor: A structured data card or JSON tree view. 3. Action: Structuring. 4. Layout: Code/Data view. | ## 4) Firestore側の持ち方(超おすすめ形)🧠🗃️ |
| 1350 | docs/firebase_storage_ts_study_019.md | firebase_storage_ts_study_019_06_extension_install.png | ./picture/firebase_storage_ts_study_019_06_extension_install.png | Theme: Extension Install Labels to Render: - Hub: "Extensions Hub 🏪" - Item: "Resize Images 🖼️" - Action: "Install 📥" Visual Details: 1. Core Concept: Installing the Resize Images extension. 2. Metaphor: A user selecting a pre-built module from a store and installing it. 3. Action: Installing. 4. Layout: UI interaction. | ### ルートA:Resize Images拡張(最短で“それっぽい”)🧩🚀 |
| 1351 | docs/firebase_storage_ts_study_019.md | firebase_storage_ts_study_019_07_ai_enrichment.png | ./picture/firebase_storage_ts_study_019_07_ai_enrichment.png | Theme: AI Enrichment Labels to Render: - Image: "Thumbnail 🖼️" - AI: "Analyze 🤖" - Output: "Alt Text / Tags 📝" Visual Details: 1. Core Concept: Enhancing the image data with AI. 2. Metaphor: A robot examining the generated thumbnail and attaching metadata tags. 3. Action: Tagging. 4. Layout: Process flow. | ## 7) AIも絡める🤖🖼️✨(サムネ設計が“次の章”に繋がる!) |
| 1352 | docs/firebase_storage_ts_study_020.md | firebase_storage_ts_study_020_01_automated_pipeline.png | ./picture/firebase_storage_ts_study_020_01_automated_pipeline.png | Theme: Automated Pipeline Labels to Render: - Step 1: "User Upload 📤" - Step 2: "AI Analyze 🤖" - Step 3: "Resize 🖼️" - Step 4: "DB Update 🗃️" - Result: "UI Ready ✅" Visual Details: 1. Core Concept: The automated flow from upload to display. 2. Metaphor: A factory conveyor belt. Raw material (Image) goes in, gets analyzed by a robot arm, resized by a machine, stamped (DB), and ends up on a display shelf. 3. Action: Processing. 4. Layout: Sequential flow. | ## 0) 全体の流れ(設計図)🗺️ |
| 1353 | docs/firebase_storage_ts_study_020.md | firebase_storage_ts_study_020_02_bucket_path_structure.png | ./picture/firebase_storage_ts_study_020_02_bucket_path_structure.png | Theme: Bucket Path Structure Labels to Render: - Root: "users/{uid}/profile/" - Folder 1: "original/ (Master) 🔒" - Folder 2: "thumbs/ (Generated) 🖼️" - Separation: "Clean Design ✨" Visual Details: 1. Core Concept: Separating original files from generated thumbnails. 2. Metaphor: A filing cabinet with two distinct drawers. One labeled 'Originals' (Locked), one labeled 'Thumbs' (Open). 3. Action: Sorting. 4. Layout: Split folder view. | #### 推奨パス設計📁 |
| 1354 | docs/firebase_storage_ts_study_020.md | firebase_storage_ts_study_020_03_firestore_schema.png | ./picture/firebase_storage_ts_study_020_03_firestore_schema.png | Theme: Firestore Document Schema Labels to Render: - Doc: "profileImages/{id} 📄" - Field 1: "status: 'processing' -> 'ready' 🔄" - Field 2: "aiTags: ['Tag1', 'Tag2'] 🏷️" - Field 3: "paths: { original, 128, 512 } 📍" Visual Details: 1. Core Concept: The data structure holding image metadata. 2. Metaphor: A structured data card or ID card for the image. 3. Action: Displaying fields. 4. Layout: Card view. | ### 2-1. Firestoreのドキュメント例🗃️ |
| 1355 | docs/firebase_storage_ts_study_020.md | firebase_storage_ts_study_020_04_processing_state.png | ./picture/firebase_storage_ts_study_020_04_processing_state.png | Theme: Processing State Flow Labels to Render: - Event: "Upload Original 📤" - Function: "Trigger ⚙️" - DB: "Set status: 'processing' ⏳" - UI: "Spinner 🌀" Visual Details: 1. Core Concept: The immediate reaction to an upload. 2. Metaphor: A relay race. The runner (Upload) passes the baton to the Function, which sets a 'Wait' sign (Processing) on the DB. 3. Action: Triggering. 4. Layout: Flowchart. | ### 2-2. Storageにオリジナルが来たら「processing」にする📥➡️⚙️ |
| 1356 | docs/firebase_storage_ts_study_020.md | firebase_storage_ts_study_020_05_ready_state.png | ./picture/firebase_storage_ts_study_020_05_ready_state.png | Theme: Ready State Flow Labels to Render: - Event: "Thumb Created 🖼️" - Function: "Trigger ⚙️" - DB: "Set status: 'ready' ✅" - UI: "Show Image ✨" Visual Details: 1. Core Concept: The completion of the process. 2. Metaphor: A final inspection. The product (Thumb) is approved, the 'Wait' sign is flipped to 'Ready', and the curtain opens (UI). 3. Action: Completion. 4. Layout: Flowchart. | ### 2-3. サムネが生成されたら「ready」にする🖼️✅ |
| 1357 | docs/firebase_storage_ts_study_020.md | firebase_storage_ts_study_020_06_ai_analysis.png | ./picture/firebase_storage_ts_study_020_06_ai_analysis.png | Theme: AI Image Analysis Labels to Render: - Input: "Image + Prompt 🖼️" - AI: "Gemini 🧠" - Output: "JSON { alt, tags, review } 📦" - Rule: "JSON Only! 🛑" Visual Details: 1. Core Concept: Extracting structured data from an image. 2. Metaphor: A scanner analyzing a photo and printing out a neat data slip (JSON). 3. Action: Analyzing. 4. Layout: Process flow. | ### 3-2. 画像を解析してテキストを出す📷➡️📝 |
| 1358 | docs/firebase_storage_ts_study_020.md | firebase_storage_ts_study_020_07_ai_dev_cycle.png | ./picture/firebase_storage_ts_study_020_07_ai_dev_cycle.png | Theme: AI Development Cycle Labels to Render: - Step 1: "Investigate (Gemini CLI) 🕵️" - Step 2: "Fix (Code) 🛠️" - Step 3: "Verify (Emulator) 🧪" - Speed: "Fast Cycle ⚡" Visual Details: 1. Core Concept: Rapid development using AI tools. 2. Metaphor: A high-speed loop or race track. The developer moves quickly between Investigation, Fix, and Verification. 3. Action: Cycling. 4. Layout: Circular cycle. | ## 5) Antigravity / Gemini CLI / MCPで“調査→修正→検証”を短距離化🚀🧩 |