{"id":9058,"date":"2025-12-02T14:06:39","date_gmt":"2025-12-02T05:06:39","guid":{"rendered":"https:\/\/rakkokeyword.com\/techo\/?p=9058"},"modified":"2026-01-30T10:58:03","modified_gmt":"2026-01-30T01:58:03","slug":"tool-5forces-analysis-maker","status":"publish","type":"post","link":"https:\/\/rakkokeyword.com\/techo\/tool-5forces-analysis-maker\/","title":{"rendered":"5Forces\u5206\u6790\u56f3\u8868\u4f5c\u6210\u30c4\u30fc\u30eb"},"content":{"rendered":"\n<div id=\"five-forces-tool-wrapper\" class=\"five-forces-tool-wrapper\">\n    <style>\n        \/* --- CSS Reset & Base --- *\/\n        #five-forces-tool-wrapper {\n            width: 100%;\n            max-width: 100%;\n            box-sizing: border-box;\n            font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n            color: #333;\n            line-height: 1.6;\n            background-color: #fff;\n        }\n        #five-forces-tool-wrapper * { box-sizing: border-box; }\n        \n        \/* WordPress\u306e\u30ea\u30b9\u30c8\u30b9\u30bf\u30a4\u30eb\u3092\u30ea\u30bb\u30c3\u30c8 *\/\n        #five-forces-tool-wrapper ul,\n        #five-forces-tool-wrapper li {\n            list-style: none !important;\n            list-style-type: none !important;\n            margin: 0 !important;\n            padding: 0 !important;\n        }\n        #five-forces-tool-wrapper ul::before,\n        #five-forces-tool-wrapper li::marker {\n            display: none !important;\n            content: none !important;\n        }\n\n        \/* --- Layout --- *\/\n        .ff-container {\n            max-width: 1200px;\n            margin: 0 auto;\n        }\n\n        \/* --- Preview Section --- *\/\n        .ff-preview-area {\n            width: 100%;\n        }\n        \n        .ff-top-controls {\n            display: flex;\n            gap: 15px;\n            margin-bottom: 20px;\n            flex-wrap: wrap;\n            align-items: center;\n            background: #f8f9fa;\n            padding: 15px;\n            border-radius: 8px;\n        }\n        .ff-control-group {\n            display: flex;\n            align-items: center;\n            gap: 10px;\n        }\n        .ff-control-label {\n            font-weight: bold;\n            font-size: 14px;\n            color: #13284B;\n            white-space: nowrap;\n        }\n        .ff-title-input {\n            padding: 8px 12px;\n            border: 1px solid #ddd;\n            border-radius: 4px;\n            font-size: 16px;\n            font-weight: bold;\n            min-width: 200px;\n        }\n        .ff-preset-select {\n            padding: 8px 12px;\n            border: 1px solid #ddd;\n            border-radius: 4px;\n            font-size: 14px;\n            min-width: 200px;\n            background: #fff;\n        }\n\n        .ff-preview-container {\n            background: #fff;\n            padding: 20px;\n            border-radius: 8px;\n        }\n\n        .ff-chart-title {\n            text-align: center;\n            font-size: 24px;\n            font-weight: bold;\n            margin: 0 0 25px 0;\n            color: #333;\n        }\n\n        \/* --- 5Forces Layout (Cross Shape on Desktop, Vertical on Mobile) --- *\/\n        .ff-matrix {\n            display: grid;\n            grid-template-columns: 1fr;\n            gap: 15px;\n            max-width: 900px;\n            margin: 0 auto;\n        }\n        \n        \/* Desktop: Cross layout *\/\n        @media (min-width: 768px) {\n            .ff-matrix {\n                grid-template-columns: 1fr 1fr 1fr;\n                grid-template-rows: auto auto auto;\n            }\n            .ff-card.new-entrants { grid-column: 2; grid-row: 1; }\n            .ff-card.suppliers { grid-column: 1; grid-row: 2; }\n            .ff-card.rivalry { grid-column: 2; grid-row: 2; }\n            .ff-card.buyers { grid-column: 3; grid-row: 2; }\n            .ff-card.substitutes { grid-column: 2; grid-row: 3; }\n        }\n        \n        \/* Force desktop layout when capturing at 1080px *\/\n        .ff-preview-container.force-desktop-layout .ff-matrix {\n            grid-template-columns: 1fr 1fr 1fr !important;\n            grid-template-rows: auto auto auto !important;\n        }\n        .ff-preview-container.force-desktop-layout .ff-card.new-entrants {\n            grid-column: 2 !important;\n            grid-row: 1 !important;\n        }\n        .ff-preview-container.force-desktop-layout .ff-card.suppliers {\n            grid-column: 1 !important;\n            grid-row: 2 !important;\n        }\n        .ff-preview-container.force-desktop-layout .ff-card.rivalry {\n            grid-column: 2 !important;\n            grid-row: 2 !important;\n        }\n        .ff-preview-container.force-desktop-layout .ff-card.buyers {\n            grid-column: 3 !important;\n            grid-row: 2 !important;\n        }\n        .ff-preview-container.force-desktop-layout .ff-card.substitutes {\n            grid-column: 2 !important;\n            grid-row: 3 !important;\n        }\n\n        .ff-card {\n            border: 1px solid #ddd;\n            border-radius: 6px;\n            overflow: hidden;\n            background: #fff;\n            display: flex;\n            flex-direction: column;\n            min-height: 200px;\n            box-shadow: 0 2px 4px rgba(0,0,0,0.03);\n        }\n\n        .ff-card-header {\n            padding: 10px 12px;\n            font-weight: bold;\n            font-size: 13px;\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            text-transform: uppercase;\n            border-bottom: 1px solid rgba(0,0,0,0.05);\n            line-height: 1.4;\n        }\n        .ff-card-header-text {\n            flex: 1;\n        }\n        .ff-card-header span:last-child {\n            font-size: 18px;\n            font-weight: 900;\n            opacity: 0.2;\n            margin-left: 8px;\n        }\n\n        .ff-card-body {\n            padding: 12px;\n            font-size: 14px;\n            line-height: 1.6;\n            flex-grow: 1;\n            display: flex;\n            flex-direction: column;\n        }\n        \n        .ff-add-item {\n            margin-top: auto;\n            padding: 10px 12px;\n            background: #f0f7fb;\n            border: 1px dashed #007cba;\n            border-radius: 4px;\n            text-align: center;\n            color: #007cba;\n            cursor: pointer;\n            font-size: 13px;\n            font-weight: 500;\n            transition: all 0.2s;\n            user-select: none;\n            margin-top: 10px;\n        }\n        .ff-add-item:hover {\n            background: #007cba;\n            color: white;\n            border-style: solid;\n        }\n        .ff-add-item::before {\n            content: \"\u2795 \";\n            margin-right: 5px;\n        }\n        \n        \/* Hide add button when capturing *\/\n        .ff-capturing .ff-add-item {\n            display: none !important;\n        }\n        \n        .ff-list {\n            list-style: none !important;\n            list-style-type: none !important;\n            padding: 0 !important;\n            margin: 0 !important;\n            padding-left: 0 !important;\n            margin-left: 0 !important;\n        }\n        .ff-list::before,\n        .ff-list::marker {\n            display: none !important;\n            content: none !important;\n        }\n\n        \/* Clickable List Items *\/\n        .ff-list li {\n            position: relative !important;\n            padding-left: 0 !important;\n            margin-bottom: 6px !important;\n            transition: background 0.1s !important;\n            border-radius: 3px !important;\n            padding-top: 4px !important;\n            padding-bottom: 4px !important;\n            padding-right: 8px !important;\n            list-style: none !important;\n            list-style-type: none !important;\n            text-indent: 0 !important;\n            line-height: 1.6 !important;\n            display: flex !important;\n            align-items: center !important;\n            cursor: pointer !important;\n        }\n        .ff-list li:hover {\n            background-color: #f0f7ff !important;\n        }\n        \n        \/* Icon Area (clickable for color change) *\/\n        .ff-icon {\n            flex-shrink: 0 !important;\n            width: 2em !important;\n            text-align: left !important;\n            padding-left: 0.5em !important;\n            cursor: pointer !important;\n            font-size: 16px !important;\n            line-height: 1.6 !important;\n            user-select: none !important;\n            align-self: center !important;\n        }\n        .ff-icon:hover {\n            opacity: 0.7 !important;\n        }\n        \n        \/* Delete Button *\/\n        .ff-delete {\n            flex-shrink: 0 !important;\n            width: 2em !important;\n            text-align: center !important;\n            cursor: pointer !important;\n            font-size: 20px !important;\n            line-height: 1.6 !important;\n            color: #999 !important;\n            opacity: 0 !important;\n            transition: opacity 0.2s, color 0.2s !important;\n            user-select: none !important;\n            font-weight: bold !important;\n            align-self: center !important;\n        }\n        .ff-list li:hover .ff-delete {\n            opacity: 1 !important;\n        }\n        .ff-delete:hover {\n            color: #d93025 !important;\n            transform: scale(1.2);\n        }\n        \n        \/* Text Area (clickable for edit) *\/\n        .ff-text {\n            flex: 1 !important;\n            cursor: text !important;\n            line-height: 1.6 !important;\n            font-size: inherit !important;\n        }\n        .ff-text:hover {\n            background-color: rgba(0, 124, 186, 0.05) !important;\n            border-radius: 2px !important;\n        }\n        \n        \/* Edit Mode Style *\/\n        .ff-text[contenteditable=\"true\"] {\n            background-color: #fffbea !important;\n            outline: 2px solid #007cba !important;\n            padding: 2px 4px !important;\n            border-radius: 2px !important;\n        }\n        \n        \/* Remove old ::before styles *\/\n        .ff-list li::before {\n            display: none !important;\n        }\n\n        \/* High (Opportunity) Style *\/\n        .ff-list li.type-high .ff-text {\n            color: #0056b3 !important;\n            font-weight: bold !important;\n        }\n        .ff-list li.type-high {\n            background-color: rgba(0, 86, 179, 0.05) !important;\n        }\n        .ff-list li.type-high .ff-icon {\n            color: #0056b3 !important;\n        }\n\n        \/* Low (Threat) Style *\/\n        .ff-list li.type-low .ff-text {\n            color: #d93025 !important;\n            font-weight: bold !important;\n        }\n        .ff-list li.type-low {\n            background-color: rgba(217, 48, 37, 0.05) !important;\n        }\n        .ff-list li.type-low .ff-icon {\n            color: #d93025 !important;\n        }\n        \n        \/* Normal Style *\/\n        .ff-list li .ff-icon {\n            color: #666 !important;\n        }\n\n        \/* Hint Message *\/\n        .ff-click-hint {\n            text-align: center;\n            font-size: 11px;\n            color: #999;\n            margin-top: 10px;\n            background: #f9f9f9;\n            padding: 5px;\n            border-radius: 20px;\n            display: inline-block;\n            cursor: pointer;\n            transition: all 0.2s;\n            user-select: none;\n        }\n        .ff-click-hint:hover {\n            background: #007cba;\n            color: white;\n            box-shadow: 0 2px 8px rgba(0, 124, 186, 0.3);\n        }\n        .ff-hint-wrapper { text-align: center; }\n\n        \/* --- Themes --- *\/\n        \/* Standard (Blue) *\/\n        .theme-standard .ff-card { border-top: 4px solid #007cba; }\n        .theme-standard .ff-card-header { background: #f0f7fb; color: #007cba; }\n        \/* Pop (Warm) *\/\n        .theme-pop .ff-card { border-top: 4px solid #ff9900; }\n        .theme-pop .ff-card-header { background: #fff8e1; color: #d68100; }\n        \/* Mono *\/\n        .theme-mono .ff-card { border: 1px solid #333; border-radius: 0; box-shadow: none; }\n        .theme-mono .ff-card-header { background: #333; color: #fff; }\n\n        \/* Special styling for center card (Rivalry) *\/\n        .theme-standard .ff-card.rivalry { border-top: 5px solid #13284B; }\n        .theme-standard .ff-card.rivalry .ff-card-header { background: #13284B; color: #fff; }\n        .theme-pop .ff-card.rivalry { border-top: 5px solid #e67e00; }\n        .theme-pop .ff-card.rivalry .ff-card-header { background: #e67e00; color: #fff; }\n        .theme-mono .ff-card.rivalry { border: 2px solid #000; }\n        .theme-mono .ff-card.rivalry .ff-card-header { background: #000; color: #fff; }\n\n        \/* --- Actions --- *\/\n        .ff-actions {\n            display: flex;\n            gap: 15px;\n            flex-wrap: wrap;\n            justify-content: center;\n            margin-top: 25px;\n        }\n        .ff-btn {\n            display: inline-flex;\n            align-items: center;\n            justify-content: center;\n            height: 48px;\n            padding: 0 30px;\n            font-size: 15px;\n            font-weight: bold;\n            border-radius: 4px;\n            cursor: pointer;\n            border: none;\n            transition: all 0.2s;\n        }\n        .ff-btn-primary { background-color: #13284B; color: #fff; }\n        .ff-btn-primary:hover { background-color: #1f3a66; }\n        .ff-btn-secondary { background-color: #f0f0f1; color: #333; border: 1px solid #ccc; }\n        .ff-btn-secondary:hover { background-color: #e0e0e0; }\n\n        \/* Theme Selection *\/\n        .ff-theme-selection {\n            margin-top: 20px;\n            padding: 20px;\n            background: #f8f9fa;\n            border-radius: 6px;\n            border: 1px solid #eee;\n        }\n        .ff-design-title {\n            font-weight: bold;\n            font-size: 16px;\n            color: #13284B;\n            margin-bottom: 15px;\n            padding-bottom: 10px;\n            border-bottom: 2px solid #ddd;\n        }\n        .ff-design-row {\n            display: flex;\n            align-items: center;\n            margin-bottom: 12px;\n            flex-wrap: wrap;\n            gap: 10px;\n        }\n        .ff-design-label {\n            font-weight: bold;\n            font-size: 14px;\n            color: #13284B;\n            min-width: 120px;\n        }\n        @media (max-width: 600px) {\n            .ff-design-label {\n                min-width: 100%;\n                margin-bottom: 5px;\n            }\n            .ff-design-row {\n                flex-direction: column;\n                align-items: flex-start;\n            }\n        }\n        .ff-design-options {\n            display: flex;\n            gap: 15px;\n            flex-wrap: wrap;\n            flex: 1;\n        }\n        .ff-theme-selection label {\n            cursor: pointer;\n            font-size: 14px;\n            display: flex;\n            align-items: center;\n            gap: 5px;\n        }\n        .ff-theme-selection label input {\n            margin: 0;\n        }\n        \n        \/* Font Size Slider *\/\n        .ff-slider-container {\n            display: flex;\n            align-items: center;\n            gap: 10px;\n            flex: 1;\n            min-width: 200px;\n        }\n        .ff-font-slider {\n            flex: 1;\n            max-width: 200px;\n            height: 6px;\n            -webkit-appearance: none;\n            appearance: none;\n            background: #ddd;\n            border-radius: 3px;\n            outline: none;\n        }\n        @media (max-width: 600px) {\n            .ff-slider-container {\n                width: 100%;\n                max-width: 100%;\n            }\n            .ff-font-slider {\n                max-width: 100%;\n            }\n        }\n        .ff-font-slider::-webkit-slider-thumb {\n            -webkit-appearance: none;\n            appearance: none;\n            width: 18px;\n            height: 18px;\n            background: #007cba;\n            border-radius: 50%;\n            cursor: pointer;\n        }\n        .ff-font-slider::-moz-range-thumb {\n            width: 18px;\n            height: 18px;\n            background: #007cba;\n            border-radius: 50%;\n            cursor: pointer;\n            border: none;\n        }\n        .ff-font-size-value {\n            font-size: 13px;\n            color: #666;\n            min-width: 40px;\n            text-align: right;\n        }\n\n        \/* Loading *\/\n        .ff-loading {\n            position: fixed; top:0; left:0; width:100%; height:100%;\n            background: rgba(255,255,255,0.9);\n            z-index: 9999; display: none; align-items: center; justify-content: center;\n        }\n        .ff-loading.active { display: flex; }\n        .ff-spinner {\n            width: 40px; height: 40px;\n            border: 4px solid #f3f3f3; border-top: 4px solid #13284B;\n            border-radius: 50%; animation: ff-spin 1s linear infinite;\n        }\n        @keyframes ff-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }\n\n        \/* Guide Popup *\/\n        .ff-guide-overlay {\n            position: fixed;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 100%;\n            background: rgba(0, 0, 0, 0.6);\n            z-index: 10000;\n            display: none;\n            align-items: center;\n            justify-content: center;\n            animation: fadeIn 0.3s;\n        }\n        .ff-guide-overlay.active {\n            display: flex;\n        }\n        .ff-guide-popup {\n            background: white;\n            padding: 30px;\n            border-radius: 12px;\n            max-width: 500px;\n            width: 90%;\n            box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3);\n            animation: slideUp 0.3s;\n        }\n        .ff-guide-title {\n            font-size: 20px;\n            font-weight: bold;\n            margin-bottom: 20px;\n            color: #13284B;\n            text-align: center;\n        }\n        .ff-guide-content {\n            font-size: 14px;\n            line-height: 1.8;\n            margin-bottom: 20px;\n            color: #333;\n        }\n        .ff-guide-item {\n            display: flex;\n            align-items: flex-start;\n            margin-bottom: 15px;\n            padding: 10px;\n            background: #f8f9fa;\n            border-radius: 6px;\n        }\n        .ff-guide-icon {\n            flex-shrink: 0;\n            width: 30px;\n            font-size: 18px;\n            margin-right: 12px;\n        }\n        .ff-guide-text {\n            flex: 1;\n        }\n        .ff-guide-button {\n            width: 100%;\n            padding: 12px;\n            background: #13284B;\n            color: white;\n            border: none;\n            border-radius: 6px;\n            font-size: 15px;\n            font-weight: bold;\n            cursor: pointer;\n            transition: background 0.2s;\n        }\n        .ff-guide-button:hover {\n            background: #1f3a66;\n        }\n\n        \/* Size Selection Modal *\/\n        .ff-size-modal {\n            position: fixed;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 100%;\n            background: rgba(0, 0, 0, 0.6);\n            z-index: 10001;\n            display: none;\n            align-items: center;\n            justify-content: center;\n            animation: fadeIn 0.3s;\n        }\n        .ff-size-modal.active {\n            display: flex;\n        }\n        .ff-size-modal-content {\n            background: white;\n            padding: 30px;\n            border-radius: 12px;\n            max-width: 400px;\n            width: 90%;\n            box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3);\n            animation: slideUp 0.3s;\n        }\n        .ff-size-modal-title {\n            font-size: 18px;\n            font-weight: bold;\n            margin-bottom: 20px;\n            color: #13284B;\n            text-align: center;\n        }\n        .ff-size-options {\n            display: flex;\n            flex-direction: column;\n            gap: 12px;\n            margin-bottom: 20px;\n        }\n        .ff-size-option {\n            padding: 15px;\n            border: 2px solid #ddd;\n            border-radius: 8px;\n            cursor: pointer;\n            transition: all 0.2s;\n            text-align: center;\n            font-size: 15px;\n            font-weight: 500;\n        }\n        .ff-size-option:hover {\n            border-color: #007cba;\n            background: #f0f7fb;\n        }\n        .ff-size-option.selected {\n            border-color: #007cba;\n            background: #007cba;\n            color: white;\n        }\n        .ff-size-option-label {\n            font-weight: bold;\n            margin-bottom: 5px;\n        }\n        .ff-size-option-desc {\n            font-size: 13px;\n            opacity: 0.8;\n        }\n        .ff-size-modal-buttons {\n            display: flex;\n            gap: 10px;\n        }\n        .ff-size-modal-button {\n            flex: 1;\n            padding: 12px;\n            border: none;\n            border-radius: 6px;\n            font-size: 15px;\n            font-weight: bold;\n            cursor: pointer;\n            transition: background 0.2s;\n        }\n        .ff-size-modal-button.primary {\n            background: #13284B;\n            color: white;\n        }\n        .ff-size-modal-button.primary:hover {\n            background: #1f3a66;\n        }\n        .ff-size-modal-button.secondary {\n            background: #f0f0f1;\n            color: #333;\n        }\n        .ff-size-modal-button.secondary:hover {\n            background: #e0e0e0;\n        }\n\n        @keyframes fadeIn {\n            from { opacity: 0; }\n            to { opacity: 1; }\n        }\n        @keyframes slideUp {\n            from { transform: translateY(20px); opacity: 0; }\n            to { transform: translateY(0); opacity: 1; }\n        }\n\n    <\/style>\n\n    <div id=\"ff_guide_overlay\" class=\"ff-guide-overlay\">\n        <div class=\"ff-guide-popup\">\n            <div class=\"ff-guide-title\">\ud83d\udcca 5Forces\u5206\u6790\u30c4\u30fc\u30eb\u306e\u4f7f\u3044\u65b9<\/div>\n            <div class=\"ff-guide-content\">\n                <div class=\"ff-guide-item\">\n                    <div class=\"ff-guide-icon\">\ud83c\udfa8<\/div>\n                    <div class=\"ff-guide-text\">\n                        <strong>\u30de\u30fc\u30af\uff08\u2022\u25b2\u25bc\uff09\u3092\u30af\u30ea\u30c3\u30af<\/strong><br>\n                        \u8272\u3092\u5909\u66f4\u3067\u304d\u307e\u3059\uff08\u9ed2 \u2192 \u9752(\u6a5f\u4f1a) \u2192 \u8d64(\u8105\u5a01)\uff09\n                    <\/div>\n                <\/div>\n                <div class=\"ff-guide-item\">\n                    <div class=\"ff-guide-icon\">\u270f\ufe0f<\/div>\n                    <div class=\"ff-guide-text\">\n                        <strong>\u30c6\u30ad\u30b9\u30c8\u3092\u30af\u30ea\u30c3\u30af<\/strong><br>\n                        \u305d\u306e\u5834\u3067\u7de8\u96c6\u3067\u304d\u307e\u3059\uff08Enter\u3067\u4fdd\u5b58\u3001Esc\u3067\u30ad\u30e3\u30f3\u30bb\u30eb\uff09\n                    <\/div>\n                <\/div>\n                <div class=\"ff-guide-item\">\n                    <div class=\"ff-guide-icon\">\u2795<\/div>\n                    <div class=\"ff-guide-text\">\n                        <strong>\u300c\u2795 \u9805\u76ee\u3092\u8ffd\u52a0\u300d\u30dc\u30bf\u30f3<\/strong><br>\n                        \u65b0\u3057\u3044\u9805\u76ee\u3092\u8ffd\u52a0\u3067\u304d\u307e\u3059\n                    <\/div>\n                <\/div>\n                <div class=\"ff-guide-item\">\n                    <div class=\"ff-guide-icon\">\u274c<\/div>\n                    <div class=\"ff-guide-text\">\n                        <strong>\u9805\u76ee\u306b\u30db\u30d0\u30fc\u3057\u3066\u300c\u00d7\u300d\u3092\u30af\u30ea\u30c3\u30af<\/strong><br>\n                        \u4e0d\u8981\u306a\u9805\u76ee\u3092\u524a\u9664\u3067\u304d\u307e\u3059\n                    <\/div>\n                <\/div>\n            <\/div>\n            <button class=\"ff-guide-button\" onclick=\"document.getElementById('ff_guide_overlay').classList.remove('active'); localStorage.setItem('ff_guide_shown', 'true');\">\n                \u308f\u304b\u308a\u307e\u3057\u305f\n            <\/button>\n        <\/div>\n    <\/div>\n\n    <div id=\"ff_size_modal\" class=\"ff-size-modal\">\n        <div class=\"ff-size-modal-content\">\n            <div class=\"ff-size-modal-title\">\ud83d\udcd0 \u753b\u50cf\u30b5\u30a4\u30ba\u3092\u9078\u629e<\/div>\n            <div class=\"ff-size-options\">\n                <div class=\"ff-size-option\" data-size=\"current\">\n                    <div class=\"ff-size-option-label\">\u73fe\u5728\u306e\u30b5\u30a4\u30ba\u3067\u51fa\u529b<\/div>\n                    <div class=\"ff-size-option-desc\">\u8868\u793a\u3055\u308c\u3066\u3044\u308b\u6bd4\u7387\u3067\u4fdd\u5b58<\/div>\n                <\/div>\n                <div class=\"ff-size-option selected\" data-size=\"1080\">\n                    <div class=\"ff-size-option-label\">\u9ad8\u89e3\u50cf\u5ea6\u3067\u51fa\u529b\uff08\u63a8\u5968\uff09<\/div>\n                    <div class=\"ff-size-option-desc\">\u9ad8\u89e3\u50cf\u5ea6\u3067\u4fdd\u5b58<\/div>\n                <\/div>\n            <\/div>\n            <div class=\"ff-size-modal-buttons\">\n                <button class=\"ff-size-modal-button secondary\" onclick=\"document.getElementById('ff_size_modal').classList.remove('active');\">\n                    \u30ad\u30e3\u30f3\u30bb\u30eb\n                <\/button>\n                <button id=\"ff_size_confirm\" class=\"ff-size-modal-button primary\">\n                    \u4fdd\u5b58\u3059\u308b\n                <\/button>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <div id=\"ff_loading\" class=\"ff-loading\"><div class=\"ff-spinner\"><\/div><\/div>\n\n    <div class=\"ff-container\">\n        \n        <div class=\"ff-top-controls\">\n            <div class=\"ff-control-group\">\n                <label class=\"ff-control-label\">\u30bf\u30a4\u30c8\u30eb:<\/label>\n                <input type=\"text\" id=\"ff_title\" class=\"ff-title-input\" value=\"5Forces\u5206\u6790\" placeholder=\"\u5206\u6790\u30bf\u30a4\u30c8\u30eb\u3092\u5165\u529b\">\n            <\/div>\n            <div class=\"ff-control-group\">\n                <label class=\"ff-control-label\">\u696d\u754c\u30d7\u30ea\u30bb\u30c3\u30c8:<\/label>\n                <select id=\"ff_preset_select\" class=\"ff-preset-select\">\n                    <option value=\"\">\u8a18\u5165\u4f8b\u3092\u8aad\u307f\u8fbc\u3080<\/option>\n                    <option value=\"regional_convenience\">\u5730\u65b9\u5bc6\u7740\u30b3\u30f3\u30d3\u30cb\u30c1\u30a7\u30fc\u30f3<\/option>\n                    <option value=\"tokyo_select_shop\">\u90fd\u5185\u30bb\u30ec\u30af\u30c8\u30b7\u30e7\u30c3\u30d7<\/option>\n                    <option value=\"auto_parts_maker\">\u4e2d\u5805\u81ea\u52d5\u8eca\u90e8\u54c1\u30e1\u30fc\u30ab\u30fc<\/option>\n                    <option value=\"b2b_saas_startup\">\u4e2d\u5c0fBtoB SaaS\u4f01\u696d<\/option>\n                <\/select>\n            <\/div>\n        <\/div>\n\n        <div class=\"ff-preview-area\">\n            <div id=\"ff_capture_target\" class=\"ff-preview-container theme-standard\">\n                <div id=\"ff_preview_title\" class=\"ff-chart-title\">5Forces\u5206\u6790<\/div>\n                \n                <div class=\"ff-matrix\">\n                    <div class=\"ff-card new-entrants\">\n                        <div class=\"ff-card-header\">\n                            <span class=\"ff-card-header-text\">\u65b0\u898f\u53c2\u5165\u306e\u8105\u5a01<\/span>\n                            <span>\u2193<\/span>\n                        <\/div>\n                        <div class=\"ff-card-body\">\n                            <ul id=\"ff_list_new_entrants\" class=\"ff-list\"><\/ul>\n                            <div class=\"ff-add-item\" data-key=\"new_entrants\">\u9805\u76ee\u3092\u8ffd\u52a0<\/div>\n                        <\/div>\n                    <\/div>\n                    \n                    <div class=\"ff-card suppliers\">\n                        <div class=\"ff-card-header\">\n                            <span class=\"ff-card-header-text\">\u58f2\u308a\u624b\u306e\u4ea4\u6e09\u529b<\/span>\n                            <span>\u2190<\/span>\n                        <\/div>\n                        <div class=\"ff-card-body\">\n                            <ul id=\"ff_list_suppliers\" class=\"ff-list\"><\/ul>\n                            <div class=\"ff-add-item\" data-key=\"suppliers\">\u9805\u76ee\u3092\u8ffd\u52a0<\/div>\n                        <\/div>\n                    <\/div>\n                    \n                    <div class=\"ff-card rivalry\">\n                        <div class=\"ff-card-header\">\n                            <span class=\"ff-card-header-text\">\u65e2\u5b58\u7af6\u5408\u306e\u7af6\u4e89<\/span>\n                            <span>\u2694<\/span>\n                        <\/div>\n                        <div class=\"ff-card-body\">\n                            <ul id=\"ff_list_rivalry\" class=\"ff-list\"><\/ul>\n                            <div class=\"ff-add-item\" data-key=\"rivalry\">\u9805\u76ee\u3092\u8ffd\u52a0<\/div>\n                        <\/div>\n                    <\/div>\n                    \n                    <div class=\"ff-card buyers\">\n                        <div class=\"ff-card-header\">\n                            <span class=\"ff-card-header-text\">\u8cb7\u3044\u624b\u306e\u4ea4\u6e09\u529b<\/span>\n                            <span>\u2192<\/span>\n                        <\/div>\n                        <div class=\"ff-card-body\">\n                            <ul id=\"ff_list_buyers\" class=\"ff-list\"><\/ul>\n                            <div class=\"ff-add-item\" data-key=\"buyers\">\u9805\u76ee\u3092\u8ffd\u52a0<\/div>\n                        <\/div>\n                    <\/div>\n                    \n                    <div class=\"ff-card substitutes\">\n                        <div class=\"ff-card-header\">\n                            <span class=\"ff-card-header-text\">\u4ee3\u66ff\u54c1\u306e\u8105\u5a01<\/span>\n                            <span>\u2191<\/span>\n                        <\/div>\n                        <div class=\"ff-card-body\">\n                            <ul id=\"ff_list_substitutes\" class=\"ff-list\"><\/ul>\n                            <div class=\"ff-add-item\" data-key=\"substitutes\">\u9805\u76ee\u3092\u8ffd\u52a0<\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <div class=\"ff-hint-wrapper\">\n                <span id=\"ff_hint_message\" class=\"ff-click-hint\">\ud83d\udca1 \u30de\u30fc\u30af\u3092\u30af\u30ea\u30c3\u30af\uff1a\u8272\u5909\u66f4 \/ \u30c6\u30ad\u30b9\u30c8\u3092\u30af\u30ea\u30c3\u30af\uff1a\u7de8\u96c6 \/ \u9805\u76ee\u306b\u30db\u30d0\u30fc\uff1a\u524a\u9664<\/span>\n            <\/div>\n\n            <div class=\"ff-actions\">\n                <button id=\"ff_btn_dl\" class=\"ff-btn ff-btn-primary\">\u753b\u50cf\u3068\u3057\u3066\u4fdd\u5b58 (PNG)<\/button>\n            <\/div>\n\n            <div class=\"ff-theme-selection\">\n                <div class=\"ff-design-title\">\u30c7\u30b6\u30a4\u30f3<\/div>\n                \n                <div class=\"ff-design-row\">\n                    <div class=\"ff-design-label\">\u30c6\u30fc\u30de\uff1a<\/div>\n                    <div class=\"ff-design-options\">\n                        <label><input type=\"radio\" name=\"ff_theme\" value=\"standard\" checked> \u30d6\u30eb\u30fc<\/label>\n                        <label><input type=\"radio\" name=\"ff_theme\" value=\"pop\"> \u30a4\u30a8\u30ed\u30fc<\/label>\n                        <label><input type=\"radio\" name=\"ff_theme\" value=\"mono\"> \u30e2\u30ce\u30af\u30ed<\/label>\n                    <\/div>\n                <\/div>\n                \n                <div class=\"ff-design-row\">\n                    <div class=\"ff-design-label\">\u30d5\u30a9\u30f3\u30c8\u30b5\u30a4\u30ba\uff1a<\/div>\n                    <div class=\"ff-slider-container\">\n                        <input type=\"range\" id=\"ff_font_slider\" class=\"ff-font-slider\" min=\"10\" max=\"14\" value=\"14\" step=\"1\">\n                        <span id=\"ff_font_size_value\" class=\"ff-font-size-value\">14px<\/span>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n\n    <\/div>\n\n    <script>\n    (function(){\n        \/\/ Config & Data with industry presets\n        const INDUSTRY_DATA = {\n            \"regional_convenience\": {\n                title: \"\u5730\u65b9\u5bc6\u7740\u30b3\u30f3\u30d3\u30cb\u30c1\u30a7\u30fc\u30f3\uff0820\u5e97\u8217\u898f\u6a21\uff09\",\n                \"new_entrants\": \"-\u5927\u624b\u30c1\u30a7\u30fc\u30f3\uff08\u30bb\u30d6\u30f3\u30fb\u30d5\u30a1\u30df\u30de\uff09\u306e\u5730\u65b9\u51fa\u5e97\u304c\u52a0\u901f\\n-\u30d5\u30e9\u30f3\u30c1\u30e3\u30a4\u30ba\u52a0\u76df\u3067\u5927\u624b\u30d6\u30e9\u30f3\u30c9\u306b\u8ee2\u63db\u3059\u308b\u540c\u696d\u8005\\n+\u5730\u5143\u30d6\u30e9\u30f3\u30c9\u3078\u306e\u4fe1\u983c\u3068\u56fa\u5b9a\u5ba2\u306f\u53c2\u5165\u969c\u58c1\",\n                \"suppliers\": \"+\u5730\u5143\u751f\u7523\u8005\u3068\u306e\u76f4\u63a5\u53d6\u5f15\u3067\u4ed5\u5165\u308c\u30b3\u30b9\u30c8\u524a\u6e1b\\n-\u5927\u624b\u3068\u306e\u4fa1\u683c\u4ea4\u6e09\u529b\u306e\u5dee\u3067\u4ed5\u5165\u308c\u4fa1\u683c\u304c\u4e0d\u5229\\n+\u5730\u57dfPB\u5546\u54c1\u306e\u72ec\u81ea\u958b\u767a\u3067\u5dee\u5225\u5316\",\n                \"rivalry\": \"-\u5927\u624b\u30c1\u30a7\u30fc\u30f3\u306e24\u6642\u9593\u55b6\u696d\u30fb\u8c4a\u5bcc\u306a\u54c1\u63c3\u3048\u3068\u306e\u7af6\u4e89\\n-\u540c\u898f\u6a21\u306e\u5730\u57df\u30c1\u30a7\u30fc\u30f3\u540c\u58eb\u306e\u51fa\u5e97\u7af6\u4e89\\n+\u5730\u57df\u30a4\u30d9\u30f3\u30c8\u5354\u8cdb\u306a\u3069\u5730\u5143\u5bc6\u7740\u6226\u7565\u3067\u5dee\u5225\u5316\",\n                \"buyers\": \"+\u9ad8\u9f62\u8005\u30fb\u5e38\u9023\u5ba2\u306f\u5e97\u54e1\u3068\u306e\u95a2\u4fc2\u6027\u3092\u91cd\u8996\\n-\u82e5\u5e74\u5c64\u306f\u5927\u624b\u30a2\u30d7\u30ea\u30fb\u30dd\u30a4\u30f3\u30c8\u7279\u5178\u306b\u6d41\u308c\u308b\\n+\u914d\u9054\u30b5\u30fc\u30d3\u30b9\u3067\u9ad8\u9f62\u8005\u306e\u56fa\u5b9a\u5ba2\u5316\",\n                \"substitutes\": \"-\u30c9\u30e9\u30c3\u30b0\u30b9\u30c8\u30a2\uff08\u30a6\u30a8\u30eb\u30b7\u30a2\u7b49\uff09\u306e\u98df\u54c1\u5f37\u5316\\n-\u30cd\u30c3\u30c8\u30b9\u30fc\u30d1\u30fc\u30fbAmazon\u306e\u5f53\u65e5\u914d\u9054\u30a8\u30ea\u30a2\u62e1\u5927\\n+\u5f92\u6b69\u570f\u5185\u306e\u5229\u4fbf\u6027\u306f\u4ee3\u66ff\u56f0\u96e3\"\n            },\n            \"tokyo_select_shop\": {\n                title: \"\u90fd\u5185\u30bb\u30ec\u30af\u30c8\u30b7\u30e7\u30c3\u30d7\uff08\u5b9f\u5e97\u82173\u5e97\u8217+EC\uff09\",\n                \"new_entrants\": \"-Instagram\u767a\u306eD2C\u30d6\u30e9\u30f3\u30c9\u304c\u6b21\u3005\u53c2\u5165\\n-\u5927\u624b\u30bb\u30ec\u30af\u30c8\u30b7\u30e7\u30c3\u30d7\u306e\u65b0\u696d\u614b\u51fa\u5e97\\n+\u72ec\u81ea\u306e\u4ed5\u5165\u308c\u30eb\u30fc\u30c8\u3068\u30d6\u30e9\u30f3\u30c9\u4fe1\u983c\u306f\u53c2\u5165\u969c\u58c1\",\n                \"suppliers\": \"+\u6d77\u5916\u30d6\u30e9\u30f3\u30c9\u3068\u306e\u76f4\u63a5\u5951\u7d04\u3067\u72ec\u5360\u8ca9\u58f2\u6a29\\n-\u4eba\u6c17\u30d6\u30e9\u30f3\u30c9\u306f\u5927\u624b\u306b\u512a\u5148\u4f9b\u7d66\\n+\u65b0\u8208\u30c7\u30b6\u30a4\u30ca\u30fc\u306e\u767a\u6398\u3067\u72ec\u81ea\u6027\u78ba\u4fdd\",\n                \"rivalry\": \"-BEAMS\u30fbUNITED ARROWS\u306a\u3069\u5927\u624b\u3068\u306e\u7af6\u4e89\\n-\u540c\u30a8\u30ea\u30a2\u306e\u7af6\u5408\u5e97\u3068\u306e\u9867\u5ba2\u53d6\u308a\u5408\u3044\\n+\u30b9\u30bf\u30a4\u30ea\u30f3\u30b0\u63d0\u6848\u529b\u3068SNS\u767a\u4fe1\u3067\u5dee\u5225\u5316\",\n                \"buyers\": \"+\u56fa\u5b9a\u30d5\u30a1\u30f3\u306f\u5e97\u54e1\u306e\u63a5\u5ba2\u30fb\u63d0\u6848\u3092\u91cd\u8996\\n-\u4fa1\u683c\u6bd4\u8f03\u3055\u308c\u3084\u3059\u304f\u3001EC\u30e2\u30fc\u30eb\u306b\u6d41\u308c\u308b\\n+\u4f1a\u54e1\u9650\u5b9a\u30a4\u30d9\u30f3\u30c8\u3067\u30ed\u30a4\u30e4\u30ea\u30c6\u30a3\u5411\u4e0a\",\n                \"substitutes\": \"-ZOZOTOWN\u30fb\u697d\u5929\u3067\u306e\u8cfc\u5165\\n-\u30e1\u30eb\u30ab\u30ea\u30fb\u30f4\u30a3\u30f3\u30c6\u30fc\u30b8\u30b7\u30e7\u30c3\u30d7\\n+\u8a66\u7740\u4f53\u9a13\u3068\u5373\u65e5\u6301\u3061\u5e30\u308a\u306e\u4fa1\u5024\"\n            },\n            \"auto_parts_maker\": {\n                title: \"\u4e2d\u5805\u81ea\u52d5\u8eca\u90e8\u54c1\u30e1\u30fc\u30ab\u30fc\uff08\u5f93\u696d\u54e1500\u540d\uff09\",\n                \"new_entrants\": \"+\u8a2d\u5099\u6295\u8cc7\u30fb\u54c1\u8cea\u8a8d\u8a3c\u306e\u30cf\u30fc\u30c9\u30eb\u304c\u9ad8\u3044\\n+\u65e2\u5b58\u30e1\u30fc\u30ab\u30fc\u3068\u306e\u9577\u671f\u53d6\u5f15\u95a2\u4fc2\u304c\u53c2\u5165\u969c\u58c1\\n-EV\u5316\u3067\u7570\u696d\u7a2e\uff08\u96fb\u6a5f\u30e1\u30fc\u30ab\u30fc\u7b49\uff09\u304c\u53c2\u5165\",\n                \"suppliers\": \"-\u4e3b\u8981\u9244\u92fc\u30e1\u30fc\u30ab\u30fc\u306e\u4fa1\u683c\u4ea4\u6e09\u529b\u304c\u5f37\u3044\\n+\u8907\u6570\u306e\u6750\u6599\u8abf\u9054\u5148\u3092\u78ba\u4fdd\u6e08\u307f\\n-\u534a\u5c0e\u4f53\u4e0d\u8db3\u306b\u3088\u308b\u4f9b\u7d66\u5236\u7d04\",\n                \"rivalry\": \"-\u5927\u624bTier1\u30b5\u30d7\u30e9\u30a4\u30e4\u30fc\u3068\u306e\u4fa1\u683c\u7af6\u4e89\\n-\u4e2d\u56fd\u30fb\u6771\u5357\u30a2\u30b8\u30a2\u30e1\u30fc\u30ab\u30fc\u306e\u4f4e\u4fa1\u683c\u653b\u52e2\\n+\u7279\u5b9a\u6280\u8853\uff08\u7cbe\u5bc6\u52a0\u5de5\u7b49\uff09\u3067\u306e\u5dee\u5225\u5316\",\n                \"buyers\": \"-\u5b8c\u6210\u8eca\u30e1\u30fc\u30ab\u30fc\u306e\u4fa1\u683c\u5727\u529b\u304c\u5f37\u3044\\n+\u9577\u671f\u5951\u7d04\u3067\u5b89\u5b9a\u53d7\u6ce8\u3092\u78ba\u4fdd\\n-EV\u5316\u3067\u65e2\u5b58\u90e8\u54c1\u306e\u9700\u8981\u6e1b\u5c11\",\n                \"substitutes\": \"-EV\u5316\u306b\u3088\u308b\u5185\u71c3\u6a5f\u95a2\u90e8\u54c1\u306e\u4e0d\u8981\u5316\\n-\u30e2\u30b8\u30e5\u30fc\u30eb\u5316\u306b\u3088\u308b\u90e8\u54c1\u70b9\u6570\u524a\u6e1b\\n+\u96fb\u52d5\u5316\u90e8\u54c1\u3078\u306e\u6280\u8853\u8ee2\u63db\u30c1\u30e3\u30f3\u30b9\"\n            },\n            \"b2b_saas_startup\": {\n                title: \"\u4e2d\u5c0fBtoB SaaS\u4f01\u696d\uff08\u5f93\u696d\u54e130\u540d\uff09\",\n                \"new_entrants\": \"-\u958b\u767a\u30b3\u30b9\u30c8\u4f4e\u4e0b\u3067\u65b0\u898f\u53c2\u5165\u304c\u5bb9\u6613\\n-\u5927\u624b\u4f01\u696d\u306e\u65b0\u898f\u53c2\u5165\uff08kintone\u3001Sansan\u7b49\uff09\\n+\u65e2\u5b58\u9867\u5ba2\u306e\u30c7\u30fc\u30bf\u84c4\u7a4d\u3068\u30b9\u30a4\u30c3\u30c1\u30f3\u30b0\u30b3\u30b9\u30c8\u304c\u969c\u58c1\",\n                \"suppliers\": \"+AWS\u306a\u3069\u30af\u30e9\u30a6\u30c9\u306f\u9078\u629e\u80a2\u304c\u8c4a\u5bcc\\n-\u30a8\u30f3\u30b8\u30cb\u30a2\u63a1\u7528\u30b3\u30b9\u30c8\u306e\u9ad8\u9a30\\n+\u30ea\u30e2\u30fc\u30c8\u30ef\u30fc\u30af\u3067\u5730\u65b9\u4eba\u6750\u6d3b\u7528\",\n                \"rivalry\": \"-freee\u30fb\u30de\u30cd\u30fc\u30d5\u30a9\u30ef\u30fc\u30c9\u306a\u3069\u5927\u624b\u3068\u306e\u6a5f\u80fd\u7af6\u4e89\\n-\u540c\u898f\u6a21\u30b9\u30bf\u30fc\u30c8\u30a2\u30c3\u30d7\u3068\u306e\u9867\u5ba2\u7372\u5f97\u7af6\u4e89\\n+\u30cb\u30c3\u30c1\u696d\u754c\u7279\u5316\u3067\u5dee\u5225\u5316\",\n                \"buyers\": \"+\u4e2d\u5c0f\u4f01\u696d\u306f\u5c0e\u5165\u30b3\u30b9\u30c8\u306b\u654f\u611f\u3067\u4fa1\u683c\u8a2d\u5b9a\u306b\u4f59\u5730\\n-\u5927\u4f01\u696d\u306f\u8907\u6570\u30b5\u30fc\u30d3\u30b9\u6bd4\u8f03\u30fbPoC\u8981\u6c42\\n+\u65e2\u5b58\u9867\u5ba2\u306e\u7d99\u7d9a\u7387\u5411\u4e0a\u304c\u53ce\u76ca\u306e\u9375\",\n                \"substitutes\": \"-Excel\u30fbGoogle\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u3067\u306e\u904b\u7528\u7d99\u7d9a\\n-Notion\u306a\u3069\u6c4e\u7528\u30c4\u30fc\u30eb\u3067\u306e\u4ee3\u66ff\\n+\u696d\u754c\u7279\u5316\u6a5f\u80fd\u3067\u4ee3\u66ff\u56f0\u96e3\u6027\u3092\u78ba\u4fdd\"\n            }\n        };\n\n        const App = {\n            data: {\n                new_entrants: [],\n                suppliers: [],\n                rivalry: [],\n                buyers: [],\n                substitutes: []\n            },\n\n            init() {\n                this.cacheDOM();\n                this.loadDefaultData();\n                this.bindEvents();\n                this.loadExternalLib();\n                this.renderAll();\n                this.showGuideIfFirstTime();\n            },\n\n            cacheDOM() {\n                this.dom = {\n                    title: document.getElementById('ff_title'),\n                    preset: document.getElementById('ff_preset_select'),\n                    lists: {\n                        new_entrants: document.getElementById('ff_list_new_entrants'),\n                        suppliers: document.getElementById('ff_list_suppliers'),\n                        rivalry: document.getElementById('ff_list_rivalry'),\n                        buyers: document.getElementById('ff_list_buyers'),\n                        substitutes: document.getElementById('ff_list_substitutes'),\n                    },\n                    previewTitle: document.getElementById('ff_preview_title'),\n                    previewContainer: document.getElementById('ff_capture_target'),\n                    themes: document.getElementsByName('ff_theme'),\n                    fontSlider: document.getElementById('ff_font_slider'),\n                    fontSizeValue: document.getElementById('ff_font_size_value'),\n                    btnDl: document.getElementById('ff_btn_dl'),\n                    loading: document.getElementById('ff_loading'),\n                    sizeModal: document.getElementById('ff_size_modal'),\n                    sizeConfirm: document.getElementById('ff_size_confirm')\n                };\n            },\n\n            loadDefaultData() {\n                \/\/ Load regional convenience store data by default\n                const preset = INDUSTRY_DATA['regional_convenience'];\n                this.data.new_entrants = this.parseData(preset.new_entrants);\n                this.data.suppliers = this.parseData(preset.suppliers);\n                this.data.rivalry = this.parseData(preset.rivalry);\n                this.data.buyers = this.parseData(preset.buyers);\n                this.data.substitutes = this.parseData(preset.substitutes);\n                \n                \/\/ Set title\n                this.dom.title.value = preset.title;\n                this.dom.previewTitle.textContent = preset.title;\n            },\n\n            parseData(text) {\n                return text.split('\\n').filter(line => line.trim()).map(line => {\n                    let type = 'normal';\n                    let content = line;\n                    \n                    if (line.startsWith('+')) {\n                        type = 'high';  \/\/ High\/Opportunity (Blue) - \u969c\u58c1\u304c\u9ad8\u3044=\u6a5f\u4f1a\n                        content = line.substring(1);\n                    } else if (line.startsWith('-')) {\n                        type = 'low';   \/\/ Low\/Threat (Red) - \u969c\u58c1\u304c\u4f4e\u3044=\u8105\u5a01\n                        content = line.substring(1);\n                    }\n                    \n                    return { type, content };\n                });\n            },\n\n            bindEvents() {\n                const d = this.dom;\n                \n                \/\/ Title Input\n                d.title.addEventListener('input', () => {\n                    d.previewTitle.textContent = d.title.value || '5Forces\u5206\u6790';\n                });\n\n                \/\/ Preset\n                d.preset.addEventListener('change', (e) => this.loadPreset(e.target.value));\n\n                \/\/ Themes\n                d.themes.forEach(r => r.addEventListener('change', (e) => {\n                    d.previewContainer.className = `ff-preview-container theme-${e.target.value}`;\n                }));\n\n                \/\/ Font Size Slider\n                d.fontSlider.addEventListener('input', (e) => {\n                    const size = e.target.value;\n                    this.changeFontSize(size);\n                });\n\n                \/\/ Download Button\n                d.btnDl.addEventListener('click', () => this.showSizeModal());\n\n                \/\/ Size Modal Options\n                document.querySelectorAll('.ff-size-option').forEach(option => {\n                    option.addEventListener('click', (e) => {\n                        document.querySelectorAll('.ff-size-option').forEach(opt => \n                            opt.classList.remove('selected')\n                        );\n                        e.currentTarget.classList.add('selected');\n                    });\n                });\n\n                \/\/ Size Modal Confirm\n                d.sizeConfirm.addEventListener('click', () => {\n                    const selectedOption = document.querySelector('.ff-size-option.selected');\n                    const size = selectedOption ? selectedOption.getAttribute('data-size') : '1080';\n                    d.sizeModal.classList.remove('active');\n                    this.downloadImage(size);\n                });\n\n                \/\/ Add Item Buttons\n                document.querySelectorAll('.ff-add-item').forEach(btn => {\n                    btn.addEventListener('click', (e) => {\n                        const key = e.target.getAttribute('data-key');\n                        this.addItem(key);\n                    });\n                });\n\n                \/\/ Hint Message Click to Show Guide\n                const hintMessage = document.getElementById('ff_hint_message');\n                if (hintMessage) {\n                    hintMessage.addEventListener('click', () => {\n                        this.showGuide();\n                    });\n                }\n            },\n\n            renderAll() {\n                Object.keys(this.data).forEach(k => this.renderList(k));\n            },\n\n            renderList(key) {\n                const listEl = this.dom.lists[key];\n                const items = this.data[key];\n                \n                listEl.innerHTML = '';\n\n                items.forEach((item, index) => {\n                    const li = document.createElement('li');\n                    const { type, content } = item;\n\n                    \/\/ Determine icon\n                    let icon = '\u2022';\n                    if (type === 'high') {\n                        icon = '\u25b2';\n                        li.className = 'type-high';\n                    } else if (type === 'low') {\n                        icon = '\u25bc';\n                        li.className = 'type-low';\n                    }\n\n                    \/\/ Create icon span (left side - for color change)\n                    const iconSpan = document.createElement('span');\n                    iconSpan.className = 'ff-icon';\n                    iconSpan.textContent = icon;\n                    iconSpan.addEventListener('click', (e) => {\n                        e.stopPropagation();\n                        this.toggleItemType(key, index);\n                    });\n\n                    \/\/ Create text span (middle - for editing)\n                    const textSpan = document.createElement('span');\n                    textSpan.className = 'ff-text';\n                    textSpan.textContent = content;\n                    textSpan.addEventListener('click', (e) => {\n                        e.stopPropagation();\n                        this.enableEdit(textSpan, key, index);\n                    });\n\n                    \/\/ Create delete button (right side)\n                    const deleteSpan = document.createElement('span');\n                    deleteSpan.className = 'ff-delete';\n                    deleteSpan.textContent = '\u00d7';\n                    deleteSpan.addEventListener('click', (e) => {\n                        e.stopPropagation();\n                        this.deleteItem(key, index);\n                    });\n\n                    li.addEventListener('click', (e) => {\n                        if (e.target === textSpan || e.target === deleteSpan) return;\n                        this.toggleItemType(key, index);\n                    });\n\n                    li.appendChild(iconSpan);\n                    li.appendChild(textSpan);\n                    li.appendChild(deleteSpan);\n                    listEl.appendChild(li);\n                });\n            },\n\n            toggleItemType(key, index) {\n                const item = this.data[key][index];\n                \n                \/\/ Rotation: Normal -> High -> Low -> Normal\n                if (item.type === 'normal') {\n                    item.type = 'high';\n                } else if (item.type === 'high') {\n                    item.type = 'low';\n                } else {\n                    item.type = 'normal';\n                }\n                \n                this.renderList(key);\n            },\n\n            addItem(key) {\n                this.data[key].push({ type: 'normal', content: '\u65b0\u3057\u3044\u9805\u76ee' });\n                this.renderList(key);\n                \n                \/\/ Auto-focus the new item for editing\n                setTimeout(() => {\n                    const listEl = this.dom.lists[key];\n                    const lastItem = listEl.lastElementChild;\n                    if (lastItem) {\n                        const textSpan = lastItem.querySelector('.ff-text');\n                        if (textSpan) {\n                            this.enableEdit(textSpan, key, this.data[key].length - 1);\n                        }\n                    }\n                }, 10);\n            },\n\n            deleteItem(key, index) {\n                this.data[key].splice(index, 1);\n                this.renderList(key);\n            },\n\n            loadPreset(key) {\n                if (!key || !INDUSTRY_DATA[key]) return;\n                if (!confirm('\u5165\u529b\u5185\u5bb9\u304c\u4e0a\u66f8\u304d\u3055\u308c\u307e\u3059\u3002\u3088\u308d\u3057\u3044\u3067\u3059\u304b\uff1f')) {\n                    this.dom.preset.value = \"\";\n                    return;\n                }\n                const preset = INDUSTRY_DATA[key];\n                this.data.new_entrants = this.parseData(preset.new_entrants);\n                this.data.suppliers = this.parseData(preset.suppliers);\n                this.data.rivalry = this.parseData(preset.rivalry);\n                this.data.buyers = this.parseData(preset.buyers);\n                this.data.substitutes = this.parseData(preset.substitutes);\n                \n                \/\/ Update title\n                this.dom.title.value = preset.title;\n                this.dom.previewTitle.textContent = preset.title;\n                \n                this.renderAll();\n            },\n\n            changeFontSize(size) {\n                this.dom.fontSizeValue.textContent = `${size}px`;\n                \n                const allLists = document.querySelectorAll('.ff-list');\n                allLists.forEach(list => {\n                    list.style.fontSize = `${size}px`;\n                });\n                \n                const allTextSpans = document.querySelectorAll('.ff-text');\n                allTextSpans.forEach(span => {\n                    span.style.fontSize = `${size}px`;\n                });\n            },\n\n            enableEdit(textSpan, key, index) {\n                if (textSpan.contentEditable === 'true') return;\n                \n                const currentText = textSpan.textContent;\n                textSpan.contentEditable = true;\n                textSpan.focus();\n\n                const range = document.createRange();\n                range.selectNodeContents(textSpan);\n                const selection = window.getSelection();\n                selection.removeAllRanges();\n                selection.addRange(range);\n\n                const saveEdit = () => {\n                    const newText = textSpan.textContent.trim();\n                    if (newText) {\n                        this.updateItemText(key, index, newText);\n                    } else {\n                        textSpan.textContent = currentText;\n                    }\n                    this.disableEdit(textSpan);\n                };\n\n                const blurHandler = () => saveEdit();\n                const keyHandler = (e) => {\n                    if (e.key === 'Enter') {\n                        e.preventDefault();\n                        textSpan.blur();\n                    }\n                    if (e.key === 'Escape') {\n                        textSpan.textContent = currentText;\n                        this.disableEdit(textSpan);\n                    }\n                };\n\n                textSpan.addEventListener('blur', blurHandler, { once: true });\n                textSpan.addEventListener('keydown', keyHandler);\n                \n                textSpan._keyHandler = keyHandler;\n            },\n\n            disableEdit(textSpan) {\n                textSpan.contentEditable = false;\n                if (textSpan._keyHandler) {\n                    textSpan.removeEventListener('keydown', textSpan._keyHandler);\n                    delete textSpan._keyHandler;\n                }\n            },\n\n            updateItemText(key, index, newText) {\n                this.data[key][index].content = newText;\n                this.renderList(key);\n            },\n\n            loadExternalLib() {\n                if(typeof html2canvas === 'undefined') {\n                    const s = document.createElement('script');\n                    s.src = 'https:\/\/media-api.qcdgv19414.rakkoserver.net\/lib\/html2canvas.min.js';\n                    document.head.appendChild(s);\n                }\n            },\n\n            showGuideIfFirstTime() {\n                const guideShown = localStorage.getItem('ff_guide_shown');\n                if (!guideShown) {\n                    setTimeout(() => {\n                        this.showGuide();\n                    }, 500);\n                }\n            },\n\n            showGuide() {\n                document.getElementById('ff_guide_overlay').classList.add('active');\n            },\n\n            showSizeModal() {\n                const currentWidth = this.dom.previewContainer.offsetWidth;\n                \n                \/\/ If current width is already 1080px or more, download directly at current size\n                if (currentWidth >= 1080) {\n                    this.downloadImage('current');\n                    return;\n                }\n                \n                \/\/ Otherwise, show size selection modal\n                this.dom.sizeModal.classList.add('active');\n            },\n\n            downloadImage(size = '1080') {\n                if(typeof html2canvas === 'undefined') {\n                    alert('\u753b\u50cf\u751f\u6210\u6a5f\u80fd\u3092\u6e96\u5099\u4e2d\u3067\u3059\u3002\u3082\u3046\u4e00\u5ea6\u62bc\u3057\u3066\u304f\u3060\u3055\u3044\u3002');\n                    return;\n                }\n                \n                this.dom.loading.classList.add('active');\n                const target = document.getElementById('ff_capture_target');\n                const container = target.parentElement;\n                \n                target.classList.add('ff-capturing');\n\n                \/\/ Store original styles\n                const originalWidth = container.style.width;\n                const originalMaxWidth = container.style.maxWidth;\n                const originalMargin = container.style.margin;\n                \n                \/\/ Apply 1080px width if requested\n                if (size === '1080') {\n                    container.style.width = '1080px';\n                    container.style.maxWidth = '1080px';\n                    container.style.margin = '0 auto';\n                    target.classList.add('force-desktop-layout');\n                }\n\n                \/\/ Wait for layout to settle\n                setTimeout(() => {\n                    html2canvas(target, {\n                        scale: 2,\n                        backgroundColor: \"#ffffff\",\n                        useCORS: true,\n                        width: size === '1080' ? 1080 : target.offsetWidth\n                    }).then(canvas => {\n                        const a = document.createElement('a');\n                        a.download = `5Forces_${Date.now()}.png`;\n                        a.href = canvas.toDataURL('image\/png');\n                        a.click();\n                        \n                        \/\/ Restore original styles\n                        container.style.width = originalWidth;\n                        container.style.maxWidth = originalMaxWidth;\n                        container.style.margin = originalMargin;\n                        target.classList.remove('force-desktop-layout');\n                        \n                        target.classList.remove('ff-capturing');\n                        this.dom.loading.classList.remove('active');\n                    }).catch(e => {\n                        console.error(e);\n                        alert('\u753b\u50cf\u4fdd\u5b58\u306b\u5931\u6557\u3057\u307e\u3057\u305f');\n                        \n                        \/\/ Restore original styles\n                        container.style.width = originalWidth;\n                        container.style.maxWidth = originalMaxWidth;\n                        container.style.margin = originalMargin;\n                        target.classList.remove('force-desktop-layout');\n                        \n                        target.classList.remove('ff-capturing');\n                        this.dom.loading.classList.remove('active');\n                    });\n                }, 100);\n            }\n        };\n\n        if(document.readyState === 'loading') {\n            document.addEventListener('DOMContentLoaded', () => App.init());\n        } else {\n            App.init();\n        }\n    })();\n    <\/script>\n<\/div>\n\n\n\n<style>\n  .rs-related-tools {\n    background: transparent;\n    color: #000;\n    padding: 10px 0;\n    font-size: 14px;\n    line-height: 1.6;\n    display: flex;\n    flex-wrap: wrap;\n    gap: 8px 12px;\n    align-items: center;\n    margin: 16px 0;\n  }\n  .rs-related-tools__label {\n    border: 1px solid #000;\n    padding: 2px 6px;\n    border-radius: 4px;\n    font-weight: 600;\n    white-space: nowrap;\n  }\n  .rs-related-tools a {\n    color: #0066cc;\n    text-decoration: none;\n    white-space: nowrap;\n  }\n  .rs-related-tools a:hover,\n  .rs-related-tools a:focus {\n    text-decoration: underline;\n  }\n<\/style>\n<div class=\"rs-related-tools\">\n  <span class=\"rs-related-tools__label\">\u95a2\u9023\u30c4\u30fc\u30eb<\/span>\n  <a href=\"https:\/\/rakkokeyword.com\/techo\/tool-pest-analysis-maker\/\">PEST\u5206\u6790<\/a>\n  <a href=\"https:\/\/rakkokeyword.com\/techo\/tool-stp-analysis-maker\/\">STP\u5206\u6790<\/a>\n  <a href=\"https:\/\/rakkokeyword.com\/techo\/tool-4p-analysis-maker\/\">4P\u5206\u6790<\/a>\n<\/div>\n\n\n\n<p>\u3053\u306e\u30c4\u30fc\u30eb\u306f\u3001\u30d3\u30b8\u30cd\u30b9\u306e\u7af6\u5408\u74b0\u5883\u3092\u5206\u6790\u3059\u308b\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u300c5Forces\u5206\u6790\uff08\u30d5\u30a1\u30a4\u30d6\u30d5\u30a9\u30fc\u30b9\u5206\u6790\uff09\u300d\u306e\u56f3\u8868\u3092\u3001\u30d6\u30e9\u30a6\u30b6\u4e0a\u3067\u8ab0\u3067\u3082\u7c21\u5358\u306b\u4f5c\u6210\u30fb\u4fdd\u5b58\u3067\u304d\u308b\u7121\u6599\u306eWEB\u30c4\u30fc\u30eb\u3067\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-0\">\u3053\u306e\u30c4\u30fc\u30eb\u3067\u3067\u304d\u308b\u3053\u3068<\/h2>\n\n\n\n<p>\u30d1\u30ef\u30fc\u30dd\u30a4\u30f3\u30c8\u3067\u77e2\u5370\u3084\u30dc\u30c3\u30af\u30b9\u3092\u914d\u7f6e\u3059\u308b\u9762\u5012\u306a\u4f5c\u696d\u306f\u4e0d\u8981\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u6a5f\u80fd\u3067\u3001\u672c\u8cea\u7684\u306a\u300c\u5206\u6790\u300d\u306b\u96c6\u4e2d\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>5\u3064\u306e\u8981\u7d20\u3092\u76f4\u611f\u7684\u306b\u6574\u7406<\/strong> \u753b\u9762\u4e2d\u592e\u306e\u300c\u7af6\u5408\u300d\u3092\u4e2d\u5fc3\u306b\u3001\u4e0a\u4e0b\u5de6\u53f3\u306e4\u3064\u306e\u8981\u56e0\uff08\u65b0\u898f\u53c2\u5165\u30fb\u4ee3\u66ff\u54c1\u30fb\u58f2\u308a\u624b\u30fb\u8cb7\u3044\u624b\uff09\u3092\u30d0\u30e9\u30f3\u30b9\u3088\u304f\u914d\u7f6e\u3057\u305f\u30ec\u30a4\u30a2\u30a6\u30c8\u3067\u3001\u5165\u529b\u5185\u5bb9\u3092\u5373\u5ea7\u306b\u56f3\u8868\u5316\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u696d\u754c\u5225\u306e\u4e8b\u4f8b\u3092\u30ef\u30f3\u30af\u30ea\u30c3\u30af\u3067\u53cd\u6620<\/strong> 5Forces\u306f\u300c\u4f55\u3092\u66f8\u3051\u3070\u3044\u3044\u304b\u96e3\u3057\u3044\u300d\u3068\u8a00\u308f\u308c\u304c\u3061\u3067\u3059\u3002\u305d\u3053\u3067\u300cB2B SaaS\u300d\u300c\u98f2\u98df\u5e97\uff08\u30ab\u30d5\u30a7\uff09\u300d\u300c\u88fd\u9020\u696d\u300d\u306a\u3069\u306e\u5206\u6790\u4e8b\u4f8b\uff08\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\uff09\u3092\u7528\u610f\u3057\u307e\u3057\u305f\u3002\u30d7\u30ea\u30bb\u30c3\u30c8\u3092\u9078\u3076\u3060\u3051\u3067\u3001\u5165\u529b\u306e\u30d2\u30f3\u30c8\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u300c\u8105\u5a01\u300d\u306e\u30ec\u30d9\u30eb\u3092\u8272\u5206\u3051<\/strong> \u5404\u8981\u56e0\u304c\u81ea\u793e\u306b\u3068\u3063\u3066\u300c\u8105\u5a01\uff08\u30d4\u30f3\u30c1\uff09\u300d\u306a\u306e\u304b\u300c\u6a5f\u4f1a\uff08\u30c1\u30e3\u30f3\u30b9\uff09\u300d\u306a\u306e\u304b\u3092\u3001\u30ef\u30f3\u30af\u30ea\u30c3\u30af\u3067\u8272\u5206\u3051\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u753b\u50cf\u30c7\u30fc\u30bf\u3068\u3057\u3066\u4fdd\u5b58<\/strong> \u4f5c\u6210\u3057\u305f\u56f3\u8868\u306f\u300c\u753b\u50cf\u3068\u3057\u3066\u4fdd\u5b58\u300d\u30dc\u30bf\u30f3\u3067\u3001\u9ad8\u89e3\u50cf\u5ea6\u306ePNG\u753b\u50cf\u3068\u3057\u3066\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u53ef\u80fd\u3002\u305d\u306e\u307e\u307e\u4f01\u753b\u66f8\u3084\u30d7\u30ec\u30bc\u30f3\u8cc7\u6599\u306b\u8cbc\u308a\u4ed8\u3051\u3089\u308c\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-1\">\u30c4\u30fc\u30eb\u306e\u4f7f\u3044\u65b9\u30ac\u30a4\u30c9<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-2\">\u57fa\u672c\u7684\u306a\u5165\u529b\u3068\u7de8\u96c6<\/h3>\n\n\n\n<p>\u753b\u9762\u4e0a\u306e5\u3064\u306e\u30dc\u30c3\u30af\u30b9\u5185\u306e\u30c6\u30ad\u30b9\u30c8\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068\u7de8\u96c6\u30e2\u30fc\u30c9\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u9805\u76ee\u306e\u8ffd\u52a0:<\/strong> \u5404\u30dc\u30c3\u30af\u30b9\u4e0b\u90e8\u306e\u300c\uff0b\u9805\u76ee\u3092\u8ffd\u52a0\u300d\u3067\u884c\u3092\u5897\u3084\u305b\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u9805\u76ee\u306e\u524a\u9664:<\/strong> \u30ab\u30fc\u30bd\u30eb\u3092\u5408\u308f\u305b\u308b\uff08\u30b9\u30de\u30db\u306f\u30bf\u30c3\u30d7\uff09\u3068\u51fa\u308b\u300c\u00d7\u300d\u30dc\u30bf\u30f3\u3067\u524a\u9664\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-3\">\u8105\u5a01\u30ec\u30d9\u30eb\u306e\u8272\u5206\u3051\u6a5f\u80fd\uff08\u91cd\u8981\uff09<\/h3>\n\n\n\n<p>5Forces\u5206\u6790\u3067\u306f\u3001\u300c\u305d\u306e\u529b\u304c\u5f37\u3044\u304b\u5f31\u3044\u304b\u300d\u3092\u5224\u65ad\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002\u9805\u76ee\u306e\u5de6\u5074\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u8272\u3092\u4f7f\u3044\u5206\u3051\u308b\u3068\u3001\u4e00\u76ee\u3067\u72b6\u6cc1\u304c\u308f\u304b\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u8d64\u8272\uff08\u25bc\uff09\uff1a\u8105\u5a01\u304c\u9ad8\u3044<\/strong> \uff08\u4f8b\uff1a\u7af6\u5408\u304c\u6fc0\u3057\u3044\u3001\u9867\u5ba2\u306e\u5024\u4e0b\u3052\u8981\u6c42\u304c\u5f37\u3044\u3001\u5f37\u529b\u306a\u4ee3\u66ff\u54c1\u304c\u3042\u308b\uff09\u2192 <strong>\u81ea\u793e\u306e\u5229\u76ca\u3092\u5727\u8feb\u3059\u308b\u8981\u56e0<\/strong><\/li>\n\n\n\n<li><strong>\u9752\u8272\uff08\u25b2\uff09\uff1a\u8105\u5a01\u304c\u4f4e\u3044 \/ \u6a5f\u4f1a<\/strong> \uff08\u4f8b\uff1a\u53c2\u5165\u969c\u58c1\u304c\u9ad8\u304f\u30e9\u30a4\u30d0\u30eb\u304c\u5897\u3048\u306b\u304f\u3044\u3001\u30b9\u30a4\u30c3\u30c1\u30f3\u30b0\u30b3\u30b9\u30c8\u304c\u9ad8\u304f\u9867\u5ba2\u304c\u96e2\u308c\u306b\u304f\u3044\uff09\u2192 <strong>\u81ea\u793e\u306e\u5229\u76ca\u3092\u5b88\u308a\u3084\u3059\u3044\u8981\u56e0<\/strong><\/li>\n\n\n\n<li><strong>\u9ed2\u8272\uff08\u30fb\uff09\uff1a\u4e2d\u7acb<\/strong> \u4e8b\u5b9f\u306e\u307f\u3092\u8a18\u8f09\u3059\u308b\u5834\u5408\u3002<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-4\">\u30c7\u30b6\u30a4\u30f3\u306e\u8abf\u6574<\/h3>\n\n\n\n<p>\u753b\u9762\u4e0b\u90e8\u306e\u30c7\u30b6\u30a4\u30f3\u8a2d\u5b9a\u3067\u300c\u30d6\u30eb\u30fc\u300d\u300c\u30a4\u30a8\u30ed\u30fc\u300d\u300c\u30e2\u30ce\u30af\u30ed\u300d\u306e\u5207\u308a\u66ff\u3048\u304c\u53ef\u80fd\u3067\u3059\u3002\u6587\u5b57\u30b5\u30a4\u30ba\u8abf\u6574\u30b9\u30e9\u30a4\u30c0\u30fc\u3092\u4f7f\u3048\u3070\u3001\u6587\u5b57\u6570\u304c\u591a\u3044\u5834\u5408\u3067\u3082\u67a0\u5185\u306b\u304d\u308c\u3044\u306b\u53ce\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-5\">5Forces\uff08\u30d5\u30a1\u30a4\u30d6\u30d5\u30a9\u30fc\u30b9\uff09\u5206\u6790\u3068\u306f\uff1f<\/h2>\n\n\n\n<p>\u30de\u30a4\u30b1\u30eb\u30fb\u30dd\u30fc\u30bf\u30fc\u6559\u6388\u304c\u63d0\u5531\u3057\u305f\u3001\u696d\u754c\u306e\u53ce\u76ca\u6027\u3092\u6c7a\u3081\u308b\u300c5\u3064\u306e\u7af6\u4e89\u8981\u56e0\u300d\u3092\u5206\u6790\u3059\u308b\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u3002\u5358\u306a\u308b\u30e9\u30a4\u30d0\u30eb\u4f01\u696d\u3068\u306e\u7af6\u4e89\u3060\u3051\u3067\u306a\u304f\u3001\u696d\u754c\u5168\u4f53\u306e\u69cb\u9020\u3092\u628a\u63e1\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-6\">1. \u65e2\u5b58\u7af6\u5408\u306e\u7af6\u4e89\uff08\u4e2d\u592e\uff09<\/h3>\n\n\n\n<p>\u73fe\u5728\u306e\u30e9\u30a4\u30d0\u30eb\u4f01\u696d\u3068\u306e\u4e89\u3044\u306e\u6fc0\u3057\u3055\u3067\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u8996\u70b9\uff1a\u7af6\u5408\u306e\u6570\u306f\u591a\u3044\u304b\uff1f \u5dee\u5225\u5316\u306f\u3067\u304d\u3066\u3044\u308b\u304b\uff1f \u5e02\u5834\u306f\u6210\u9577\u3057\u3066\u3044\u308b\u304b\uff1f<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-7\">2. \u65b0\u898f\u53c2\u5165\u306e\u8105\u5a01\uff08\u4e0a\uff09<\/h3>\n\n\n\n<p>\u65b0\u3057\u3044\u4f01\u696d\u304c\u305d\u306e\u696d\u754c\u306b\u5165\u3063\u3066\u304f\u308b\u3084\u3059\u3055\uff08\u53c2\u5165\u969c\u58c1\uff09\u3067\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u8996\u70b9\uff1a\u53c2\u5165\u30b3\u30b9\u30c8\u306f\u4f4e\u3044\u304b\uff1f \u6cd5\u898f\u5236\u306f\u3042\u308b\u304b\uff1f \u30d6\u30e9\u30f3\u30c9\u529b\u306f\u5fc5\u8981\u304b\uff1f<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-8\">3. \u4ee3\u66ff\u54c1\u306e\u8105\u5a01\uff08\u4e0b\uff09<\/h3>\n\n\n\n<p>\u65e2\u5b58\u306e\u5546\u54c1\u30fb\u30b5\u30fc\u30d3\u30b9\u306b\u53d6\u3063\u3066\u4ee3\u308f\u308b\u3001\u5225\u306e\u89e3\u6c7a\u7b56\u306e\u5b58\u5728\u3067\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u8996\u70b9\uff1a\u3088\u308a\u5b89\u304f\u3066\u4fbf\u5229\u306a\u5225\u306e\u624b\u6bb5\u306f\u3042\u308b\u304b\uff1f\uff08\u4f8b\uff1a\u30bf\u30af\u30b7\u30fc\u306b\u5bfe\u3059\u308bUber\u3001\u5bfe\u9762\u4f1a\u8b70\u306b\u5bfe\u3059\u308bZoom\uff09<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-9\">4. \u58f2\u308a\u624b\u306e\u4ea4\u6e09\u529b\uff08\u5de6\uff09<\/h3>\n\n\n\n<p>\u30b5\u30d7\u30e9\u30a4\u30e4\u30fc\uff08\u4ed5\u5165\u308c\u5148\u30fb\u4f9b\u7d66\u5143\uff09\u306e\u529b\u95a2\u4fc2\u3067\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u8996\u70b9\uff1a\u4ed5\u5165\u308c\u5148\u306f\u5c11\u6570\u304b\uff1f \u539f\u6750\u6599\u306f\u5e0c\u5c11\u304b\uff1f \u4ed5\u5165\u308c\u5148\u3092\u5909\u3048\u308b\u30b3\u30b9\u30c8\u306f\u9ad8\u3044\u304b\uff1f<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-10\">5. \u8cb7\u3044\u624b\u306e\u4ea4\u6e09\u529b\uff08\u53f3\uff09<\/h3>\n\n\n\n<p>\u9867\u5ba2\uff08\u30e6\u30fc\u30b6\u30fc\uff09\u306e\u529b\u95a2\u4fc2\u3067\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u8996\u70b9\uff1a\u4ed6\u793e\u88fd\u54c1\u306b\u7c21\u5358\u306b\u4e57\u308a\u63db\u3048\u3089\u308c\u308b\u304b\uff1f \u4fa1\u683c\u6bd4\u8f03\u306f\u5bb9\u6613\u304b\uff1f \u9867\u5ba2\u81ea\u8eab\u304c\u305d\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u4f5c\u308c\u308b\u304b\uff1f<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-11\">\u3053\u306e\u30c4\u30fc\u30eb\u306f\u3069\u3093\u306a\u6642\u306b\u5f79\u7acb\u3064\uff1f<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u65b0\u898f\u4e8b\u696d\u306e\u64a4\u9000\u30fb\u53c2\u5165\u5224\u65ad<\/strong> \u300c\u3053\u306e\u5e02\u5834\u306f\u5132\u304b\u308b\u69cb\u9020\u306a\u306e\u304b\uff1f\u300d\u3092\u5ba2\u89b3\u7684\u306b\u5224\u65ad\u3057\u305f\u3044\u3068\u304d\u3002<\/li>\n\n\n\n<li><strong>\u4fa1\u683c\u6226\u7565\u306e\u7acb\u6848<\/strong> \u9867\u5ba2\u3084\u7af6\u5408\u306e\u72b6\u6cc1\u304b\u3089\u3001\u5024\u4e0a\u3052\u304c\u53ef\u80fd\u304b\u3001\u5024\u4e0b\u3052\u7af6\u4e89\u306b\u5dfb\u304d\u8fbc\u307e\u308c\u308b\u304b\u3092\u4e88\u6e2c\u3059\u308b\u3068\u304d\u3002<\/li>\n\n\n\n<li><strong>\u81ea\u793e\u306e\u5f37\u307f\u306e\u518d\u5b9a\u7fa9<\/strong> 5\u3064\u306e\u8105\u5a01\u306e\u4e2d\u3067\u3001\u81ea\u793e\u304c\u3069\u3053\u3067\u52dd\u8ca0\u3059\u308c\u3070\u6709\u5229\u304b\u3092\u53ef\u8996\u5316\u3057\u305f\u3044\u3068\u304d\u3002<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-12\">\u3088\u304f\u3042\u308b\u8cea\u554f<\/h2>\n\n\n\n<p><strong>Q. \u30b9\u30de\u30db\u3067\u4f5c\u6210\u3067\u304d\u307e\u3059\u304b\uff1f<\/strong> <br>A. \u306f\u3044\u3001\u53ef\u80fd\u3067\u3059\u3002\u79fb\u52d5\u4e2d\u306e\u601d\u8003\u6574\u7406\u3084\u30e1\u30e2\u4ee3\u308f\u308a\u306b\u3082\u3054\u6d3b\u7528\u3044\u305f\u3060\u3051\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>Q. \u4fdd\u5b58\u3057\u305f\u753b\u50cf\u304c\u307c\u3084\u3051\u307e\u305b\u3093\u304b\uff1f<\/strong> <br>A. \u9ad8\u89e3\u50cf\u5ea6\uff08Retina\u5bfe\u5fdc\uff09\u3067\u51fa\u529b\u3055\u308c\u308b\u305f\u3081\u3001\u30d1\u30ef\u30fc\u30dd\u30a4\u30f3\u30c8\u3067\u62e1\u5927\u3057\u3066\u3082\u304d\u308c\u3044\u306b\u8868\u793a\u3055\u308c\u307e\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ud83d\udcca 5Forces\u5206\u6790\u30c4\u30fc\u30eb\u306e\u4f7f\u3044\u65b9 \ud83c\udfa8 \u30de\u30fc\u30af\uff08\u2022\u25b2\u25bc\uff09\u3092\u30af\u30ea\u30c3\u30af \u8272\u3092\u5909\u66f4\u3067\u304d\u307e\u3059\uff08\u9ed2 \u2192 \u9752(\u6a5f\u4f1a) \u2192 \u8d64(\u8105\u5a01)\uff09 \u270f\ufe0f \u30c6\u30ad\u30b9\u30c8\u3092\u30af\u30ea\u30c3\u30af \u305d\u306e\u5834\u3067\u7de8\u96c6\u3067\u304d\u307e\u3059\uff08Enter\u3067\u4fdd\u5b58\u3001Esc\u3067\u30ad\u30e3\u30f3\u30bb\u30eb\uff09 \u2795 \u300c &#8230; <\/p>\n","protected":false},"author":4,"featured_media":9074,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13,41,40,42],"tags":[],"class_list":{"0":"post-9058","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-tool","8":"category-41","9":"category-40","10":"category-42","11":"entry"},"_links":{"self":[{"href":"https:\/\/rakkokeyword.com\/techo\/wp-json\/wp\/v2\/posts\/9058","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rakkokeyword.com\/techo\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rakkokeyword.com\/techo\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rakkokeyword.com\/techo\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/rakkokeyword.com\/techo\/wp-json\/wp\/v2\/comments?post=9058"}],"version-history":[{"count":12,"href":"https:\/\/rakkokeyword.com\/techo\/wp-json\/wp\/v2\/posts\/9058\/revisions"}],"predecessor-version":[{"id":9099,"href":"https:\/\/rakkokeyword.com\/techo\/wp-json\/wp\/v2\/posts\/9058\/revisions\/9099"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rakkokeyword.com\/techo\/wp-json\/wp\/v2\/media\/9074"}],"wp:attachment":[{"href":"https:\/\/rakkokeyword.com\/techo\/wp-json\/wp\/v2\/media?parent=9058"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rakkokeyword.com\/techo\/wp-json\/wp\/v2\/categories?post=9058"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rakkokeyword.com\/techo\/wp-json\/wp\/v2\/tags?post=9058"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}