{"id":25995,"date":"2025-12-01T11:47:19","date_gmt":"2025-12-01T11:47:19","guid":{"rendered":"https:\/\/pokecon.jp\/job\/?p=25995"},"modified":"2025-12-01T11:47:19","modified_gmt":"2025-12-01T11:47:19","slug":"%e3%81%9a%e3%82%93%e3%81%a0%e3%82%82%e3%82%93%e3%81%ab%e3%80%8e%e5%85%88%e8%bc%a9%e3%81%ae%e3%82%af%e3%82%bd%e3%82%b3%e3%83%bc%e3%83%89%e3%81%ae%e3%81%9b%e3%81%84%e3%81%a7%e6%9c%ac%e7%95%aa%e3%81%8c","status":"publish","type":"post","link":"https:\/\/pokecon.jp\/job\/25995\/","title":{"rendered":"\u305a\u3093\u3060\u3082\u3093\u306b\u300e\u5148\u8f29\u306e\u30af\u30bd\u30b3\u30fc\u30c9\u306e\u305b\u3044\u3067\u672c\u756a\u304c\u71c3\u3048\u3066\u308b\u306e\u3060\uff01\u300f\u3068\u6bce\u671d\u53eb\u3070\u308c\u308b\u76ee\u899a\u307e\u3057\u30a2\u30d7\u30ea\u3092\u4f5c\u3063\u305f #Nuxt &#8211; Qiita"},"content":{"rendered":"\n<\/p>\n<div wp_automatic_readability=\"142.91795722714\">\n<h2 data-sourcepos=\"1:1-1:78\">\n<span id=\"\u306f\u3058\u3081\u306b\u30a8\u30f3\u30b8\u30cb\u30a2\u306b\u3068\u3063\u3066\u6700\u9ad8\u306e\u76ee\u899a\u307e\u3057\u3068\u306f\" class=\"fragment\"\/><a target=\"_blank\" href=\"#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%81%AB%E3%81%A8%E3%81%A3%E3%81%A6%E6%9C%80%E9%AB%98%E3%81%AE%E7%9B%AE%E8%A6%9A%E3%81%BE%E3%81%97%E3%81%A8%E3%81%AF\"><i class=\"fa fa-link\"\/><\/a>\u306f\u3058\u3081\u306b\uff1a\u30a8\u30f3\u30b8\u30cb\u30a2\u306b\u3068\u3063\u3066\u300c\u6700\u9ad8\u306e\u76ee\u899a\u307e\u3057\u300d\u3068\u306f<\/h2>\n<p data-sourcepos=\"3:1-3:39\">\u671d\u3001\u8d77\u304d\u308b\u3053\u3068\u304c\u3067\u304d\u306a\u3044\u3002<\/p>\n<p data-sourcepos=\"5:1-5:291\">\u5927\u97f3\u91cf\u306e\u30a2\u30e9\u30fc\u30e0\u3082\u3001\u5149\u3067\u8d77\u3053\u3059\u76ee\u899a\u307e\u3057\u30e9\u30a4\u30c8\u3082\u3001\u8a08\u7b97\u554f\u984c\u3092\u89e3\u304b\u306a\u3044\u3068\u6b62\u307e\u3089\u306a\u3044\u30a2\u30d7\u30ea\u3082\u8a66\u3057\u307e\u3057\u305f\u3002\u3057\u304b\u3057\u3001\u6163\u308c\u3066\u3057\u307e\u3048\u3070\u4e8c\u5ea6\u5bdd\u306f\u5bb9\u6613\u3067\u3059\u3002\u8133\u304c\u300c\u3053\u308c\u306f\u305f\u3060\u306e\u30a2\u30e9\u30fc\u30e0\u3060\u300d\u3068\u5b66\u7fd2\u3057\u3066\u3057\u307e\u3046\u304b\u3089\u3067\u3059\u3002<\/p>\n<p data-sourcepos=\"7:1-7:206\">\u3067\u3059\u304c\u3001\u6211\u3005\u30a8\u30f3\u30b8\u30cb\u30a2\u306b\u306f\u3001<strong>\u3069\u3093\u306a\u306b\u6df1\u304f\u7720\u3063\u3066\u3044\u3066\u3082\u3001\u805e\u3044\u305f\u77ac\u9593\u306b\u5fc3\u62cd\u6570\u304c\u8df3\u306d\u4e0a\u304c\u308a\u3001\u51b7\u3084\u6c57\u3068\u5171\u306b\u899a\u9192\u3057\u3066\u3057\u307e\u3046\u300c\u97f3\u300d<\/strong> \u304c\u3042\u308b\u306f\u305a\u3067\u3059\u3002<\/p>\n<p data-sourcepos=\"9:1-9:56\">\u305d\u3046\u3001<strong>\u300c\u672c\u756a\u74b0\u5883\u306e\u969c\u5bb3\u901a\u77e5\u300d<\/strong> \u3067\u3059\u3002<\/p>\n<p data-sourcepos=\"11:1-11:120\">\u300c\u3082\u3057\u3001\u6bce\u671d\u6c7a\u307e\u3063\u305f\u6642\u9593\u306b\u672c\u756a\u74b0\u5883\u304c\u708e\u4e0a\u3057\u305f\u3089\u3001\u7d76\u5bfe\u306b\u8d77\u304d\u3089\u308c\u308b\u306e\u3067\u306f\u306a\u3044\u304b\uff1f\u300d<\/p>\n<p data-sourcepos=\"13:1-13:218\">\u305d\u306e\u3088\u3046\u306a\u72c2\u3063\u305f\u4eee\u8aac\u3092\u691c\u8a3c\u3059\u308b\u305f\u3081\u306b\u3001<strong>\u67b6\u7a7a\u306e\u30b7\u30b9\u30c6\u30e0\u969c\u5bb3\u3092\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u3067\u751f\u6210\u3057\u3066\u3001\u305a\u3093\u3060\u3082\u3093\u304c\u53e9\u304d\u8d77\u3053\u3057\u3066\u304f\u308c\u308b\u76ee\u899a\u307e\u3057\u30a2\u30d7\u30ea<\/strong> \u3092\u958b\u767a\u3057\u307e\u3057\u305f\u3002<\/p>\n<h2 data-sourcepos=\"15:1-15:30\">\n<span id=\"0-\u5b8c\u6210\u3057\u305fweb\u30a2\u30d7\u30ea\" class=\"fragment\"\/><a target=\"_blank\" href=\"#0-%E5%AE%8C%E6%88%90%E3%81%97%E3%81%9Fweb%E3%82%A2%E3%83%97%E3%83%AA\"><i class=\"fa fa-link\"\/><\/a>0. \u5b8c\u6210\u3057\u305fWEB\u30a2\u30d7\u30ea<\/h2>\n<p data-sourcepos=\"17:1-17:138\"><a target=\"_blank\" href=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F67192%2Fcc3be362-35f9-4127-bc2f-30f16ced313b.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;s=441f73e4e7ce3fb1438ab4b0e1389e88\" target=\"_blank\" rel=\"nofollow noopener\"><img decoding=\"async\" src=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F67192%2Fcc3be362-35f9-4127-bc2f-30f16ced313b.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;s=441f73e4e7ce3fb1438ab4b0e1389e88\" alt=\"\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u753b\u9762\" srcset=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F67192%2Fcc3be362-35f9-4127-bc2f-30f16ced313b.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;w=1400&amp;fit=max&amp;s=dfaf018968a9e9ced147e922bd0a63e2 1x\" data-canonical-src=\"https:\/\/qiita-image-store.s3.ap-northeast-1.amazonaws.com\/0\/67192\/cc3be362-35f9-4127-bc2f-30f16ced313b.png\" loading=\"lazy\"\/><\/a><\/p>\n<p data-sourcepos=\"20:1-20:49\"><strong>\ud83d\udd17 \u516c\u958b\u4e2d\u306eWEB\u30a2\u30d7\u30ea\u306f\u30b3\u30c1\u30e9\u2193<\/strong><\/p>\n<p data-sourcepos=\"22:1-22:48\"><iframe id=\"qiita-embed-content__dd680118c743e4a678a9378e9b486c1a\" src=\"https:\/\/qiita.com\/embed-contents\/link-card#qiita-embed-content__dd680118c743e4a678a9378e9b486c1a\" data-content=\"https%3A%2F%2Fincident-driven-wakeup.std9.workers.dev%2F\" frameborder=\"0\" scrolling=\"no\" loading=\"lazy\" style=\"width:100%;\" height=\"29\"><![CDATA[<![CDATA[<![CDATA[\n]]]]]]><![CDATA[><![CDATA[>]]]]><![CDATA[>]]><\/iframe>\n<\/p>\n<div data-sourcepos=\"24:1-28:3\" class=\"note warn\">\n<span class=\"fa fa-fw fa-exclamation-circle\"\/><\/p>\n<div>\n<p data-sourcepos=\"25:1-25:16\"><strong>\u3054\u6ce8\u610f\uff01<\/strong><\/p>\n<ul data-sourcepos=\"26:1-27:146\">\n<li data-sourcepos=\"26:1-26:128\">\u3053\u3061\u3089\u306f\u30b8\u30e7\u30fc\u30afWEB\u30a2\u30d7\u30ea\u3067\u3059\u3002\u5fc3\u81d3\u306e\u5f31\u3044\u65b9\u3001\u30aa\u30f3\u30b3\u30fc\u30eb\u75b2\u308c\u306e\u65b9\u306f\u4f7f\u7528\u3092\u304a\u63a7\u3048\u304f\u3060\u3055\u3044<\/li>\n<li data-sourcepos=\"27:1-27:146\">\u307e\u305f\u3001\u6b63\u5e38\u306b\u52d5\u4f5c\u3057\u306a\u3044\u3053\u3068\u3082\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u306e\u3067\u30e1\u30a4\u30f3\u30a2\u30e9\u30fc\u30e0\u3068\u3057\u3066\u306e\u904b\u7528\u3082\u304a\u63a7\u3048\u304f\u3060\u3055\u3044\u307e\u305b<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<h2 data-sourcepos=\"30:1-30:27\">\n<span id=\"1-\u4f55\u3092\u4f5c\u3063\u305f\u306e\u304b\" class=\"fragment\"\/><a target=\"_blank\" href=\"#1-%E4%BD%95%E3%82%92%E4%BD%9C%E3%81%A3%E3%81%9F%E3%81%AE%E3%81%8B\"><i class=\"fa fa-link\"\/><\/a>1. \u4f55\u3092\u4f5c\u3063\u305f\u306e\u304b<\/h2>\n<p data-sourcepos=\"32:1-32:231\">\u8a2d\u5b9a\u3057\u305f\u6642\u9593(\u30c7\u30d5\u30a9\u30eb\u30c8\u6bce\u671d6\u6642)\u306b\u3001<strong>Google Gemini<\/strong> \u304c\u300c\u67b6\u7a7a\u306e\u969c\u5bb3\u30a4\u30f3\u30b7\u30c7\u30f3\u30c8\u300d\u3092\u751f\u6210\u3057\u3001<strong>\u305a\u3093\u3060\u3082\u3093<\/strong>\uff08VOICEVOX\uff09\u304c\u60b2\u75db\u306a\u53eb\u3073\u58f0\u3067\u72b6\u6cc1\u3092\u5831\u544a\u3057\u3066\u304f\u308bWeb\u30a2\u30d7\u30ea\u3067\u3059\u3002<\/p>\n<p data-sourcepos=\"34:1-34:135\"><a target=\"_blank\" href=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F67192%2F7b3064d7-393a-4173-8328-13c1d4073343.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;s=ac6ad39d94e11528519d82b5da744cbb\" target=\"_blank\" rel=\"nofollow noopener\"><img decoding=\"async\" src=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F67192%2F7b3064d7-393a-4173-8328-13c1d4073343.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;s=ac6ad39d94e11528519d82b5da744cbb\" alt=\"\u30c1\u30e3\u30ec\u30f3\u30b8\u30e2\u30fc\u30c9\" srcset=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F67192%2F7b3064d7-393a-4173-8328-13c1d4073343.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;w=1400&amp;fit=max&amp;s=cce8fe395b95cba3c70fc5a4a4d09a0b 1x\" data-canonical-src=\"https:\/\/qiita-image-store.s3.ap-northeast-1.amazonaws.com\/0\/67192\/7b3064d7-393a-4173-8328-13c1d4073343.png\" loading=\"lazy\"\/><\/a><\/p>\n<blockquote data-sourcepos=\"37:1-37:320\" wp_automatic_readability=\"8\">\n<p data-sourcepos=\"37:3-37:320\"><strong>\u305a\u3093\u3060\u3082\u3093<\/strong>: \u300c\u5148\u8f29\uff01\u5927\u5909\u306a\u306e\u3060\uff01\u30b3\u30a2\u6c7a\u6e08\u30b7\u30b9\u30c6\u30e0\u304c\u5b8c\u5168\u306b\u505c\u6b62\u306a\u306e\u3060\uff01\u3053\u308c\u3001\u5148\u8f29\u304c\u524d\u306b\u66f8\u3044\u305f\u8907\u96d1\u602a\u5947\u306a\u30b3\u30fc\u30c9\u306e\u305b\u3044\u306a\u306e\u3060\u2026\uff1f\u3082\u3046\u3001\u30b7\u30b9\u30c6\u30e0\u518d\u8d77\u52d5\u3082\u3067\u304d\u306a\u3044\u306e\u3060\u2026\uff01\u9867\u5ba2\u30c7\u30fc\u30bf\u304c\u3001\u30c0\u30e1\u306a\u306e\u3060\uff01\u3069\u3046\u3057\u3066\u304f\u308c\u308b\u306e\u3060\u2026\uff01\u300d<\/p>\n<\/blockquote>\n<p data-sourcepos=\"39:1-40:197\">\u753b\u9762\u306f\u8d64\u304f\u70b9\u6ec5\u3057\u3001Web Audio API\u3067\u751f\u6210\u3055\u308c\u305f\u4e0d\u5feb\u306a\u30b5\u30a4\u30ec\u30f3\u97f3\u304c\u9cf4\u308a\u97ff\u304d\u307e\u3059\u3002<br \/>\u3053\u308c\u3092\u6b62\u3081\u308b\u306b\u306f\u3001\u753b\u9762\u306b\u8868\u793a\u3055\u308c\u305f\u300c\u89e3\u6c7a\u30b3\u30de\u30f3\u30c9\uff08\u4f8b: <code>pcore-svc restart --force<\/code>\uff09\u300d\u3092\u6b63\u78ba\u306b\u30bf\u30a4\u30d4\u30f3\u30b0\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\uff08Challenge\u30e2\u30fc\u30c9\uff09\u3002<\/p>\n<p data-sourcepos=\"42:1-42:200\">\u3055\u3089\u306b\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u3067\u306f <strong>\u300e\u97f3\u58f0\u5408\u6210\u30b5\u30fc\u30d0\u30fc\u306e\u6b7b\u6d3b\u72b6\u614b\u300f\u3084\u300e\u904e\u53bb\u306e\u30a4\u30f3\u30b7\u30c7\u30f3\u30c8\u4ef6\u6570(\u30a2\u30e9\u30fc\u30e0\u767a\u7832\u56de\u6570)\u300f\u3082\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0<\/strong> \u3067\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002<\/p>\n<h2 data-sourcepos=\"44:1-44:57\">\n<span id=\"2-\u7121\u99c4\u306b\u58ee\u5927\u306a\u30b7\u30b9\u30c6\u30e0\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\" class=\"fragment\"\/><a target=\"_blank\" href=\"#2-%E7%84%A1%E9%A7%84%E3%81%AB%E5%A3%AE%E5%A4%A7%E3%81%AA%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3\"><i class=\"fa fa-link\"\/><\/a>2. \u7121\u99c4\u306b\u58ee\u5927\u306a\u30b7\u30b9\u30c6\u30e0\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3<\/h2>\n<p data-sourcepos=\"46:1-46:48\">\u305f\u304b\u304c\u76ee\u899a\u307e\u3057\u6642\u8a08\u3092\u4f5c\u308b\u305f\u3081\u306b\u3001<\/p>\n<ul data-sourcepos=\"47:1-53:1\">\n<li data-sourcepos=\"47:1-47:47\">\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u306b <strong>\u6700\u65b0\u306e Nuxt 4<\/strong>\n<\/li>\n<li data-sourcepos=\"48:1-48:47\">\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306b <strong>\u6700\u8fd1\u71b1\u3044 Convex<\/strong>\n<\/li>\n<li data-sourcepos=\"49:1-49:72\">\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u969c\u5bb3\u751f\u6210\u306b <strong>\u7121\u6599\u67a0\u306e\u3042\u308b Google Gemini<\/strong>\n<\/li>\n<li data-sourcepos=\"50:1-50:57\">\u904b\u7528\u30b5\u30fc\u30d0\u30fc\u306b <strong>\u8d85\u9ad8\u901f\u306a Cloudflare Pages<\/strong>\n<\/li>\n<li data-sourcepos=\"51:1-51:73\">\u30bb\u30ad\u30e5\u30a2\u901a\u4fe1\u306b <strong>\u4fe1\u983c\u306e\u304a\u3051\u308b Cloudflare Tunnel + Access<\/strong>\n<\/li>\n<li data-sourcepos=\"52:1-53:1\">\u305d\u3057\u3066\u3001\u305a\u3093\u3060\u3082\u3093\u97f3\u58f0\u751f\u6210\u306b <strong>\u300c\u300c\u300c\u81ea\u5b85\u306e\u30b2\u30fc\u30df\u30f3\u30b0PC\u300d\u300d\u300d<\/strong>\n<\/li>\n<\/ul>\n<p data-sourcepos=\"54:1-54:153\">\u3092\u52d5\u54e1\u3057\u307e\u3057\u305f\u3002<strong>\u30af\u30e9\u30a6\u30c9\u8cbb\u7528\u306f\u3059\u3079\u3066\u7121\u6599\u67a0<\/strong>\u3067\u3001\u81ea\u5b85\u306e\u30b2\u30fc\u30df\u30f3\u30b0PC\u306e\u96fb\u6c17\u4ee3\u3060\u3051\u904b\u7528\u8cbb\u304c\u767a\u751f\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p><iframe id=\"qiita-embed-content__7c4f97a72e6d4c6b758d6f47833b9fb1\" src=\"https:\/\/qiita.com\/embed-contents\/mermaid#qiita-embed-content__7c4f97a72e6d4c6b758d6f47833b9fb1\" style=\"width:100%;\" frameborder=\"0\" scrolling=\"no\" loading=\"lazy\" data-content=\"{\" data\":\"flowchart=\"\" tb\\n=\"\" subgraph=\"\" client[\\\"&#12463;&#12521;&#12452;&#12450;&#12531;&#12488;=\"\" (&#12502;&#12521;&#12454;&#12470;)\\\"]\\n=\"\" timer[\\\"settimeout<br=\"\"\/>\u30a2\u30e9\u30fc\u30e0\u767a\u706b\\&#8221;]\\n UI[\\&#8221;Vue UI<br \/>\u8d64\u3044\u753b\u9762 + \u30b5\u30a4\u30ec\u30f3\\&#8221;]\\n end\\n\\n subgraph Convex[\\&#8221;Convex Backend\\&#8221;]\\n GenAction[\\&#8221;generateIncident<br \/>Action\\&#8221;]\\n VoiceAction[\\&#8221;synthesizeVoice<br \/>Action\\&#8221;]\\n Cron[\\&#8221;Cron Job<br \/>30\u79d2\u3054\u3068\\&#8221;]\\n HealthCheck[\\&#8221;healthCheck<br \/>Action\\&#8221;]\\n DB[(\\&#8221;incidentLogs<br \/>\u5c65\u6b74\u4fdd\u5b58\\&#8221;)]\\n HealthDB[(\\&#8221;healthStatus<br \/>\u6b7b\u6d3b\u72b6\u614b\\&#8221;)]\\n end\\n\\n subgraph External[\\&#8221;\u5916\u90e8\u30b5\u30fc\u30d3\u30b9\\&#8221;]\\n Gemini[\\&#8221;Google Gemini 2.5 Flash\\&#8221;]\\n end\\n\\n subgraph Home[\\&#8221;\u81ea\u5b85\u30b5\u30fc\u30d0\u30fc\\&#8221;]\\n Tunnel[\\&#8221;Cloudflare Tunnel\\&#8221;]\\n VOICEVOX[\\&#8221;VOICEVOX Engine\\&#8221;]\\n end\\n\\n Timer &#8211;&gt;|\\&#8221;1. \u30a2\u30e9\u30fc\u30e0\u6642\u523b\\&#8221;| GenAction\\n GenAction &#8211;&gt;|\\&#8221;2. \u30a4\u30f3\u30b7\u30c7\u30f3\u30c8\u751f\u6210\\&#8221;| Gemini\\n Gemini &#8211;&gt;|\\&#8221;3. \u69cb\u9020\u5316\u30c7\u30fc\u30bf\\&#8221;| GenAction\\n GenAction &#8211;&gt;|\\&#8221;4. \u97f3\u58f0\u5408\u6210\u30ea\u30af\u30a8\u30b9\u30c8\\&#8221;| VoiceAction\\n VoiceAction &#8211;&gt;|\\&#8221;5. HTTPS\\&#8221;| Tunnel\\n Tunnel &#8211;&gt;|\\&#8221;6. localhost:50021\\&#8221;| VOICEVOX\\n VOICEVOX &#8211;&gt;|\\&#8221;7. WAV (base64)\\&#8221;| VoiceAction\\n VoiceAction &#8211;&gt;|\\&#8221;8. \u97f3\u58f0\u30c7\u30fc\u30bf\\&#8221;| UI\\n GenAction &#8211;&gt; DB\\n UI &#8211;&gt;|\\&#8221;9. \u89e3\u9664\\&#8221;| DB\\n\\n Cron &#8211;&gt;|\\&#8221;\u5b9a\u671f\u5b9f\u884c\\&#8221;| HealthCheck\\n HealthCheck &#8211;&gt;|\\&#8221;\u6b7b\u6d3b\u78ba\u8a8d\\&#8221;| Tunnel\\n HealthCheck &#8211;&gt; HealthDB\\n HealthDB -.-&gt;|\\&#8221;\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u53cd\u6620\\&#8221;| UI&#8221;,&#8221;key&#8221;:&#8221;fcd4834af8994bdec0ff3ba77357d070&#8243;}&#8221;&gt;<\/p>\n<h3 data-sourcepos=\"98:1-98:49\">\n<span id=\"\u306a\u305c\u3053\u306e\u3088\u3046\u306a\u69cb\u6210\u306b\u306a\u3063\u305f\u306e\u304b\" class=\"fragment\"\/><a target=\"_blank\" href=\"#%E3%81%AA%E3%81%9C%E3%81%93%E3%81%AE%E3%82%88%E3%81%86%E3%81%AA%E6%A7%8B%E6%88%90%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%9F%E3%81%AE%E3%81%8B\"><i class=\"fa fa-link\"\/><\/a>\u306a\u305c\u3053\u306e\u3088\u3046\u306a\u69cb\u6210\u306b\u306a\u3063\u305f\u306e\u304b<\/h3>\n<ol data-sourcepos=\"100:1-108:0\" wp_automatic_readability=\"2\">\n<li data-sourcepos=\"100:1-102:0\" wp_automatic_readability=\"2\">\n<p data-sourcepos=\"100:5-101:281\"><strong>AI\u306b\u3088\u308b\u300c\u98fd\u304d\u306a\u3044\u300d\u969c\u5bb3\u751f\u6210<\/strong>:<br \/>\u6bce\u65e5\u540c\u3058\u30a2\u30e9\u30fc\u30e0\u97f3\u3067\u306f\u8133\u304c\u6163\u308c\u3066\u3057\u307e\u3044\u307e\u3059\u3002Gemini 2.5 Flash\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u300cDB\u306e\u30c7\u30c3\u30c9\u30ed\u30c3\u30af\u300d\u300c\u30af\u30ec\u30ab\u6c7a\u6e08\u306e\u591a\u91cd\u8acb\u6c42\u300d\u300cDDoS\u653b\u6483\u300d\u306a\u3069\u3001<em>\u65e5\u66ff\u308f\u308a\u3067\u65b0\u9bae\u306a\u7d76\u671b\u3092\u5473\u308f\u3048\u308b<\/em> \u3088\u3046\u306b\u8a2d\u8a08\u3057\u307e\u3057\u305f\u3002<\/p>\n<\/li>\n<li data-sourcepos=\"103:1-108:0\" wp_automatic_readability=\"2\">\n<p data-sourcepos=\"103:5-105:161\"><strong>\u81ea\u5b85GPU\u306e\u6709\u52b9\u6d3b\u7528<\/strong>:<br \/>\u305a\u3093\u3060\u3082\u3093\u306e\u58f0\uff08VOICEVOX\uff09\u3092\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u306b\u751f\u6210\u3059\u308b\u306b\u306fGPU\u304c\u3042\u3063\u305f\u307b\u3046\u304c\u660e\u3089\u304b\u306b\u9ad8\u901f\u3067\u3059\u3002\u3057\u304b\u3057\u30af\u30e9\u30a6\u30c9\u306eGPU\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306f\u9ad8\u984d\u3067\u3059\u3002\u305d\u3053\u3067\u3001<strong>Cloudflare Tunnel<\/strong> \u3068 <strong>Cloudflare Access<\/strong> \u3092\u4f7f\u7528\u3057\u3066\u81ea\u5b85\u306ePC\u3092\u5916\u90e8\u516c\u958b\u3057\u3001\u30bb\u30ad\u30e5\u30a2\u306a\u97f3\u58f0\u5408\u6210API\u30b5\u30fc\u30d0\u30fc\u3068\u3057\u3066\u5229\u7528\u3057\u3066\u3044\u307e\u3059\u3002<br \/><strong>\u300c\u76ee\u899a\u307e\u3057\u306e\u305f\u3081\u306b\u30b2\u30fc\u30df\u30f3\u30b0PC\u3092\u5e38\u6642\u7a3c\u50cd\u3055\u305b\u308b\u300d<\/strong> \u3068\u3044\u3046\u672c\u672b\u8ee2\u5012\u611f\u304c\u3001\u3053\u306e\u30a2\u30d7\u30ea\u306e\u30b9\u30d1\u30a4\u30b9\u3068\u306a\u3063\u3066\u307e\u3059\u3002<\/p>\n<p data-sourcepos=\"107:5-107:134\"><a target=\"_blank\" href=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F67192%2F4caf4cb4-133e-4d90-a4bb-3b1417f610f1.jpeg?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;s=6f95f9cf85055a76278bf3c44336078d\" target=\"_blank\" rel=\"nofollow noopener\"><img decoding=\"async\" src=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F67192%2F4caf4cb4-133e-4d90-a4bb-3b1417f610f1.jpeg?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;s=6f95f9cf85055a76278bf3c44336078d\" alt=\"\u81ea\u5b85\u30b5\u30fc\u30d0\u30fc\" srcset=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F67192%2F4caf4cb4-133e-4d90-a4bb-3b1417f610f1.jpeg?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;w=1400&amp;fit=max&amp;s=6dae5e9564c4607dd420ec01023ee256 1x\" data-canonical-src=\"https:\/\/qiita-image-store.s3.ap-northeast-1.amazonaws.com\/0\/67192\/4caf4cb4-133e-4d90-a4bb-3b1417f610f1.jpeg\" loading=\"lazy\"\/><\/a><\/p>\n<\/li>\n<\/ol>\n<div data-sourcepos=\"109:1-111:3\" class=\"note info\" wp_automatic_readability=\"7.5\">\n<span class=\"fa fa-fw fa-check-circle\"\/><\/p>\n<div wp_automatic_readability=\"10\">\n<p data-sourcepos=\"110:1-110:330\">\u30b2\u30fc\u30df\u30f3\u30b0PC\u306e\u6d88\u8cbb\u96fb\u529b\u306f <strong>\u30a2\u30a4\u30c9\u30eb\u6642\u306b\u8a08\u6e2c<\/strong> \u3057\u305f\u3089 <code>39Wh<\/code> \u3060\u3063\u305f\u306e\u3067\u3001<code>30\u65e5\u9593<\/code> \u3092 <code>31\u5186\/1kWh<\/code> \u3068\u3057\u3066\u5229\u7528\u8005\u304c <code>0\u4eba<\/code> \u3067\u3042\u308c\u3070 <strong>\u6982\u306d 870\u5186\/\u6708<\/strong> \u3050\u3089\u3044\u3067\u3059\u3002\u8ab0\u304b\u304c\u5229\u7528\u3059\u308b\u3068GPU\u306b\u706b\u304c\u4ed8\u304d\u6d88\u8cbb\u96fb\u529b\u304c\u7206\u5897\u3059\u308b\u4ed5\u69d8\u3067\u3059\u304c\u3069\u3093\u3069\u3093\u4f7f\u3063\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<\/div>\n<\/div>\n<h2 data-sourcepos=\"113:1-113:42\">\n<span id=\"3-\u5b9f\u88c5\u306b\u304a\u3051\u308b\u72c2\u6c17\u30dd\u30a4\u30f3\u30c8\" class=\"fragment\"\/><a target=\"_blank\" href=\"#3-%E5%AE%9F%E8%A3%85%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E7%8B%82%E6%B0%97%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88\"><i class=\"fa fa-link\"\/><\/a>3. \u5b9f\u88c5\u306b\u304a\u3051\u308b\u72c2\u6c17\u30dd\u30a4\u30f3\u30c8<\/h2>\n<h3 data-sourcepos=\"115:1-115:59\">\n<span id=\"31-gemini\u306b\u60aa\u5922\u3092\u898b\u3055\u305b\u308b\u30d7\u30ed\u30f3\u30d7\u30c8\" class=\"fragment\"\/><a target=\"_blank\" href=\"#31-gemini%E3%81%AB%E6%82%AA%E5%A4%A2%E3%82%92%E8%A6%8B%E3%81%95%E3%81%9B%E3%82%8B%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88\"><i class=\"fa fa-link\"\/><\/a>3.1 Gemini\u306b\u300c\u60aa\u5922\u300d\u3092\u898b\u3055\u305b\u308b\u30d7\u30ed\u30f3\u30d7\u30c8<\/h3>\n<p data-sourcepos=\"117:1-117:269\">Vercel AI SDK\u306e <code>generateObject<\/code> \u3092\u4f7f\u7528\u3057\u3001Gemini\u306b\u69cb\u9020\u5316\u3055\u308c\u305fJSON\u3092\u51fa\u529b\u3055\u305b\u3066\u3044\u307e\u3059\u3002\u30d7\u30ed\u30f3\u30d7\u30c8\u306b\u306f\u300c\u30a8\u30f3\u30b8\u30cb\u30a2\u304c\u7d76\u671b\u3059\u308b\u30b7\u30c1\u30e5\u30a8\u30fc\u30b7\u30e7\u30f3\u300d\u3092\u5b66\u7fd2\u3055\u305b\u307e\u3057\u305f\uff08\u305d\u306e\u3088\u3046\u306a\u6c17\u6301\u3061\u3067\u8a18\u8ff0\u3057\u307e\u3057\u305f\uff09\u3002<\/p>\n<div class=\"code-frame\" data-lang=\"typescript\" data-sourcepos=\"119:1-137:3\" wp_automatic_readability=\"12.5\">\n<div class=\"highlight\" wp_automatic_readability=\"20\">\n<pre><code><span class=\"c1\">\/\/ convex\/generateIncident.ts<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">result<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nf\">generateObject<\/span><span class=\"p\">({<\/span>\n  <span class=\"na\">model<\/span><span class=\"p\">:<\/span> <span class=\"nf\">google<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">gemini-2.5-flash<\/span><span class=\"dl\">\"<\/span><span class=\"p\">),<\/span>\n  <span class=\"na\">schema<\/span><span class=\"p\">:<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nf\">object<\/span><span class=\"p\">({<\/span>\n    <span class=\"na\">level<\/span><span class=\"p\">:<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nf\">enum<\/span><span class=\"p\">([<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">warning<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">critical<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">disaster<\/span><span class=\"dl\">\"<\/span><span class=\"p\">]),<\/span>\n    <span class=\"na\">service<\/span><span class=\"p\">:<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nf\">string<\/span><span class=\"p\">(),<\/span>\n    <span class=\"na\">logs<\/span><span class=\"p\">:<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nf\">array<\/span><span class=\"p\">(<\/span><span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nf\">string<\/span><span class=\"p\">()),<\/span>\n    <span class=\"na\">voiceMessage<\/span><span class=\"p\">:<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nf\">string<\/span><span class=\"p\">(),<\/span>\n    <span class=\"na\">resolveCommand<\/span><span class=\"p\">:<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nf\">string<\/span><span class=\"p\">(),<\/span>\n  <span class=\"p\">}),<\/span>\n  <span class=\"na\">prompt<\/span><span class=\"p\">:<\/span> <span class=\"s2\">`\u3042\u306a\u305f\u306f\u60aa\u5922\u306e\u3088\u3046\u306a\u30b7\u30b9\u30c6\u30e0\u969c\u5bb3\u3092\u751f\u6210\u3059\u308bAI\u3067\u3059\u3002\n\u4ee5\u4e0b\u306e\u6761\u4ef6\u3067\u3001\u67b6\u7a7a\u306e\u672c\u756a\u74b0\u5883\u969c\u5bb3\u30921\u3064\u751f\u6210\u3057\u3066\u304f\u3060\u3055\u3044\uff1a\n- level: critical\n- logs: Linux\u98a8\u306e\u30a8\u30e9\u30fc\u30ed\u30b0\uff08\u5fc3\u81d3\u306b\u60aa\u3044\u3084\u3064\uff09\n- voiceMessage: \u305a\u3093\u3060\u3082\u3093\u306e\u300c\u306e\u3060\u300d\u53e3\u8abf\u3067\u3001\u8cac\u4efb\u3092\u5148\u8f29\uff08\u30e6\u30fc\u30b6\u30fc\uff09\u306b\u306a\u3059\u308a\u3064\u3051\u308b\u3088\u3046\u306a\u7d76\u671b\u306e\u60b2\u9cf4\n- resolveCommand: \u89e3\u6c7a\u7528\u306eLinux\u30b3\u30de\u30f3\u30c9`<\/span><span class=\"p\">,<\/span>\n<span class=\"p\">});<\/span>\n<\/code><\/pre>\n<\/div>\n<\/div>\n<p data-sourcepos=\"139:1-139:213\">\u30d7\u30ed\u30f3\u30d7\u30c8\u4e2d\u306e <strong>\u8cac\u4efb\u3092\u5148\u8f29\uff08\u30e6\u30fc\u30b6\u30fc\uff09\u306b\u306a\u3059\u308a\u3064\u3051\u308b\u3088\u3046\u306a\u7d76\u671b\u306e\u60b2\u9cf4<\/strong> \u304c\u30dd\u30a4\u30f3\u30c8\u3067\u3059\u3002\u3053\u308c\u3067\u3001\u30e6\u30fc\u30b6\u30fc\u306e\u5fc3\u306b\u97ff\u304f\u3088\u3046\u306a\u60b2\u9cf4\u3092\u751f\u6210\u3057\u3066\u304f\u308c\u307e\u3059\u3002<\/p>\n<h3 data-sourcepos=\"141:1-141:57\">\n<span id=\"32-web-audio-api\u306b\u3088\u308b\u4e0d\u5feb\u306a\u30b5\u30a4\u30ec\u30f3\" class=\"fragment\"\/><a target=\"_blank\" href=\"#32-web-audio-api%E3%81%AB%E3%82%88%E3%82%8B%E4%B8%8D%E5%BF%AB%E3%81%AA%E3%82%B5%E3%82%A4%E3%83%AC%E3%83%B3\"><i class=\"fa fa-link\"\/><\/a>3.2 Web Audio API\u306b\u3088\u308b\u300c\u4e0d\u5feb\u306a\u300d\u30b5\u30a4\u30ec\u30f3<\/h3>\n<p data-sourcepos=\"143:1-144:208\">\u30d5\u30ea\u30fc\u7d20\u6750\u306e\u30b5\u30a4\u30ec\u30f3\u97f3\u3067\u306f\u512a\u3057\u3059\u304e\u307e\u3059\u3002<br \/>Web Audio API\u306e\u30aa\u30b7\u30ec\u30fc\u30bf\u30fc\u3092\u4f7f\u7528\u3057\u3001\u8133\u306b\u76f4\u63a5\u97ff\u304f\u3088\u3046\u306a\u30ce\u30b3\u30ae\u30ea\u6ce2\u3092\u751f\u6210\u3057\u307e\u3057\u305f\u3002\u5468\u6ce2\u6570\u3092LFO\u3067\u5909\u8abf\u3055\u305b\u3001\u4e0d\u5b89\u611f\u3092\u717d\u308b\u97f3\u4f5c\u308a\u306b\u3053\u3060\u308f\u3063\u3066\u304a\u308a\u307e\u3059\u3002<\/p>\n<div class=\"code-frame\" data-lang=\"typescript\" data-sourcepos=\"146:1-159:3\" wp_automatic_readability=\"8.5\">\n<div class=\"highlight\" wp_automatic_readability=\"12\">\n<pre><code><span class=\"c1\">\/\/ app\/components\/IncidentView.vue<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">playSiren<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">osc<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">audioContext<\/span><span class=\"p\">.<\/span><span class=\"nx\">value<\/span><span class=\"p\">.<\/span><span class=\"nf\">createOscillator<\/span><span class=\"p\">();<\/span>\n  <span class=\"nx\">osc<\/span><span class=\"p\">.<\/span><span class=\"kd\">type<\/span> <span class=\"o\">=<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">sawtooth<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span> <span class=\"c1\">\/\/ \u30ce\u30b3\u30ae\u30ea\u6ce2\u3067\u523a\u6fc0\u3092\u5f37\u304f<\/span>\n  \n  <span class=\"c1\">\/\/ \u4e0d\u5b89\u3092\u717d\u308b\u5468\u6ce2\u6570\u5909\u8abf<\/span>\n  <span class=\"nx\">osc<\/span><span class=\"p\">.<\/span><span class=\"nx\">frequency<\/span><span class=\"p\">.<\/span><span class=\"nf\">linearRampToValueAtTime<\/span><span class=\"p\">(<\/span><span class=\"mi\">880<\/span><span class=\"p\">,<\/span> <span class=\"nx\">audioContext<\/span><span class=\"p\">.<\/span><span class=\"nx\">value<\/span><span class=\"p\">.<\/span><span class=\"nx\">currentTime<\/span> <span class=\"o\">+<\/span> <span class=\"mi\">1<\/span><span class=\"p\">);<\/span>\n  <span class=\"nx\">osc<\/span><span class=\"p\">.<\/span><span class=\"nx\">frequency<\/span><span class=\"p\">.<\/span><span class=\"nf\">linearRampToValueAtTime<\/span><span class=\"p\">(<\/span><span class=\"mi\">440<\/span><span class=\"p\">,<\/span> <span class=\"nx\">audioContext<\/span><span class=\"p\">.<\/span><span class=\"nx\">value<\/span><span class=\"p\">.<\/span><span class=\"nx\">currentTime<\/span> <span class=\"o\">+<\/span> <span class=\"mi\">2<\/span><span class=\"p\">);<\/span>\n  \n  <span class=\"c1\">\/\/ ... (\u4e2d\u7565) ...<\/span>\n  <span class=\"nx\">osc<\/span><span class=\"p\">.<\/span><span class=\"nf\">start<\/span><span class=\"p\">();<\/span>\n<span class=\"p\">};<\/span>\n<\/code><\/pre>\n<\/div>\n<\/div>\n<h3 data-sourcepos=\"161:1-161:56\">\n<span id=\"33-cloudflare-tunnel--access-\u3067\u81ea\u5b85\u3092\u8981\u585e\u5316\" class=\"fragment\"\/><a target=\"_blank\" href=\"#33-cloudflare-tunnel--access-%E3%81%A7%E8%87%AA%E5%AE%85%E3%82%92%E8%A6%81%E5%A1%9E%E5%8C%96\"><i class=\"fa fa-link\"\/><\/a>3.3 Cloudflare Tunnel + Access \u3067\u81ea\u5b85\u3092\u8981\u585e\u5316<\/h3>\n<p data-sourcepos=\"163:1-164:101\">\u81ea\u5b85\u30b5\u30fc\u30d0\u30fc\u3092\u516c\u958b\u3059\u308b\u306e\u306f\u6050\u6016\u3067\u3059\u3002\u305d\u3053\u3067Cloudflare Tunnel\u3092\u4f7f\u7528\u3057\u3001\u30eb\u30fc\u30bf\u30fc\u306b\u3088\u308b\u30dd\u30fc\u30c8\u958b\u653e\u305b\u305a\u306b\u516c\u958b\u3057\u307e\u3057\u305f\u3002\u3055\u3089\u306bCloudflare Access\u306eService Token\u8a8d\u8a3c\u3092\u304b\u3051\u3001Convex\u304b\u3089\u8a8d\u8a3c\u60c5\u5831\u306e\u3042\u308b\u30ea\u30af\u30a8\u30b9\u30c8\u4ee5\u5916\u306f\u4e00\u5207\u53d7\u3051\u4ed8\u3051\u306a\u3044\u3088\u3046\u306b\u3057\u3066\u3042\u308a\u307e\u3059\u3002<br \/><strong>\u300c\u76ee\u899a\u307e\u3057\u30a2\u30d7\u30ea\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u304c\u5805\u7262\u3059\u304e\u308b\u300d<\/strong> \u3068\u3044\u3046\u30ae\u30e3\u30b0\u3067\u3059\u306d\u3002<\/p>\n<h3 data-sourcepos=\"166:1-166:46\">\n<span id=\"34-convex-cron\u306b\u3088\u308b\u5e38\u6642\u76e3\u8996\" class=\"fragment\"\/><a target=\"_blank\" href=\"#34-convex-cron%E3%81%AB%E3%82%88%E3%82%8B%E5%B8%B8%E6%99%82%E7%9B%A3%E8%A6%96\"><i class=\"fa fa-link\"\/><\/a>3.4 Convex Cron\u306b\u3088\u308b\u300c\u5e38\u6642\u76e3\u8996\u300d<\/h3>\n<p data-sourcepos=\"168:1-168:289\">\u30b2\u30fc\u30df\u30f3\u30b0PC\u304c\u843d\u3061\u3066\u3044\u305f\u3089\u30a2\u30e9\u30fc\u30e0\u304c\u9cf4\u3089\u306a\u3044\u2026\u305d\u3093\u306a\u4e8b\u614b\u3092\u9632\u3050\u305f\u3081\u3001<strong>30\u79d2\u3054\u3068\u306bVOICEVOX\u30b5\u30fc\u30d0\u30fc\u306e\u6b7b\u6d3b\u76e3\u8996<\/strong>\u3092\u884c\u3063\u3066\u3044\u307e\u3059\u3002Convex\u306e Cron \u6a5f\u80fd\u3092\u4f7f\u3048\u3070\u3001\u305f\u3063\u305f\u6570\u884c\u3067\u30b5\u30fc\u30d0\u30fc\u30ec\u30b9\u306a\u5b9a\u671f\u5b9f\u884c\u304c\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002<\/p>\n<div class=\"code-frame\" data-lang=\"typescript\" data-sourcepos=\"170:1-180:3\" wp_automatic_readability=\"8\">\n<div class=\"highlight\" wp_automatic_readability=\"11\">\n<pre><code><span class=\"c1\">\/\/ convex\/crons.ts<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">crons<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">cronJobs<\/span><span class=\"p\">();<\/span>\n\n<span class=\"c1\">\/\/ 30\u79d2\u3054\u3068\u306bVoice Server\u306e\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af\u3092\u5b9f\u884c<\/span>\n<span class=\"nx\">crons<\/span><span class=\"p\">.<\/span><span class=\"nf\">interval<\/span><span class=\"p\">(<\/span>\n  <span class=\"dl\">\"<\/span><span class=\"s2\">voice-server-health-check<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">seconds<\/span><span class=\"p\">:<\/span> <span class=\"mi\">30<\/span> <span class=\"p\">},<\/span>\n  <span class=\"nx\">internal<\/span><span class=\"p\">.<\/span><span class=\"nx\">healthCheck<\/span><span class=\"p\">.<\/span><span class=\"nx\">runHealthCheck<\/span>\n<span class=\"p\">);<\/span>\n<\/code><\/pre>\n<\/div>\n<\/div>\n<p data-sourcepos=\"182:1-182:260\">\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u306b\u306f\u30b5\u30fc\u30d0\u30fc\u306e\u72b6\u614b\u304c\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u3067\u8868\u793a\u3055\u308c\u3001\u843d\u3061\u3066\u3044\u308c\u3070\u8b66\u544a\u304c\u51fa\u307e\u3059\u3002<strong>\u300c\u76ee\u899a\u307e\u3057\u30a2\u30d7\u30ea\u306a\u306e\u306b\u672c\u683c\u7684\u306a\u76e3\u8996\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u304c\u3042\u308b\u300d<\/strong> \u3068\u3044\u3046\u904e\u5270\u54c1\u8cea\u304c\u30dd\u30a4\u30f3\u30c8\u3067\u3059\u3002<\/p>\n<h3 data-sourcepos=\"184:1-184:80\">\n<span id=\"35-\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u66f4\u65b0\u3067\u76e3\u8996\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u611f\u3092\u6f14\u51fa\" class=\"fragment\"\/><a target=\"_blank\" href=\"#35-%E3%83%AA%E3%82%A2%E3%83%AB%E3%82%BF%E3%82%A4%E3%83%A0%E6%9B%B4%E6%96%B0%E3%81%A7%E7%9B%A3%E8%A6%96%E3%83%80%E3%83%83%E3%82%B7%E3%83%A5%E3%83%9C%E3%83%BC%E3%83%89%E6%84%9F%E3%82%92%E6%BC%94%E5%87%BA\"><i class=\"fa fa-link\"\/><\/a>3.5 \u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u66f4\u65b0\u3067\u300c\u76e3\u8996\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u611f\u300d\u3092\u6f14\u51fa<\/h3>\n<p data-sourcepos=\"186:1-186:244\">Convex\u306e\u5f37\u307f\u306f\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u540c\u671f\u3067\u3059\u3002\u30b5\u30fc\u30d0\u30fc\u30b9\u30c6\u30fc\u30bf\u30b9\u3084\u30a4\u30f3\u30b7\u30c7\u30f3\u30c8\u4ef6\u6570\u306f\u3001convex\u5185\u90e8\u3067\u30dd\u30fc\u30ea\u30f3\u30b0\u3067\u306f\u306a\u304f<strong>WebSocket\u306b\u3088\u308b\u30d7\u30c3\u30b7\u30e5\u901a\u77e5<\/strong>\u304c\u884c\u308f\u308c\u5373\u5ea7\u306b\u753b\u9762\u3078\u53cd\u6620\u3055\u308c\u307e\u3059\u3002<\/p>\n<div class=\"code-frame\" data-lang=\"typescript\" data-sourcepos=\"188:1-206:3\" wp_automatic_readability=\"8.5\">\n<div class=\"highlight\" wp_automatic_readability=\"12\">\n<pre><code><span class=\"c1\">\/\/ app\/composables\/useIncidentCount.ts<\/span>\n<span class=\"k\">export<\/span> <span class=\"kd\">const<\/span> <span class=\"nx\">useIncidentCount<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">incidentCount<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">ref<\/span><span class=\"o\">&lt;<\/span><span class=\"kr\">number<\/span> <span class=\"o\">|<\/span> <span class=\"kc\">null<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">(<\/span><span class=\"kc\">null<\/span><span class=\"p\">);<\/span>\n\n  <span class=\"kd\">const<\/span> <span class=\"nx\">startSubscription<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">$convex<\/span> <span class=\"p\">}<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useNuxtApp<\/span><span class=\"p\">();<\/span>\n    <span class=\"c1\">\/\/ DB\u306e\u5909\u66f4\u3092\u8cfc\u8aad\u3057\u3001\u5909\u66f4\u304c\u3042\u308c\u3070\u81ea\u52d5\u3067\u518d\u53d6\u5f97<\/span>\n    <span class=\"nx\">unsubscribe<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">$convex<\/span><span class=\"p\">.<\/span><span class=\"nf\">onUpdate<\/span><span class=\"p\">(<\/span>\n      <span class=\"nx\">api<\/span><span class=\"p\">.<\/span><span class=\"nx\">queries<\/span><span class=\"p\">.<\/span><span class=\"nx\">getIncidentCount<\/span><span class=\"p\">,<\/span>\n      <span class=\"p\">{},<\/span>\n      <span class=\"p\">(<\/span><span class=\"na\">count<\/span><span class=\"p\">:<\/span> <span class=\"kr\">number<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n        <span class=\"nx\">incidentCount<\/span><span class=\"p\">.<\/span><span class=\"nx\">value<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">count<\/span><span class=\"p\">;<\/span>\n      <span class=\"p\">}<\/span>\n    <span class=\"p\">);<\/span>\n  <span class=\"p\">};<\/span>\n  <span class=\"c1\">\/\/ ...<\/span>\n<span class=\"p\">};<\/span>\n<\/code><\/pre>\n<\/div>\n<\/div>\n<p data-sourcepos=\"208:1-208:257\">\u4ed6\u306e\u4eba\u304c\u30a2\u30e9\u30fc\u30e0\u3092\u89e3\u9664\u3059\u308b\u3068\u3001\u81ea\u5206\u306e\u753b\u9762\u306e\u30a4\u30f3\u30b7\u30c7\u30f3\u30c8\u4ef6\u6570(\u30a2\u30e9\u30fc\u30e0\u56de\u6570)\u3082\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u3067\u5897\u3048\u3066\u3044\u304f\u2026\u3002\u307e\u3055\u306b <strong>\u300c\u672c\u7269\u306e\u969c\u5bb3\u5bfe\u5fdc\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u300d<\/strong> \u306e\u3088\u3046\u306a\u81e8\u5834\u611f\u3092\u5473\u308f\u3048\u307e\u3059\u3002<\/p>\n<h2 data-sourcepos=\"210:1-210:33\">\n<span id=\"4-\u5b9f\u969b\u306b\u4f7f\u7528\u3057\u3066\u307f\u3066\" class=\"fragment\"\/><a target=\"_blank\" href=\"#4-%E5%AE%9F%E9%9A%9B%E3%81%AB%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%BF%E3%81%A6\"><i class=\"fa fa-link\"\/><\/a>4. \u5b9f\u969b\u306b\u4f7f\u7528\u3057\u3066\u307f\u3066<\/h2>\n<p data-sourcepos=\"212:1-212:31\"><strong>\u52b9\u679c\u306f\u7d76\u5927\u3067\u3057\u305f\u3002<\/strong><\/p>\n<p data-sourcepos=\"214:1-215:188\">\u6bce\u671d6\u6642\u3001\u6795\u5143\u306e\u30b9\u30de\u30db\u304b\u3089 <strong>\u300c\u5148\u8f29\uff01\uff01\u5927\u5909\u306a\u306e\u3060\uff01\uff01\u300d<\/strong> \u3068\u3044\u3046\u7d76\u53eb\u304c\u805e\u3053\u3048\u3066\u304d\u307e\u3059\u3002<br \/>\u5bdd\u307c\u3051\u305f\u982d\u3067\u300c\u3048\u3063\u3001\u4f55\uff1f \u30c7\u30d7\u30ed\u30a4\uff1f \u6628\u65e5\u4f55\u304b\u3057\u305f\u3063\u3051\uff1f\u300d\u3068\u30d1\u30cb\u30c3\u30af\u306b\u306a\u308a\u3001\u753b\u9762\u3092\u898b\u308b\u3068\u771f\u3063\u8d64\u306a\u30b3\u30f3\u30bd\u30fc\u30eb\u306b <code>CRITICAL ALERT<\/code> \u306e\u6587\u5b57\u3002<\/p>\n<p data-sourcepos=\"217:1-218:170\">\u5fc3\u62cd\u6570\u306f\u6025\u4e0a\u6607\u3057\u3001\u5b8c\u5168\u306b\u76ee\u304c\u899a\u3081\u307e\u3059\u3002<br \/>\u9707\u3048\u308b\u624b\u3067 <code>pcore-svc restart --force<\/code> \u306a\u3069\u306e\u30b3\u30de\u30f3\u30c9\u3092\u6253\u3061\u8fbc\u307f\u3001\u30a2\u30e9\u30fc\u30e0\u3092\u6b62\u3081\u305f\u9803\u306b\u306f\u3001\u4e8c\u5ea6\u5bdd\u3059\u308b\u6c17\u529b\u306a\u3069\u6d88\u3048\u5931\u305b\u3066\u307e\u3059\u3002<\/p>\n<h2 data-sourcepos=\"220:1-220:15\">\n<span id=\"5-\u307e\u3068\u3081\" class=\"fragment\"\/><a target=\"_blank\" href=\"#5-%E3%81%BE%E3%81%A8%E3%82%81\"><i class=\"fa fa-link\"\/><\/a>5. \u307e\u3068\u3081<\/h2>\n<p data-sourcepos=\"222:1-222:48\"><iframe id=\"qiita-embed-content__91e3faa73463c9ad40110489d2bbf94c\" src=\"https:\/\/qiita.com\/embed-contents\/link-card#qiita-embed-content__91e3faa73463c9ad40110489d2bbf94c\" data-content=\"https%3A%2F%2Fincident-driven-wakeup.std9.workers.dev%2F\" frameborder=\"0\" scrolling=\"no\" loading=\"lazy\" style=\"width:100%;\" height=\"29\"><![CDATA[<![CDATA[<![CDATA[\n]]]]]]><![CDATA[><![CDATA[>]]]]><![CDATA[>]]><\/iframe>\n<\/p>\n<p data-sourcepos=\"224:1-225:177\">\u3053\u306e\u30a2\u30d7\u30ea\u306f\u3001\u30a8\u30f3\u30b8\u30cb\u30a2\u306e\u300c\u8077\u696d\u75c5\u300d\u3092\u30cf\u30c3\u30af\u3057\u305f\u30e9\u30a4\u30d5\u30cf\u30c3\u30af\u30c4\u30fc\u30eb\u3067\u3059\u3002<br \/>\u305f\u3060\u3057\u3001\u526f\u4f5c\u7528\u3068\u3057\u3066 <strong>\u300c\u4ed5\u4e8b\u306e\u5922\u3092\u898b\u308b\u983b\u5ea6\u304c\u5897\u3048\u308b\u300d\u300c\u7740\u4fe1\u97f3\u306b\u904e\u654f\u306b\u306a\u308b\u300d<\/strong> \u306a\u3069\u306e\u75c7\u72b6\u304c\u5831\u544a\u3055\u308c\u3066\u304a\u308a\u307e\u3059\uff08\u79c1\u304b\u3089\uff09\u3002<\/p>\n<hr data-sourcepos=\"227:1-228:0\"\/>\n<p data-sourcepos=\"229:1-229:282\">\u4ee5\u4e0a\u3001<a target=\"_blank\" href=\"https:\/\/qiita.com\/advent-calendar\/2025\/kuso-app\">\u30af\u30bd\u30a2\u30d7\u30ea Advent Calendar 2025<\/a> \u306e 1\u65e5\u76ee\u3067\u3057\u305f\u3002\u660e\u65e5\u306f <a target=\"_blank\" href=\"https:\/\/qiita.com\/nabettu\" class=\"user-mention js-hovercard\" title=\"nabettu\" data-hovercard-target-type=\"user\" data-hovercard-target-name=\"nabettu\">@nabettu<\/a> \u3055\u3093\u306e\u300eAI\u3068\u697d\u3057\u304f\u304a\u3057\u3083\u3079\u308a\u3057\u306a\u304c\u3089\u904a\u3076\u30aa\u30bb\u30ed\u3092\u4f5c\u308a\u307e\u3057\u305f\u3002\u300f\u3067\u3059\u3002\u3088\u308d\u3057\u304f\u304a\u306d\u304c\u3044\u3057\u307e\u30fc\u3059\u2728\ufe0f<\/p>\n<\/div>\n<p><script>!function(f,b,e,v,n,t,s)\n{if(f.fbq)return;n=f.fbq=function(){n.callMethod?\nn.callMethod.apply(n,arguments):n.queue.push(arguments)};\nif(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';\nn.queue=[];t=b.createElement(e);t.async=!0;\nt.src=v;s=b.getElementsByTagName(e)[0];\ns.parentNode.insertBefore(t,s)}(window, document,'script',\n'https:\/\/connect.facebook.net\/en_US\/fbevents.js');\nfbq('init', '305156090176370');\nfbq('trackSingle', '305156090176370', 'PageView');<\/script><br \/>\n<br \/>\n<br \/><a href=\"https:\/\/qiita.com\/alclimb\/items\/e303cf655373992f61f4\">\u5143\u306e\u8a18\u4e8b\u3092\u78ba\u8a8d\u3059\u308b <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\u306f\u3058\u3081\u306b\uff1a\u30a8\u30f3\u30b8\u30cb\u30a2\u306b\u3068\u3063\u3066\u300c\u6700\u9ad8\u306e\u76ee\u899a\u307e\u3057\u300d\u3068\u306f \u671d\u3001\u8d77\u304d\u308b\u3053\u3068\u304c\u3067\u304d\u306a\u3044\u3002 \u5927\u97f3\u91cf\u306e\u30a2\u30e9\u30fc\u30e0\u3082\u3001\u5149\u3067\u8d77\u3053\u3059\u76ee\u899a\u307e\u3057\u30e9\u30a4\u30c8\u3082\u3001\u8a08\u7b97\u554f\u984c\u3092\u89e3\u304b\u306a\u3044\u3068\u6b62\u307e\u3089\u306a\u3044\u30a2\u30d7\u30ea\u3082\u8a66\u3057\u307e\u3057\u305f\u3002\u3057\u304b\u3057\u3001\u6163\u308c\u3066\u3057\u307e\u3048\u3070\u4e8c\u5ea6\u5bdd\u306f\u5bb9\u6613\u3067\u3059\u3002\u8133 [&hellip;]","protected":false},"author":1,"featured_media":25996,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2],"tags":[],"class_list":["post-25995","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-hatena-blog"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\u305a\u3093\u3060\u3082\u3093\u306b\u300e\u5148\u8f29\u306e\u30af\u30bd\u30b3\u30fc\u30c9\u306e\u305b\u3044\u3067\u672c\u756a\u304c\u71c3\u3048\u3066\u308b\u306e\u3060\uff01\u300f\u3068\u6bce\u671d\u53eb\u3070\u308c\u308b\u76ee\u899a\u307e\u3057\u30a2\u30d7\u30ea\u3092\u4f5c\u3063\u305f #Nuxt - Qiita - \u30dd\u30b1\u30b3\u30f3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/qiita.com\/alclimb\/items\/e303cf655373992f61f4\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u305a\u3093\u3060\u3082\u3093\u306b\u300e\u5148\u8f29\u306e\u30af\u30bd\u30b3\u30fc\u30c9\u306e\u305b\u3044\u3067\u672c\u756a\u304c\u71c3\u3048\u3066\u308b\u306e\u3060\uff01\u300f\u3068\u6bce\u671d\u53eb\u3070\u308c\u308b\u76ee\u899a\u307e\u3057\u30a2\u30d7\u30ea\u3092\u4f5c\u3063\u305f #Nuxt - Qiita - \u30dd\u30b1\u30b3\u30f3\" \/>\n<meta property=\"og:description\" content=\"\u306f\u3058\u3081\u306b\uff1a\u30a8\u30f3\u30b8\u30cb\u30a2\u306b\u3068\u3063\u3066\u300c\u6700\u9ad8\u306e\u76ee\u899a\u307e\u3057\u300d\u3068\u306f \u671d\u3001\u8d77\u304d\u308b\u3053\u3068\u304c\u3067\u304d\u306a\u3044\u3002 \u5927\u97f3\u91cf\u306e\u30a2\u30e9\u30fc\u30e0\u3082\u3001\u5149\u3067\u8d77\u3053\u3059\u76ee\u899a\u307e\u3057\u30e9\u30a4\u30c8\u3082\u3001\u8a08\u7b97\u554f\u984c\u3092\u89e3\u304b\u306a\u3044\u3068\u6b62\u307e\u3089\u306a\u3044\u30a2\u30d7\u30ea\u3082\u8a66\u3057\u307e\u3057\u305f\u3002\u3057\u304b\u3057\u3001\u6163\u308c\u3066\u3057\u307e\u3048\u3070\u4e8c\u5ea6\u5bdd\u306f\u5bb9\u6613\u3067\u3059\u3002\u8133 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/qiita.com\/alclimb\/items\/e303cf655373992f61f4\" \/>\n<meta property=\"og:site_name\" content=\"\u30dd\u30b1\u30b3\u30f3\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-01T11:47:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/12\/https3A2F2Fqiita-user-contents.imgix_.net2Fhttps253A252F252Fcdn.qiita_.com252Fassets252Fpubli.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"info@pokecon.jp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"info@pokecon.jp\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/qiita.com\\\/alclimb\\\/items\\\/e303cf655373992f61f4#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/25995\\\/\"},\"author\":{\"name\":\"info@pokecon.jp\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#\\\/schema\\\/person\\\/16c9f07b1ba984d165d9aee259bda997\"},\"headline\":\"\u305a\u3093\u3060\u3082\u3093\u306b\u300e\u5148\u8f29\u306e\u30af\u30bd\u30b3\u30fc\u30c9\u306e\u305b\u3044\u3067\u672c\u756a\u304c\u71c3\u3048\u3066\u308b\u306e\u3060\uff01\u300f\u3068\u6bce\u671d\u53eb\u3070\u308c\u308b\u76ee\u899a\u307e\u3057\u30a2\u30d7\u30ea\u3092\u4f5c\u3063\u305f #Nuxt &#8211; Qiita\",\"datePublished\":\"2025-12-01T11:47:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/25995\\\/\"},\"wordCount\":31,\"image\":{\"@id\":\"https:\\\/\\\/qiita.com\\\/alclimb\\\/items\\\/e303cf655373992f61f4#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/https3A2F2Fqiita-user-contents.imgix_.net2Fhttps253A252F252Fcdn.qiita_.com252Fassets252Fpubli.jpeg\",\"articleSection\":[\"\u306f\u3066\u306a\u30d6\u30ed\u30b0\"],\"inLanguage\":\"ja\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/25995\\\/\",\"url\":\"https:\\\/\\\/qiita.com\\\/alclimb\\\/items\\\/e303cf655373992f61f4\",\"name\":\"\u305a\u3093\u3060\u3082\u3093\u306b\u300e\u5148\u8f29\u306e\u30af\u30bd\u30b3\u30fc\u30c9\u306e\u305b\u3044\u3067\u672c\u756a\u304c\u71c3\u3048\u3066\u308b\u306e\u3060\uff01\u300f\u3068\u6bce\u671d\u53eb\u3070\u308c\u308b\u76ee\u899a\u307e\u3057\u30a2\u30d7\u30ea\u3092\u4f5c\u3063\u305f #Nuxt - Qiita - \u30dd\u30b1\u30b3\u30f3\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/qiita.com\\\/alclimb\\\/items\\\/e303cf655373992f61f4#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/qiita.com\\\/alclimb\\\/items\\\/e303cf655373992f61f4#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/https3A2F2Fqiita-user-contents.imgix_.net2Fhttps253A252F252Fcdn.qiita_.com252Fassets252Fpubli.jpeg\",\"datePublished\":\"2025-12-01T11:47:19+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#\\\/schema\\\/person\\\/16c9f07b1ba984d165d9aee259bda997\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/qiita.com\\\/alclimb\\\/items\\\/e303cf655373992f61f4#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/qiita.com\\\/alclimb\\\/items\\\/e303cf655373992f61f4\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/qiita.com\\\/alclimb\\\/items\\\/e303cf655373992f61f4#primaryimage\",\"url\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/https3A2F2Fqiita-user-contents.imgix_.net2Fhttps253A252F252Fcdn.qiita_.com252Fassets252Fpubli.jpeg\",\"contentUrl\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/https3A2F2Fqiita-user-contents.imgix_.net2Fhttps253A252F252Fcdn.qiita_.com252Fassets252Fpubli.jpeg\",\"width\":1200,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/qiita.com\\\/alclimb\\\/items\\\/e303cf655373992f61f4#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u30db\u30fc\u30e0\",\"item\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u305a\u3093\u3060\u3082\u3093\u306b\u300e\u5148\u8f29\u306e\u30af\u30bd\u30b3\u30fc\u30c9\u306e\u305b\u3044\u3067\u672c\u756a\u304c\u71c3\u3048\u3066\u308b\u306e\u3060\uff01\u300f\u3068\u6bce\u671d\u53eb\u3070\u308c\u308b\u76ee\u899a\u307e\u3057\u30a2\u30d7\u30ea\u3092\u4f5c\u3063\u305f #Nuxt &#8211; Qiita\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#website\",\"url\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/\",\"name\":\"\u30dd\u30b1\u30b3\u30f3\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ja\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#\\\/schema\\\/person\\\/16c9f07b1ba984d165d9aee259bda997\",\"name\":\"info@pokecon.jp\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g\",\"caption\":\"info@pokecon.jp\"},\"url\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/author\\\/infopokecon-jp\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u305a\u3093\u3060\u3082\u3093\u306b\u300e\u5148\u8f29\u306e\u30af\u30bd\u30b3\u30fc\u30c9\u306e\u305b\u3044\u3067\u672c\u756a\u304c\u71c3\u3048\u3066\u308b\u306e\u3060\uff01\u300f\u3068\u6bce\u671d\u53eb\u3070\u308c\u308b\u76ee\u899a\u307e\u3057\u30a2\u30d7\u30ea\u3092\u4f5c\u3063\u305f #Nuxt - Qiita - \u30dd\u30b1\u30b3\u30f3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/qiita.com\/alclimb\/items\/e303cf655373992f61f4","og_locale":"ja_JP","og_type":"article","og_title":"\u305a\u3093\u3060\u3082\u3093\u306b\u300e\u5148\u8f29\u306e\u30af\u30bd\u30b3\u30fc\u30c9\u306e\u305b\u3044\u3067\u672c\u756a\u304c\u71c3\u3048\u3066\u308b\u306e\u3060\uff01\u300f\u3068\u6bce\u671d\u53eb\u3070\u308c\u308b\u76ee\u899a\u307e\u3057\u30a2\u30d7\u30ea\u3092\u4f5c\u3063\u305f #Nuxt - Qiita - \u30dd\u30b1\u30b3\u30f3","og_description":"\u306f\u3058\u3081\u306b\uff1a\u30a8\u30f3\u30b8\u30cb\u30a2\u306b\u3068\u3063\u3066\u300c\u6700\u9ad8\u306e\u76ee\u899a\u307e\u3057\u300d\u3068\u306f \u671d\u3001\u8d77\u304d\u308b\u3053\u3068\u304c\u3067\u304d\u306a\u3044\u3002 \u5927\u97f3\u91cf\u306e\u30a2\u30e9\u30fc\u30e0\u3082\u3001\u5149\u3067\u8d77\u3053\u3059\u76ee\u899a\u307e\u3057\u30e9\u30a4\u30c8\u3082\u3001\u8a08\u7b97\u554f\u984c\u3092\u89e3\u304b\u306a\u3044\u3068\u6b62\u307e\u3089\u306a\u3044\u30a2\u30d7\u30ea\u3082\u8a66\u3057\u307e\u3057\u305f\u3002\u3057\u304b\u3057\u3001\u6163\u308c\u3066\u3057\u307e\u3048\u3070\u4e8c\u5ea6\u5bdd\u306f\u5bb9\u6613\u3067\u3059\u3002\u8133 [&hellip;]","og_url":"https:\/\/qiita.com\/alclimb\/items\/e303cf655373992f61f4","og_site_name":"\u30dd\u30b1\u30b3\u30f3","article_published_time":"2025-12-01T11:47:19+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/12\/https3A2F2Fqiita-user-contents.imgix_.net2Fhttps253A252F252Fcdn.qiita_.com252Fassets252Fpubli.jpeg","type":"image\/jpeg"}],"author":"info@pokecon.jp","twitter_card":"summary_large_image","twitter_misc":{"\u57f7\u7b46\u8005":"info@pokecon.jp"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/qiita.com\/alclimb\/items\/e303cf655373992f61f4#article","isPartOf":{"@id":"https:\/\/pokecon.jp\/job\/25995\/"},"author":{"name":"info@pokecon.jp","@id":"https:\/\/pokecon.jp\/job\/#\/schema\/person\/16c9f07b1ba984d165d9aee259bda997"},"headline":"\u305a\u3093\u3060\u3082\u3093\u306b\u300e\u5148\u8f29\u306e\u30af\u30bd\u30b3\u30fc\u30c9\u306e\u305b\u3044\u3067\u672c\u756a\u304c\u71c3\u3048\u3066\u308b\u306e\u3060\uff01\u300f\u3068\u6bce\u671d\u53eb\u3070\u308c\u308b\u76ee\u899a\u307e\u3057\u30a2\u30d7\u30ea\u3092\u4f5c\u3063\u305f #Nuxt &#8211; Qiita","datePublished":"2025-12-01T11:47:19+00:00","mainEntityOfPage":{"@id":"https:\/\/pokecon.jp\/job\/25995\/"},"wordCount":31,"image":{"@id":"https:\/\/qiita.com\/alclimb\/items\/e303cf655373992f61f4#primaryimage"},"thumbnailUrl":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/12\/https3A2F2Fqiita-user-contents.imgix_.net2Fhttps253A252F252Fcdn.qiita_.com252Fassets252Fpubli.jpeg","articleSection":["\u306f\u3066\u306a\u30d6\u30ed\u30b0"],"inLanguage":"ja"},{"@type":"WebPage","@id":"https:\/\/pokecon.jp\/job\/25995\/","url":"https:\/\/qiita.com\/alclimb\/items\/e303cf655373992f61f4","name":"\u305a\u3093\u3060\u3082\u3093\u306b\u300e\u5148\u8f29\u306e\u30af\u30bd\u30b3\u30fc\u30c9\u306e\u305b\u3044\u3067\u672c\u756a\u304c\u71c3\u3048\u3066\u308b\u306e\u3060\uff01\u300f\u3068\u6bce\u671d\u53eb\u3070\u308c\u308b\u76ee\u899a\u307e\u3057\u30a2\u30d7\u30ea\u3092\u4f5c\u3063\u305f #Nuxt - Qiita - \u30dd\u30b1\u30b3\u30f3","isPartOf":{"@id":"https:\/\/pokecon.jp\/job\/#website"},"primaryImageOfPage":{"@id":"https:\/\/qiita.com\/alclimb\/items\/e303cf655373992f61f4#primaryimage"},"image":{"@id":"https:\/\/qiita.com\/alclimb\/items\/e303cf655373992f61f4#primaryimage"},"thumbnailUrl":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/12\/https3A2F2Fqiita-user-contents.imgix_.net2Fhttps253A252F252Fcdn.qiita_.com252Fassets252Fpubli.jpeg","datePublished":"2025-12-01T11:47:19+00:00","author":{"@id":"https:\/\/pokecon.jp\/job\/#\/schema\/person\/16c9f07b1ba984d165d9aee259bda997"},"breadcrumb":{"@id":"https:\/\/qiita.com\/alclimb\/items\/e303cf655373992f61f4#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/qiita.com\/alclimb\/items\/e303cf655373992f61f4"]}]},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/qiita.com\/alclimb\/items\/e303cf655373992f61f4#primaryimage","url":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/12\/https3A2F2Fqiita-user-contents.imgix_.net2Fhttps253A252F252Fcdn.qiita_.com252Fassets252Fpubli.jpeg","contentUrl":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/12\/https3A2F2Fqiita-user-contents.imgix_.net2Fhttps253A252F252Fcdn.qiita_.com252Fassets252Fpubli.jpeg","width":1200,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/qiita.com\/alclimb\/items\/e303cf655373992f61f4#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u30db\u30fc\u30e0","item":"https:\/\/pokecon.jp\/job\/"},{"@type":"ListItem","position":2,"name":"\u305a\u3093\u3060\u3082\u3093\u306b\u300e\u5148\u8f29\u306e\u30af\u30bd\u30b3\u30fc\u30c9\u306e\u305b\u3044\u3067\u672c\u756a\u304c\u71c3\u3048\u3066\u308b\u306e\u3060\uff01\u300f\u3068\u6bce\u671d\u53eb\u3070\u308c\u308b\u76ee\u899a\u307e\u3057\u30a2\u30d7\u30ea\u3092\u4f5c\u3063\u305f #Nuxt &#8211; Qiita"}]},{"@type":"WebSite","@id":"https:\/\/pokecon.jp\/job\/#website","url":"https:\/\/pokecon.jp\/job\/","name":"\u30dd\u30b1\u30b3\u30f3","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/pokecon.jp\/job\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ja"},{"@type":"Person","@id":"https:\/\/pokecon.jp\/job\/#\/schema\/person\/16c9f07b1ba984d165d9aee259bda997","name":"info@pokecon.jp","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/secure.gravatar.com\/avatar\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g","caption":"info@pokecon.jp"},"url":"https:\/\/pokecon.jp\/job\/author\/infopokecon-jp\/"}]}},"_links":{"self":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts\/25995","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/comments?post=25995"}],"version-history":[{"count":1,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts\/25995\/revisions"}],"predecessor-version":[{"id":25997,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts\/25995\/revisions\/25997"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/media\/25996"}],"wp:attachment":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/media?parent=25995"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/categories?post=25995"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/tags?post=25995"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}