{"id":9040,"date":"2025-12-01T18:38:56","date_gmt":"2025-12-01T09:38:56","guid":{"rendered":"https:\/\/rakkokeyword.com\/techo\/?p=9040"},"modified":"2026-01-30T10:48:12","modified_gmt":"2026-01-30T01:48:12","slug":"tool-pest-analysis-maker","status":"publish","type":"post","link":"https:\/\/rakkokeyword.com\/techo\/tool-pest-analysis-maker\/","title":{"rendered":"PEST\u5206\u6790\u56f3\u8868\u4f5c\u6210\u30c4\u30fc\u30eb"},"content":{"rendered":"\n<div id=\"pest-tool-v2-wrapper\" class=\"pest-tool-v2-wrapper\">\n    <style>\n        \/* --- CSS Reset & Base --- *\/\n        #pest-tool-v2-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        #pest-tool-v2-wrapper * { box-sizing: border-box; }\n        \n        \/* WordPress\u306e\u30ea\u30b9\u30c8\u30b9\u30bf\u30a4\u30eb\u3092\u30ea\u30bb\u30c3\u30c8 *\/\n        #pest-tool-v2-wrapper ul,\n        #pest-tool-v2-wrapper li {\n            list-style: none !important;\n            list-style-type: none !important;\n            margin: 0 !important;\n            padding: 0 !important;\n        }\n        #pest-tool-v2-wrapper ul::before,\n        #pest-tool-v2-wrapper li::marker {\n            display: none !important;\n            content: none !important;\n        }\n\n        \/* --- Layout (\u30d7\u30ec\u30d3\u30e5\u30fc\u306e\u307f) --- *\/\n        .pest-container {\n            max-width: 1200px;\n            margin: 0 auto;\n        }\n\n        \/* --- Preview Section --- *\/\n        .pest-preview-area {\n            width: 100%;\n        }\n        \n        .pest-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        .pest-control-group {\n            display: flex;\n            align-items: center;\n            gap: 10px;\n        }\n        .pest-control-label {\n            font-weight: bold;\n            font-size: 14px;\n            color: #13284B;\n            white-space: nowrap;\n        }\n        .pest-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        .pest-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        .pest-preview-container {\n            background: #fff;\n            padding: 20px;\n            border-radius: 8px;\n        }\n\n        .pest-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        .pest-matrix {\n            display: grid;\n            grid-template-columns: 1fr;\n            gap: 15px;\n        }\n        @media (min-width: 600px) {\n            .pest-matrix { grid-template-columns: 1fr 1fr; }\n        }\n        \n        \/* Force desktop layout when capturing at 1080px *\/\n        .pest-preview-container.force-desktop-layout .pest-matrix {\n            grid-template-columns: 1fr 1fr !important;\n        }\n\n        .pest-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: 180px;\n            box-shadow: 0 2px 4px rgba(0,0,0,0.03);\n        }\n\n        .pest-card-header {\n            padding: 8px 12px;\n            font-weight: bold;\n            font-size: 14px;\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        }\n        .pest-card-header span:last-child {\n            font-size: 20px;\n            font-weight: 900;\n            opacity: 0.2;\n        }\n\n        .pest-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        .pest-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        .pest-add-item:hover {\n            background: #007cba;\n            color: white;\n            border-style: solid;\n        }\n        .pest-add-item::before {\n            content: \"\u2795 \";\n            margin-right: 5px;\n        }\n        \n        \/* Hide add button when capturing *\/\n        .pest-capturing .pest-add-item {\n            display: none !important;\n        }\n        \n        .pest-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        .pest-list::before,\n        .pest-list::marker {\n            display: none !important;\n            content: none !important;\n        }\n\n        \/* Clickable List Items *\/\n        .pest-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        .pest-list li:hover {\n            background-color: #f0f7ff !important;\n        }\n        \n        \/* Icon Area (clickable for color change) *\/\n        .pest-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        .pest-icon:hover {\n            opacity: 0.7 !important;\n        }\n        \n        \/* Delete Button *\/\n        .pest-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        .pest-list li:hover .pest-delete {\n            opacity: 1 !important;\n        }\n        .pest-delete:hover {\n            color: #d93025 !important;\n            transform: scale(1.2);\n        }\n        \n        \/* Text Area (clickable for edit) *\/\n        .pest-text {\n            flex: 1 !important;\n            cursor: text !important;\n            line-height: 1.6 !important;\n            font-size: inherit !important;\n        }\n        .pest-text:hover {\n            background-color: rgba(0, 124, 186, 0.05) !important;\n            border-radius: 2px !important;\n        }\n        \n        \/* Edit Mode Style *\/\n        .pest-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        .pest-list li::before {\n            display: none !important;\n        }\n\n        \/* Chance Style *\/\n        .pest-list li.type-chance .pest-text {\n            color: #0056b3 !important;\n            font-weight: bold !important;\n        }\n        .pest-list li.type-chance {\n            background-color: rgba(0, 86, 179, 0.05) !important;\n        }\n        .pest-list li.type-chance .pest-icon {\n            color: #0056b3 !important;\n        }\n\n        \/* Risk Style *\/\n        .pest-list li.type-risk .pest-text {\n            color: #d93025 !important;\n            font-weight: bold !important;\n        }\n        .pest-list li.type-risk {\n            background-color: rgba(217, 48, 37, 0.05) !important;\n        }\n        .pest-list li.type-risk .pest-icon {\n            color: #d93025 !important;\n        }\n        \n        \/* Normal Style *\/\n        .pest-list li .pest-icon {\n            color: #666 !important;\n        }\n\n        \/* Hint Message *\/\n        .pest-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        .pest-click-hint:hover {\n            background: #007cba;\n            color: white;\n            box-shadow: 0 2px 8px rgba(0, 124, 186, 0.3);\n        }\n        .pest-hint-wrapper { text-align: center; }\n\n\n        \/* --- Themes --- *\/\n        \/* Standard (Blue) *\/\n        .theme-standard .pest-card { border-top: 4px solid #007cba; }\n        .theme-standard .pest-card-header { background: #f0f7fb; color: #007cba; }\n        \/* Pop (Warm) *\/\n        .theme-pop .pest-card { border-top: 4px solid #ff9900; }\n        .theme-pop .pest-card-header { background: #fff8e1; color: #d68100; }\n        \/* Mono *\/\n        .theme-mono .pest-card { border: 1px solid #333; border-radius: 0; box-shadow: none; }\n        .theme-mono .pest-card-header { background: #333; color: #fff; }\n\n\n        \/* --- Actions --- *\/\n        .pest-actions {\n            display: flex;\n            gap: 15px;\n            flex-wrap: wrap;\n            justify-content: center;\n            margin-top: 25px;\n        }\n        .pest-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        .pest-btn-primary { background-color: #13284B; color: #fff; }\n        .pest-btn-primary:hover { background-color: #1f3a66; }\n        .pest-btn-secondary { background-color: #f0f0f1; color: #333; border: 1px solid #ccc; }\n        .pest-btn-secondary:hover { background-color: #e0e0e0; }\n\n        \/* Theme Selection (moved to bottom) *\/\n        .pest-theme-selection {\n            margin-top: 20px;\n            padding: 20px;\n            background: #f8f9fa;\n            border-radius: 6px;\n            border: 1px solid #eee;\n        }\n        .pest-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        .pest-design-row {\n            display: flex;\n            align-items: center;\n            margin-bottom: 12px;\n            flex-wrap: wrap;\n            gap: 10px;\n        }\n        .pest-design-label {\n            font-weight: bold;\n            font-size: 14px;\n            color: #13284B;\n            min-width: 120px;\n        }\n        @media (max-width: 600px) {\n            .pest-design-label {\n                min-width: 100%;\n                margin-bottom: 5px;\n            }\n            .pest-design-row {\n                flex-direction: column;\n                align-items: flex-start;\n            }\n        }\n        .pest-design-options {\n            display: flex;\n            gap: 15px;\n            flex-wrap: wrap;\n            flex: 1;\n        }\n        .pest-theme-selection label {\n            cursor: pointer;\n            font-size: 14px;\n            display: flex;\n            align-items: center;\n            gap: 5px;\n        }\n        .pest-theme-selection label input {\n            margin: 0;\n        }\n        \n        \/* Font Size Slider *\/\n        .pest-slider-container {\n            display: flex;\n            align-items: center;\n            gap: 10px;\n            flex: 1;\n            min-width: 200px;\n        }\n        .pest-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            .pest-slider-container {\n                width: 100%;\n                max-width: 100%;\n            }\n            .pest-font-slider {\n                max-width: 100%;\n            }\n        }\n        .pest-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        .pest-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        .pest-font-size-value {\n            font-size: 13px;\n            color: #666;\n            min-width: 40px;\n            text-align: right;\n        }\n\n        \/* Loading *\/\n        .pest-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        .pest-loading.active { display: flex; }\n        .pest-spinner {\n            width: 40px; height: 40px;\n            border: 4px solid #f3f3f3; border-top: 4px solid #13284B;\n            border-radius: 50%; animation: pest-spin 1s linear infinite;\n        }\n        @keyframes pest-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }\n\n        \/* Guide Popup *\/\n        .pest-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        .pest-guide-overlay.active {\n            display: flex;\n        }\n        .pest-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        .pest-guide-title {\n            font-size: 20px;\n            font-weight: bold;\n            margin-bottom: 20px;\n            color: #13284B;\n            text-align: center;\n        }\n        .pest-guide-content {\n            font-size: 14px;\n            line-height: 1.8;\n            margin-bottom: 20px;\n            color: #333;\n        }\n        .pest-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        .pest-guide-icon {\n            flex-shrink: 0;\n            width: 30px;\n            font-size: 18px;\n            margin-right: 12px;\n        }\n        .pest-guide-text {\n            flex: 1;\n        }\n        .pest-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        .pest-guide-button:hover {\n            background: #1f3a66;\n        }\n\n        \/* Size Selection Modal *\/\n        .pest-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        .pest-size-modal.active {\n            display: flex;\n        }\n        .pest-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        .pest-size-modal-title {\n            font-size: 18px;\n            font-weight: bold;\n            margin-bottom: 20px;\n            color: #13284B;\n            text-align: center;\n        }\n        .pest-size-options {\n            display: flex;\n            flex-direction: column;\n            gap: 12px;\n            margin-bottom: 20px;\n        }\n        .pest-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        .pest-size-option:hover {\n            border-color: #007cba;\n            background: #f0f7fb;\n        }\n        .pest-size-option.selected {\n            border-color: #007cba;\n            background: #007cba;\n            color: white;\n        }\n        .pest-size-option-label {\n            font-weight: bold;\n            margin-bottom: 5px;\n        }\n        .pest-size-option-desc {\n            font-size: 13px;\n            opacity: 0.8;\n        }\n        .pest-size-modal-buttons {\n            display: flex;\n            gap: 10px;\n        }\n        .pest-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        .pest-size-modal-button.primary {\n            background: #13284B;\n            color: white;\n        }\n        .pest-size-modal-button.primary:hover {\n            background: #1f3a66;\n        }\n        .pest-size-modal-button.secondary {\n            background: #f0f0f1;\n            color: #333;\n        }\n        .pest-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=\"pest_guide_overlay\" class=\"pest-guide-overlay\">\n        <div class=\"pest-guide-popup\">\n            <div class=\"pest-guide-title\">\ud83d\udcca PEST\u5206\u6790\u30c4\u30fc\u30eb\u306e\u4f7f\u3044\u65b9<\/div>\n            <div class=\"pest-guide-content\">\n                <div class=\"pest-guide-item\">\n                    <div class=\"pest-guide-icon\">\ud83c\udfa8<\/div>\n                    <div class=\"pest-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(\u30c1\u30e3\u30f3\u30b9) \u2192 \u8d64(\u30ea\u30b9\u30af)\uff09\n                    <\/div>\n                <\/div>\n                <div class=\"pest-guide-item\">\n                    <div class=\"pest-guide-icon\">\u270f\ufe0f<\/div>\n                    <div class=\"pest-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=\"pest-guide-item\">\n                    <div class=\"pest-guide-icon\">\u2795<\/div>\n                    <div class=\"pest-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=\"pest-guide-item\">\n                    <div class=\"pest-guide-icon\">\u274c<\/div>\n                    <div class=\"pest-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 class=\"pest-guide-item\">\n                    <div class=\"pest-guide-icon\">\ud83d\udd24<\/div>\n                    <div class=\"pest-guide-text\">\n                        <strong>\u4e0b\u90e8\u306e\u300c\u30d5\u30a9\u30f3\u30c8\u30b5\u30a4\u30ba\u300d\u30b9\u30e9\u30a4\u30c0\u30fc<\/strong><br>\n                        \u6587\u5b57\u306e\u5927\u304d\u3055\u3092\u8abf\u6574\u3067\u304d\u307e\u3059\n                    <\/div>\n                <\/div>\n            <\/div>\n            <button class=\"pest-guide-button\" onclick=\"document.getElementById('pest_guide_overlay').classList.remove('active'); localStorage.setItem('pest_guide_shown', 'true');\">\n                \u308f\u304b\u308a\u307e\u3057\u305f\n            <\/button>\n        <\/div>\n    <\/div>\n\n    <div id=\"pest_size_modal\" class=\"pest-size-modal\">\n        <div class=\"pest-size-modal-content\">\n            <div class=\"pest-size-modal-title\">\ud83d\udcd0 \u753b\u50cf\u30b5\u30a4\u30ba\u3092\u9078\u629e<\/div>\n            <div class=\"pest-size-options\">\n                <div class=\"pest-size-option\" data-size=\"current\">\n                    <div class=\"pest-size-option-label\">\u73fe\u5728\u306e\u30b5\u30a4\u30ba\u3067\u51fa\u529b<\/div>\n                    <div class=\"pest-size-option-desc\">\u8868\u793a\u3055\u308c\u3066\u3044\u308b\u6bd4\u7387\u3067\u4fdd\u5b58<\/div>\n                <\/div>\n                <div class=\"pest-size-option selected\" data-size=\"1080\">\n                    <div class=\"pest-size-option-label\">\u9ad8\u89e3\u50cf\u5ea6\u3067\u51fa\u529b\uff08\u63a8\u5968\uff09<\/div>\n                    <div class=\"pest-size-option-desc\">\u9ad8\u89e3\u50cf\u5ea6\u3067\u4fdd\u5b58<\/div>\n                <\/div>\n            <\/div>\n            <div class=\"pest-size-modal-buttons\">\n                <button class=\"pest-size-modal-button secondary\" onclick=\"document.getElementById('pest_size_modal').classList.remove('active');\">\n                    \u30ad\u30e3\u30f3\u30bb\u30eb\n                <\/button>\n                <button id=\"pest_size_confirm\" class=\"pest-size-modal-button primary\">\n                    \u4fdd\u5b58\u3059\u308b\n                <\/button>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <div id=\"pest_loading\" class=\"pest-loading\"><div class=\"pest-spinner\"><\/div><\/div>\n\n    <div class=\"pest-container\">\n        \n        <div class=\"pest-top-controls\">\n            <div class=\"pest-control-group\">\n                <label class=\"pest-control-label\">\u30bf\u30a4\u30c8\u30eb:<\/label>\n                <input type=\"text\" id=\"pest_title\" class=\"pest-title-input\" value=\"\u30d5\u30e9\u30f3\u30c1\u30e3\u30a4\u30ba\u30b3\u30f3\u30d3\u30cb3\u5e97\u8217\u7d4c\u55b6\u306ePEST\u5206\u6790\" placeholder=\"\u5206\u6790\u30bf\u30a4\u30c8\u30eb\u3092\u5165\u529b\">\n            <\/div>\n            <div class=\"pest-control-group\">\n                <label class=\"pest-control-label\">\u696d\u754c\u30d7\u30ea\u30bb\u30c3\u30c8:<\/label>\n                <select id=\"pest_preset_select\" class=\"pest-preset-select\">\n                    <option value=\"\">\u8a18\u5165\u4f8b\u3092\u8aad\u307f\u8fbc\u3080<\/option>\n                    <option value=\"convenience_store\">\u30b3\u30f3\u30d3\u30cbFC\u7d4c\u55b6\uff083\u5e97\u8217\uff09<\/option>\n                    <option value=\"apparel\">\u5c0f\u898f\u6a21\u30a2\u30d1\u30ec\u30eb\u5e97\uff08\u5b9f\u5e97\u8217+EC\uff09<\/option>\n                    <option value=\"manufacturing\">\u753a\u5de5\u5834\uff08\u91d1\u5c5e\u52a0\u5de5\u696d\uff09<\/option>\n                    <option value=\"it_web\">Web\u5236\u4f5c\u4f1a\u793e\uff08\u793e\u54e15\u540d\uff09<\/option>\n                <\/select>\n            <\/div>\n        <\/div>\n\n        <div class=\"pest-preview-area\">\n            <div id=\"pest_capture_target\" class=\"pest-preview-container theme-standard\">\n                <div id=\"pest_preview_title\" class=\"pest-chart-title\">\u30d5\u30e9\u30f3\u30c1\u30e3\u30a4\u30ba\u30b3\u30f3\u30d3\u30cb3\u5e97\u8217\u7d4c\u55b6\u306ePEST\u5206\u6790<\/div>\n                \n                <div class=\"pest-matrix\">\n                    <div class=\"pest-card\">\n                        <div class=\"pest-card-header\"><span>Politics (\u653f\u6cbb)<\/span><span>P<\/span><\/div>\n                        <div class=\"pest-card-body\">\n                            <ul id=\"pest_list_p\" class=\"pest-list\"><\/ul>\n                            <div class=\"pest-add-item\" data-key=\"p\">\u9805\u76ee\u3092\u8ffd\u52a0<\/div>\n                        <\/div>\n                    <\/div>\n                    <div class=\"pest-card\">\n                        <div class=\"pest-card-header\"><span>Economy (\u7d4c\u6e08)<\/span><span>E<\/span><\/div>\n                        <div class=\"pest-card-body\">\n                            <ul id=\"pest_list_e\" class=\"pest-list\"><\/ul>\n                            <div class=\"pest-add-item\" data-key=\"e\">\u9805\u76ee\u3092\u8ffd\u52a0<\/div>\n                        <\/div>\n                    <\/div>\n                    <div class=\"pest-card\">\n                        <div class=\"pest-card-header\"><span>Society (\u793e\u4f1a)<\/span><span>S<\/span><\/div>\n                        <div class=\"pest-card-body\">\n                            <ul id=\"pest_list_s\" class=\"pest-list\"><\/ul>\n                            <div class=\"pest-add-item\" data-key=\"s\">\u9805\u76ee\u3092\u8ffd\u52a0<\/div>\n                        <\/div>\n                    <\/div>\n                    <div class=\"pest-card\">\n                        <div class=\"pest-card-header\"><span>Technology (\u6280\u8853)<\/span><span>T<\/span><\/div>\n                        <div class=\"pest-card-body\">\n                            <ul id=\"pest_list_t\" class=\"pest-list\"><\/ul>\n                            <div class=\"pest-add-item\" data-key=\"t\">\u9805\u76ee\u3092\u8ffd\u52a0<\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <div class=\"pest-hint-wrapper\">\n                <span id=\"pest_hint_message\" class=\"pest-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=\"pest-actions\">\n                <button id=\"pest_btn_dl\" class=\"pest-btn pest-btn-primary\">\u753b\u50cf\u3068\u3057\u3066\u4fdd\u5b58 (PNG)<\/button>\n            <\/div>\n\n            <div class=\"pest-theme-selection\">\n                <div class=\"pest-design-title\">\u30c7\u30b6\u30a4\u30f3<\/div>\n                \n                <div class=\"pest-design-row\">\n                    <div class=\"pest-design-label\">\u30c6\u30fc\u30de\uff1a<\/div>\n                    <div class=\"pest-design-options\">\n                        <label><input type=\"radio\" name=\"pest_theme\" value=\"standard\" checked> \u30d6\u30eb\u30fc<\/label>\n                        <label><input type=\"radio\" name=\"pest_theme\" value=\"pop\"> \u30a4\u30a8\u30ed\u30fc<\/label>\n                        <label><input type=\"radio\" name=\"pest_theme\" value=\"mono\"> \u30e2\u30ce\u30af\u30ed<\/label>\n                    <\/div>\n                <\/div>\n                \n                <div class=\"pest-design-row\">\n                    <div class=\"pest-design-label\">\u30d5\u30a9\u30f3\u30c8\u30b5\u30a4\u30ba\uff1a<\/div>\n                    <div class=\"pest-slider-container\">\n                        <input type=\"range\" id=\"pest_font_slider\" class=\"pest-font-slider\" min=\"10\" max=\"14\" value=\"14\" step=\"1\">\n                        <span id=\"pest_font_size_value\" class=\"pest-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 realistic examples and titles)\n        const INDUSTRY_DATA = {\n            \"convenience_store\": {\n                \"title\": \"\u30d5\u30e9\u30f3\u30c1\u30e3\u30a4\u30ba\u30b3\u30f3\u30d3\u30cb3\u5e97\u8217\u7d4c\u55b6\u306ePEST\u5206\u6790\",\n                \"P\": \"-\u6700\u4f4e\u8cc3\u91d11050\u5186\u21921100\u5186\u3067\u670825\u4e07\u5186\u30b3\u30b9\u30c8\u5897\\n-\u30bf\u30d0\u30b3\u9673\u5217\u898f\u5236\u3067\u6539\u88c5\u8cbb80\u4e07\u5186\u00d73\u5e97\u8217\\n+\u9152\u985e\u8ca9\u58f2\u6642\u9593\u898f\u5236\u306e\u7de9\u548c\u691c\u8a0e\uff08\u58f2\u4e0a\u6a5f\u4f1a\u5897\uff09\",\n                \"E\": \"-\u4ed5\u5165\u308c\u5024\u304c\u534a\u5e74\u3067\u5e73\u57478%\u4e0a\u6607\uff08\u672c\u90e8\u901a\u9054\uff09\\n-\u96fb\u6c17\u4ee3\u304c\u524d\u5e74\u6bd41.4\u500d\u3067\u670812\u4e07\u5186\u5897\\n+\u99c5\u524d\u5e97\u306f\u5916\u56fd\u4eba\u89b3\u5149\u5ba2\u304c\u524d\u5e74\u6bd42\u500d\u3067\u5ba2\u5358\u4fa11.5\u500d\",\n                \"S\": \"-\u6df1\u591c\u30d0\u30a4\u30c8\u304c\u6642\u7d661400\u5186\u3067\u3082\u96c6\u307e\u3089\u306a\u3044\\n+\u5358\u8eab\u4e16\u5e2f\u5897\u3067\u5f01\u5f53\u30fb\u60e3\u83dc\u304c\u524d\u5e74\u6bd415%\u5897\\n\u4f4f\u5b85\u8857\u5e97\u306f\u9ad8\u9f62\u8005\u306e\u3061\u3087\u3044\u8cb7\u3044\u30671\u65e550\u4eba\u6765\u5e97\",\n                \"T\": \"+\u30bb\u30eb\u30d5\u30ec\u30b8\u5c0e\u5165\u3067\u4eba\u4ef6\u8cbb\u3092\u670820\u4e07\u524a\u6e1b\uff082\u5e97\u8217\u5c0e\u5165\u6e08\uff09\\n\u672c\u90e8\u306eAI\u767a\u6ce8\u3067\u5ec3\u68c4\u304c3\u5272\u6e1b\u3063\u305f\u304c\u5e97\u306e\u88c1\u91cf\u6e1b\u308b\\n-POS\u30ec\u30b8\u66f4\u65b0\u30671\u5e97\u8217100\u4e07\u5186\u306e\u51fa\u8cbb\",\n            },\n            \"apparel\": {\n                \"title\": \"\u5c0f\u898f\u6a21\u30a2\u30d1\u30ec\u30eb\u5e97\uff08\u5b9f\u5e97\u8217+EC\uff09\u306ePEST\u5206\u6790\",\n                \"P\": \"-\u30a4\u30f3\u30dc\u30a4\u30b9\u5bfe\u5fdc\u3067\u7a0e\u7406\u58eb\u8cbb\u7528\u304c\u5e7412\u4e07\u5186\u5897\\n-\u4e2d\u56fd\u304b\u3089\u306e\u8f38\u5165\u3067\u95a2\u7a0e\u7387\u304c\u5909\u52d5\uff08\u8aad\u3081\u306a\u3044\uff09\\n\u6d88\u8cbb\u7a0e\u306e\u8efd\u6e1b\u7a0e\u7387\u306f\u7121\u95a2\u4fc2\u3060\u304c\u4e8b\u52d9\u8ca0\u62c5\u5897\",\n                \"E\": \"-\u5186\u5b89\u3067\u4ed5\u5165\u308c\u539f\u4fa1\u304c2\u5272\u4e0a\u304c\u308a\u7c97\u5229\u304c\u6fc0\u6e1b\\n-\u304a\u5ba2\u306e\u8ca1\u5e03\u306e\u7d10\u304c\u56fa\u304f\u3001\u5b9a\u4fa1\u3067\u58f2\u308c\u306a\u3044\\n+\u30a4\u30f3\u30b9\u30bf\u7d4c\u7531\u306eEC\u58f2\u4e0a\u304c\u670850\u4e07\u219280\u4e07\u306b\",\n                \"S\": \"+SDGs\u3067\u30ea\u30b5\u30a4\u30af\u30eb\u5546\u54c1\u306e\u554f\u3044\u5408\u308f\u305b\u5897\\n-\u82e5\u3044\u5b50\u304c\u5b9f\u5e97\u8217\u306b\u6765\u306a\u3044\uff08\u30cd\u30c3\u30c8\u3067\u5b8c\u7d50\uff09\\n\u30e1\u30eb\u30ab\u30ea\u3067\u4e2d\u53e4\u304c\u56de\u308b\u306e\u3067\u65b0\u54c1\u58f2\u308c\u306b\u304f\u3044\",\n                \"T\": \"+\u30a4\u30f3\u30b9\u30bf\u30e9\u30a4\u30d6\u3067\u67081\u56de\u63a5\u5ba2\u2192\u8cfc\u5165\u73873\u500d\\n+BASE\u3067\u7c21\u5358\u306bEC\u30b5\u30a4\u30c8\u4f5c\u308c\u3066\u56fa\u5b9a\u8cbb\u6e1b\\n-Google\u306e\u5e83\u544a\u8cbb\u304c\u67085\u4e07\u21928\u4e07\u306b\u4e0a\u304c\u3063\u305f\",\n            },\n            \"manufacturing\": {\n                \"title\": \"\u753a\u5de5\u5834\uff08\u91d1\u5c5e\u52a0\u5de5\u696d\uff09\u306ePEST\u5206\u6790\",\n                \"P\": \"-\u8131\u70ad\u7d20\u3067CO2\u524a\u6e1b\u8981\u6c42\u3055\u308c\u308b\u304c\u8a2d\u5099\u6295\u8cc7\u3067\u304d\u306a\u3044\\n+\u3082\u306e\u3065\u304f\u308a\u88dc\u52a9\u91d1\u3067\u65b0\u6a5f\u68b0500\u4e07\u5186\u306e\u534a\u984d\u88dc\u52a9\u3082\u3089\u3048\u305f\\n\u5927\u4f01\u696d\u306e\u4e0b\u8acb\u6cd5\u30c1\u30a7\u30c3\u30af\u304c\u53b3\u3057\u304f\u306a\u308a\u5024\u4e0a\u3052\u4ea4\u6e09\u3057\u3084\u3059\u3044\",\n                \"E\": \"-\u92fc\u6750\u304c1kg \u3042\u305f\u308a100\u5186\u2192150\u5186\u3067\u5229\u76ca\u30bc\u30ed\\n-\u96fb\u6c17\u4ee3\u3068\u30ac\u30b9\u4ee3\u3067\u670830\u4e07\u5186\u5897\uff08\u524d\u5e74\u6bd4\uff09\\n\u53d6\u5f15\u5148\u306e\u534a\u5c0e\u4f53\u30e1\u30fc\u30ab\u30fc\u304c\u53d7\u6ce8\u5897\u3067\u52a9\u304b\u3063\u3066\u308b\",\n                \"S\": \"-\u8077\u4eba\u306e\u9ad8\u9f62\u5316\u306770\u6b73\u306e\u4f5c\u696d\u8005\u304c\u4e3b\u529b\uff08\u5f8c\u7d99\u8005\u306a\u3057\uff09\\n\u82e5\u624b\u304c\u6765\u3066\u30823\u5e74\u3067\u8f9e\u3081\u308b\uff08\u5e74\u53ce300\u4e07\u5186\u53f0\uff09\\n+\u5730\u5143\u306e\u5de5\u696d\u9ad8\u6821\u3068\u9023\u643a\u3057\u3066\u30a4\u30f3\u30bf\u30fc\u30f3\u53d7\u3051\u5165\u308c\u958b\u59cb\",\n                \"T\": \"+\u4e2d\u53e4\u306e5\u8ef8\u30de\u30b7\u30cb\u30f3\u30b0\u30bb\u30f3\u30bf\u5c0e\u5165\u3067\u7d0d\u671f\u534a\u6e1b\\n-CAD\/CAM\u3067\u304d\u308b\u4eba\u304c\u3044\u306a\u304f\u3066\u5916\u6ce8\u3067\u670810\u4e07\\n+YouTube\u3067\u52a0\u5de5\u52d5\u753b\u51fa\u3057\u305f\u3089\u5f15\u304d\u5408\u30445\u4ef6\u6765\u305f\",\n            },\n            \"it_web\": {\n                \"title\": \"Web\u5236\u4f5c\u4f1a\u793e\uff08\u793e\u54e15\u540d\uff09\u306ePEST\u5206\u6790\",\n                \"P\": \"-\u30a4\u30f3\u30dc\u30a4\u30b9\u5bfe\u5fdc\u3067\u8acb\u6c42\u66f8\u30b7\u30b9\u30c6\u30e0\u5237\u65b0\uff0820\u4e07\u5186\uff09\\n\u30d5\u30ea\u30fc\u30e9\u30f3\u30b9\u4fdd\u8b77\u6cd5\u3067\u5916\u6ce8\u8cbb\u304c1.2\u500d\u306b\\n-\u30b9\u30c6\u30de\u898f\u5236\u3067PR\u8868\u8a18\u53b3\u683c\u5316\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u8aac\u660e\u304c\u5927\u5909\",\n                \"E\": \"+DX\u9700\u8981\u3067\u4e2d\u5c0f\u4f01\u696d\u304b\u3089\u306e\u5f15\u304d\u5408\u3044\u5897\\n-\u30a8\u30f3\u30b8\u30cb\u30a2\u63a1\u7528\u306e\u7d66\u4e0e\u76f8\u5834\u304c\u5e74\u53ce500\u4e07\u2192650\u4e07\\n\u5186\u5b89\u3067\u3082\u6d77\u5916\u767a\u6ce8\u306f\u54c1\u8cea\u306e\u554f\u984c\u3067\u3084\u3081\u305f\",\n                \"S\": \"+\u5b8c\u5168\u30ea\u30e2\u30fc\u30c8\u306b\u3057\u305f\u3089\u5168\u56fd\u304b\u3089\u5fdc\u52df\u6765\u305f\\n\u793e\u54e1\u304c\u526f\u696d\u5e0c\u671b\u3067\u30e2\u30c1\u30d9\u30fc\u30b7\u30e7\u30f3\u7ba1\u7406\u304c\u96e3\u3057\u3044\\n-20\u4ee3\u306e\u30c7\u30b6\u30a4\u30ca\u30fc\u304c\u5927\u624b\u306b\u5f15\u304d\u629c\u304b\u308c\u305f\",\n                \"T\": \"+ChatGPT\u3067\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u6642\u9593\u304c3\u5272\u6e1b\u3063\u305f\\n+Figma\u3067\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u78ba\u8a8d\u304c\u30b9\u30e0\u30fc\u30ba\u306b\\n-Google\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u3067\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30b5\u30a4\u30c8\u306e\u9806\u4f4d\u6fc0\u5909\uff08\u5bfe\u5fdc\u8ffd\u308f\u308c\u308b\uff09\",\n            }\n        };\n\n        const App = {\n            data: {\n                p: [],\n                e: [],\n                s: [],\n                t: []\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('pest_title'),\n                    preset: document.getElementById('pest_preset_select'),\n                    lists: {\n                        p: document.getElementById('pest_list_p'),\n                        e: document.getElementById('pest_list_e'),\n                        s: document.getElementById('pest_list_s'),\n                        t: document.getElementById('pest_list_t'),\n                    },\n                    previewTitle: document.getElementById('pest_preview_title'),\n                    previewContainer: document.getElementById('pest_capture_target'),\n                    themes: document.getElementsByName('pest_theme'),\n                    fontSlider: document.getElementById('pest_font_slider'),\n                    fontSizeValue: document.getElementById('pest_font_size_value'),\n                    btnDl: document.getElementById('pest_btn_dl'),\n                    loading: document.getElementById('pest_loading'),\n                    sizeModal: document.getElementById('pest_size_modal'),\n                    sizeConfirm: document.getElementById('pest_size_confirm')\n                };\n            },\n\n            loadDefaultData() {\n                \/\/ Load convenience store data by default (including title)\n                const preset = INDUSTRY_DATA['convenience_store'];\n                this.data.p = this.parseData(preset.P);\n                this.data.e = this.parseData(preset.E);\n                this.data.s = this.parseData(preset.S);\n                this.data.t = this.parseData(preset.T);\n                \n                \/\/ Set default 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 = 'chance';\n                        content = line.substring(1);\n                    } else if (line.startsWith('-')) {\n                        type = 'risk';\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 || 'PEST\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 = `pest-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('.pest-size-option').forEach(option => {\n                    option.addEventListener('click', (e) => {\n                        document.querySelectorAll('.pest-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('.pest-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('.pest-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('pest_hint_message');\n                if (hintMessage) {\n                    hintMessage.addEventListener('click', () => {\n                        this.showGuide();\n                    });\n                }\n            },\n\n            \/\/ --- Core Logic: Render List from Textarea ---\n            renderAll() {\n                ['p','e','s','t'].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 === 'chance') {\n                        icon = '\u25b2';\n                        li.className = 'type-chance';\n                    } else if (type === 'risk') {\n                        icon = '\u25bc';\n                        li.className = 'type-risk';\n                    }\n\n                    \/\/ Create icon span (left side - for color change)\n                    const iconSpan = document.createElement('span');\n                    iconSpan.className = 'pest-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 = 'pest-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 = 'pest-delete';\n                    deleteSpan.textContent = '\u00d7';\n                    deleteSpan.addEventListener('click', (e) => {\n                        e.stopPropagation();\n                        this.deleteItem(key, index);\n                    });\n\n                    \/\/ li\u5168\u4f53\u306e\u30af\u30ea\u30c3\u30af\u3067\u8272\u5909\u66f4\uff08\u30c6\u30ad\u30b9\u30c8\u90e8\u5206\u4ee5\u5916\uff09\n                    li.addEventListener('click', (e) => {\n                        \/\/ \u30c6\u30ad\u30b9\u30c8\u90e8\u5206\u3084\u524a\u9664\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u305f\u5834\u5408\u306f\u7121\u8996\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            \/\/ --- Item Management Functions ---\n            toggleItemType(key, index) {\n                const item = this.data[key][index];\n                \n                \/\/ Rotation: Normal -> Chance -> Risk -> Normal\n                if (item.type === 'normal') {\n                    item.type = 'chance';\n                } else if (item.type === 'chance') {\n                    item.type = 'risk';\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('.pest-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.p = this.parseData(preset.P);\n                this.data.e = this.parseData(preset.E);\n                this.data.s = this.parseData(preset.S);\n                this.data.t = this.parseData(preset.T);\n                \n                \/\/ Update title from preset\n                this.dom.title.value = preset.title;\n                this.dom.previewTitle.textContent = preset.title;\n                \n                this.renderAll();\n            },\n\n            changeFontSize(size) {\n                \/\/ Update display value\n                this.dom.fontSizeValue.textContent = `${size}px`;\n                \n                \/\/ Apply font size to all list items\n                const allLists = document.querySelectorAll('.pest-list');\n                allLists.forEach(list => {\n                    list.style.fontSize = `${size}px`;\n                });\n                \n                \/\/ Also update text spans\n                const allTextSpans = document.querySelectorAll('.pest-text');\n                allTextSpans.forEach(span => {\n                    span.style.fontSize = `${size}px`;\n                });\n            },\n\n            \/\/ --- Edit Mode Functions ---\n            enableEdit(textSpan, key, index) {\n                \/\/ Don't re-enable if already editing\n                if (textSpan.contentEditable === 'true') return;\n                \n                const currentText = textSpan.textContent;\n                textSpan.contentEditable = true;\n                textSpan.focus();\n\n                \/\/ Select all text\n                const range = document.createRange();\n                range.selectNodeContents(textSpan);\n                const selection = window.getSelection();\n                selection.removeAllRanges();\n                selection.addRange(range);\n\n                \/\/ Save on blur or Enter\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                \/\/ Store handlers for cleanup\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                \/\/ Re-render to update display\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                \/\/ Check if guide has been shown before\n                const guideShown = localStorage.getItem('pest_guide_shown');\n                if (!guideShown) {\n                    \/\/ Show guide after a short delay for better UX\n                    setTimeout(() => {\n                        this.showGuide();\n                    }, 500);\n                }\n            },\n\n            showGuide() {\n                document.getElementById('pest_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('pest_capture_target');\n                const container = target.parentElement;\n                \n                target.classList.add('pest-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 = `PEST_${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('pest-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('pest-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-5forces-analysis-maker\/\">5Forces\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\u30de\u30fc\u30b1\u30c6\u30a3\u30f3\u30b0\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u300cPEST\u5206\u6790\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\u30ed\u30b0\u30a4\u30f3\u3084\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306f\u4e0d\u8981\u3067\u3001\u4eca\u3059\u3050\u5229\u7528\u53ef\u80fd\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>\u3053\u306e\u30c4\u30fc\u30eb\u306f\u3001\u305f\u3060\u306e\u5165\u529b\u30d5\u30a9\u30fc\u30e0\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u5206\u6790\u4f5c\u696d\u3092\u52b9\u7387\u5316\u3059\u308b\u305f\u3081\u306e\u4ee5\u4e0b\u306e\u6a5f\u80fd\u3092\u5099\u3048\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u304d\u308c\u3044\u306a\u56f3\u8868\u3092\u77ac\u6642\u306b\u4f5c\u6210<\/strong> <br>\u5165\u529b\u3057\u305f\u30c6\u30ad\u30b9\u30c8\u304c\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u3067\u30c7\u30b6\u30a4\u30f3\u3055\u308c\u305f\u56f3\u8868\u306b\u53cd\u6620\u3055\u308c\u307e\u3059\u3002\u30d1\u30ef\u30fc\u30dd\u30a4\u30f3\u30c8\u3084\u30a8\u30af\u30bb\u30eb\u3067\u67a0\u3092\u4f5c\u308b\u624b\u9593\u306f\u5fc5\u8981\u3042\u308a\u307e\u305b\u3093\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> <br>\u300c\u4f55\u3092\u66f8\u3051\u3070\u3044\u3044\u304b\u308f\u304b\u3089\u306a\u3044\u300d\u3068\u3044\u3046\u65b9\u306e\u305f\u3081\u306b\u3001\u30b3\u30f3\u30d3\u30cb\u696d\u754c\u3084\u30a2\u30d1\u30ec\u30eb\u696d\u754c\u306a\u3069\u306e\u5206\u6790\u4e8b\u4f8b\uff08\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\uff09\u3092\u7528\u610f\u3057\u3066\u3044\u307e\u3059\u3002\u30d7\u30ea\u30bb\u30c3\u30c8\u3092\u9078\u629e\u3059\u308b\u3060\u3051\u3067\u3001\u5165\u529b\u6b04\u306b\u4e0b\u66f8\u304d\u304c\u81ea\u52d5\u53cd\u6620\u3055\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30c1\u30e3\u30f3\u30b9\u3068\u30ea\u30b9\u30af\u3092\u76f4\u611f\u7684\u306b\u8272\u5206\u3051<\/strong> <br>\u5165\u529b\u3057\u305f\u9805\u76ee\u306e\u5de6\u5074\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3060\u3051\u3067\u3001\u300c\u9752\u8272\uff08\u30c1\u30e3\u30f3\u30b9\u30fb\u8ffd\u3044\u98a8\uff09\u300d\u3068\u300c\u8d64\u8272\uff08\u30ea\u30b9\u30af\u30fb\u8105\u5a01\uff09\u300d\u306b\u8272\u5206\u3051\u304c\u3067\u304d\u307e\u3059\u3002\u8996\u899a\u7684\u306b\u308f\u304b\u308a\u3084\u3059\u3044\u5206\u6790\u56f3\u304c\u4f5c\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u753b\u50cf\u30c7\u30fc\u30bf\u3068\u3057\u3066\u4fdd\u5b58<\/strong> <br>\u4f5c\u6210\u3057\u305f\u56f3\u8868\u306f\u300c\u753b\u50cf\u3068\u3057\u3066\u4fdd\u5b58\u300d\u30dc\u30bf\u30f3\u3092\u62bc\u3059\u3060\u3051\u3067\u3001\u9ad8\u753b\u8cea\u306aPNG\u753b\u50cf\u3068\u3057\u3066\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u307e\u3059\u3002<br>\u305d\u306e\u307e\u307e\u8cc7\u6599\u3084\u30d6\u30ed\u30b0\u8a18\u4e8b\u306b\u8cbc\u308a\u4ed8\u3051\u3066\u4f7f\u7528\u3067\u304d\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\u306e\u5165\u529b\u6b04\u3001\u307e\u305f\u306f\u30d7\u30ec\u30d3\u30e5\u30fc\u753b\u9762\u306e\u6587\u5b57\u3092\u76f4\u63a5\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068\u7de8\u96c6\u30e2\u30fc\u30c9\u306b\u306a\u308a\u307e\u3059\u3002<br>\u6587\u5b57\u3092\u5165\u529b\u3057\u3066\u30a8\u30f3\u30bf\u30fc\u30ad\u30fc\u3092\u62bc\u305b\u3070\u78ba\u5b9a\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-3\">\u9805\u76ee\u306e\u8ffd\u52a0\u3068\u524a\u9664<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u8ffd\u52a0:<\/strong> \u5404\u30a8\u30ea\u30a2\u306e\u4e0b\u306b\u3042\u308b\u300c\uff0b\u9805\u76ee\u3092\u8ffd\u52a0\u300d\u30dc\u30bf\u30f3\u3092\u62bc\u3059\u3068\u3001\u65b0\u3057\u3044\u884c\u304c\u5897\u3048\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u524a\u9664:<\/strong> \u9805\u76ee\u306b\u30de\u30a6\u30b9\u30ab\u30fc\u30bd\u30eb\u3092\u5408\u308f\u305b\u308b\u3068\uff08\u30b9\u30de\u30db\u306e\u5834\u5408\u306f\u30bf\u30c3\u30d7\u3059\u308b\u3068\uff09\u3001\u53f3\u5074\u306b\u300c\u00d7\u300d\u30dc\u30bf\u30f3\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u3092\u62bc\u3059\u3068\u524a\u9664\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-4\">\u8272\u5206\u3051\u6a5f\u80fd\uff08\u91cd\u8981\uff09<\/h3>\n\n\n\n<p>\u5404\u9805\u76ee\u306e\u5de6\u5074\u306e\u30de\u30fc\u30af\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002\u30af\u30ea\u30c3\u30af\u3059\u308b\u305f\u3073\u306b\u8272\u304c\u5207\u308a\u66ff\u308f\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u9ed2\u8272:<\/strong> \u901a\u5e38\uff08\u4e2d\u7acb\u7684\u306a\u4e8b\u5b9f\uff09<\/li>\n\n\n\n<li><strong>\u9752\u8272:<\/strong> \u30c1\u30e3\u30f3\u30b9\uff08\u81ea\u793e\u306b\u3068\u3063\u3066\u306e\u6a5f\u4f1a\u30fb\u30d7\u30e9\u30b9\u8981\u56e0\uff09<\/li>\n\n\n\n<li><strong>\u8d64\u8272:<\/strong> \u30ea\u30b9\u30af\uff08\u81ea\u793e\u306b\u3068\u3063\u3066\u306e\u8105\u5a01\u30fb\u30de\u30a4\u30ca\u30b9\u8981\u56e0\uff09<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-5\">\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\u3001\u5168\u4f53\u306e\u30ab\u30e9\u30fc\u30c6\u30fc\u30de\uff08\u30d6\u30eb\u30fc\u30fb\u30a4\u30a8\u30ed\u30fc\u30fb\u30e2\u30ce\u30af\u30ed\uff09\u3084\u3001\u6587\u5b57\u306e\u30b5\u30a4\u30ba\u3092\u8abf\u6574\u3067\u304d\u307e\u3059\u3002\u5370\u5237\u7528\u306b\u306f\u30e2\u30ce\u30af\u30ed\u3001Web\u7528\u306b\u306f\u30d6\u30eb\u30fc\u306a\u3069\u3001\u7528\u9014\u306b\u5408\u308f\u305b\u3066\u5909\u66f4\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-6\">PEST\u5206\u6790\u3068\u306f\uff1f<\/h2>\n\n\n\n<p>PEST\u5206\u6790\u3068\u306f\u3001\u81ea\u793e\u3092\u53d6\u308a\u5dfb\u304f\u300c\u30de\u30af\u30ed\u74b0\u5883\uff08\u5916\u90e8\u74b0\u5883\uff09\u300d\u30924\u3064\u306e\u8996\u70b9\u304b\u3089\u6574\u7406\u3057\u3001\u5c06\u6765\u306e\u4e88\u6e2c\u3092\u7acb\u3066\u308b\u305f\u3081\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u3002\u4ee5\u4e0b\u306e4\u3064\u306e\u982d\u6587\u5b57\u3092\u53d6\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-7\">Politics\uff08\u653f\u6cbb\u7684\u8981\u56e0\uff09<\/h3>\n\n\n\n<p>\u6cd5\u5f8b\u3001\u7a0e\u5236\u3001\u88c1\u5224\u5236\u5ea6\u3001\u653f\u5e9c\u306e\u65b9\u91dd\u3001\u56fd\u969b\u7684\u306a\u653f\u6cbb\u52d5\u5411\u306a\u3069\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4f8b\uff1a\u30a4\u30f3\u30dc\u30a4\u30b9\u5236\u5ea6\u306e\u5c0e\u5165\u3001\u6700\u4f4e\u8cc3\u91d1\u306e\u5f15\u304d\u4e0a\u3052\u3001\u8131\u70ad\u7d20\u653f\u7b56\u306e\u5f37\u5316<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-8\">Economy\uff08\u7d4c\u6e08\u7684\u8981\u56e0\uff09<\/h3>\n\n\n\n<p>\u666f\u6c17\u52d5\u5411\u3001\u7269\u4fa1\u3001\u70ba\u66ff\u3001\u91d1\u5229\u3001\u682a\u4fa1\u3001\u8cc3\u91d1\u6c34\u6e96\u306a\u3069\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4f8b\uff1a\u5186\u5b89\u306e\u9032\u884c\u3001\u539f\u6750\u6599\u8cbb\u306e\u9ad8\u9a30\u3001\u30a4\u30f3\u30d0\u30a6\u30f3\u30c9\u9700\u8981\u306e\u56de\u5fa9<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-9\">Society\uff08\u793e\u4f1a\u30fb\u6587\u5316\u7684\u8981\u56e0\uff09<\/h3>\n\n\n\n<p>\u4eba\u53e3\u52d5\u614b\u3001\u6d41\u884c\u3001\u4e16\u8ad6\u3001\u30e9\u30a4\u30d5\u30b9\u30bf\u30a4\u30eb\u3001\u5b97\u6559\u3001\u6559\u80b2\u306a\u3069\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4f8b\uff1a\u5c11\u5b50\u9ad8\u9f62\u5316\u3001\u30bf\u30a4\u30d1\uff08\u6642\u9593\u5bfe\u52b9\u679c\uff09\u91cd\u8996\u306e\u6d88\u8cbb\u3001SDGs\u3078\u306e\u95a2\u5fc3<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-10\">Technology\uff08\u6280\u8853\u7684\u8981\u56e0\uff09<\/h3>\n\n\n\n<p>\u65b0\u6280\u8853\u306e\u767b\u5834\u3001\u30a4\u30f3\u30d5\u30e9\u306e\u5909\u5316\u3001\u7279\u8a31\u3001IT\u5316\u306e\u9032\u5c55\u306a\u3069\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4f8b\uff1a\u751f\u6210AI\u306e\u666e\u53ca\u3001\u81ea\u52d5\u904b\u8ee2\u6280\u8853\u3001\u7269\u6d41\u306e\u81ea\u52d5\u5316<\/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\u4f01\u753b\u66f8\u4f5c\u6210<\/strong> \u5e02\u5834\u306e\u8ffd\u3044\u98a8\u3068\u5411\u304b\u3044\u98a8\u3092\u6574\u7406\u3057\u3001\u8aac\u5f97\u529b\u306e\u3042\u308b\u4e8b\u696d\u8a08\u753b\u3092\u4f5c\u308b\u3068\u304d\u3002<\/li>\n\n\n\n<li><strong>\u65e2\u5b58\u4e8b\u696d\u306e\u6226\u7565\u898b\u76f4\u3057<\/strong> \u58f2\u4e0a\u304c\u4f38\u3073\u60a9\u3093\u3067\u3044\u308b\u539f\u56e0\u304c\u3001\u5e02\u5834\u74b0\u5883\u306e\u5909\u5316\u306b\u3042\u308b\u306e\u304b\u3092\u5206\u6790\u3059\u308b\u3068\u304d\u3002<\/li>\n\n\n\n<li><strong>\u5c31\u8077\u6d3b\u52d5\u30fb\u8ee2\u8077\u6d3b\u52d5<\/strong> \u5fd7\u671b\u3059\u308b\u4f01\u696d\u304c\u5c5e\u3059\u308b\u696d\u754c\u306e\u5c06\u6765\u6027\u3092\u5206\u6790\u3057\u3001\u9762\u63a5\u3067\u306e\u9006\u8cea\u554f\u3084\u5fd7\u671b\u52d5\u6a5f\u306b\u539a\u307f\u3092\u6301\u305f\u305b\u305f\u3044\u3068\u304d\u3002<\/li>\n\n\n\n<li><strong>\u30d6\u30ed\u30b0\u3084\u8a18\u4e8b\u306e\u4f5c\u6210<\/strong> \u7279\u5b9a\u306e\u696d\u754c\u52d5\u5411\u3092\u89e3\u8aac\u3059\u308b\u8a18\u4e8b\u3067\u3001\u8996\u899a\u7684\u306b\u308f\u304b\u308a\u3084\u3059\u3044\u56f3\u89e3\u3092\u633f\u5165\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. \u5165\u529b\u3057\u305f\u30c7\u30fc\u30bf\u306f\u5916\u90e8\u306b\u6f0f\u308c\u307e\u305b\u3093\u304b\uff1f<\/strong> <br>A. \u3044\u3044\u3048\u3001\u5165\u529b\u3055\u308c\u305f\u30c7\u30fc\u30bf\u306f\u304a\u4f7f\u3044\u306e\u30d6\u30e9\u30a6\u30b6\u5185\u3067\u306e\u307f\u51e6\u7406\u3055\u308c\u307e\u3059\u3002\u5f53\u30b5\u30a4\u30c8\u306e\u30b5\u30fc\u30d0\u30fc\u306b\u9001\u4fe1\u30fb\u4fdd\u5b58\u3055\u308c\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u306e\u3067\u3001\u6a5f\u5bc6\u60c5\u5831\u3092\u542b\u3080\u5206\u6790\u3067\u3082\u5b89\u5fc3\u3057\u3066\u3054\u5229\u7528\u3044\u305f\u3060\u3051\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>Q. \u30b9\u30de\u30db\u3067\u3082\u4f7f\u3048\u307e\u3059\u304b\uff1f<\/strong> <br>A. \u306f\u3044\u3001\u30b9\u30de\u30fc\u30c8\u30d5\u30a9\u30f3\u3084\u30bf\u30d6\u30ec\u30c3\u30c8\u3067\u3082\u4f5c\u6210\u30fb\u4fdd\u5b58\u304c\u53ef\u80fd\u3067\u3059\u3002\u305f\u3060\u3057\u3001\u753b\u9762\u30b5\u30a4\u30ba\u306e\u95a2\u4fc2\u4e0a\u3001PC\u3067\u306e\u64cd\u4f5c\u3092\u63a8\u5968\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>Q. \u4f5c\u6210\u3057\u305f\u753b\u50cf\u306f\u5546\u7528\u5229\u7528\u3067\u304d\u307e\u3059\u304b\uff1f<\/strong> <br>A. \u306f\u3044\u3001\u4f5c\u6210\u3055\u308c\u305f\u753b\u50cf\u306e\u8457\u4f5c\u6a29\u306f\u4f5c\u6210\u8005\u3054\u672c\u4eba\u306b\u5e30\u5c5e\u3057\u307e\u3059\u3002\u30d7\u30ec\u30bc\u30f3\u8cc7\u6599\u3001Web\u30b5\u30a4\u30c8\u3001\u51fa\u7248\u7269\u306a\u3069\u3001\u5546\u7528\u30fb\u975e\u5546\u7528\u554f\u308f\u305a\u3054\u81ea\u7531\u306b\u304a\u4f7f\u3044\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ud83d\udcca PEST\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(\u30c1\u30e3\u30f3\u30b9) \u2192 \u8d64(\u30ea\u30b9\u30af)\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":9055,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13,41,40,42],"tags":[],"class_list":{"0":"post-9040","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\/9040","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=9040"}],"version-history":[{"count":20,"href":"https:\/\/rakkokeyword.com\/techo\/wp-json\/wp\/v2\/posts\/9040\/revisions"}],"predecessor-version":[{"id":9098,"href":"https:\/\/rakkokeyword.com\/techo\/wp-json\/wp\/v2\/posts\/9040\/revisions\/9098"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rakkokeyword.com\/techo\/wp-json\/wp\/v2\/media\/9055"}],"wp:attachment":[{"href":"https:\/\/rakkokeyword.com\/techo\/wp-json\/wp\/v2\/media?parent=9040"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rakkokeyword.com\/techo\/wp-json\/wp\/v2\/categories?post=9040"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rakkokeyword.com\/techo\/wp-json\/wp\/v2\/tags?post=9040"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}