[{"data":1,"prerenderedAt":584},["ShallowReactive",2],{"navigation_docs":3,"-frontend-js-error-handling":190,"-frontend-js-error-handling-surround":579},[4,136,150,183],{"title":5,"path":6,"stem":7,"children":8},"Frontend","\u002Ffrontend","1.frontend",[9,13,39,76,109,130],{"title":10,"path":6,"stem":11,"order":12},"フロントエンド ガイドライン","1.frontend\u002Findex",1,{"title":14,"path":15,"stem":16,"children":17},"HTML","\u002Ffrontend\u002Fhtml","1.frontend\u002F1.html\u002Findex",[18,19,23,27,31,35],{"title":14,"path":15,"stem":16},{"title":20,"path":21,"stem":22},"コードスタイル","\u002Ffrontend\u002Fhtml\u002Fcode-style","1.frontend\u002F1.html\u002Fcode-style",{"title":24,"path":25,"stem":26},"見出しタグ","\u002Ffrontend\u002Fhtml\u002Fheading","1.frontend\u002F1.html\u002Fheading",{"title":28,"path":29,"stem":30},"img タグ","\u002Ffrontend\u002Fhtml\u002Fimg","1.frontend\u002F1.html\u002Fimg",{"title":32,"path":33,"stem":34},"パスとリンク","\u002Ffrontend\u002Fhtml\u002Flink","1.frontend\u002F1.html\u002Flink",{"title":36,"path":37,"stem":38},"品質管理","\u002Ffrontend\u002Fhtml\u002Fquality","1.frontend\u002F1.html\u002Fquality",{"title":40,"path":41,"stem":42,"children":43},"CSS","\u002Ffrontend\u002Fcss","1.frontend\u002F2.css\u002Findex",[44,45,49,52,56,60,64,68,72],{"title":40,"path":41,"stem":42},{"title":46,"path":47,"stem":48},"命名規則・コンポーネント設計","\u002Ffrontend\u002Fcss\u002Farchitecture","1.frontend\u002F2.css\u002Farchitecture",{"title":20,"path":50,"stem":51},"\u002Ffrontend\u002Fcss\u002Fcode-style","1.frontend\u002F2.css\u002Fcode-style",{"title":53,"path":54,"stem":55},"Web フォント","\u002Ffrontend\u002Fcss\u002Ffonts","1.frontend\u002F2.css\u002Ffonts",{"title":57,"path":58,"stem":59},"記述順番","\u002Ffrontend\u002Fcss\u002Forder","1.frontend\u002F2.css\u002Forder",{"title":61,"path":62,"stem":63},"プロパティのルール","\u002Ffrontend\u002Fcss\u002Fproperties","1.frontend\u002F2.css\u002Fproperties",{"title":65,"path":66,"stem":67},"Tailwind CSS","\u002Ffrontend\u002Fcss\u002Ftailwind","1.frontend\u002F2.css\u002Ftailwind",{"title":69,"path":70,"stem":71},"値のルール","\u002Ffrontend\u002Fcss\u002Fvalues","1.frontend\u002F2.css\u002Fvalues",{"title":73,"path":74,"stem":75},"CSS 変数（カスタムプロパティ）","\u002Ffrontend\u002Fcss\u002Fvariables","1.frontend\u002F2.css\u002Fvariables",{"title":77,"path":78,"stem":79,"children":80},"JavaScript","\u002Ffrontend\u002Fjs","1.frontend\u002F3.js\u002Findex",[81,82,85,89,93,97,101,105],{"title":77,"path":78,"stem":79},{"title":20,"path":83,"stem":84},"\u002Ffrontend\u002Fjs\u002Fcode-style","1.frontend\u002F3.js\u002Fcode-style",{"title":86,"path":87,"stem":88},"エラーハンドリング","\u002Ffrontend\u002Fjs\u002Ferror-handling","1.frontend\u002F3.js\u002Ferror-handling",{"title":90,"path":91,"stem":92},"ライブラリの利用","\u002Ffrontend\u002Fjs\u002Flibraries","1.frontend\u002F3.js\u002Flibraries",{"title":94,"path":95,"stem":96},"HTML への読み込み","\u002Ffrontend\u002Fjs\u002Floading","1.frontend\u002F3.js\u002Floading",{"title":98,"path":99,"stem":100},"モジュール","\u002Ffrontend\u002Fjs\u002Fmodule-structure","1.frontend\u002F3.js\u002Fmodule-structure",{"title":102,"path":103,"stem":104},"命名規則","\u002Ffrontend\u002Fjs\u002Fnaming","1.frontend\u002F3.js\u002Fnaming",{"title":106,"path":107,"stem":108},"パフォーマンス最適化","\u002Ffrontend\u002Fjs\u002Fperformance","1.frontend\u002F3.js\u002Fperformance",{"title":110,"path":111,"stem":112,"children":113},"画像・メディアリソースガイドライン","\u002Ffrontend\u002Fmedia","1.frontend\u002F4.media\u002Findex",[114,115,119,123,127],{"title":110,"path":111,"stem":112},{"title":116,"path":117,"stem":118},"アクセシビリティ","\u002Ffrontend\u002Fmedia\u002Faccessibility","1.frontend\u002F4.media\u002Faccessibility",{"title":120,"path":121,"stem":122},"画像フォーマット","\u002Ffrontend\u002Fmedia\u002Fformats","1.frontend\u002F4.media\u002Fformats",{"title":124,"path":125,"stem":126},"ファイル命名規則","\u002Ffrontend\u002Fmedia\u002Fnaming","1.frontend\u002F4.media\u002Fnaming",{"title":106,"path":128,"stem":129},"\u002Ffrontend\u002Fmedia\u002Foptimization","1.frontend\u002F4.media\u002Foptimization",{"title":131,"path":132,"stem":133,"children":134},"開発環境テンプレート","\u002Ffrontend\u002Fenvironment","1.frontend\u002F5.environment\u002Findex",[135],{"title":131,"path":132,"stem":133},{"title":137,"path":138,"stem":139,"children":140,"page":149},"Deploy Release","\u002Fdeploy-release","2.deploy-release",[141,145],{"title":142,"path":143,"stem":144},"デプロイ","\u002Fdeploy-release\u002Fdeploy","2.deploy-release\u002Fdeploy",{"title":146,"path":147,"stem":148},"リリース","\u002Fdeploy-release\u002Frelease","2.deploy-release\u002Frelease",false,{"title":151,"path":152,"stem":153,"children":154},"Git","\u002Fgit","3.git",[155,159,163,167,171,175,179],{"title":156,"path":152,"stem":157,"order":158},"Git ガイドライン","3.git\u002Findex",3,{"title":160,"path":161,"stem":162},"ブランチ戦略","\u002Fgit\u002Fbranch","3.git\u002Fbranch",{"title":164,"path":165,"stem":166},"CI\u002FCD運用","\u002Fgit\u002Fcicd","3.git\u002Fcicd",{"title":168,"path":169,"stem":170},"コミットメッセージとタグ","\u002Fgit\u002Fmessage","3.git\u002Fmessage",{"title":172,"path":173,"stem":174},"Pull Request運用","\u002Fgit\u002Fpull-request","3.git\u002Fpull-request",{"title":176,"path":177,"stem":178},"リポジトリ運用","\u002Fgit\u002Frepository","3.git\u002Frepository",{"title":180,"path":181,"stem":182},"GitHub権限・セキュリティ","\u002Fgit\u002Fsecurity","3.git\u002Fsecurity",{"title":184,"path":185,"stem":186,"children":187,"order":189},"AI 利用ガイドライン","\u002Fai","4.ai\u002Findex",[188],{"title":184,"path":185,"stem":186,"order":189},4,{"id":191,"title":86,"body":192,"description":572,"extension":573,"links":574,"meta":575,"navigation":576,"path":87,"seo":577,"stem":88,"__hash__":578},"docs\u002F1.frontend\u002F3.js\u002Ferror-handling.md",{"type":193,"value":194,"toc":568},"minimark",[195,199,203,206,357,360,363,564],[196,197,198],"p",{},"エラーハンドリングは、アプリケーションの安定性を保つために重要です。エラーが発生する可能性のある処理には必ず try-catch を使用し、問題が発生した場合は適切な対応を行ってください。",[200,201,202],"h2",{"id":202},"基本パターン",[196,204,205],{},"エラーが発生しうる処理には try-catch を使い、何が問題か分かるようなエラーメッセージを記述します。エラー内容は必ずコンソールに出力し、必要に応じてデフォルト値を返してください。",[207,208,213],"pre",{"className":209,"code":210,"language":211,"meta":212,"style":212},"language-javascript shiki shiki-themes github-light material-theme material-theme-palenight","function parseJSON(str) {\n  try {\n    return JSON.parse(str);\n  } catch (error) {\n    console.error(\"JSON解析エラー:\", error.message);\n    return null;\n  }\n}\n","javascript","",[214,215,216,242,251,277,297,334,345,351],"code",{"__ignoreMap":212},[217,218,220,224,228,232,236,239],"span",{"class":219,"line":12},"line",[217,221,223],{"class":222},"sUoqF","function",[217,225,227],{"class":226},"s3Zf7"," parseJSON",[217,229,231],{"class":230},"sN50r","(",[217,233,235],{"class":234},"sgNys","str",[217,237,238],{"class":230},")",[217,240,241],{"class":230}," {\n",[217,243,245,249],{"class":219,"line":244},2,[217,246,248],{"class":247},"sktmp","  try",[217,250,241],{"class":230},[217,252,253,256,260,263,266,269,272,274],{"class":219,"line":158},[217,254,255],{"class":247},"    return",[217,257,259],{"class":258},"s_GZX"," JSON",[217,261,262],{"class":230},".",[217,264,265],{"class":226},"parse",[217,267,231],{"class":268},"sbBtD",[217,270,235],{"class":271},"sKuZN",[217,273,238],{"class":268},[217,275,276],{"class":230},";\n",[217,278,279,282,285,288,291,294],{"class":219,"line":189},[217,280,281],{"class":230},"  }",[217,283,284],{"class":247}," catch",[217,286,287],{"class":268}," (",[217,289,290],{"class":271},"error",[217,292,293],{"class":268},") ",[217,295,296],{"class":230},"{\n",[217,298,300,303,305,307,309,313,317,319,322,325,327,330,332],{"class":219,"line":299},5,[217,301,302],{"class":271},"    console",[217,304,262],{"class":230},[217,306,290],{"class":226},[217,308,231],{"class":268},[217,310,312],{"class":311},"ssQ5U","\"",[217,314,316],{"class":315},"scigg","JSON解析エラー:",[217,318,312],{"class":311},[217,320,321],{"class":230},",",[217,323,324],{"class":271}," error",[217,326,262],{"class":230},[217,328,329],{"class":271},"message",[217,331,238],{"class":268},[217,333,276],{"class":230},[217,335,337,339,343],{"class":219,"line":336},6,[217,338,255],{"class":247},[217,340,342],{"class":341},"s56lG"," null",[217,344,276],{"class":230},[217,346,348],{"class":219,"line":347},7,[217,349,350],{"class":230},"  }\n",[217,352,354],{"class":219,"line":353},8,[217,355,356],{"class":230},"}\n",[200,358,359],{"id":359},"非同期処理のエラー規則",[196,361,362],{},"非同期処理では async\u002Fawait を使い、必ず try-catch で囲んでエラーを補足します。エラー時には内容をコンソールに出力し、適切なデフォルト値を返すようにしてください。",[207,364,366],{"className":209,"code":365,"language":211,"meta":212,"style":212},"async function fetchData(url) {\n  try {\n    const response = await fetch(url);\n    if (!response.ok) {\n      throw new Error(`HTTP ${response.status}`);\n    }\n    return await response.json();\n  } catch (error) {\n    console.error(\"データ取得エラー:\", error.message);\n    return null;\n  }\n}\n",[214,367,368,388,394,420,442,478,483,501,515,545,554,559],{"__ignoreMap":212},[217,369,370,373,376,379,381,384,386],{"class":219,"line":12},[217,371,372],{"class":222},"async",[217,374,375],{"class":222}," function",[217,377,378],{"class":226}," fetchData",[217,380,231],{"class":230},[217,382,383],{"class":234},"url",[217,385,238],{"class":230},[217,387,241],{"class":230},[217,389,390,392],{"class":219,"line":244},[217,391,248],{"class":247},[217,393,241],{"class":230},[217,395,396,399,402,406,409,412,414,416,418],{"class":219,"line":158},[217,397,398],{"class":222},"    const",[217,400,401],{"class":258}," response",[217,403,405],{"class":404},"sSBoF"," =",[217,407,408],{"class":247}," await",[217,410,411],{"class":226}," fetch",[217,413,231],{"class":268},[217,415,383],{"class":271},[217,417,238],{"class":268},[217,419,276],{"class":230},[217,421,422,425,427,430,433,435,438,440],{"class":219,"line":189},[217,423,424],{"class":247},"    if",[217,426,287],{"class":268},[217,428,429],{"class":404},"!",[217,431,432],{"class":271},"response",[217,434,262],{"class":230},[217,436,437],{"class":271},"ok",[217,439,293],{"class":268},[217,441,296],{"class":230},[217,443,444,447,450,453,455,458,461,464,466,468,471,474,476],{"class":219,"line":299},[217,445,446],{"class":247},"      throw",[217,448,449],{"class":404}," new",[217,451,452],{"class":226}," Error",[217,454,231],{"class":268},[217,456,457],{"class":311},"`",[217,459,460],{"class":315},"HTTP ",[217,462,463],{"class":311},"${",[217,465,432],{"class":271},[217,467,262],{"class":311},[217,469,470],{"class":271},"status",[217,472,473],{"class":311},"}`",[217,475,238],{"class":268},[217,477,276],{"class":230},[217,479,480],{"class":219,"line":336},[217,481,482],{"class":230},"    }\n",[217,484,485,487,489,491,493,496,499],{"class":219,"line":347},[217,486,255],{"class":247},[217,488,408],{"class":247},[217,490,401],{"class":271},[217,492,262],{"class":230},[217,494,495],{"class":226},"json",[217,497,498],{"class":268},"()",[217,500,276],{"class":230},[217,502,503,505,507,509,511,513],{"class":219,"line":353},[217,504,281],{"class":230},[217,506,284],{"class":247},[217,508,287],{"class":268},[217,510,290],{"class":271},[217,512,293],{"class":268},[217,514,296],{"class":230},[217,516,518,520,522,524,526,528,531,533,535,537,539,541,543],{"class":219,"line":517},9,[217,519,302],{"class":271},[217,521,262],{"class":230},[217,523,290],{"class":226},[217,525,231],{"class":268},[217,527,312],{"class":311},[217,529,530],{"class":315},"データ取得エラー:",[217,532,312],{"class":311},[217,534,321],{"class":230},[217,536,324],{"class":271},[217,538,262],{"class":230},[217,540,329],{"class":271},[217,542,238],{"class":268},[217,544,276],{"class":230},[217,546,548,550,552],{"class":219,"line":547},10,[217,549,255],{"class":247},[217,551,342],{"class":341},[217,553,276],{"class":230},[217,555,557],{"class":219,"line":556},11,[217,558,350],{"class":230},[217,560,562],{"class":219,"line":561},12,[217,563,356],{"class":230},[565,566,567],"style",{},"html pre.shiki code .sUoqF, html code.shiki .sUoqF{--shiki-light:#D73A49;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s3Zf7, html code.shiki .s3Zf7{--shiki-light:#6F42C1;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sN50r, html code.shiki .sN50r{--shiki-light:#24292E;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sgNys, html code.shiki .sgNys{--shiki-light:#E36209;--shiki-light-font-style:inherit;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sktmp, html code.shiki .sktmp{--shiki-light:#D73A49;--shiki-light-font-style:inherit;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s_GZX, html code.shiki .s_GZX{--shiki-light:#005CC5;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sbBtD, html code.shiki .sbBtD{--shiki-light:#24292E;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sKuZN, html code.shiki .sKuZN{--shiki-light:#24292E;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .ssQ5U, html code.shiki .ssQ5U{--shiki-light:#032F62;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .scigg, html code.shiki .scigg{--shiki-light:#032F62;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s56lG, html code.shiki .s56lG{--shiki-light:#005CC5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sSBoF, html code.shiki .sSBoF{--shiki-light:#D73A49;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}",{"title":212,"searchDepth":244,"depth":244,"links":569},[570,571],{"id":202,"depth":244,"text":202},{"id":359,"depth":244,"text":359},"try-catchと非同期処理のエラーハンドリングパターン","md",null,{},true,{"title":86,"description":572},"2qrAp508-sf1NnxdwRREFOfZVRSPDzmNRhHa3EV-tfI",[580,582],{"title":20,"path":83,"stem":84,"description":581,"children":-1},"Prettier、EditorConfig、ESLintによる自動フォーマット設定",{"title":90,"path":91,"stem":92,"description":583,"children":-1},"外部ライブラリの選定基準、推奨ライブラリ、管理ルール",1780099579006]