{"id":3028,"date":"2025-09-25T12:04:27","date_gmt":"2025-09-25T12:04:27","guid":{"rendered":"https:\/\/yamuparkoti.com\/?page_id=3028"},"modified":"2025-09-25T16:35:26","modified_gmt":"2025-09-25T16:35:26","slug":"compress-jpg-file","status":"publish","type":"page","link":"https:\/\/yamuparkoti.com\/ja\/compress-jpg-file\/","title":{"rendered":"Jpg\u30d5\u30a1\u30a4\u30eb\u3092\u5727\u7e2e"},"content":{"rendered":"<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n    <div class=\"wp-block-bplugins-custom-html\" id='bPluginsCustomHtml-1'>\r\n    <!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Image Compressor Pro | WordPress Plugin<\/title>\n    <link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n    <link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@300;400;500;600;700&#038;display=swap\" rel=\"stylesheet\">\n    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jszip\/3.10.1\/jszip.min.js\"><\/script>\n    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/FileSaver.js\/2.0.5\/FileSaver.min.js\"><\/script>\n    <style>\n        :root {\n            --primary-color: #4a6cf7;\n            --primary-light: #e8edff;\n            --secondary-color: #10b981;\n            --dark-color: #1e293b;\n            --light-color: #f8fafc;\n            --gray-color: #64748b;\n            --border-radius: 8px;\n            --box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n            --transition: all 0.3s ease;\n        }\n\n        * {\n            margin: 0;\n            padding: 0;\n            box-sizing: border-box;\n        }\n\n        body {\n            font-family: 'Inter', sans-serif;\n            line-height: 1.6;\n            color: var(--dark-color);\n            background-color: #f1f5f9;\n            padding: 20px;\n        }\n\n        .container {\n            max-width: 1200px;\n            margin: 0 auto;\n            background: white;\n            border-radius: var(--border-radius);\n            box-shadow: var(--box-shadow);\n            overflow: hidden;\n        }\n\n        header {\n            background: var(--dark-color);\n            color: white;\n            padding: 20px 30px;\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n        }\n\n        .logo {\n            display: flex;\n            align-items: center;\n            gap: 10px;\n        }\n\n        .logo-icon {\n            width: 32px;\n            height: 32px;\n            background: var(--primary-color);\n            border-radius: 6px;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n        }\n\n        .logo-text {\n            font-size: 1.5rem;\n            font-weight: 700;\n        }\n\n        .tabs {\n            display: flex;\n            background: var(--light-color);\n            border-bottom: 1px solid #e2e8f0;\n        }\n\n        .tab {\n            padding: 15px 25px;\n            cursor: pointer;\n            font-weight: 500;\n            border-bottom: 3px solid transparent;\n            transition: var(--transition);\n        }\n\n        .tab.active {\n            color: var(--primary-color);\n            border-bottom-color: var(--primary-color);\n        }\n\n        .tab:hover:not(.active) {\n            background: #f1f5f9;\n        }\n\n        .tab-content {\n            display: none;\n            padding: 30px;\n        }\n\n        .tab-content.active {\n            display: block;\n        }\n\n        .upload-area {\n            border: 2px dashed #cbd5e1;\n            border-radius: var(--border-radius);\n            padding: 40px 20px;\n            text-align: center;\n            margin-bottom: 30px;\n            transition: var(--transition);\n            background: #f8fafc;\n        }\n\n        .upload-area.highlight {\n            border-color: var(--primary-color);\n            background: var(--primary-light);\n        }\n\n        .upload-icon {\n            font-size: 48px;\n            color: var(--gray-color);\n            margin-bottom: 15px;\n        }\n\n        .upload-text {\n            margin-bottom: 20px;\n            color: var(--gray-color);\n        }\n\n        .upload-btn {\n            background: var(--primary-color);\n            color: white;\n            border: none;\n            padding: 12px 24px;\n            border-radius: var(--border-radius);\n            font-weight: 500;\n            cursor: pointer;\n            transition: var(--transition);\n            display: inline-block;\n        }\n\n        .upload-btn:hover {\n            background: #3a5ce5;\n            transform: translateY(-2px);\n        }\n\n        .compression-controls {\n            background: var(--light-color);\n            padding: 20px;\n            border-radius: var(--border-radius);\n            margin-bottom: 30px;\n        }\n\n        .control-group {\n            margin-bottom: 15px;\n        }\n\n        .control-label {\n            display: flex;\n            justify-content: space-between;\n            margin-bottom: 8px;\n        }\n\n        .quality-value {\n            font-weight: 600;\n            color: var(--primary-color);\n        }\n\n        .slider {\n            width: 100%;\n            height: 6px;\n            -webkit-appearance: none;\n            background: #e2e8f0;\n            border-radius: 3px;\n            outline: none;\n        }\n\n        .slider::-webkit-slider-thumb {\n            -webkit-appearance: none;\n            width: 18px;\n            height: 18px;\n            border-radius: 50%;\n            background: var(--primary-color);\n            cursor: pointer;\n        }\n\n        .queue-header {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            margin-bottom: 20px;\n        }\n\n        .queue-title {\n            font-size: 1.2rem;\n            font-weight: 600;\n        }\n\n        .queue-actions {\n            display: flex;\n            gap: 10px;\n        }\n\n        .action-btn {\n            padding: 8px 16px;\n            border-radius: var(--border-radius);\n            font-weight: 500;\n            cursor: pointer;\n            transition: var(--transition);\n            border: 1px solid #cbd5e1;\n            background: white;\n        }\n\n        .action-btn.primary {\n            background: var(--primary-color);\n            color: white;\n            border-color: var(--primary-color);\n        }\n\n        .action-btn.danger {\n            background: #ef4444;\n            color: white;\n            border-color: #ef4444;\n        }\n\n        .action-btn:hover {\n            transform: translateY(-2px);\n            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\n        }\n\n        .image-grid {\n            display: grid;\n            grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));\n            gap: 20px;\n        }\n\n        .image-card {\n            border: 1px solid #e2e8f0;\n            border-radius: var(--border-radius);\n            overflow: hidden;\n            background: white;\n            transition: var(--transition);\n        }\n\n        .image-card:hover {\n            transform: translateY(-5px);\n            box-shadow: var(--box-shadow);\n        }\n\n        .image-preview {\n            height: 180px;\n            overflow: hidden;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            background: #f8fafc;\n        }\n\n        .image-preview img {\n            max-width: 100%;\n            max-height: 100%;\n            object-fit: contain;\n        }\n\n        .image-info {\n            padding: 15px;\n        }\n\n        .image-name {\n            font-weight: 600;\n            margin-bottom: 10px;\n            white-space: nowrap;\n            overflow: hidden;\n            text-overflow: ellipsis;\n        }\n\n        .image-stats {\n            display: flex;\n            justify-content: space-between;\n            margin-bottom: 15px;\n            font-size: 0.9rem;\n        }\n\n        .original-size {\n            color: var(--gray-color);\n        }\n\n        .compressed-size {\n            color: var(--secondary-color);\n            font-weight: 600;\n        }\n\n        .compression-ratio {\n            color: var(--primary-color);\n            font-weight: 600;\n        }\n\n        .image-actions {\n            display: flex;\n            gap: 8px;\n        }\n\n        .image-btn {\n            flex: 1;\n            padding: 8px;\n            border-radius: var(--border-radius);\n            font-size: 0.85rem;\n            text-align: center;\n            cursor: pointer;\n            transition: var(--transition);\n            border: 1px solid #cbd5e1;\n            background: white;\n        }\n\n        .image-btn.primary {\n            background: var(--primary-color);\n            color: white;\n            border-color: var(--primary-color);\n        }\n\n        .image-btn:hover {\n            transform: translateY(-2px);\n        }\n\n        .exif-table {\n            width: 100%;\n            border-collapse: collapse;\n            margin-top: 20px;\n        }\n\n        .exif-table th, .exif-table td {\n            padding: 12px 15px;\n            text-align: left;\n            border-bottom: 1px solid #e2e8f0;\n        }\n\n        .exif-table th {\n            background: #f8fafc;\n            font-weight: 600;\n        }\n\n        .progress-bar {\n            height: 6px;\n            background: #e2e8f0;\n            border-radius: 3px;\n            margin-top: 10px;\n            overflow: hidden;\n        }\n\n        .progress-fill {\n            height: 100%;\n            background: var(--secondary-color);\n            width: 0%;\n            transition: width 0.3s ease;\n        }\n\n        .empty-state {\n            text-align: center;\n            padding: 40px 20px;\n            color: var(--gray-color);\n        }\n\n        .empty-icon {\n            font-size: 48px;\n            margin-bottom: 15px;\n            opacity: 0.5;\n        }\n\n        .notification {\n            position: fixed;\n            top: 20px;\n            right: 20px;\n            padding: 15px 20px;\n            border-radius: var(--border-radius);\n            background: white;\n            box-shadow: var(--box-shadow);\n            display: flex;\n            align-items: center;\n            gap: 10px;\n            transform: translateX(150%);\n            transition: transform 0.3s ease;\n            z-index: 1000;\n        }\n\n        .notification.show {\n            transform: translateX(0);\n        }\n\n        .notification.success {\n            border-left: 4px solid var(--secondary-color);\n        }\n\n        .notification.error {\n            border-left: 4px solid #ef4444;\n        }\n\n        .notification-icon {\n            font-size: 20px;\n        }\n\n        .notification.success .notification-icon {\n            color: var(--secondary-color);\n        }\n\n        .notification.error .notification-icon {\n            color: #ef4444;\n        }\n\n        @media (max-width: 768px) {\n            .tabs {\n                flex-wrap: wrap;\n            }\n            \n            .tab {\n                flex: 1;\n                min-width: 120px;\n                text-align: center;\n            }\n            \n            .image-grid {\n                grid-template-columns: 1fr;\n            }\n            \n            .queue-header {\n                flex-direction: column;\n                gap: 15px;\n                align-items: flex-start;\n            }\n            \n            .queue-actions {\n                width: 100%;\n                justify-content: space-between;\n            }\n            \n            .action-btn {\n                flex: 1;\n                text-align: center;\n            }\n        }\n\n        @media (max-width: 480px) {\n            body {\n                padding: 10px;\n            }\n            \n            header {\n                padding: 15px 20px;\n            }\n            \n            .tab-content {\n                padding: 20px 15px;\n            }\n            \n            .upload-area {\n                padding: 30px 15px;\n            }\n        }\n    <\/style>\n<\/head>\n<body>\n    <div class=\"container\">\n        <header>\n            <div class=\"logo\">\n                <div class=\"logo-icon\">\ud83d\udcf7<\/div>\n                <div class=\"logo-text\">\u753b\u50cf\u5727\u7e2e\u30d7\u30ed<\/div>\n            <\/div>\n            <div class=\"version\">\u30d0\u30fc\u30b8\u30e7\u30f32.1.0<\/div>\n        <\/header>\n        \n        <div class=\"tabs\">\n            <div class=\"tab active\" data-tab=\"compressor\">\u753b\u50cf\u5727\u7e2e\u30c4\u30fc\u30eb<\/div>\n            <div class=\"tab\" data-tab=\"exif\">EXIF\u30d3\u30e5\u30fc\u30a2<\/div>\n        <\/div>\n        \n        <div class=\"tab-content active\" id=\"compressor\">\n            <div class=\"upload-area\" id=\"uploadArea\">\n                <div class=\"upload-icon\">\ud83d\udcc1<\/div>\n                <h2 class=\"upload-text\">Drag &#038; Drop your images here<\/h2>\n                <p class=\"upload-subtext\">JPEG\u3001PNG\u3001WebP \u3092\u30b5\u30dd\u30fc\u30c8\uff08\u6700\u5927 20 \u30d5\u30a1\u30a4\u30eb\uff09<\/p>\n                <input type=\"file\" id=\"fileInput\" multiple accept=\".jpg,.jpeg,.png,.webp\" style=\"display: none;\">\n                <button class=\"upload-btn\" id=\"uploadBtn\">\u30d5\u30a1\u30a4\u30eb\u3092\u9078\u629e<\/button>\n            <\/div>\n            \n            <div class=\"compression-controls\">\n                <div class=\"control-group\">\n                    <div class=\"control-label\">\n                        <span>\u5727\u7e2e\u54c1\u8cea<\/span>\n                        <span class=\"quality-value\" id=\"qualityValue\">80%<\/span>\n                    <\/div>\n                    <input type=\"range\" min=\"0\" max=\"100\" value=\"80\" class=\"slider\" id=\"qualitySlider\">\n                <\/div>\n                \n                <div class=\"control-group\">\n                    <div class=\"control-label\">\n                        <span>\u51fa\u529b\u5f62\u5f0f<\/span>\n                    <\/div>\n                    <select id=\"formatSelect\" class=\"slider\" style=\"width: 100%; padding: 8px; border-radius: var(--border-radius); border: 1px solid #cbd5e1;\">\n                        <option value=\"original\">\u5143\u306e\u5f62\u5f0f\u3092\u7dad\u6301<\/option>\n                        <option value=\"jpeg\">JPEG<\/option>\n                        <option value=\"png\">PNG<\/option>\n                        <option value=\"webp\">\u30a6\u30a7\u30d6P<\/option>\n                    <\/select>\n                <\/div>\n            <\/div>\n            \n            <div class=\"queue-section\">\n                <div class=\"queue-header\">\n                    <h3 class=\"queue-title\">\u5727\u7e2e\u30ad\u30e5\u30fc\uff08<span id=\"fileCount\">0<\/span> \u30d5\u30a1\u30a4\u30eb\uff09<\/h3>\n                    <div class=\"queue-actions\">\n                        <button class=\"action-btn primary\" id=\"downloadAllBtn\">\u3059\u3079\u3066\u3092ZIP\u3068\u3057\u3066\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9<\/button>\n                        <button class=\"action-btn danger\" id=\"clearQueueBtn\">\u30ad\u30e5\u30fc\u3092\u30af\u30ea\u30a2<\/button>\n                    <\/div>\n                <\/div>\n                \n                <div class=\"image-grid\" id=\"imageGrid\">\n                    <div class=\"empty-state\" id=\"emptyState\">\n                        <div class=\"empty-icon\">\ud83d\udcf7<\/div>\n                        <p>\u307e\u3060\u753b\u50cf\u304c\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u30c9\u30e9\u30c3\u30b0\uff06\u30c9\u30ed\u30c3\u30d7\u3059\u308b\u304b\u3001\u4e0a\u306e\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u958b\u59cb\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        \n        <div class=\"tab-content\" id=\"exif\">\n            <div class=\"upload-area\">\n                <div class=\"upload-icon\">\ud83d\udd0d<\/div>\n                <h2 class=\"upload-text\">EXIF\u30c7\u30fc\u30bf\u3092\u8868\u793a\u3059\u308b\u306b\u306f\u753b\u50cf\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044<\/h2>\n                <p class=\"upload-subtext\">\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u753b\u50cf\u5f62\u5f0f\u306eEXIF\u30c7\u30fc\u30bf\u304c\u8868\u793a\u3055\u308c\u307e\u3059<\/p>\n                <input type=\"file\" id=\"exifFileInput\" accept=\".jpg,.jpeg,.png,.tiff\" style=\"display: none;\">\n                <button class=\"upload-btn\" id=\"exifUploadBtn\">\u753b\u50cf\u3092\u9078\u629e<\/button>\n            <\/div>\n            \n            <div id=\"exifData\" style=\"display: none;\">\n                <h3>EXIF\u30e1\u30bf\u30c7\u30fc\u30bf<\/h3>\n                <table class=\"exif-table\">\n                    <thead>\n                        <tr>\n                            <th>\u8ca1\u7523<\/th>\n                            <th>\u4fa1\u5024<\/th>\n                        <\/tr>\n                    <\/thead>\n                    <tbody id=\"exifTableBody\">\n                        <!-- EXIF data will be populated here -->\n                    <\/tbody>\n                <\/table>\n            <\/div>\n        <\/div>\n    <\/div>\n    \n    <div class=\"notification\" id=\"notification\">\n        <div class=\"notification-icon\">\u2713<\/div>\n        <div class=\"notification-text\">\u64cd\u4f5c\u306f\u6b63\u5e38\u306b\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002<\/div>\n    <\/div>\n\n    <script>\n        \/\/ DOM Elements\n        const uploadArea = document.getElementById('uploadArea');\n        const fileInput = document.getElementById('fileInput');\n        const uploadBtn = document.getElementById('uploadBtn');\n        const qualitySlider = document.getElementById('qualitySlider');\n        const qualityValue = document.getElementById('qualityValue');\n        const formatSelect = document.getElementById('formatSelect');\n        const imageGrid = document.getElementById('imageGrid');\n        const emptyState = document.getElementById('emptyState');\n        const fileCount = document.getElementById('fileCount');\n        const downloadAllBtn = document.getElementById('downloadAllBtn');\n        const clearQueueBtn = document.getElementById('clearQueueBtn');\n        const tabs = document.querySelectorAll('.tab');\n        const tabContents = document.querySelectorAll('.tab-content');\n        const exifFileInput = document.getElementById('exifFileInput');\n        const exifUploadBtn = document.getElementById('exifUploadBtn');\n        const exifData = document.getElementById('exifData');\n        const exifTableBody = document.getElementById('exifTableBody');\n        const notification = document.getElementById('notification');\n\n        \/\/ State\n        let files = [];\n        let compressedFiles = [];\n        let compressionQuality = 80;\n\n        \/\/ Event Listeners\n        uploadBtn.addEventListener('click', () => fileInput.click());\n        fileInput.addEventListener('change', handleFileSelect);\n        qualitySlider.addEventListener('input', updateQuality);\n        downloadAllBtn.addEventListener('click', downloadAllAsZip);\n        clearQueueBtn.addEventListener('click', clearQueue);\n        exifUploadBtn.addEventListener('click', () => exifFileInput.click());\n        exifFileInput.addEventListener('change', handleExifFileSelect);\n        formatSelect.addEventListener('change', handleFormatChange);\n\n        \/\/ Drag and Drop\n        ['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => {\n            uploadArea.addEventListener(eventName, preventDefaults, false);\n        });\n\n        function preventDefaults(e) {\n            e.preventDefault();\n            e.stopPropagation();\n        }\n\n        ['dragenter', 'dragover'].forEach(eventName => {\n            uploadArea.addEventListener(eventName, highlight, false);\n        });\n\n        ['dragleave', 'drop'].forEach(eventName => {\n            uploadArea.addEventListener(eventName, unhighlight, false);\n        });\n\n        function highlight() {\n            uploadArea.classList.add('highlight');\n        }\n\n        function unhighlight() {\n            uploadArea.classList.remove('highlight');\n        }\n\n        uploadArea.addEventListener('drop', handleDrop, false);\n\n        function handleDrop(e) {\n            const dt = e.dataTransfer;\n            const droppedFiles = dt.files;\n            handleFiles(droppedFiles);\n        }\n\n        \/\/ Tab switching\n        tabs.forEach(tab => {\n            tab.addEventListener('click', () => {\n                const tabId = tab.getAttribute('data-tab');\n                \n                tabs.forEach(t => t.classList.remove('active'));\n                tabContents.forEach(tc => tc.classList.remove('active'));\n                \n                tab.classList.add('active');\n                document.getElementById(tabId).classList.add('active');\n            });\n        });\n\n        \/\/ Functions\n        function handleFileSelect(e) {\n            const selectedFiles = e.target.files;\n            handleFiles(selectedFiles);\n        }\n\n        function handleFiles(selectedFiles) {\n            if (files.length + selectedFiles.length > 20) {\n                showNotification('Maximum 20 files allowed. Please remove some files before adding more.', 'error');\n                return;\n            }\n\n            for (let i = 0; i < selectedFiles.length; i++) {\n                const file = selectedFiles[i];\n                if (isValidFileType(file)) {\n                    files.push(file);\n                    processFile(file);\n                } else {\n                    showNotification(`File \"${file.name}\" is not a supported format.`, 'error');\n                }\n            }\n\n            updateFileCount();\n            fileInput.value = ''; \/\/ Reset input to allow selecting same files again\n        }\n\n        function isValidFileType(file) {\n            const validTypes = ['image\/jpeg', 'image\/png', 'image\/webp'];\n            return validTypes.includes(file.type);\n        }\n\n        function processFile(file) {\n            \/\/ Hide empty state\n            emptyState.style.display = 'none';\n            \n            \/\/ Create image card\n            const card = document.createElement('div');\n            card.className = 'image-card';\n            card.id = `card-${file.name.replace(\/\\s\/g, '-')}`;\n            \n            \/\/ Create preview\n            const preview = document.createElement('div');\n            preview.className = 'image-preview';\n            \n            const img = document.createElement('img');\n            img.src = URL.createObjectURL(file);\n            preview.appendChild(img);\n            \n            \/\/ Create file info\n            const info = document.createElement('div');\n            info.className = 'image-info';\n            \n            const name = document.createElement('div');\n            name.className = 'image-name';\n            name.textContent = file.name;\n            \n            const stats = document.createElement('div');\n            stats.className = 'image-stats';\n            \n            const originalSize = document.createElement('div');\n            originalSize.className = 'original-size';\n            originalSize.textContent = `Original: ${formatFileSize(file.size)}`;\n            \n            const compressedSize = document.createElement('div');\n            compressedSize.className = 'compressed-size';\n            compressedSize.textContent = 'Compressed: --';\n            compressedSize.id = `compressed-${file.name.replace(\/\\s\/g, '-')}`;\n            \n            const ratio = document.createElement('div');\n            ratio.className = 'compression-ratio';\n            ratio.textContent = '--% smaller';\n            ratio.id = `ratio-${file.name.replace(\/\\s\/g, '-')}`;\n            \n            stats.appendChild(originalSize);\n            stats.appendChild(compressedSize);\n            stats.appendChild(ratio);\n            \n            \/\/ Create actions\n            const actions = document.createElement('div');\n            actions.className = 'image-actions';\n            \n            const downloadBtn = document.createElement('button');\n            downloadBtn.className = 'image-btn primary';\n            downloadBtn.textContent = 'Download';\n            downloadBtn.addEventListener('click', () => downloadFile(file));\n            \n            const removeBtn = document.createElement('button');\n            removeBtn.className = 'image-btn';\n            removeBtn.textContent = 'Remove';\n            removeBtn.addEventListener('click', () => removeFile(file, card));\n            \n            actions.appendChild(downloadBtn);\n            actions.appendChild(removeBtn);\n            \n            \/\/ Add progress bar\n            const progressBar = document.createElement('div');\n            progressBar.className = 'progress-bar';\n            const progressFill = document.createElement('div');\n            progressFill.className = 'progress-fill';\n            progressFill.id = `progress-${file.name.replace(\/\\s\/g, '-')}`;\n            progressBar.appendChild(progressFill);\n            \n            \/\/ Assemble card\n            info.appendChild(name);\n            info.appendChild(stats);\n            info.appendChild(progressBar);\n            info.appendChild(actions);\n            \n            card.appendChild(preview);\n            card.appendChild(info);\n            \n            imageGrid.appendChild(card);\n            \n            \/\/ Compress the file\n            compressFile(file, compressionQuality);\n        }\n\n        function compressFile(file, quality) {\n            const progressFill = document.getElementById(`progress-${file.name.replace(\/\\s\/g, '-')}`);\n            \n            \/\/ For images, use Canvas API for compression\n            const reader = new FileReader();\n            \n            reader.onload = function(e) {\n                const img = new Image();\n                img.src = e.target.result;\n                \n                img.onload = function() {\n                    const canvas = document.createElement('canvas');\n                    const ctx = canvas.getContext('2d');\n                    \n                    \/\/ Calculate new dimensions if needed (maintain aspect ratio)\n                    let width = img.width;\n                    let height = img.height;\n                    const maxDimension = 2000; \/\/ Max width\/height\n                    \n                    if (width > maxDimension || height > maxDimension) {\n                        if (width > height) {\n                            height = Math.round((height * maxDimension) \/ width);\n                            width = maxDimension;\n                        } else {\n                            width = Math.round((width * maxDimension) \/ height);\n                            height = maxDimension;\n                        }\n                    }\n                    \n                    canvas.width = width;\n                    canvas.height = height;\n                    \n                    \/\/ Draw image on canvas\n                    ctx.drawImage(img, 0, 0, width, height);\n                    \n                    \/\/ Get the output format\n                    let outputFormat = 'image\/jpeg';\n                    if (formatSelect.value === 'png') {\n                        outputFormat = 'image\/png';\n                    } else if (formatSelect.value === 'webp') {\n                        outputFormat = 'image\/webp';\n                    } else if (formatSelect.value === 'original') {\n                        \/\/ Keep the original format\n                        outputFormat = file.type;\n                    }\n                    \n                    \/\/ Convert to blob with quality setting\n                    canvas.toBlob((blob) => {\n                        progressFill.style.width = '100%';\n                        updateFileStats(file, blob.size);\n                        \n                        \/\/ Determine file extension based on output format\n                        let fileExtension = '.jpg';\n                        if (outputFormat === 'image\/png') fileExtension = '.png';\n                        if (outputFormat === 'image\/webp') fileExtension = '.webp';\n                        \n                        \/\/ Get original filename without extension\n                        const originalName = file.name.substring(0, file.name.lastIndexOf('.'));\n                        \n                        compressedFiles.push({\n                            original: file,\n                            compressed: blob,\n                            name: originalName + fileExtension\n                        });\n                    }, outputFormat, quality \/ 100);\n                };\n            };\n            \n            reader.readAsDataURL(file);\n            \n            \/\/ Simulate progress (in a real implementation, this would be based on actual compression progress)\n            let progress = 0;\n            const progressInterval = setInterval(() => {\n                progress += 5;\n                progressFill.style.width = `${progress}%`;\n                \n                if (progress >= 90) {\n                    clearInterval(progressInterval);\n                }\n            }, 100);\n        }\n\n        function updateFileStats(file, compressedSize) {\n            const compressedElement = document.getElementById(`compressed-${file.name.replace(\/\\s\/g, '-')}`);\n            const ratioElement = document.getElementById(`ratio-${file.name.replace(\/\\s\/g, '-')}`);\n            \n            compressedElement.textContent = `Compressed: ${formatFileSize(compressedSize)}`;\n            \n            const ratio = ((file.size - compressedSize) \/ file.size * 100).toFixed(1);\n            ratioElement.textContent = `${ratio}% smaller`;\n            \n            if (parseFloat(ratio) > 0) {\n                ratioElement.style.color = 'var(--secondary-color)';\n            } else {\n                ratioElement.style.color = '#ef4444';\n            }\n        }\n\n        function updateQuality() {\n            compressionQuality = qualitySlider.value;\n            qualityValue.textContent = `${compressionQuality}%`;\n            \n            \/\/ Recompress all files with new quality setting\n            if (files.length > 0) {\n                compressedFiles = [];\n                files.forEach(file => {\n                    const progressFill = document.getElementById(`progress-${file.name.replace(\/\\s\/g, '-')}`);\n                    progressFill.style.width = '0%';\n                    compressFile(file, compressionQuality);\n                });\n            }\n        }\n\n        function handleFormatChange() {\n            \/\/ Recompress all files with new format setting\n            if (files.length > 0) {\n                compressedFiles = [];\n                files.forEach(file => {\n                    const progressFill = document.getElementById(`progress-${file.name.replace(\/\\s\/g, '-')}`);\n                    progressFill.style.width = '0%';\n                    compressFile(file, compressionQuality);\n                });\n            }\n        }\n\n        function downloadFile(file) {\n            const compressedFile = compressedFiles.find(f => f.original === file);\n            \n            if (compressedFile) {\n                const url = URL.createObjectURL(compressedFile.compressed);\n                const a = document.createElement('a');\n                a.href = url;\n                a.download = compressedFile.name;\n                document.body.appendChild(a);\n                a.click();\n                document.body.removeChild(a);\n                URL.revokeObjectURL(url);\n                \n                showNotification(`Downloaded ${compressedFile.name} successfully!`);\n            } else {\n                showNotification(`File ${file.name} is not ready yet. Please wait.`, 'error');\n            }\n        }\n\n        function downloadAllAsZip() {\n            if (compressedFiles.length === 0) {\n                showNotification('No files to download.', 'error');\n                return;\n            }\n            \n            const zip = new JSZip();\n            let addedFiles = 0;\n            \n            compressedFiles.forEach(fileObj => {\n                zip.file(fileObj.name, fileObj.compressed);\n                addedFiles++;\n            });\n            \n            zip.generateAsync({ type: 'blob' })\n                .then(blob => {\n                    saveAs(blob, 'compressed_images.zip');\n                    showNotification(`Downloaded ${addedFiles} files as ZIP successfully!`);\n                })\n                .catch(err => {\n                    console.error('Error creating ZIP:', err);\n                    showNotification('Error creating ZIP file.', 'error');\n                });\n        }\n\n        function removeFile(file, card) {\n            files = files.filter(f => f !== file);\n            compressedFiles = compressedFiles.filter(f => f.original !== file);\n            card.remove();\n            \n            if (files.length === 0) {\n                emptyState.style.display = 'block';\n            }\n            \n            updateFileCount();\n        }\n\n        function clearQueue() {\n            if (files.length === 0) {\n                showNotification('Queue is already empty.', 'error');\n                return;\n            }\n            \n            files = [];\n            compressedFiles = [];\n            imageGrid.innerHTML = '';\n            emptyState.style.display = 'block';\n            updateFileCount();\n            \n            showNotification('Queue cleared successfully.');\n        }\n\n        function updateFileCount() {\n            fileCount.textContent = files.length;\n        }\n\n        function formatFileSize(bytes) {\n            if (bytes === 0) return '0 Bytes';\n            \n            const k = 1024;\n            const sizes = ['Bytes', 'KB', 'MB', 'GB'];\n            const i = Math.floor(Math.log(bytes) \/ Math.log(k));\n            \n            return parseFloat((bytes \/ Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n        }\n\n        function showNotification(message, type = 'success') {\n            const notificationText = notification.querySelector('.notification-text');\n            notificationText.textContent = message;\n            \n            notification.className = 'notification';\n            notification.classList.add(type);\n            \n            notification.classList.add('show');\n            \n            setTimeout(() => {\n                notification.classList.remove('show');\n            }, 3000);\n        }\n\n        \/\/ EXIF Viewer functionality\n        function handleExifFileSelect(e) {\n            const file = e.target.files[0];\n            \n            if (!file) return;\n            \n            if (!file.type.match(\/image\\\/(jpeg|png|tiff)\/)) {\n                showNotification('Please select a JPEG, PNG, or TIFF image for EXIF data.', 'error');\n                return;\n            }\n            \n            \/\/ In a real implementation, you would use a library like exif-js to read EXIF data\n            \/\/ For this demo, we'll simulate EXIF data\n            \n            const simulatedExifData = {\n                'Make': 'Canon',\n                'Model': 'EOS 5D Mark IV',\n                'Software': 'Adobe Photoshop CC 2021',\n                'DateTime': '2023:05:15 14:30:22',\n                'ExposureTime': '1\/250',\n                'FNumber': 'f\/5.6',\n                'ISOSpeedRatings': '200',\n                'FocalLength': '50 mm',\n                'LensModel': 'EF50mm f\/1.8 STM',\n                'ImageWidth': '6720',\n                'ImageHeight': '4480',\n                'GPSLatitude': '40.7128\u00b0 N',\n                'GPSLongitude': '74.0060\u00b0 W'\n            };\n            \n            displayExifData(simulatedExifData);\n            exifFileInput.value = ''; \/\/ Reset input\n        }\n\n        function displayExifData(data) {\n            exifTableBody.innerHTML = '';\n            \n            for (const [key, value] of Object.entries(data)) {\n                const row = document.createElement('tr');\n                \n                const keyCell = document.createElement('td');\n                keyCell.textContent = key;\n                \n                const valueCell = document.createElement('td');\n                valueCell.textContent = value;\n                \n                row.appendChild(keyCell);\n                row.appendChild(valueCell);\n                exifTableBody.appendChild(row);\n            }\n            \n            exifData.style.display = 'block';\n        }\n    <\/script>\n<\/body>\n<\/html>    <\/div>\r\n    \n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n\n<div class=\"wp-block-kadence-column kadence-column3028_bdd3d6-08\"><div class=\"kt-inside-inner-col\">\n\n<div class=\"wp-block-kadence-column kadence-column3028_fa1306-c8\"><div class=\"kt-inside-inner-col\"><\/div><\/div>\n\n\n\n<div class=\"wp-block-kadence-column kadence-column3028_9922a7-9a\"><div class=\"kt-inside-inner-col\">\n<h2 class=\"wp-block-heading\"><strong>\ud83d\udcc9 JPG\u30d5\u30a1\u30a4\u30eb\u3092\u30aa\u30f3\u30e9\u30a4\u30f3\u3067\u5727\u7e2e \u2013 \u7121\u6599\u3001\u9ad8\u901f\u3001\u4fe1\u983c\u6027\u3042\u308a<\/strong><\/h2>\n\n\n\n<p>\u6b63\u76f4\u306b\u8a00\u3046\u3068\u3001\u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u306f\u57fa\u672c\u7684\u306b\u5199\u771f\u3067\u52d5\u3044\u3066\u3044\u308b\u3093\u3067\u3059\u3002 <\/p>\n\n\n\n<p>\u306e\u305f\u3081\u306b <a href=\"https:\/\/shopify.pxf.io\/AWzz5D\" data-type=\"link\" data-id=\"https:\/\/shopify.pxf.io\/AWzz5D\" target=\"_blank\" rel=\"noopener\">\u30b7\u30e7\u30c3\u30d4\u30d5\u30a1\u30a4<\/a>\u3001\u3044\u3064\u3067\u3082 jpg \u30d5\u30a1\u30a4\u30eb\u3092\u5727\u7e2e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>It doesn&#8217;t matter if you&#8217;re working with a small business, writing a blog, or just sharing your pet&#8217;s picture with family\u2013 everything boils down to photos. And compress JPEG file? Well, they&#8217;re absolutely ubiquitous.<\/p>\n\n\n\n<p>But here&#8217;s the thing: those files can be absurdly massive. I recall trying to upload a vacation snap that was 12 MB. Twelve! It felt like my Wi-Fi aged ten years just watching it load.<\/p>\n\n\n\n<p>Large images slow websites down, eat up your phone storage, and sharing them makes you feel like you&#8217;re back in the dial-up days. So yes, making them smaller is definitely the way to go.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\ud83d\udd0e \u300cJPG \u30d5\u30a1\u30a4\u30eb\u3092\u5727\u7e2e\u3059\u308b\u300d\u3068\u306f\u3069\u3046\u3044\u3046\u610f\u5473\u3067\u3059\u304b?<\/strong><\/h2>\n\n\n\n<p>\u65c5\u884c\u306e\u305f\u3081\u306b\u8377\u7269\u3092\u5168\u90e8\u8a70\u3081\u8fbc\u3093\u3060\u306e\u306b\u3001\u30b9\u30fc\u30c4\u30b1\u30fc\u30b9\u306b\u3082\u3063\u3068\u30b9\u30da\u30fc\u30b9\u304c\u5fc5\u8981\u306b\u306a\u3063\u305f\u3089\u3069\u3046\u306a\u308b\u304b\u60f3\u50cf\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\uff01JPG\u30d5\u30a1\u30a4\u30eb\u306e\u5727\u7e2e\u6280\u8853\u3082\u4f3c\u305f\u3088\u3046\u306a\u3082\u306e\u3067\u3001\u753b\u8cea\u3092\u640d\u306a\u3046\u3053\u3068\u306a\u304f\u30d5\u30a1\u30a4\u30eb\u30b5\u30a4\u30ba\u3092\u7e2e\u5c0f\u3067\u304d\u308b\u306e\u3067\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large has-custom-border\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/yamuparkoti.com\/wp-content\/uploads\/2025\/09\/compress-jpg-file-2-1024x576.png\" alt=\"compress jpg file\" class=\"wp-image-3078\" style=\"border-width:1px;border-radius:10px\" srcset=\"https:\/\/yamuparkoti.com\/wp-content\/uploads\/2025\/09\/compress-jpg-file-2-1024x576.png 1024w, https:\/\/yamuparkoti.com\/wp-content\/uploads\/2025\/09\/compress-jpg-file-2-300x169.png 300w, https:\/\/yamuparkoti.com\/wp-content\/uploads\/2025\/09\/compress-jpg-file-2-768x432.png 768w, https:\/\/yamuparkoti.com\/wp-content\/uploads\/2025\/09\/compress-jpg-file-2-1536x864.png 1536w, https:\/\/yamuparkoti.com\/wp-content\/uploads\/2025\/09\/compress-jpg-file-2-2048x1152.png 2048w, https:\/\/yamuparkoti.com\/wp-content\/uploads\/2025\/09\/compress-jpg-file-2-18x10.png 18w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>In fact sometimes photos that must be 5 MB can be shrunk down to just 500 KB\u2013 a big difference! Uploading is faster; pages load more quickly. It eliminates that feeling of waiting for the internet \u201cto crawl out of bed.&#8221;<\/p>\n\n\n\n<p>\u65b9\u6cd5\u306f\u5927\u304d\u304f\u5206\u3051\u3066 2 \u3064\u306e\u30bf\u30a4\u30d7\u306b\u5206\u3051\u3089\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p>1. \u975e\u53ef\u9006\u5727\u7e2e: \u6700\u3082\u7d30\u304b\u3044\u90e8\u5206\u307e\u3067\u51e6\u7406\u3057\u307e\u3059\u3002\u307b\u3068\u3093\u3069\u306e\u4eba\u9593\u306e\u76ee\u306b\u306f\u898b\u3048\u306a\u3044\u3068\u8a00\u3063\u3066\u3082\u904e\u8a00\u3067\u306f\u306a\u3044\u3067\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<p>2. \u30ed\u30b9\u30ec\u30b9: \u7d30\u90e8\u307e\u3067\u78ba\u5b9f\u306b\u305d\u306e\u307e\u307e\u4fdd\u5b58\u3057\u306a\u304c\u3089\u3082\u3001\u30b9\u30da\u30fc\u30b9\u3082\u3044\u304f\u3089\u304b\u7bc0\u7d04\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>Which one is the best? That changes for each case, you know! For me personally with images going online, I almost always go with lossy compression jpg file\u2013 because honestly, I can&#8217;t spot any difference.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\ud83d\ude80 JPG \u3092\u5727\u7e2e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u306e\u306f\u306a\u305c\u3067\u3059\u304b?<\/strong><\/h2>\n\n\n\n<p>\u307e\u3060\u7d0d\u5f97\u3067\u304d\u306a\u3044\uff1f\u305d\u306e\u7406\u7531\u306f\u3053\u3053\u306b\u3042\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u26a1 \u30b5\u30a4\u30c8\u306e\u8aad\u307f\u8fbc\u307f\u304c\u901f\u304f\u306a\u308a\u307e\u3059\u3002Google \u3082\u8a2a\u554f\u8005\u3082\u305d\u308c\u3092\u597d\u307f\u307e\u3059\u3002<\/li>\n\n\n\n<li>\ud83d\udcbe \u30b9\u30da\u30fc\u30b9\u3092\u7bc0\u7d04\u3067\u304d\u307e\u3059\u3002\uff08\u30ce\u30fc\u30c8\u30d1\u30bd\u30b3\u30f3\u304c\u6bce\u56de\u611f\u8b1d\u3057\u3066\u304f\u308c\u307e\u3059\u3002\uff09<\/li>\n\n\n\n<li>\ud83d\udce4 \u5171\u6709\u304c\u901f\u304f\u306a\u308a\u307e\u3059\u3002\u30e1\u30fc\u30eb\u304c\u300c\u30d5\u30a1\u30a4\u30eb\u304c\u5927\u304d\u3059\u304e\u307e\u3059\u300d\u3068\u3044\u3046\u30a8\u30e9\u30fc\u3067\u8fd4\u9001\u3055\u308c\u308b\u3053\u3068\u3082\u3042\u308a\u307e\u305b\u3093\u3002<\/li>\n\n\n\n<li>\ud83d\ude00 \u5f85\u3063\u3066\u3044\u308b\u9593\u306b\u30af\u30ea\u30c3\u30af\u3057\u3066\u96e2\u308c\u308b\u4eba\u306f\u3044\u307e\u305b\u3093\u3002<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\ud83d\udee0 \u5b9f\u969b\u306b\u306f\u3069\u3046\u3084\u3063\u3066\u3084\u308b\u3093\u3067\u3059\u304b\uff1f<\/strong><\/h2>\n\n\n\n<p>\u96e3\u3057\u3044\u3053\u3068\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u305f\u3063\u305f3\u3064\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u5b8c\u4e86\u3067\u3059\u3002<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>\ud83d\udcc2 JPG \u30d5\u30a1\u30a4\u30eb\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u307e\u3059\u3002\u30c9\u30e9\u30c3\u30b0\u3001\u30c9\u30ed\u30c3\u30d7\u3001\u307e\u305f\u306f\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\ud83c\udf9a \u3069\u308c\u304f\u3089\u3044\u7e2e\u5c0f\u3057\u305f\u3044\u304b\u9078\u629e\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u2b07 \u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3092\u30af\u30ea\u30c3\u30af\u3002\u3042\u3063\u3068\u3044\u3046\u9593\u306b\u5b8c\u4e86\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u30b5\u30a4\u30f3\u30a2\u30c3\u30d7\u4e0d\u8981\u3002\u8ff7\u60d1\u306a\u900f\u304b\u3057\u306a\u3057\u3002\u300c\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3057\u3066\u304f\u3060\u3055\u3044\u300d\u3068\u3044\u3046\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u3082\u306a\u3057\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\ud83c\udf1f \u3053\u306e\u30c4\u30fc\u30eb\u304c\u4ed6\u306e\u30c4\u30fc\u30eb\u3068\u9055\u3046\u7406\u7531<\/strong><\/h2>\n\n\n\n<p>\u602a\u3057\u3044\u30aa\u30f3\u30e9\u30a4\u30f3\u5727\u7e2e\u30c4\u30fc\u30eb\u3092\u3044\u304f\u3064\u304b\u8a66\u3057\u3066\u307f\u305f\u3051\u3069\u3001\u81f3\u308b\u6240\u306b\u5e83\u544a\u304c\u3042\u3063\u3066\u3001\u30d5\u30a1\u30a4\u30eb\u306f\u3069\u3053\u3078\u9001\u3089\u308c\u308b\u306e\u304b\u3082\u5206\u304b\u3089\u306a\u304b\u3063\u305f\u3002\u7d76\u5bfe\u306b\u907f\u3051\u305f\u3044\u3002<\/p>\n\n\n\n<p>\u3053\u308c\u3067\u3059\uff1f<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2705 \u7121\u6599\u3002\u300c\u30b5\u30d7\u30e9\u30a4\u30ba\u300d\u306e\u30da\u30a4\u30a6\u30a9\u30fc\u30eb\u306f\u3042\u308a\u307e\u305b\u3093\u3002jpg\u30d5\u30a1\u30a4\u30eb\u3092\u5727\u7e2e\u3059\u308b\u3060\u3051\u3067\u3059\u3002<\/li>\n\n\n\n<li>\ud83d\udd12 \u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u3002\u30d5\u30a1\u30a4\u30eb\u306f\u30d6\u30e9\u30a6\u30b6\u304b\u3089\u5916\u306b\u51fa\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002<\/li>\n\n\n\n<li>\u26a1 \u9ad8\u901f\u3002\u4e00\u62ec\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\uff08\u6700\u5927 20 \u4ef6\uff09\u3002<\/li>\n\n\n\n<li>\ud83c\udfa8 \u67d4\u8edf\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u304a\u597d\u307f\u306b\u5fdc\u3058\u3066 JPG\u3001PNG\u3001\u3055\u3089\u306b\u306f WebP \u5f62\u5f0f\u3067\u4fdd\u5b58\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\ud83d\udcf8 \u5727\u7e2e\u304c\u5f79\u7acb\u3064\u3068\u304d<\/strong><\/h2>\n\n\n\n<p>\u6b21\u306e\u7406\u7531\u304b\u3089\u3001\u305d\u306e\u91cd\u8981\u6027\u304c\u7406\u89e3\u3067\u304d\u308b\u3067\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<p>\u6642\u3005\u3001\u30b9\u30c8\u30a2\u306e\u5546\u54c1\u5199\u771f\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001Shopify \u3067\u30d5\u30a1\u30a4\u30eb\u30b5\u30a4\u30ba\u304c\u5927\u304d\u3044\u305f\u3081\u306b\u62d2\u5426\u3055\u308c\u305f\u3068\u304d\u306a\u3069\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u8a73\u3057\u3044\u5199\u771f\u306fInstagram\u3067\u30b7\u30a7\u30a2\u4e2d\u3002<\/p>\n\n\n\n<p>\u8077\u5834\u306b\u300c\u3053\u308c\u306f\u30e1\u30fc\u30eb\u3067\u9001\u308b\u306b\u306f\u5927\u304d\u3059\u304e\u308b\u300d\u3068\u8a00\u3063\u3066\u3044\u308b\u4eba\u304c\u672c\u5f53\u306b\u3044\u308b\u306e\u3067\u3057\u3087\u3046\u304b?<\/p>\n\n\n\n<p>\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u306e\u8aad\u307f\u8fbc\u307f\u6642\u9593\u3092\u77ed\u7e2e\u3057\u3001Google \u304c\u79c1\u306e\u30b5\u30a4\u30c8\u3092 7 \u30da\u30fc\u30b8\u76ee\u3067\u306f\u306a\u304f 1 \u30da\u30fc\u30b8\u76ee\u306b\u63b2\u8f09\u3057\u3066\u304f\u308c\u308b\u3088\u3046\u306b\u3057\u305f\u3044\u3068\u8003\u3048\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u300c\u30b9\u30c8\u30ec\u30fc\u30b8\u304c\u3044\u3063\u3071\u3044\u3067\u3059\uff01\u300d\u3068\u53eb\u3073\u7d9a\u3051\u308b\u30d3\u30f3\u30c6\u30fc\u30b8 iPhone \u306e\u30b9\u30da\u30fc\u30b9\u3092\u89e3\u653e\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\ud83d\udcc8 \u8ab0\u3082\u8a9e\u3089\u306a\u3044SEO\u306e\u30e1\u30ea\u30c3\u30c8<\/strong><\/h2>\n\n\n\n<p>\u554f\u984c\u306f\u3001\u30b5\u30a4\u30c8\u306e\u8aad\u307f\u8fbc\u307f\u901f\u5ea6\u304c\u9045\u3044\u3068Google\u306e\u30e9\u30f3\u30ad\u30f3\u30b0\u304c\u4e0b\u304c\u3063\u3066\u3057\u307e\u3046\u3053\u3068\u3067\u3059\u3002\u30da\u30fc\u30b8\u306e\u8aad\u307f\u8fbc\u307f\u3092\u5f85\u3064\u4eba\u306f\u3044\u307e\u305b\u3093\u3002JPG\u30d5\u30a1\u30a4\u30eb\u3092\u5727\u7e2e\u3059\u308b\u3068\u3001\u6b21\u306e\u3088\u3046\u306a\u30e1\u30ea\u30c3\u30c8\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2705 Core Web Vitals \u3092\u6539\u5584\u3057\u307e\u3059 (\u5fc3\u914d\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u300c\u30b5\u30a4\u30c8\u901f\u5ea6\u306b\u95a2\u3059\u308b\u3082\u306e\u300d\u3060\u3051\u3067\u3059)\u3002<\/li>\n\n\n\n<li>\ud83d\udcca \u30e9\u30f3\u30ad\u30f3\u30b0\u3092\u4e0a\u3052\u307e\u3057\u3087\u3046\u3002<\/li>\n\n\n\n<li>\u23f3 \u30e6\u30fc\u30b6\u30fc\u3092\u30b5\u30a4\u30c8\u306b\u9577\u304f\u6ede\u5728\u3055\u305b\u307e\u3059\u3002<\/li>\n\n\n\n<li>\ud83d\udcb0 \u4eba\u3005\u304c\u8ae6\u3081\u306a\u3044\u306e\u3067\u3001\u3055\u3089\u306b\u58f2\u4e0a\u304c\u4e0a\u304c\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\ud83d\udd12 \u3067\u3082\u5b89\u5168\u3067\u3059\u304b\uff1f<\/strong><\/h2>\n\n\n\n<p>\u305d\u308c\u306f\u79c1\u3082\u61f8\u5ff5\u3057\u3066\u3044\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<p>\u3044\u304f\u3064\u304b\u306e\u30c4\u30fc\u30eb\u306f\u5199\u771f\u3092\u81ea\u52d5\u7684\u306b\u30b5\u30fc\u30d0\u30fc\u306b\u8ee2\u9001\u3057\u307e\u3059\u304c\u3001\u500b\u4eba\u306e\u753b\u50cf\u306e\u30d5\u30a1\u30a4\u30eb\u30b5\u30a4\u30ba\u3092\u7e2e\u5c0f\u3057\u305f\u3044\u5834\u5408\u306f\u4e0d\u4fbf\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u3053\u306e\u30c4\u30fc\u30eb\u306f\u9055\u3044\u307e\u3059\u3002\u4f55\u3082\u9001\u4fe1\u3055\u308c\u307e\u305b\u3093\u3002\u3059\u3079\u3066\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u5185\u3067\u884c\u308f\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30a2\u30ab\u30a6\u30f3\u30c8\u306f\u5fc5\u8981\u306a\u304f\u3001\u30c7\u30fc\u30bf\u53ce\u96c6\u3084\u30d5\u30a1\u30a4\u30eb\u306e\u300c\u30af\u30e9\u30a6\u30c9\u300d\u30b9\u30c8\u30ec\u30fc\u30b8\u3082\u3042\u308a\u307e\u305b\u3093\u3002\u9ad8\u901f\u3067\u52b9\u7387\u7684\u306a\u51e6\u7406\u3060\u3051\u3067\u3059\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\ud83d\udca1\u79c1\u304c\u5b66\u3093\u3060\u30d7\u30ed\u306e\u30d2\u30f3\u30c8<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ud83c\udf9a 80% \u306e\u54c1\u8cea\u3067\u3042\u308c\u3070\u3001\u901a\u5e38\u306f\u5b8c\u74a7\u306b\u898b\u3048\u307e\u3059\u3002<\/li>\n\n\n\n<li>\ud83c\udf0d Web \u7528\u306e\u5834\u5408\u3001WebP \u30d5\u30a1\u30a4\u30eb\u306f\u3055\u3089\u306b\u5c0f\u3055\u304f\u306a\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li>\ud83d\uddc2 \u30aa\u30ea\u30b8\u30ca\u30eb\u306f\u5fc5\u305a\u3069\u3053\u304b\u5b89\u5168\u306a\u5834\u6240\u306b\u4fdd\u7ba1\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4fe1\u3058\u3066\u304f\u3060\u3055\u3044\u3001\u79c1\u306f\u82e6\u52b4\u3057\u3066\u5b66\u3073\u307e\u3057\u305f\u3002<\/li>\n\n\n\n<li>\ud83d\udda5 WordPress\u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3059\u308b\u524d\u306b\u7e2e\u5c0f\u3059\u308b\u304b\u3001 <a href=\"https:\/\/yamuparkoti.com\/ja\/\" data-type=\"link\" data-id=\"https:\/\/yamuparkoti.com\/\">\u30b7\u30e7\u30c3\u30d4\u30d5\u30a1\u30a4<\/a>\u2014\u5f8c\u3067\u982d\u75db\u306e\u7a2e\u306b\u306a\u308b\u3053\u3068\u304c\u306a\u304f\u306a\u308a\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\ud83d\udc49 \u8a66\u3059\u6e96\u5099\u306f\u3067\u304d\u307e\u3057\u305f\u304b?<\/strong><\/h2>\n\n\n\n<p>Really, don&#8217;t analyze it too much. Just upload an image there automatically compress jpg file to see what occurs!<\/p>\n\n\n\n<p>\u6700\u60aa\u306e\u5834\u5408\u3067\u3082\u3001\u3044\u304f\u3089\u304b\u306e\u30b9\u30da\u30fc\u30b9\u304c\u89e3\u653e\u3055\u308c\u3001\u6700\u826f\u306e\u5834\u5408\u3001Web \u30b5\u30a4\u30c8\u306e\u8a2a\u554f\u8005\u306f\u8d85\u9ad8\u901f\u3067\u8aad\u307f\u8fbc\u307e\u308c\u308b\u3053\u3068\u3092\u4f53\u9a13\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u2753 \u3088\u304f\u3042\u308b\u8cea\u554f<\/strong><\/h2>\n\n\n\n<p><strong>\u5727\u7e2e\u3059\u308b\u3068\u54c1\u8cea\u304c\u4f4e\u4e0b\u3057\u307e\u3059\u304b?<\/strong><br>\u5c11\u3057\u3067\u3059\u304c\u3001\u901a\u5e38\u306f\u6c17\u4ed8\u304b\u306a\u3044\u3067\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<p><strong>\u4e00\u5ea6\u306b\u305f\u304f\u3055\u3093\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u5727\u7e2e\u3067\u304d\u307e\u3059\u304b?<\/strong><br>\u306f\u3044\u3001\u4e00\u5ea6\u306b\u6700\u5927 20 \u500b\u3067\u3059\u3002<\/p>\n\n\n\n<p><strong>\u5b89\u5168\u3067\u3059\u304b\uff1f<\/strong><br>\u6700\u9ad8\u306b\u5b89\u5168\u3002\u30d5\u30a1\u30a4\u30eb\u306f\u30d6\u30e9\u30a6\u30b6\u5185\u306b\u4fdd\u5b58\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>JPG \u304b WebP \u304b?<\/strong><br>JPG \u306f\u3069\u3053\u3067\u3082\u4f7f\u3048\u307e\u3059\u3002WebP \u306f\u30b5\u30a4\u30ba\u304c\u5c0f\u3055\u3044\u3067\u3059\u304c\u3001\u3059\u3079\u3066\u306e\u30b5\u30a4\u30c8\u3067\u4f7f\u3048\u308b\u308f\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<p><strong>SEO\u306b\u5f79\u7acb\u3061\u307e\u3059\u304b?<\/strong><br>\u306f\u3044\u3002\u30da\u30fc\u30b8\u306e\u8868\u793a\u901f\u5ea6\u304c\u901f\u3044\u307b\u3069\u3001Google \u306e\u6e80\u8db3\u5ea6\u3082\u9ad8\u307e\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\ud83c\udfc1 \u6700\u5f8c\u306b<\/strong><\/h2>\n\n\n\n<p>And giant images are a problem\u2013 they don&#8217;t just slow your site down but take up loads of space. We have all been caught out by them; it&#8217;s just one too many times.<\/p>\n\n\n\n<p>\u5727\u7e2e\u306b\u3088\u308a\u3001\u6b21\u306e\u3053\u3068\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u26a1 \u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u3092\u9ad8\u901f\u5316<\/li>\n\n\n\n<li>\ud83d\udcbe \u30b9\u30da\u30fc\u30b9\u3092\u7bc0\u7d04<\/li>\n\n\n\n<li>\ud83d\udcf2 \u53d7\u4fe1\u7bb1\u3067\u60aa\u614b\u3092\u3064\u304b\u305a\u306b\u5199\u771f\u3092\u5171\u6709\u3057\u307e\u3057\u3087\u3046<\/li>\n<\/ul>\n\n\n\n<p>\u3055\u3042\u3001\u305c\u3072\u8a66\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002JPG\u30d5\u30a1\u30a4\u30eb\u3092\u7e2e\u5c0f\u3059\u308c\u3070\u3001\u5f8c\u3067\u611f\u8b1d\u3059\u308b\u3053\u3068\u306b\u306a\u308b\u3067\u3057\u3087\u3046\u3002<\/p>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-kadence-column kadence-column3028_97f692-5a\"><div class=\"kt-inside-inner-col\"><\/div><\/div>\n\n<\/div><\/div>\n\n\n\n\n<p><\/p>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":3084,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_kadence_starter_templates_imported_post":false,"_kad_post_transparent":"","_kad_post_title":"hide","_kad_post_layout":"fullwidth","_kad_post_sidebar_id":"","_kad_post_content_style":"unboxed","_kad_post_vertical_padding":"hide","_kad_post_feature":"hide","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"footnotes":""},"class_list":["post-3028","page","type-page","status-publish","has-post-thumbnail","hentry"],"rankMath":{"parentDomain":"yamuparkoti.com","noFollowDomains":[],"noFollowExcludeDomains":[],"noFollowExternalLinks":false,"featuredImageNotice":"Facebook \u306a\u3069\u306e\u30bd\u30fc\u30b7\u30e3\u30eb\u30e1\u30c7\u30a3\u30a2\u30b5\u30a4\u30c8\u3067\u4f7f\u308f\u308c\u308b\u3088\u3046\u306b\u3059\u308b\u306b\u306f\u3001\u753b\u50cf\u30b5\u30a4\u30ba\u3092200x200\u30d4\u30af\u30bb\u30eb\u4ee5\u4e0a\u306b\u3059\u308b\u3079\u304d\u3067\u3059\u3002","pluginReviewed":false,"postSettings":{"linkSuggestions":true,"useFocusKeyword":false},"frontEndScore":false,"postName":"compress-jpg-file","permalinkFormat":"https:\/\/yamuparkoti.com\/ja\/%pagename%\/","showLockModifiedDate":true,"assessor":{"focusKeywordLink":"https:\/\/yamuparkoti.com\/wp-admin\/edit.php?focus_keyword=%focus_keyword%&post_type=%post_type%","hasTOCPlugin":false,"primaryTaxonomy":false,"serpData":{"title":"Compress JPG File Online [Sep 2025] \u2013 Free Image Optimizer","description":"Easily compress JPG files online without losing quality. Reduce image size, speed up your website with our free JPG compressor tool.","focusKeywords":"compress jpg file,compress jpg,image size reducer,picture compressor,compress jpeg","pillarContent":false,"canonicalUrl":"","breadcrumbTitle":"","advancedRobots":{"max-snippet":"-1","max-video-preview":"-1","max-image-preview":"large"},"facebookTitle":"","facebookDescription":"","facebookImage":"","facebookImageID":"","facebookHasOverlay":false,"facebookImageOverlay":"","facebookAuthor":"","twitterCardType":"","twitterUseFacebook":true,"twitterTitle":"","twitterDescription":"","twitterImage":"","twitterImageID":"","twitterHasOverlay":false,"twitterImageOverlay":"","twitterPlayerUrl":"","twitterPlayerSize":"","twitterPlayerStream":"","twitterPlayerStreamCtype":"","twitterAppDescription":"","twitterAppIphoneName":"","twitterAppIphoneID":"","twitterAppIphoneUrl":"","twitterAppIpadName":"","twitterAppIpadID":"","twitterAppIpadUrl":"","twitterAppGoogleplayName":"","twitterAppGoogleplayID":"","twitterAppGoogleplayUrl":"","twitterAppCountry":"","robots":{"index":true},"twitterAuthor":"\u30e6\u30fc\u30b6\u30fc\u540d","primaryTerm":0,"authorName":"Yam Bahadur Uparkoti","titleTemplate":"%title% %sep% %sitename%","descriptionTemplate":"%excerpt%","showScoreFrontend":true,"lockModifiedDate":false},"powerWords":["\u3059\u3054\u3044","\u611f\u52d5","\u9a5a\u304f","\u552f\u4e00\u7121\u4e8c","\u7f8e\u3057\u3044","\u5e78\u798f","\u8f1d\u304b\u3057\u3044","\u9b45\u60d1\u7684","\u30ab\u30ea\u30b9\u30de\u7684","\u885d\u6483","\u660e\u77ad","\u5b8c\u5168\u306b","\u4fe1\u983c\u3067\u304d\u308b","\u81ea\u4fe1","\u91cd\u8981","\u5275\u9020\u7684","\u6c7a\u5b9a\u7684\u306b","\u7f8e\u5473\u3057\u3044","\u8a3c\u660e\u3059\u308b","\u6025\u3044\u3067","\u6c7a\u610f","\u4fa1\u5024\u304c\u3042\u308b","\u30c0\u30a4\u30ca\u30df\u30c3\u30af","\u611f\u52d5\u7684","\u4e0d\u53ef\u6b20","\u30a4\u30f3\u30b9\u30d4\u30ec\u30fc\u30b7\u30e7\u30f3","\u9769\u65b0\u7684","\u5f37\u529b\u306a","\u9b54\u6cd5\u306e\u3088\u3046\u306a","\u58ee\u5927","\u6b74\u53f2\u7684","\u91cd\u8981\u306a","\u4fe1\u3058\u3089\u308c\u306a\u3044","\u7d76\u5bfe\u5fc5\u8981","\u5fd8\u308c\u3089\u308c\u306a\u3044","\u9b45\u529b\u7684","\u523a\u6fc0\u7684","\u52b9\u679c\u7684","\u9769\u547d\u7684","\u6210\u529f","\u559c\u3073","\u5b89\u5168","\u611f\u52d5\u7684","\u6e80\u3061\u8db3\u308a\u305f","\u7d20\u6674\u3089\u3057\u3044","\u72ec\u7279","\u4fa1\u5024\u304c\u3042\u308b","\u7d20\u6674\u3089\u3057\u3044","\u71b1\u5fc3\u306a","\u52dd\u5229","\u6d3b\u6c17\u3065\u3051\u308b","\u771f\u306b","\u60c5\u71b1\u7684","\u71b1\u5fc3\u306a","\u512a\u96c5","\u5927\u80c6","\u7406\u60f3\u7684","\u4fe1\u3058\u3089\u308c\u306a\u3044\u307b\u3069","\u73fe\u5b9f\u7684","\u6700\u9069","\u4e26\u5916\u308c\u305f","\u8c4a\u5bcc","\u58ee\u89b3","\u5922\u306e\u3088\u3046\u306a","\u611f\u6fc0","\u9b45\u4e86\u3059\u308b","\u5b8c\u74a7","\u58ee\u5927","\u8c6a\u83ef","\u9a5a\u7570\u7684","\u610f\u6b32\u7684","\u71b1\u72c2\u7684","\u753b\u671f\u7684","\u5f37\u70c8","\u9a5a\u6115","\u7dca\u6025","\u89e3\u6c7a","\u6700\u9ad8","\u8c4a\u304b","\u5927\u80c6\u4e0d\u6575","\u6709\u540d","\u611b\u3055\u308c\u308b","\u7279\u5225","\u4fe1\u3058\u3089\u308c\u308b","\u78ba\u5b9f","\u60c5\u71b1","\u671f\u5f85","\u6700\u524d\u7dda","\u958b\u62d3\u8005","\u30d1\u30ef\u30d5\u30eb","\u5f71\u97ff\u529b","\u9ad8\u54c1\u8cea","\u5049\u5927","\u7c21\u5358","\u5b89\u5fc3","\u91cd\u8981","\u72ec\u81ea","\u6804\u5149","\u7121\u6575","\u81ea\u7531","\u5e0c\u671b","\u5947\u8de1","\u6210\u529f","\u8c4a\u304b\u306a","\u529b\u5f37\u3044","\u6804\u5149","\u98db\u8e8d","\u6ce8\u76ee","\u58ee\u5927","\u6311\u6226\u7684","\u4f1d\u8aac","\u7121\u6575","\u83ef\u9e97","\u9a5a\u7570","\u7d20\u6674\u3089\u3057\u3044","\u58ee\u9e97","\u5049\u5927\u306a","\u5049\u5927","\u4f1d\u8aac\u7684","\u523a\u6fc0\u7684","\u30a8\u30ad\u30b5\u30a4\u30c6\u30a3\u30f3\u30b0","\u671f\u5f85","\u61a7\u308c","\u512a\u79c0","\u7d76\u5bfe","\u5927\u6210\u529f","\u60f3\u50cf\u3092\u7d76\u3059\u308b","\u5b8c\u74a7","\u9b45\u529b\u7684","\u611f\u52d5\u7684","\u5049\u5927","\u512a\u96c5","\u7d20\u6674\u3089\u3057\u3044","\u9769\u65b0\u7684","\u5727\u5012\u7684","\u552f\u4e00"],"diacritics":{"A":"[\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F]","AA":"[\\uA732]","AE":"[\\u00C6\\u01FC\\u01E2]","AO":"[\\uA734]","AU":"[\\uA736]","AV":"[\\uA738\\uA73A]","AY":"[\\uA73C]","B":"[\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181]","C":"[\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E]","D":"[\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779]","DZ":"[\\u01F1\\u01C4]","Dz":"[\\u01F2\\u01C5]","E":"[\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E]","F":"[\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B]","G":"[\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E]","H":"[\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D]","I":"[\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197]","J":"[\\u004A\\u24BF\\uFF2A\\u0134\\u0248]","K":"[\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2]","L":"[\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780]","LJ":"[\\u01C7]","Lj":"[\\u01C8]","M":"[\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C]","N":"[\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4]","NJ":"[\\u01CA]","Nj":"[\\u01CB]","O":"[\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C]","OI":"[\\u01A2]","OO":"[\\uA74E]","OU":"[\\u0222]","P":"[\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754]","Q":"[\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A]","R":"[\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782]","S":"[\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784]","T":"[\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786]","TZ":"[\\uA728]","U":"[\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244]","V":"[\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245]","VY":"[\\uA760]","W":"[\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72]","X":"[\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C]","Y":"[\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE]","Z":"[\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762]","a":"[\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250]","aa":"[\\uA733]","ae":"[\\u00E6\\u01FD\\u01E3]","ao":"[\\uA735]","au":"[\\uA737]","av":"[\\uA739\\uA73B]","ay":"[\\uA73D]","b":"[\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253]","c":"[\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184]","d":"[\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A]","dz":"[\\u01F3\\u01C6]","e":"[\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD]","f":"[\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C]","g":"[\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F]","h":"[\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265]","hv":"[\\u0195]","i":"[\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131]","j":"[\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249]","k":"[\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3]","l":"[\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747]","lj":"[\\u01C9]","m":"[\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F]","n":"[\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5]","nj":"[\\u01CC]","o":"[\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275]","oi":"[\\u01A3]","ou":"[\\u0223]","oo":"[\\uA74F]","p":"[\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755]","q":"[\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759]","r":"[\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783]","s":"[\\u0073\\u24E2\\uFF53\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B]","ss":"[\\u00DF]","t":"[\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787]","tz":"[\\uA729]","u":"[\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289]","v":"[\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C]","vy":"[\\uA761]","w":"[\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73]","x":"[\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D]","y":"[\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF]","z":"[\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763]"},"researchesTests":["contentHasTOC","contentHasShortParagraphs","contentHasAssets","keywordInTitle","keywordInMetaDescription","keywordInPermalink","keywordIn10Percent","keywordInContent","keywordInSubheadings","keywordInImageAlt","keywordDensity","keywordNotUsed","lengthContent","lengthPermalink","linksHasInternal","linksHasExternals","linksNotAllExternals","titleStartWithKeyword","titleSentiment","titleHasPowerWords","titleHasNumber","hasContentAI"],"hasRedirection":true,"hasBreadcrumb":false},"homeUrl":"https:\/\/yamuparkoti.com\/ja","objectID":3028,"objectType":"post","locale":"ja","localeFull":"ja","overlayImages":{"play":{"name":"Play \u30a2\u30a4\u30b3\u30f3","url":"https:\/\/yamuparkoti.com\/wp-content\/plugins\/seo-by-rank-math\/assets\/admin\/img\/icon-play.png","path":"\/home\/u575838537\/domains\/yamuparkoti.com\/public_html\/wp-content\/plugins\/seo-by-rank-math\/assets\/admin\/img\/icon-play.png","position":"middle_center"},"gif":{"name":"GIF \u30a2\u30a4\u30b3\u30f3","url":"https:\/\/yamuparkoti.com\/wp-content\/plugins\/seo-by-rank-math\/assets\/admin\/img\/icon-gif.png","path":"\/home\/u575838537\/domains\/yamuparkoti.com\/public_html\/wp-content\/plugins\/seo-by-rank-math\/assets\/admin\/img\/icon-gif.png","position":"middle_center"}},"defautOgImage":"https:\/\/yamuparkoti.com\/wp-content\/uploads\/2024\/08\/Untitled_design1.png","customPermalinks":true,"isUserRegistered":true,"autoSuggestKeywords":true,"connectSiteUrl":"https:\/\/rankmath.com\/auth?site=https%3A%2F%2Fyamuparkoti.com%2Fja&r=https%3A%2F%2Fyamuparkoti.com%2Fja%2Fwp-json%2Fwp%2Fv2%2Fpages%2F3028%3Fnonce%3Df6ac2b320b&pro=1","maxTags":100,"trendsIcon":"<svg viewBox=\"0 0 610 610\"><path d=\"M18.85,446,174.32,290.48l58.08,58.08L76.93,504a14.54,14.54,0,0,1-20.55,0L18.83,466.48a14.54,14.54,0,0,1,0-20.55Z\" style=\"fill:#4285f4\"\/><path d=\"M242.65,242.66,377.59,377.6l-47.75,47.75a14.54,14.54,0,0,1-20.55,0L174.37,290.43l47.75-47.75A14.52,14.52,0,0,1,242.65,242.66Z\" style=\"fill:#ea4335\"\/><polygon points=\"319.53 319.53 479.26 159.8 537.34 217.88 377.61 377.62 319.53 319.53\" style=\"fill:#fabb05\"\/><path d=\"M594.26,262.73V118.61h0a16.94,16.94,0,0,0-16.94-16.94H433.2a16.94,16.94,0,0,0-12,28.92L565.34,274.71h0a16.94,16.94,0,0,0,28.92-12Z\" style=\"fill:#34a853\"\/><rect width=\"610\" height=\"610\" style=\"fill:none\"\/><\/svg>","showScore":true,"siteFavIcon":"https:\/\/yamuparkoti.com\/wp-content\/uploads\/2024\/08\/cropped-Untitled_design1-32x32.png","canUser":{"general":false,"advanced":false,"snippet":false,"social":false,"analysis":false,"analytics":false,"content_ai":false},"showKeywordIntent":true,"isPro":true,"is_front_page":false,"trendsUpgradeLink":"https:\/\/rankmath.com\/pricing\/?utm_source=Plugin&utm_medium=CE%20General%20Tab%20Trends&utm_campaign=WP","trendsUpgradeLabel":"\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9","trendsPreviewImage":"https:\/\/yamuparkoti.com\/wp-content\/plugins\/seo-by-rank-math\/assets\/admin\/img\/trends-preview.jpg","currentEditor":false,"homepageData":{"assessor":{"powerWords":["\u3059\u3054\u3044","\u611f\u52d5","\u9a5a\u304f","\u552f\u4e00\u7121\u4e8c","\u7f8e\u3057\u3044","\u5e78\u798f","\u8f1d\u304b\u3057\u3044","\u9b45\u60d1\u7684","\u30ab\u30ea\u30b9\u30de\u7684","\u885d\u6483","\u660e\u77ad","\u5b8c\u5168\u306b","\u4fe1\u983c\u3067\u304d\u308b","\u81ea\u4fe1","\u91cd\u8981","\u5275\u9020\u7684","\u6c7a\u5b9a\u7684\u306b","\u7f8e\u5473\u3057\u3044","\u8a3c\u660e\u3059\u308b","\u6025\u3044\u3067","\u6c7a\u610f","\u4fa1\u5024\u304c\u3042\u308b","\u30c0\u30a4\u30ca\u30df\u30c3\u30af","\u611f\u52d5\u7684","\u4e0d\u53ef\u6b20","\u30a4\u30f3\u30b9\u30d4\u30ec\u30fc\u30b7\u30e7\u30f3","\u9769\u65b0\u7684","\u5f37\u529b\u306a","\u9b54\u6cd5\u306e\u3088\u3046\u306a","\u58ee\u5927","\u6b74\u53f2\u7684","\u91cd\u8981\u306a","\u4fe1\u3058\u3089\u308c\u306a\u3044","\u7d76\u5bfe\u5fc5\u8981","\u5fd8\u308c\u3089\u308c\u306a\u3044","\u9b45\u529b\u7684","\u523a\u6fc0\u7684","\u52b9\u679c\u7684","\u9769\u547d\u7684","\u6210\u529f","\u559c\u3073","\u5b89\u5168","\u611f\u52d5\u7684","\u6e80\u3061\u8db3\u308a\u305f","\u7d20\u6674\u3089\u3057\u3044","\u72ec\u7279","\u4fa1\u5024\u304c\u3042\u308b","\u7d20\u6674\u3089\u3057\u3044","\u71b1\u5fc3\u306a","\u52dd\u5229","\u6d3b\u6c17\u3065\u3051\u308b","\u771f\u306b","\u60c5\u71b1\u7684","\u71b1\u5fc3\u306a","\u512a\u96c5","\u5927\u80c6","\u7406\u60f3\u7684","\u4fe1\u3058\u3089\u308c\u306a\u3044\u307b\u3069","\u73fe\u5b9f\u7684","\u6700\u9069","\u4e26\u5916\u308c\u305f","\u8c4a\u5bcc","\u58ee\u89b3","\u5922\u306e\u3088\u3046\u306a","\u611f\u6fc0","\u9b45\u4e86\u3059\u308b","\u5b8c\u74a7","\u58ee\u5927","\u8c6a\u83ef","\u9a5a\u7570\u7684","\u610f\u6b32\u7684","\u71b1\u72c2\u7684","\u753b\u671f\u7684","\u5f37\u70c8","\u9a5a\u6115","\u7dca\u6025","\u89e3\u6c7a","\u6700\u9ad8","\u8c4a\u304b","\u5927\u80c6\u4e0d\u6575","\u6709\u540d","\u611b\u3055\u308c\u308b","\u7279\u5225","\u4fe1\u3058\u3089\u308c\u308b","\u78ba\u5b9f","\u60c5\u71b1","\u671f\u5f85","\u6700\u524d\u7dda","\u958b\u62d3\u8005","\u30d1\u30ef\u30d5\u30eb","\u5f71\u97ff\u529b","\u9ad8\u54c1\u8cea","\u5049\u5927","\u7c21\u5358","\u5b89\u5fc3","\u91cd\u8981","\u72ec\u81ea","\u6804\u5149","\u7121\u6575","\u81ea\u7531","\u5e0c\u671b","\u5947\u8de1","\u6210\u529f","\u8c4a\u304b\u306a","\u529b\u5f37\u3044","\u6804\u5149","\u98db\u8e8d","\u6ce8\u76ee","\u58ee\u5927","\u6311\u6226\u7684","\u4f1d\u8aac","\u7121\u6575","\u83ef\u9e97","\u9a5a\u7570","\u7d20\u6674\u3089\u3057\u3044","\u58ee\u9e97","\u5049\u5927\u306a","\u5049\u5927","\u4f1d\u8aac\u7684","\u523a\u6fc0\u7684","\u30a8\u30ad\u30b5\u30a4\u30c6\u30a3\u30f3\u30b0","\u671f\u5f85","\u61a7\u308c","\u512a\u79c0","\u7d76\u5bfe","\u5927\u6210\u529f","\u60f3\u50cf\u3092\u7d76\u3059\u308b","\u5b8c\u74a7","\u9b45\u529b\u7684","\u611f\u52d5\u7684","\u5049\u5927","\u512a\u96c5","\u7d20\u6674\u3089\u3057\u3044","\u9769\u65b0\u7684","\u5727\u5012\u7684","\u552f\u4e00"],"diacritics":true,"researchesTests":["contentHasTOC","contentHasShortParagraphs","contentHasAssets","keywordInTitle","keywordInMetaDescription","keywordInPermalink","keywordIn10Percent","keywordInContent","keywordInSubheadings","keywordInImageAlt","keywordDensity","keywordNotUsed","lengthContent","lengthPermalink","linksHasInternal","linksHasExternals","linksNotAllExternals","titleStartWithKeyword","titleSentiment","titleHasPowerWords","titleHasNumber","hasContentAI"],"hasBreadcrumb":false,"serpData":{"title":"%sitename% %page% %sep% %sitedesc%","description":"","titleTemplate":"%sitename% %page% %sep% %sitedesc%","descriptionTemplate":"","focusKeywords":"","breadcrumbTitle":"Home","robots":{"index":true},"advancedRobots":{"max-snippet":"-1","max-video-preview":"-1","max-image-preview":"large"},"facebookTitle":"","facebookDescription":"","facebookImage":"","facebookImageID":""}}},"searchIntents":[],"isAnalyticsConnected":false,"tocTitle":"Table of Contents","tocExcludeHeadings":[],"listStyle":"ul"},"_links":{"self":[{"href":"https:\/\/yamuparkoti.com\/ja\/wp-json\/wp\/v2\/pages\/3028","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/yamuparkoti.com\/ja\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/yamuparkoti.com\/ja\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/yamuparkoti.com\/ja\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/yamuparkoti.com\/ja\/wp-json\/wp\/v2\/comments?post=3028"}],"version-history":[{"count":28,"href":"https:\/\/yamuparkoti.com\/ja\/wp-json\/wp\/v2\/pages\/3028\/revisions"}],"predecessor-version":[{"id":3082,"href":"https:\/\/yamuparkoti.com\/ja\/wp-json\/wp\/v2\/pages\/3028\/revisions\/3082"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/yamuparkoti.com\/ja\/wp-json\/wp\/v2\/media\/3084"}],"wp:attachment":[{"href":"https:\/\/yamuparkoti.com\/ja\/wp-json\/wp\/v2\/media?parent=3028"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}