{"id":23567,"date":"2025-12-26T18:44:30","date_gmt":"2025-12-26T09:44:30","guid":{"rendered":"https:\/\/zekno.co.jp\/programming\/?page_id=23567"},"modified":"2026-04-08T09:53:40","modified_gmt":"2026-04-08T00:53:40","slug":"diagnostic-ai","status":"publish","type":"page","link":"https:\/\/zekno.co.jp\/programming\/diagnostic-ai\/","title":{"rendered":"AI\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30b9\u30af\u30fc\u30eb\u8a3a\u65ad"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"ja\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <!-- 1. \u5fc5\u8981\u306a\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u8aad\u307f\u8fbc\u307f -->\n    <script src=\"https:\/\/cdn.tailwindcss.com\"><\/script>\n    <script crossorigin src=\"https:\/\/unpkg.com\/react@18\/umd\/react.production.min.js\"><\/script>\n    <script crossorigin src=\"https:\/\/unpkg.com\/react-dom@18\/umd\/react-dom.production.min.js\"><\/script>\n    <script src=\"https:\/\/unpkg.com\/@babel\/standalone\/babel.min.js\"><\/script>\n\n    <style>\n        #diagnosis-app-root {\n            min-height: 200px;\n            width: 100%;\n            font-family: \"Helvetica Neue\", Arial, \"Hiragino Kaku Gothic ProN\", \"Hiragino Sans\", Meiryo, sans-serif !important;\n        }\n        \/* WordPress\u30c6\u30fc\u30de\u306e\u5e72\u6e09\u3092\u5fb9\u5e95\u30ea\u30bb\u30c3\u30c8 *\/\n        #diagnosis-app-root * {\n            box-sizing: border-box;\n        }\n        #diagnosis-app-root button {\n            text-transform: none !important;\n            letter-spacing: normal !important;\n            border: none !important;\n            outline: none !important;\n            box-shadow: none !important;\n            display: flex !important;\n            align-items: center !important;\n            justify-content: center !important;\n            opacity: 1 !important;\n            visibility: visible !important;\n        }\n        #diagnosis-app-root textarea {\n            text-transform: none !important;\n            letter-spacing: normal !important;\n        }\n        #diagnosis-app-root span, #diagnosis-app-root div, #diagnosis-app-root h1, #diagnosis-app-root h2 {\n            visibility: visible !important;\n            opacity: 1 !important;\n        }\n        .animate-fade-in {\n            animation: fadeIn 0.6s ease-out forwards;\n        }\n        @keyframes fadeIn {\n            from { opacity: 0; transform: translateY(20px); }\n            to { opacity: 1; transform: translateY(0); }\n        }\n    <\/style>\n<\/head>\n<body>\n\n<div id=\"diagnosis-app-root\">\n    <div style=\"text-align:center; padding:50px; color:#999; font-size:14px;\">\n        \u8a3a\u65ad\u30c4\u30fc\u30eb\u3092\u8d77\u52d5\u3057\u3066\u3044\u307e\u3059&#8230;\n    <\/div>\n<\/div>\n\n<script type=\"text\/babel\">\n    const { useState, useEffect } = React;\n\n    const Icons = {\n        ChevronRight: (props) => <svg {...props} xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"m9 18 6-6-6-6\"\/><\/svg>,\n        Check: (props) => <svg {...props} xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M20 6 9 17l-5-5\"\/><\/svg>,\n        RefreshCw: (props) => <svg {...props} xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\"\/><path d=\"M21 3v5h-5\"\/><path d=\"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\"\/><path d=\"M8 16H3v5\"\/><\/svg>,\n        ExternalLink: (props) => <svg {...props} xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"\/><polyline points=\"15 3 21 3 21 9\"\/><line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\"\/><\/svg>,\n        Sparkles: (props) => <svg {...props} xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" style={{display:'inline-block'}}><path d=\"m12 3-1.912 5.813a2 2 0 0 1-1.275 1.275L3 12l5.813 1.912a2 2 0 0 1 1.275 1.275L12 21l1.912-5.813a2 2 0 0 1 1.275-1.275L21 12l-5.813-1.912a2 2 0 0 1-1.275-1.275L12 3Z\"\/><path d=\"M5 3v4\"\/><path d=\"M19 17v4\"\/><path d=\"M3 5h4\"\/><path d=\"M17 19h4\"\/><\/svg>,\n        MessageSquare: (props) => <svg {...props} xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"\/><\/svg>,\n        Gift: (props) => <svg {...props} xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><rect x=\"3\" y=\"8\" width=\"18\" height=\"4\" rx=\"1\"\/><path d=\"M12 8v13\"\/><path d=\"M19 12v7a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-7\"\/><path d=\"M7.5 8a2.5 2.5 0 0 1 0-5A4.8 8 0 0 1 12 8a4.8 8 0 0 1 4.5-5 2.5 2.5 0 0 1 0 5\"\/><\/svg>,\n    };\n\n    const SCHOOL_DATA = [\n        {\n            id: 'dmm-ai-camp',\n            name: 'DMM \u751f\u6210AI CAMP',\n            description: 'ChatGPT\u7b49\u306e\u751f\u6210AI\u30b9\u30ad\u30eb\u3092\u5b9f\u52d9\u3067\u6d3b\u7528\u3057\u305f\u3044\u65b9\u5411\u3051\u3002\u6700\u65b0\u306eAI\u6280\u8853\u3092\u6700\u77ed4\u9031\u9593\u3067\u30de\u30b9\u30bf\u30fc\u3057\u3001\u696d\u52d9\u52b9\u7387\u5316\u3084\u751f\u7523\u6027\u5411\u4e0a\u3092\u5f37\u529b\u306b\u652f\u63f4\u3057\u307e\u3059\u3002AI\u6642\u4ee3\u306b\u5fc5\u8981\u306a\u30b9\u30ad\u30eb\u3092\u8eab\u306b\u3064\u3051\u305f\u3044\u306a\u3089\u3053\u3053\u3002',\n            features: ['\u6700\u65b0\u306e\u751f\u6210AI\u6d3b\u7528\u8853', '\u6700\u77ed4\u9031\u9593\u3067\u5b8c\u7d50', '\u5b9f\u52d9\u76f4\u7d50\u306e\u30b9\u30ad\u30eb'],\n            reviewUrl: 'https:\/\/zekno.co.jp\/programming\/dmm-ai-reputation\/',\n            officialUrl: 'https:\/\/www.rentracks.jp\/adx\/r.html?idx=0.20183.350301.10003.14281&dna=164344',\n            imageUrl: 'https:\/\/zekno.co.jp\/programming\/wp-content\/uploads\/2025\/07\/dmmseiseiaicamp.jpg',\n            keywords: ['ai', '\u751f\u6210', 'chatgpt', '\u4eba\u5de5\u77e5\u80fd', '\u52b9\u7387\u5316', '\u77ed\u671f\u9593', '\u81ea\u52d5\u5316', '\u30d3\u30b8\u30cd\u30b9', '\u6642\u77ed'],\n            color: 'bg-emerald-600',\n        },\n        {\n            id: 'runteq',\n            name: 'RUNTEQ (\u30e9\u30f3\u30c6\u30c3\u30af)',\n            description: '\u300cWeb\u30a8\u30f3\u30b8\u30cb\u30a2\u8ee2\u8077\u300d\u306b\u7279\u5316\u3057\u305f\u8d85\u5b9f\u8df5\u578b\u30b9\u30af\u30fc\u30eb\u3002\u958b\u767a\u4f1a\u793e\u304c\u904b\u55b6\u3057\u3066\u304a\u308a\u3001\u975e\u5e38\u306b\u9ad8\u3044\u30ec\u30d9\u30eb\u306e\u30b9\u30ad\u30eb\u304c\u8eab\u306b\u3064\u304d\u307e\u3059\u3002\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3082\u6d3b\u767a\u3067\u3001\u4ef2\u9593\u3068\u9ad8\u3081\u5408\u3048\u308b\u74b0\u5883\u3067\u3059\u3002',\n            features: ['Web\u81ea\u793e\u958b\u767a\u3078\u8ee2\u8077', '\u5727\u5012\u7684\u306a\u5b66\u7fd2\u91cf', '\u6d3b\u767a\u306a\u30b3\u30df\u30e5\u30cb\u30c6\u30a3'],\n            reviewUrl: 'https:\/\/zekno.co.jp\/programming\/runteq-reputation\/',\n            officialUrl: 'https:\/\/af.moshimo.com\/af\/c\/click?a_id=4662585&p_id=2717&pc_id=6139&pl_id=34648&url=https%3A%2F%2Frunteq.jp%2Flp_01%2F',\n            imageUrl: 'https:\/\/zekno.co.jp\/programming\/wp-content\/uploads\/2025\/06\/runteq-banner.png',\n            keywords: ['\u8ee2\u8077', '\u672c\u6c17', '\u30cf\u30fc\u30c9', 'web', '\u81ea\u793e\u958b\u767a', '\u30b3\u30df\u30e5\u30cb\u30c6\u30a3', '\u96e3\u3057\u3044', '\u30a8\u30f3\u30b8\u30cb\u30a2', '\u958b\u767a'],\n            color: 'bg-orange-500',\n        },\n        {\n            id: 'coachtech',\n            name: 'COACHTECH (\u30b3\u30fc\u30c1\u30c6\u30c3\u30af)',\n            description: '\u300c\u30d5\u30ea\u30fc\u30e9\u30f3\u30b9\u72ec\u7acb\u300d\u3092\u76ee\u6307\u3059\u306a\u3089\u3053\u3053\u3002\u6700\u5927\u306e\u7279\u5fb4\u306f\u300c\u5b9f\u6848\u4ef6\u306e\u4fdd\u8a3c\u300d\u304c\u3042\u308b\u3053\u3068\u3002\u5b66\u7fd2\u4e2d\u306b\u5b9f\u969b\u306e\u5b9f\u7e3e\u3092\u4f5c\u308c\u308b\u305f\u3081\u3001\u5352\u696d\u5f8c\u306e\u72ec\u7acb\u304c\u30b9\u30e0\u30fc\u30ba\u3067\u3059\u3002',\n            features: ['\u30d5\u30ea\u30fc\u30e9\u30f3\u30b9\u7279\u5316', '\u5b9f\u6848\u4ef6\u306e\u958b\u767a\u4fdd\u8a3c', '\u5373\u6226\u529b\u30b9\u30ad\u30eb'],\n            reviewUrl: 'https:\/\/zekno.co.jp\/programming\/coachtech-review\/',\n            officialUrl: 'https:\/\/af.moshimo.com\/af\/c\/click?a_id=5168098&p_id=2552&pc_id=5659&pl_id=39477',\n            imageUrl: 'https:\/\/zekno.co.jp\/programming\/wp-content\/uploads\/2025\/12\/coachtech-bannar-1.png',\n            keywords: ['\u30d5\u30ea\u30fc\u30e9\u30f3\u30b9', '\u72ec\u7acb', '\u6848\u4ef6', '\u7a3c\u304e\u305f\u3044', '\u5b9f\u8df5', '\u4fdd\u969c', '\u30b3\u30fc\u30c1\u30f3\u30b0', '\u500b\u4eba'],\n            color: 'bg-zinc-800',\n        },\n        {\n            id: 'ninja-code',\n            name: '\u5fcd\u8005CODE',\n            description: '\u300c\u526f\u696d\u30fb\u72ec\u5b66\u300d\u304b\u3089\u59cb\u3081\u305f\u3044\u4eba\u306b\u6700\u9069\u3002\u8cb7\u3044\u5207\u308a\u578b\u3067\u975e\u5e38\u306b\u5b89\u304f\u3001\u672a\u7d4c\u9a13\u304b\u3089\u3067\u3082\u81ea\u5206\u306e\u30da\u30fc\u30b9\u3067Web\u5236\u4f5c\u3084\u30a2\u30d7\u30ea\u958b\u767a\u306e\u30b9\u30ad\u30eb\u3092\u7fd2\u5f97\u3067\u304d\u307e\u3059\u3002',\n            features: ['\u30b3\u30b9\u30d1\u6700\u5f37\u306e\u8cb7\u3044\u5207\u308a', '\u526f\u696d\u6848\u4ef6\u306b\u5f37\u3044', '\u7121\u671f\u9650\u30b5\u30dd\u30fc\u30c8'],\n            reviewUrl: 'https:\/\/zekno.co.jp\/programming\/ninja-code-reviews\/',\n            officialUrl: 'https:\/\/af.moshimo.com\/af\/c\/click?a_id=4662528&p_id=5816&pc_id=16120&pl_id=74561',\n            imageUrl: 'https:\/\/zekno.co.jp\/programming\/wp-content\/uploads\/2025\/11\/ninjacode-bannar.png',\n            keywords: ['\u5b89\u3044', '\u30b3\u30b9\u30d1', '\u526f\u696d', '\u8da3\u5473', '\u8cb7\u3044\u5207\u308a', '\u521d\u5fc3\u8005', '\u72ec\u5b66', '\u4f4e\u4e88\u7b97'],\n            color: 'bg-purple-600',\n        },\n        {\n            id: 'samurai',\n            name: '\u4f8d\u30a8\u30f3\u30b8\u30cb\u30a2',\n            description: '\u300c\u30de\u30f3\u30c4\u30fc\u30de\u30f3\u6307\u5c0e\u300d\u306e\u30d1\u30a4\u30aa\u30cb\u30a2\u3002\u3042\u306a\u305f\u5c02\u7528\u306e\u30ab\u30ea\u30ad\u30e5\u30e9\u30e0\u3092\u4f5c\u6210\u3057\u3001\u5c02\u5c5e\u8b1b\u5e2b\u304c\u5352\u696d\u307e\u3067\u4f34\u8d70\u3057\u307e\u3059\u3002\u632b\u6298\u3057\u305f\u304f\u306a\u3044\u65b9\u306b\u6700\u3082\u304a\u3059\u3059\u3081\u306a\u30b9\u30af\u30fc\u30eb\u3067\u3059\u3002',\n            features: ['\u5b8c\u5168\u30de\u30f3\u30c4\u30fc\u30de\u30f3', '\u30aa\u30fc\u30c0\u30fc\u30e1\u30a4\u30c9', '\u632b\u6298\u3057\u306a\u3044'],\n            reviewUrl: 'https:\/\/zekno.co.jp\/programming\/samurai-engineer-reputation\/',\n            officialUrl: 'https:\/\/af.moshimo.com\/af\/c\/click?a_id=4662594&p_id=1421&pc_id=2473&pl_id=21248',\n            imageUrl: 'https:\/\/zekno.co.jp\/programming\/wp-content\/uploads\/2024\/12\/samurai-engineer-banner.jpg',\n            keywords: ['\u30de\u30f3\u30c4\u30fc\u30de\u30f3', '\u500b\u5225', '\u632b\u6298', '\u30aa\u30fc\u30c0\u30fc\u30e1\u30a4\u30c9', '\u521d\u5fc3\u8005', '\u4e01\u5be7', '1\u5bfe1'],\n            color: 'bg-slate-700',\n        },\n        {\n            id: 'dmm-webcamp',\n            name: 'DMM WEBCAMP',\n            description: '\u5927\u624bDMM\u904b\u55b6\u306e\u8ee2\u8077\u4fdd\u8a3c\u4ed8\u304d\u30b9\u30af\u30fc\u30eb\u3002\u672a\u7d4c\u9a13\u304b\u3089\u306e\u30a8\u30f3\u30b8\u30cb\u30a2\u8ee2\u8077\u5b9f\u7e3e\u304c\u696d\u754c\u30c8\u30c3\u30d7\u30af\u30e9\u30b9\u3067\u3001\u30ad\u30e3\u30ea\u30a2\u30b5\u30dd\u30fc\u30c8\u304c\u975e\u5e38\u306b\u624b\u539a\u3044\u3067\u3059\u3002',\n            features: ['\u8ee2\u8077\u30b5\u30dd\u30fc\u30c8', '\u7d66\u4ed8\u91d1\u5bfe\u8c61', '\u5927\u624b\u3067\u5b89\u5fc3'],\n            reviewUrl: 'https:\/\/zekno.co.jp\/programming\/dmm-webcamp-reputation\/',\n            officialUrl: 'https:\/\/px.a8.net\/svt\/ejp?a8mat=3ZDEG6+GGEBOY+3XAE+BXYE9',\n            imageUrl: 'https:\/\/zekno.co.jp\/programming\/wp-content\/uploads\/2024\/09\/dmmwebcamp-banner.png',\n            keywords: ['\u5c31\u8077', '\u8ee2\u8077', '\u5b89\u5fc3', '\u5927\u624b', '\u7d66\u4ed8\u91d1', '\u4fdd\u8a3c', 'dmm'],\n            color: 'bg-red-500',\n        },\n        {\n            id: 'tech-camp',\n            name: '\u30c6\u30c3\u30af\u30ad\u30e3\u30f3\u30d7',\n            description: '\u77ed\u671f\u96c6\u4e2d\u3067\u4e00\u6c17\u306b\u4eba\u751f\u3092\u5909\u3048\u305f\u3044\u4eba\u5411\u3051\u3002\u6559\u5ba4\u3082\u5229\u7528\u53ef\u80fd\u306a\u305f\u3081\u3001\u5f37\u5236\u529b\u3092\u6301\u3063\u3066\u5b66\u7fd2\u3057\u305f\u3044\u4eba\u306b\u5411\u3044\u3066\u3044\u307e\u3059\u3002\u672a\u7d4c\u9a13\u304b\u3089\u306e\u6559\u80b2\u5b9f\u7e3e\u3082\u8c4a\u5bcc\u3067\u3059\u3002',\n            features: ['\u6559\u5ba4\u901a\u5b66\u304c\u53ef\u80fd', '\u77ed\u671f\u96c6\u4e2d', 'No.1\u5b9f\u7e3e'],\n            reviewUrl: 'https:\/\/zekno.co.jp\/programming\/techcamp-reputation\/',\n            officialUrl: 'https:\/\/t.felmat.net\/fmcl?ak=B10546.1.K620390.X118083S',\n            imageUrl: 'https:\/\/zekno.co.jp\/programming\/wp-content\/uploads\/2025\/12\/techcamp-bannar.png',\n            keywords: ['\u77ed\u671f', '\u96c6\u4e2d', '\u6559\u5ba4', '\u5bfe\u9762', '\u5f37\u5236', '\u4e00\u6c17', '\u901a\u3044\u305f\u3044'],\n            color: 'bg-red-600',\n        },\n        {\n            id: 'human',\n            name: '\u30d2\u30e5\u30fc\u30de\u30f3\u30a2\u30ab\u30c7\u30df\u30fc',\n            description: '\u5168\u56fd\u306b\u6821\u820e\u3092\u6301\u3064\u8001\u8217\u30b9\u30af\u30fc\u30eb\u3002\u5bfe\u9762\u3068\u30aa\u30f3\u30e9\u30a4\u30f3\u306e\u30cf\u30a4\u30d6\u30ea\u30c3\u30c9\u5b66\u7fd2\u304c\u53ef\u80fd\u3067\u3001\u5730\u65b9\u3067\u306e\u5c31\u8077\u3084\u8cc7\u683c\u53d6\u5f97\u306b\u3082\u5f37\u3044\u306e\u304c\u5927\u304d\u306a\u7279\u5fb4\u3067\u3059\u3002',\n            features: ['\u5168\u56fd\u6821\u820e\u3042\u308a', '\u8cc7\u683c\u306b\u5f37\u3044', '\u30cf\u30a4\u30d6\u30ea\u30c3\u30c9\u5b66\u7fd2'],\n            reviewUrl: 'https:\/\/zekno.co.jp\/programming\/human-academy-programming\/',\n            officialUrl: 'https:\/\/t.felmat.net\/fmcl?ak=I5287L.1.3957590.X118083S',\n            imageUrl: 'https:\/\/zekno.co.jp\/programming\/wp-content\/uploads\/2025\/12\/human-academy-bannar.jpg',\n            keywords: ['\u6821\u820e', '\u5730\u65b9', '\u8cc7\u683c', '\u5c31\u8077', '\u5bfe\u9762', '\u5b66\u6821', '\u8001\u8217'],\n            color: 'bg-blue-500',\n        },\n        {\n            id: 'win',\n            name: 'Win\u30b9\u30af\u30fc\u30eb',\n            description: '\u300c\u500b\u4eba\u30ec\u30c3\u30b9\u30f3\u300d\u5f62\u5f0f\u3067\u5b66\u3079\u308b\u30d1\u30bd\u30b3\u30f3\u6559\u5ba4\u3002\u5168\u6559\u5ba4\u3067\u8b1b\u5e2b\u304c\u6a2a\u306b\u3064\u3044\u3066\u6307\u5c0e\u3057\u3066\u304f\u308c\u308b\u305f\u3081\u3001\u308f\u304b\u3089\u306a\u3044\u3053\u3068\u3092\u305d\u306e\u5834\u3067\u3059\u3050\u306b\u89e3\u6c7a\u3067\u304d\u307e\u3059\u3002',\n            features: ['\u500b\u4eba\u30ec\u30c3\u30b9\u30f3', '\u6301\u3061\u8fbc\u307fPC\u53ef', '\u99c5\u8fd1\u6821\u820e'],\n            reviewUrl: 'https:\/\/zekno.co.jp\/programming\/win-school-review\/',\n            officialUrl: 'https:\/\/px.a8.net\/svt\/ejp?a8mat=3ZDEG6+GEM0VM+529E+60OXE',\n            imageUrl: 'https:\/\/zekno.co.jp\/programming\/wp-content\/uploads\/2025\/12\/win-shool-bannar.jpg',\n            keywords: ['\u500b\u4eba\u30ec\u30c3\u30b9\u30f3', '\u30d1\u30bd\u30b3\u30f3\u6559\u5ba4', '\u4e01\u5be7', '\u99c5\u8fd1', '\u30ec\u30c3\u30b9\u30f3'],\n            color: 'bg-sky-600',\n        }\n    ];\n\n    function DiagnosisApp() {\n        const [inputText, setInputText] = useState('');\n        const [isAnalyzing, setIsAnalyzing] = useState(false);\n        const [resultSchool, setResultSchool] = useState(null);\n\n        const handleAnalyze = () => {\n            if (!inputText.trim()) return;\n            setIsAnalyzing(true);\n            setTimeout(() => {\n                const normalizedText = inputText.toLowerCase();\n                let bestMatch = null;\n                let maxScore = -1;\n                SCHOOL_DATA.forEach(school => {\n                    let score = 0;\n                    school.keywords.forEach(word => {\n                        if (normalizedText.includes(word)) score += 10;\n                    });\n                    score += Math.random() * 5;\n                    if (score > maxScore) {\n                        maxScore = score;\n                        bestMatch = school;\n                    }\n                });\n                setResultSchool(bestMatch || SCHOOL_DATA[0]);\n                setIsAnalyzing(false);\n            }, 1800);\n        };\n\n        const isValid = inputText.trim() && !isAnalyzing;\n\n        return (\n            <div className=\"max-w-2xl mx-auto py-10 px-4\" style={{display:'block', visibility:'visible'}}>\n                {!resultSchool ? (\n                    <div className=\"animate-fade-in\">\n                        <div className=\"text-center mb-8\">\n                            <div className=\"inline-flex items-center justify-center p-3 bg-blue-50 rounded-2xl mb-4\">\n                                <Icons.Sparkles className=\"text-[#00bfff] w-8 h-8\" \/>\n                            <\/div>\n                            <h1 className=\"text-2xl md:text-3xl font-black text-gray-900 leading-tight\" style={{color:'#111827'}}>AI\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30b9\u30af\u30fc\u30eb\u8a3a\u65ad<\/h1>\n                            <p className=\"text-gray-500 mt-2\">\u4eca\u306e\u60a9\u307f\u3084\u5c06\u6765\u306e\u76ee\u6a19\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002<br\/>\u6700\u9069\u306a\u30b9\u30af\u30fc\u30eb\u3092AI\u89e3\u6790\u3057\u307e\u3059\u3002<\/p>\n                        <\/div>\n                        <div className=\"bg-white rounded-3xl shadow-xl p-6 md:p-8 border border-gray-100\">\n                            <textarea\n                                value={inputText}\n                                onChange={(e) => setInputText(e.target.value)}\n                                placeholder=\"\u4f8b\uff1a\u672a\u7d4c\u9a13\u304b\u3089\u30a8\u30f3\u30b8\u30cb\u30a2\u306b\u8ee2\u8077\u3057\u305f\u3044\u3002\/ \u526f\u696d\u3067\u7a3c\u304e\u305f\u3044\u3002\"\n                                className=\"w-full h-40 p-5 rounded-2xl bg-gray-50 border-2 border-gray-200 transition-all resize-none mb-6 block\"\n                                style={{color: '#374151', fontSize: '16px', border: '2px solid #e5e7eb'}}\n                            \/>\n                            <button\n                                onClick={handleAnalyze}\n                                disabled={!isValid}\n                                style={{\n                                    backgroundColor: isValid ? '#00bfff' : '#e5e7eb',\n                                    color: '#ffffff',\n                                    padding: '20px',\n                                    borderRadius: '16px',\n                                    width: '100%',\n                                    cursor: isValid ? 'pointer' : 'default',\n                                    boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.1)',\n                                    minHeight: '64px',\n                                    fontSize: '18px',\n                                    fontWeight: 'bold',\n                                    display: 'flex',\n                                    alignItems: 'center',\n                                    justifyContent: 'center',\n                                    gap: '10px'\n                                }}\n                            >\n                                <Icons.Sparkles size={20} style={{color: '#ffffff'}} \/>\n                                <span style={{color:'#ffffff', fontWeight:'bold', display:'inline'}}>\n                                    {isAnalyzing ? \"\u6700\u9069\u306a\u30b9\u30af\u30fc\u30eb\u3092\u89e3\u6790\u4e2d...\" : \"\u7121\u6599\u3067\u8a3a\u65ad\u3059\u308b\"}\n                                <\/span>\n                            <\/button>\n                        <\/div>\n                        <div className=\"mt-4 flex flex-wrap gap-2 justify-center\">\n                            <span className=\"text-xs text-gray-400\">\u30ad\u30fc\u30ef\u30fc\u30c9\u4f8b\uff1a<\/span>\n                            {['\u30a8\u30f3\u30b8\u30cb\u30a2\u8ee2\u8077\u3092\u76ee\u6307\u3057\u3066\u3044\u308b', '\u526f\u696d\u3067\u67085\u4e07\u5186\u7a3c\u304e\u305f\u3044', 'Python\u3092\u7fd2\u5f97\u3057\u305f\u3044', '\u5b89\u304f\u5b66\u3073\u305f\u3044', '\u30de\u30f3\u30c4\u30fc\u30de\u30f3\u6307\u5c0e\u304c\u7406\u60f3', '\u6771\u4eac\u304b\u3089\u901a\u5b66\u3067\u304d\u308b\u30b9\u30af\u30fc\u30eb'].map(word => (\n                                <button \n                                    key={word}\n                                    onClick={() => setInputText(word)}\n                                    className=\"text-xs bg-gray-100 text-gray-600 px-2 py-1 rounded hover:bg-gray-200 cursor-pointer\"\n                                    style={{border:'none', color:'#4b5563'}}\n                                >\n                                    #{word}\n                                <\/button>\n                            ))}\n                        <\/div>\n                    <\/div>\n                ) : (\n                    <div className=\"animate-fade-in space-y-6\">\n                        <div className=\"bg-white rounded-3xl shadow-2xl overflow-hidden border border-gray-100\">\n                            <div className={`${resultSchool.color} text-white p-8 text-center`} style={{color:'#ffffff'}}>\n                                <h2 className=\"text-3xl font-black text-white\" style={{color:'#ffffff'}}>{resultSchool.name}<\/h2>\n                            <\/div>\n                            <div className=\"p-6 md:p-10\">\n                                <div className=\"flex flex-col md:flex-row gap-8 mb-8\">\n                                    <div className=\"w-full md:w-1\/3 shrink-0\">\n                                        <a href={resultSchool.officialUrl} target=\"_blank\" rel=\"noopener noreferrer\" className=\"block hover:opacity-80 transition-opacity\">\n                                            <img src={resultSchool.imageUrl} className=\"w-full h-auto rounded-2xl shadow-md\" style={{display:'block'}} alt={resultSchool.name} \/>\n                                        <\/a>\n                                    <\/div>\n                                    <div>\n                                        <h3 className=\"text-xl font-bold text-gray-800 mb-3 border-l-4 border-blue-500 pl-4\">\u8a3a\u65ad\u7d50\u679c<\/h3>\n                                        <p className=\"text-gray-600 leading-relaxed mb-4\">{resultSchool.description}<\/p>\n                                        <div className=\"flex flex-wrap gap-2\">\n                                            {resultSchool.features.map((f, i) => (\n                                                <span key={i} className=\"text-xs text-blue-700 bg-blue-50 px-2 py-1 rounded-lg font-bold\">{f}<\/span>\n                                            ))}\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                                \n                                <div className=\"space-y-4\">\n                                    <a href={resultSchool.officialUrl} target=\"_blank\" className={`${resultSchool.color} w-full flex items-center justify-center text-white font-bold py-5 rounded-2xl shadow-lg text-center block no-underline`} style={{color:'#ffffff', textDecoration:'none'}}>\n                                        <span style={{color:'#ffffff'}}>\u516c\u5f0f\u30b5\u30a4\u30c8\u3067\u8a73\u3057\u304f\u898b\u308b<\/span>\n                                    <\/a>\n                                    \n                                    <a href={resultSchool.reviewUrl} target=\"_blank\" rel=\"noopener noreferrer\" className=\"w-full flex items-center justify-center bg-white border-2 border-gray-200 text-gray-700 font-bold py-4 rounded-2xl hover:bg-gray-50 transition-all text-center block no-underline\" style={{textDecoration:'none', color: '#4b5563'}}>\n                                        <Icons.MessageSquare className=\"mr-2 text-gray-400\" size={20} \/>\n                                        <span style={{color: '#4b5563'}}>\u53e3\u30b3\u30df\u30fb\u8a55\u5224\u306f\u3053\u3061\u3089<\/span>\n                                    <\/a>\n                                <\/div>\n                                \n                                <button onClick={() => setResultSchool(null)} className=\"w-full text-gray-400 text-sm py-2 mt-4 cursor-pointer\" style={{color:'#9ca3af', border:'none', background:'none'}}>\u3084\u308a\u76f4\u3059<\/button>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                )}\n                <div style={{marginTop:'20px', textAlign:'center', fontSize:'12px', color:'#999'}}>\n                    \u203b\u5165\u529b\u3055\u308c\u305f\u6587\u7ae0\u306f\u30d6\u30e9\u30a6\u30b6\u5185\u3067\u89e3\u6790\u3055\u308c\u307e\u3059\u3002\n                <\/div>\n            <\/div>\n        );\n    }\n\n    function initApp() {\n        const rootElement = document.getElementById('diagnosis-app-root');\n        if (rootElement) {\n            try {\n                const root = ReactDOM.createRoot(rootElement);\n                root.render(<DiagnosisApp \/>);\n            } catch (e) {\n                console.error(\"Diagnosis app initialization error:\", e);\n            }\n        }\n    }\n\n    if (document.readyState === 'loading') {\n        document.addEventListener('DOMContentLoaded', initApp);\n    } else {\n        initApp();\n    }\n<\/script>\n<\/body>\n<\/html>\n\n\n\n<p class=\"has-text-align-center u-mb-ctrl u-mb-10 is-style-balloon_box2\">5\u3064\u306e\u8cea\u554f\uff0830\u79d2\uff09\u306b\u7b54\u3048\u308b\u3060\u3051\u3067\u3001\u3042\u306a\u305f\u306b\u5408\u3046\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30b9\u30af\u30fc\u30eb\u304c\u5206\u304b\u308b\u8a3a\u65ad\u306f<a href=\"https:\/\/zekno.co.jp\/programming\/diagnostic\/\" data-type=\"link\" data-id=\"https:\/\/zekno.co.jp\/programming\/diagnostic\/\"><span class=\"swl-inline-color has-swl-deep-02-color\">\u3053\u3061\u3089<\/span><\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/zekno.co.jp\/programming\/diagnostic\/\"><img decoding=\"async\" width=\"1024\" height=\"572\" src=\"https:\/\/zekno.co.jp\/programming\/wp-content\/uploads\/2025\/12\/programming-school-diagnostic-tool-2-1024x572.jpg\" alt=\"\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30b9\u30af\u30fc\u30eb\u8a3a\u65ad\u30c4\u30fc\u30eb\" class=\"wp-image-22837\" srcset=\"https:\/\/zekno.co.jp\/programming\/wp-content\/uploads\/2025\/12\/programming-school-diagnostic-tool-2-1024x572.jpg 1024w, https:\/\/zekno.co.jp\/programming\/wp-content\/uploads\/2025\/12\/programming-school-diagnostic-tool-2-300x167.jpg 300w, https:\/\/zekno.co.jp\/programming\/wp-content\/uploads\/2025\/12\/programming-school-diagnostic-tool-2-768x429.jpg 768w, https:\/\/zekno.co.jp\/programming\/wp-content\/uploads\/2025\/12\/programming-school-diagnostic-tool-2-1536x857.jpg 1536w, https:\/\/zekno.co.jp\/programming\/wp-content\/uploads\/2025\/12\/programming-school-diagnostic-tool-2-2048x1143.jpg 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>\u8a3a\u65ad\u30c4\u30fc\u30eb\u3092\u8d77\u52d5\u3057\u3066\u3044\u307e\u3059&#8230; 5\u3064\u306e\u8cea\u554f\uff0830\u79d2\uff09\u306b\u7b54\u3048\u308b\u3060\u3051\u3067\u3001\u3042\u306a\u305f\u306b\u5408\u3046\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30b9\u30af\u30fc\u30eb\u304c\u5206\u304b\u308b\u8a3a\u65ad\u306f\u3053\u3061\u3089<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"swell_btn_cv_data":"","footnotes":"","_wp_rev_ctl_limit":""},"class_list":["post-23567","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/zekno.co.jp\/programming\/wp-json\/wp\/v2\/pages\/23567","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zekno.co.jp\/programming\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/zekno.co.jp\/programming\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/zekno.co.jp\/programming\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zekno.co.jp\/programming\/wp-json\/wp\/v2\/comments?post=23567"}],"version-history":[{"count":12,"href":"https:\/\/zekno.co.jp\/programming\/wp-json\/wp\/v2\/pages\/23567\/revisions"}],"predecessor-version":[{"id":25469,"href":"https:\/\/zekno.co.jp\/programming\/wp-json\/wp\/v2\/pages\/23567\/revisions\/25469"}],"wp:attachment":[{"href":"https:\/\/zekno.co.jp\/programming\/wp-json\/wp\/v2\/media?parent=23567"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}