[{"data":1,"prerenderedAt":4540},["ShallowReactive",2],{"legacy-category-website-building":3,"legacy-category-questions-website-building":22,"legacy-category-guides-website-building":4110},{"id":4,"title":5,"body":6,"date":13,"description":5,"extension":14,"locale":15,"meta":16,"navigation":17,"path":18,"seo":19,"slug":20,"stem":20,"updated":13,"__hash__":21},"legacyCategories\u002Fwebsite-building.md","Webサイト構築",{"type":7,"value":8,"toc":9},"minimark",[],{"title":10,"searchDepth":11,"depth":11,"links":12},"",2,[],"2021-04-01T00:00:00.000Z","md","ja",{},true,"\u002Fwebsite-building",{"title":5,"description":5},"website-building","h9jPLD2mzMm3L4sFN5qWSiSirySQQLdnxLhQcvw8VlQ",[23,123,169,252,297,369,455,493,584,644,710,767,846,898,975,1101,1307,1403,1462,1512,1561,1624,1684,1722,1819,1860,1915,1959,2016,2048,2089,2205,2256,2314,2354,2402,2521,2561,2604,2643,2693,2743,2786,2822,2858,2902,2951,3024,3067,3173,3211,3268,3325,3381,3453,3514,3584,3631,3694,3747,3795,3851,3892,3949,4011],{"id":24,"title":25,"author":26,"body":27,"category":20,"date":13,"description":25,"extension":14,"locale":15,"meta":115,"navigation":17,"path":116,"seo":117,"slug":118,"stem":119,"tag":120,"updated":13,"__hash__":122},"legacyQuestions\u002F20210401000000-GridsomeでTOC（目次）を自動生成したい.md","GridsomeでTOC（目次）を自動生成したい","koji-kadoma",{"type":7,"value":28,"toc":110},[29,33,37,47,50,53,57,60,70,73,79,82,88,91,95,98,104,107],[30,31,32],"h2",{"id":32},"vue-remarkを使う",[34,35,36],"p",{},"Gridsomeでマークダウンファイルを使う場合は、",[38,39,40,44],"ol",{},[41,42,43],"li",{},"@gridsome\u002Fsource-filesystem",[41,45,46],{},"@gridsome\u002Fvue-remark",[34,48,49],{},"のどちらかのプラグインを使うのが公式のやり方です。",[34,51,52],{},"Gridsomeでサイトを作る紹介ページなどでは、@gridsome\u002Fsource-filesystemを使っている例が多いですが、@gridsome\u002Fsource-filesystemはToc（目次）を自動生成する機能がないため、@gridsome\u002Fvue-remarkを使います。",[30,54,56],{"id":55},"gridsomevue-remarkでtocを自動生成する方法","@gridsome\u002Fvue-remarkでToCを自動生成する方法",[34,58,59],{},"@gridsome\u002Fvue-remark単体ではTocの作成に対応していないので、プラグインを使います。",[61,62,67],"pre",{"className":63,"code":65,"language":66},[64],"language-text","yarn add @gridsome\u002Fvue-remark remark-toc\n","text",[68,69,65],"code",{"__ignoreMap":10},[34,71,72],{},"プラグインを使う旨をgridsome.config.jsに記述します。",[61,74,77],{"className":75,"code":76,"language":66},[64],"module.exports = {\n  \u002F\u002F\n  \u002F\u002F 省略\n  \u002F\u002F\n  plugins: [\n    {\n      use: '@gridsome\u002Fvue-remark',\n      options: {\n        \u002F\u002F\n        \u002F\u002F 省略\n        \u002F\u002F\n        plugins: [\n          ['remark-toc']\n        ],\n      }\n    }\n  ]\n}\n",[68,78,76],{"__ignoreMap":10},[34,80,81],{},"あとはマークダウンファイルでTocパートを追記します。",[61,83,86],{"className":84,"code":85,"language":66},[64],"## toc\n\n## 見出し\n\n記事本文記事本文記事本文記事本文記事本文記事本文記事本文記事本文記事本文記事本文記事本文記事本文記事本文記事本文記事本文記事本文記事本文記事本文記事本文記事本文記事本文記事本文。\n\n",[68,87,85],{"__ignoreMap":10},[34,89,90],{},"これで自動生成されます。",[30,92,94],{"id":93},"自動生成されなかったら","自動生成されなかったら？",[34,96,97],{},"なお、@gridsome\u002Fvue-remarkで複数のデータソースを読み取る場合は、gridsome.config.js内の全てのvue-remarkの設定に、",[61,99,102],{"className":100,"code":101,"language":66},[64],"plugins: [\n  ['remark-toc']\n]\n",[68,103,101],{"__ignoreMap":10},[34,105,106],{},"を入れないと、内部エラーが起こってTOC（目次）が生成されなくなります。",[34,108,109],{},"これは公式のドキュメントなどにも記載されていない条件なので要注意です。",{"title":10,"searchDepth":11,"depth":11,"links":111},[112,113,114],{"id":32,"depth":11,"text":32},{"id":55,"depth":11,"text":56},{"id":93,"depth":11,"text":94},{},"\u002F20210401000000-gridsometoc",{"title":25,"description":25},"9236680151e49ec8cc58cd118c867c1e","20210401000000-GridsomeでTOC（目次）を自動生成したい",[121],"gridsome","aLaO_jaVctmM-birZtrWMQCXbbJOlfq4QukGkS1q5Lw",{"id":124,"title":125,"author":26,"body":126,"category":20,"date":13,"description":125,"extension":14,"locale":15,"meta":162,"navigation":17,"path":163,"seo":164,"slug":165,"stem":166,"tag":167,"updated":13,"__hash__":168},"legacyQuestions\u002F20210401000000-Gridsomeでサイトマップを自動生成したい.md","Gridsomeでサイトマップを自動生成したい",{"type":7,"value":127,"toc":159},[128,132,135,141,144,150,153,156],[30,129,131],{"id":130},"gridsome公式プラグインが用意されています","Gridsome公式プラグインが用意されています",[34,133,134],{},"Gridsomeには、公式でサイトマップ生成プラグインが用意されているのでインストールします。",[61,136,139],{"className":137,"code":138,"language":66},[64],"yarn add @gridsome\u002Fplugin-sitemap\n",[68,140,138],{"__ignoreMap":10},[34,142,143],{},"インストールが出来たら、プラグインを使う旨をgridsome.config.jsに記述します。",[61,145,148],{"className":146,"code":147,"language":66},[64],"module.exports = {\n  \u002F\u002F\n  \u002F\u002F 省略\n  \u002F\u002F\n  plugins: [\n    {\n      use: '@gridsome\u002Fplugin-sitemap',\n      options: {\n        config: {\n          '\u002Fblog\u002F*': {\n            changefreq: 'weekly',\n            priority: 0.5,\n          }\n        }\n      }\n    },\n  ]\n}\n",[68,149,147],{"__ignoreMap":10},[34,151,152],{},"これだけでプロジェクトをビルドした時に、sitemap.xmlが自動生成されます。",[34,154,155],{},"注意点としては、「ビルド時に自動生成する」という点で、プレビューサーバーで立ち上げた時は、サイトマップを自動生成しないので、プレビューは出来ません。",[34,157,158],{},"チェックしたい場合は、一度ビルドして出力したファイル（dist\u002Fsitemap.xml）をチェックするしかありません。",{"title":10,"searchDepth":11,"depth":11,"links":160},[161],{"id":130,"depth":11,"text":131},{},"\u002F20210401000000-gridsome",{"title":125,"description":125},"ea5ec63ab56cd01eba1d8faf26374445","20210401000000-Gridsomeでサイトマップを自動生成したい",[121],"Cet-hT-NIbIfnQlGE4WEgkwi1hGa2ML5FRD0PXnztYw",{"id":170,"title":171,"author":26,"body":172,"category":20,"date":13,"description":245,"extension":14,"locale":15,"meta":246,"navigation":17,"path":163,"seo":247,"slug":248,"stem":249,"tag":250,"updated":13,"__hash__":251},"legacyQuestions\u002F20210401000000-Gridsomeでプロジェクトを作成する方法は？.md","Gridsomeでプロジェクトを作成する方法は？",{"type":7,"value":173,"toc":235},[174,178,184,188,192,195,201,204,207,213,216,222,225,229],[30,175,177],{"id":176},"gridsome-cliをインストールする","Gridsome CLIをインストールする",[61,179,182],{"className":180,"code":181,"language":66},[64],"npm install --global @gridsome\u002Fcli\n",[68,183,181],{"__ignoreMap":10},[30,185,187],{"id":186},"gridsome-cliをからプロジェクトを作成する","Gridsome CLIをからプロジェクトを作成する",[189,190,191],"h3",{"id":191},"基本パターン",[34,193,194],{},"基本的には「gridsome create」コマンドでプロジェクトを作成できます。",[61,196,199],{"className":197,"code":198,"language":66},[64],"gridsome create プロジェクト名\n",[68,200,198],{"__ignoreMap":10},[189,202,203],{"id":203},"既存のディレクトリで作成する場合",[34,205,206],{},"ディレクトリに入って、",[61,208,211],{"className":209,"code":210,"language":66},[64],"gridsome create .\n",[68,212,210],{"__ignoreMap":10},[189,214,215],{"id":215},"スターターキットを使う場合",[61,217,220],{"className":218,"code":219,"language":66},[64],"gridsome create プロジェクト名 レポジトリURL\n",[68,221,219],{"__ignoreMap":10},[34,223,224],{},"レポジトリはGridsomeのプロジェクトであれば、公式のものでなくても問題ありません。自分用にテンプレートを用意しておくと便利です。",[189,226,228],{"id":227},"wordpressからインポートする場合","WordPressからインポートする場合",[61,230,233],{"className":231,"code":232,"language":66},[64],"gridsome create プロジェクト名 wordpress\n",[68,234,232],{"__ignoreMap":10},{"title":10,"searchDepth":11,"depth":11,"links":236},[237,238],{"id":176,"depth":11,"text":177},{"id":186,"depth":11,"text":187,"children":239},[240,242,243,244],{"id":191,"depth":241,"text":191},3,{"id":203,"depth":241,"text":203},{"id":215,"depth":241,"text":215},{"id":227,"depth":241,"text":228},"Gridsomeでサイトを作成する",{},{"title":171,"description":245},"f99571b2a20cd5c2cdd530c65b37d663","20210401000000-Gridsomeでプロジェクトを作成する方法は？",[121],"ZwFcGlyy1RMBTuVDSRm-oqwCIZ87lK9Mlgym11wghhg",{"id":253,"title":254,"author":26,"body":255,"category":20,"date":13,"description":245,"extension":14,"locale":15,"meta":291,"navigation":17,"path":163,"seo":292,"slug":293,"stem":294,"tag":295,"updated":13,"__hash__":296},"legacyQuestions\u002F20210401000000-Gridsomeでマークダウン内の変数でページを引きたい.md","Gridsomeでマークダウン内の変数でページを引きたい",{"type":7,"value":256,"toc":288},[257,260,263,271,274,277,285],[30,258,259],{"id":259},"基本的には難しい",[34,261,262],{},"静的サイトジェネレータを使っていると、slugとか、dateとかでURLを決めて、データを受け取りたいケースがたくさんありますが、GridsomeではtemplateとpageでGraphQL用に受け取る変数は、",[38,264,265,268],{},[41,266,267],{},"id",[41,269,270],{},"path",[34,272,273],{},"の二つだけでなので、オリジナルの変数でGprahQLからデータを絞り込むのはかなり難しいです。",[34,275,276],{},"ただ、自動生成される検索用の「allXxxxx」クエリでデータ自体を探すことは可能ですが、",[38,278,279,282],{},[41,280,281],{},"pathからURLの構造を解析",[41,283,284],{},"解析した引数を使って、検索用の「allXxxxx」クエリからデータを取得",[34,286,287],{},"という流れになるのでかなり面倒です。うまくpathを使ってデータを使った方が簡単です。",{"title":10,"searchDepth":11,"depth":11,"links":289},[290],{"id":259,"depth":11,"text":259},{},{"title":254,"description":245},"474453d0e3fe2b851afe428908317836","20210401000000-Gridsomeでマークダウン内の変数でページを引きたい",[121],"W7l2ZdqCz3HkY7TYPWWzm_o-0JUQ47rmUKQDDd_ILEA",{"id":298,"title":299,"author":26,"body":300,"category":20,"date":13,"description":245,"extension":14,"locale":15,"meta":362,"navigation":17,"path":363,"seo":364,"slug":365,"stem":366,"tag":367,"updated":13,"__hash__":368},"legacyQuestions\u002F20210401000000-GridsomeのGraphQLで受け取る変数は？.md","GridsomeのGraphQLで受け取る変数は？",{"type":7,"value":301,"toc":358},[302,305,308,314,317,320,328,331,334,337,340,346,349,355],[30,303,304],{"id":304},"page-queryが受け取れる変数は実質二つ",[34,306,307],{},"Gridsomeが自動生成するGraphQLに収容されるクエリには、",[61,309,312],{"className":310,"code":311,"language":66},[64],"id: ID\npath: String\nnullable: Boolean = false\n",[68,313,311],{"__ignoreMap":10},[34,315,316],{},"の3つが、引数として指定されます。",[34,318,319],{},"一方で、Gridsomeのジェネレータ側では、templateとpageでpage-queryを使えますが、",[38,321,322,325],{},[41,323,324],{},"id: ID",[41,326,327],{},"path: String",[34,329,330],{},"この二つしかページのパラメータから引数として収納していません。つまり、実質「idとpathでしか検索できない」と思って良いでしょう。",[30,332,333],{"id":333},"受け取る変数を使ってクエリを発行する",[34,335,336],{},"この二つで引くようにGraphQLのクエリを発行してみます。",[34,338,339],{},"例えば、このクエリと、",[61,341,344],{"className":342,"code":343,"language":66},[64],"\u003Cpage-query>\n  query Blog($path: String) {\n    articles(path: $path) {\n      title\n      date\n    }\n  }\n\u003C\u002Fpage-query>\n",[68,345,343],{"__ignoreMap":10},[34,347,348],{},"このクエリは、",[61,350,353],{"className":351,"code":352,"language":66},[64],"\u003Cpage-query>\n  query Blog($id: ID) {\n    articles(id: $id) {\n      title\n      date\n    }\n  }\n\u003C\u002Fpage-query>\n",[68,354,352],{"__ignoreMap":10},[34,356,357],{},"基本的には同じ結果を返すはずです。",{"title":10,"searchDepth":11,"depth":11,"links":359},[360,361],{"id":304,"depth":11,"text":304},{"id":333,"depth":11,"text":333},{},"\u002F20210401000000-gridsomegraphql",{"title":299,"description":245},"40e2cd9757f1db75d18e5331e1ec852d","20210401000000-GridsomeのGraphQLで受け取る変数は？",[121],"G06TKQqTdI3sk6_mLtEv0k_U1r-Drt9clag5E7aY_i0",{"id":370,"title":371,"author":26,"body":372,"category":20,"date":13,"description":245,"extension":14,"locale":15,"meta":448,"navigation":17,"path":449,"seo":450,"slug":451,"stem":452,"tag":453,"updated":13,"__hash__":454},"legacyQuestions\u002F20210401000000-Gridsomeのpage-queryとstatic-queryの違いは？.md","Gridsomeのpage-queryとstatic-queryの違いは？",{"type":7,"value":373,"toc":445},[374,377,380,388,391,442],[30,375,376],{"id":376},"違いは使う場所と変数を受け取れるか",[34,378,379],{},"Gridsomeでは、GraphQLでデータを持ってくる方法として、",[38,381,382,385],{},[41,383,384],{},"page-query",[41,386,387],{},"static-query",[34,389,390],{},"の二つがあります。大きな違いは変数を受け取れるかです。",[392,393,394,408],"table",{},[395,396,397],"thead",{},[398,399,400,403,406],"tr",{},[401,402],"th",{},[401,404,384],{"align":405},"center",[401,407,387],{"align":405},[409,410,411,423],"tbody",{},[398,412,413,417,420],{},[414,415,416],"td",{},"変数の受け取り",[414,418,419],{"align":405},"○",[414,421,422],{"align":405},"x",[398,424,425,428,435],{},[414,426,427],{},"使う場所",[414,429,430,431,434],{"align":405},"template",[432,433],"br",{},"page",[414,436,430,437,434,439,441],{"align":405},[432,438],{},[432,440],{},"component",[34,443,444],{},"templateとpageは両方を使えますが、componentではstatic-queryしか使えません。",{"title":10,"searchDepth":11,"depth":11,"links":446},[447],{"id":376,"depth":11,"text":376},{},"\u002F20210401000000-gridsomepage-querystatic-query",{"title":371,"description":245},"27ba4a51d73a657df47f3cd4f47e4ea6","20210401000000-Gridsomeのpage-queryとstatic-queryの違いは？",[121],"72Wy-ofvgVrxSe-FKYEj-J9_OakhlHMmvUkEdFiItFw",{"id":456,"title":457,"author":26,"body":458,"category":20,"date":484,"description":485,"extension":14,"locale":15,"meta":486,"navigation":17,"path":487,"seo":488,"slug":489,"stem":490,"tag":491,"updated":484,"__hash__":492},"legacyQuestions\u002F20210402000000-Gridsomeでmetaの内容を動的に変更するには？.md","Gridsomeでtitleやmetaの内容を動的に変更するには？",{"type":7,"value":459,"toc":481},[460,463,466,472,475,478],[30,461,462],{"id":462},"専用のフックが用意されています",[34,464,465],{},"Gridsomeには、HTMLヘッダーの中身を動的に変更するために「metaInfo」という専用のフックが用意されています。",[61,467,470],{"className":468,"code":469,"language":66},[64],"\u003Cscript>\nexport default {\n  name: 'Blog',\n  metaInfo: {\n    title: this.$page.blog.title,\n    meta: [\n      {\n        name: 'author',\n        content: this.$page.blog.author.title\n      }\n    ],\n    link: [\n      {\n        rel: 'stylesheet',\n        href: '\u002Fcss\u002Findex.css'\n      }\n    ]\n    \u002F\u002F etc...\n  }\n}\n\u003C\u002Fscript>\n",[68,471,469],{"__ignoreMap":10},[34,473,474],{},"metaInfoの中身はただのハッシュなので、サンプルを見ながらやればすぐに理解できます。ちなみに、metaInfoという名前ですが、meta以外のHTMLヘッダも変更可能です。",[34,476,477],{},"Gridsomeのtemplateとpageでは、処理設定内で「this」でGridsomeのデータにアクセスが出来るので、GraphQLで取得してきたデータは全て利用可能です。",[34,479,480],{},"動的に変更されたmetaなどのHTMLヘッダの中身は、ビルド時にしっかりとHTMLに記述されるので、SEO的にも安心です。",{"title":10,"searchDepth":11,"depth":11,"links":482},[483],{"id":462,"depth":11,"text":462},"2021-04-02T07:00:00.000Z","Gridsomeでmetaの内容を動的に変更するにはどうやる？",{},"\u002F20210402000000-gridsomemeta",{"title":457,"description":485},"9ff2c480424d00c97b9044846bca5e03","20210402000000-Gridsomeでmetaの内容を動的に変更するには？",[121],"DClNdl5lcKPdifkovknMb-DBWpr0M3Pz-LfXtYZHhk8",{"id":494,"title":495,"author":26,"body":496,"category":20,"date":575,"description":576,"extension":14,"locale":15,"meta":577,"navigation":17,"path":578,"seo":579,"slug":580,"stem":581,"tag":582,"updated":575,"__hash__":583},"legacyQuestions\u002F20210402000000-Gridsomeでのプラグインの使い方.md","Gridsomeでプラグインはどうやって使う？",{"type":7,"value":497,"toc":571},[498,502,505,513,516,519,525,528,534,537,541,544,551,554,557,565,568],[30,499,501],{"id":500},"gridsome用プラグインの場合","Gridsome用プラグインの場合",[34,503,504],{},"Gridsome用に書かれたプラグインであれば、",[38,506,507,510],{},[41,508,509],{},"プラグインをインストール（npm or yarn）",[41,511,512],{},"gridsome.config.jsのpluginsに記述",[34,514,515],{},"だけで使えるようになります。",[34,517,518],{},"例えば、Google Analyticsプラグインだったら、",[61,520,523],{"className":521,"code":522,"language":66},[64],"yarn add @gridsome\u002Fplugin-google-analytics\n",[68,524,522],{"__ignoreMap":10},[34,526,527],{},"でインストールして、gridsome.config.jsに、",[61,529,532],{"className":530,"code":531,"language":66},[64],"module.exports = {\n  plugins: [\n    {\n      use: '@gridsome\u002Fplugin-google-analytics',\n      options: {\n        id: 'UA-XXXXXXXXX-X'\n      }\n    }\n  ]\n}\n",[68,533,531],{"__ignoreMap":10},[34,535,536],{},"でプラグインを使う旨と、プラグインに渡すパラメータを記述すればすぐに適用されます。",[30,538,540],{"id":539},"vuejs用プラグインの場合","Vue.js用プラグインの場合",[34,542,543],{},"Vue.jsプラグインの場合は、プラグインにもよりますが、",[38,545,546,548],{},[41,547,509],{},[41,549,550],{},"main.js（src\u002Fmain.js）に記述",[34,552,553],{},"という、Vue.jsのプラグインの使い方そのままです。",[34,555,556],{},"ただし、GridsomeでVue.js用のプラグインを使う場合は、",[38,558,559,562],{},[41,560,561],{},"window APIなどブラウザ系のAPIを使っているとエラーになる",[41,563,564],{},"呼ぶタイミングによっては使えない",[34,566,567],{},"という点に注意が必要です。",[34,569,570],{},"特にwindow系のエラーは、プレビューサーバー（gridsome develop）ではエラーが出ないのに、ビルド（gridsome build）するとエラーになることが多いので、プラグインを追加したあとは、テストでビルドしておいたほうが安心です。",{"title":10,"searchDepth":11,"depth":11,"links":572},[573,574],{"id":500,"depth":11,"text":501},{"id":539,"depth":11,"text":540},"2021-04-02T06:00:00.000Z","Gridsomeでのプラグインの使い方",{},"\u002F20210402000000-gridsome",{"title":495,"description":576},"70c682eabc34eee11e01551f9aee31aa","20210402000000-Gridsomeでのプラグインの使い方",[121],"8wHNHLxpqNxzEmjDyrXnYlUD6wkW9EwspvThDe4kO64",{"id":585,"title":586,"author":26,"body":587,"category":20,"date":637,"description":586,"extension":14,"locale":15,"meta":638,"navigation":17,"path":578,"seo":639,"slug":640,"stem":641,"tag":642,"updated":637,"__hash__":643},"legacyQuestions\u002F20210402000000-Gridsomeでの画像の使い方・保存場所.md","Gridsomeでの画像の使い方・保存場所",{"type":7,"value":588,"toc":633},[589,592,595,601,607,610,613,616,619,622,630],[30,590,591],{"id":591},"画像の呼び出し方は二つ",[34,593,594],{},"Gridsomeでは画像の呼び出しにオリジナルの「g-image」というコンポーネントを用意しています。GridsomeはVue.jsなので、通常通りimgタグを使うことも可能です。",[61,596,599],{"className":597,"code":598,"language":66},[64],"\u002F\u002F g-imageコンポーネント\n\n\u003Cg-image src=\"~\u002Fassets\u002Fimgs\u002Ftitle.png\" width=\"83px\" :alt=\"$static.metadata.siteName\"\u002F>\n",[68,600,598],{"__ignoreMap":10},[61,602,605],{"className":603,"code":604,"language":66},[64],"\u002F\u002F 通常のimgタグ\n\n\u003Cimg :src=\"'~\u002Fassets\u002Fimgs\u002Ftitle.png'\" width=\"83px\" :alt=\"$static.metadata.siteName\"\u002F>\n",[68,606,604],{"__ignoreMap":10},[34,608,609],{},"コード的には、g-image方がシンプルに使えるというメリットがありますが、変数を含む場合はどちらにしろプロパティにするのであまり差はありません。",[34,611,612],{},"しかし、g-imageコンポーネントは、画像を内部的に最適化してくれるので、アイコンなどのサイト全体で使う画像はg-imageにした方が良いかもしれません。",[30,614,615],{"id":615},"画像の保存場所は二つ",[34,617,618],{},"Gridsomeでは、他の静的サイトジェネレータと同様に、プロジェクトルートのstaticディレクトリの中身を、そのままプロジェクトルートに設置します。ですので、static以下に画像を保存すればまず問題なく使えます。",[34,620,621],{},"一方で、src以下にassetsディレクトリ（デフォルトではない）を作成すれば、テンプレートなどVue.jsのコードからアクセスしやすくなります。どちらにするかは、画像の運用方法次第ですが、",[38,623,624,627],{},[41,625,626],{},"常に使う画像 => src\u002Fassets",[41,628,629],{},"ページごとに使う画像 => static\u002Fimg",[34,631,632],{},"とするのが多いようです。",{"title":10,"searchDepth":11,"depth":11,"links":634},[635,636],{"id":591,"depth":11,"text":591},{"id":615,"depth":11,"text":615},"2021-04-02T03:00:00.000Z",{},{"title":586,"description":586},"6d9604624f1965fd92f3a85698c262b7","20210402000000-Gridsomeでの画像の使い方・保存場所",[121],"Q7p0LthhjdahMKA-n5QcpkRVqdMYaBb7VtI8bWxmbyk",{"id":645,"title":646,"author":26,"body":647,"category":20,"date":702,"description":245,"extension":14,"locale":15,"meta":703,"navigation":17,"path":704,"seo":705,"slug":706,"stem":707,"tag":708,"updated":702,"__hash__":709},"legacyQuestions\u002F20210402000000-GridsomeのGraphQLのidはどうやって決まる？.md","GridsomeのGraphQLのidはどうやって決まる？",{"type":7,"value":648,"toc":698},[649,653,656,659,662,665,671,674,677,683,686,695],[30,650,652],{"id":651},"idはnodeのpathからハッシュ値を出して決定しています","idは、nodeのpathからハッシュ値を出して決定しています",[34,654,655],{},"Gridsomeのドキュメントでは、どのようにidを発行しているか説明されていませんが、@gridsome\u002Fsource-filesystemでも、@gridsome\u002Fvue-remarkでも、オリジナルファイルのpathを元にidを決定しています。",[34,657,658],{},"ですので、タイトルやデータの中身が変更されても、ファイル名さえ同じであれば、idは不変です。逆に、ファイル名も1文字（1バイト）でも変えてしまうと、idが変わってしまうため、GraphQLのidをURLに使っている場合は、URLが変わってしまうので注意が必要です。",[30,660,661],{"id":661},"ソースコードをみてみる",[34,663,664],{},"この辺りの仕組みは、プラグインのソースコードを見ると仕組みが理解できます。",[61,666,669],{"className":667,"code":668,"language":66},[64],"async createNodeOptions (file, actions) {\n  const relPath = path.relative(this.context, file)\n  const origin = path.join(this.context, file)\n  const content = await fs.readFile(origin, 'utf8')\n  const { dir, name, ext = '' } = path.parse(file)\n  const mimeType = mime.lookup(file) || `application\u002Fx-${ext.replace('.', '')}`\n\n  return {\n    id: this.createUid(relPath),\n    path: this.createPath({ dir, name }, actions),\n    fileInfo: {\n      extension: ext,\n      directory: dir,\n      path: file,\n      name\n    },\n    internal: {\n      mimeType,\n      content,\n      origin\n    }\n  }\n}\n",[68,670,668],{"__ignoreMap":10},[34,672,673],{},"idは、fileのrelPathを元にcreateUid関数で変換して決定しています。",[34,675,676],{},"createUidは何をしているかというと、",[61,678,681],{"className":679,"code":680,"language":66},[64],"createUid (orgId) {\n  return crypto.createHash('md5').update(orgId).digest('hex')\n}\n",[68,682,680],{"__ignoreMap":10},[34,684,685],{},"なので、ファイルのパスを元に、md5でハッシュを生成しているということになります。",[34,687,688],{},[689,690,694],"a",{"href":691,"rel":692},"https:\u002F\u002Fgithub.com\u002Fgridsome\u002Fgridsome\u002Fblob\u002Fmaster\u002Fpackages\u002Fsource-filesystem\u002Findex.js",[693],"nofollow","gridsome\u002Fpackages\u002Fsource-filesystem\u002Findex.js | Github",[34,696,697],{},"Gridsomeで、GraphQLにデータを取り込むのは、@gridsome\u002Fsource-filesystemと@gridsome\u002Fvue-remarkの2種類がありますが、@gridsome\u002Fvue-remarkは内部的には@gridsome\u002Fsource-filesystemを使ってマークダウンファイルをインスタンス化しているようなので、仕組みは同じでしょう。",{"title":10,"searchDepth":11,"depth":11,"links":699},[700,701],{"id":651,"depth":11,"text":652},{"id":661,"depth":11,"text":661},"2021-04-02T00:00:00.000Z",{},"\u002F20210402000000-gridsomegraphqlid",{"title":646,"description":245},"5fd09cefbff2abee86594cf82bfd95a4","20210402000000-GridsomeのGraphQLのidはどうやって決まる？",[121],"2M0s57yWs2DNRzAMoIOd7NuYdmIW2kWMJM-6K4C5ITA",{"id":711,"title":712,"author":26,"body":713,"category":20,"date":759,"description":712,"extension":14,"locale":15,"meta":760,"navigation":17,"path":761,"seo":762,"slug":763,"stem":764,"tag":765,"updated":759,"__hash__":766},"legacyQuestions\u002F20210402000000-girdsome-configとserverの違い.md","girdsome.config.jsとgirdsome.server.jsの違い",{"type":7,"value":714,"toc":755},[715,719,722,725,728,732,735,738,746,749,752],[30,716,718],{"id":717},"girdsomeconfigjsは全体の設定","girdsome.config.jsは全体の設定",[34,720,721],{},"girdsome.config.jsは、Gridsomeの全体の設定ファイルです。",[34,723,724],{},"サイト名の設定から、プラグインの指定、URLのパスの設定など、基本的にgirdsome.config.jsで設定をします。APIなどから動的に静的ページを生成しないのであれば、girdsome.config.jsで完結します。",[34,726,727],{},"Vue.jsのプラグインを使う場合は、main.jsも設定ファイルとして使いますが、Gridsome公式プラグインを使うだけなら、girdsome.config.jsの使い方を覚えるだけでOKです。",[30,729,731],{"id":730},"girdsomeserverjsは動的な設定","girdsome.server.jsは動的な設定",[34,733,734],{},"girdsome.server.jsは動的に静的ページを生成するための設定です。厳密には、Gridsomeプロジェクト下のGraphQLにNodeを追加するための設定です。",[34,736,737],{},"girdsome.server.jsでは、マークダウンファイルやページからではなく、APIやJsonなどのマスターページからGraphQLにNodeを追加するために、",[38,739,740,743],{},[41,741,742],{},"データソースの指定",[41,744,745],{},"データをどのように追加するか",[34,747,748],{},"をプログラミングします。",[34,750,751],{},"girdsome.server.jsの設定は、girdsome.config.jsのように「JSONで設定を記述するだけ」ではなく、純粋なにNode.js（Javascript）で処理を書くので、最低限のJavascriptの知識がないと使えません。",[34,753,754],{},"ただし、GridsomeではAPIなどからデータを持ってこなくても、マークダウンファイルを使って同じようなことも出来るので、プロジェクトの構成やデータの取得方法などで使い分ける形になります。",{"title":10,"searchDepth":11,"depth":11,"links":756},[757,758],{"id":717,"depth":11,"text":718},{"id":730,"depth":11,"text":731},"2021-04-02T05:00:00.000Z",{},"\u002F20210402000000-girdsome-configserver",{"title":712,"description":712},"326d806dae9b67d1078a79ee54c7db85","20210402000000-girdsome-configとserverの違い",[121],"BI-Kcqd2au_gUNzk0fVejQj4IwsrrdktGHwL9-EuM7Y",{"id":768,"title":769,"author":26,"body":770,"category":20,"date":837,"description":838,"extension":14,"locale":15,"meta":839,"navigation":17,"path":840,"seo":841,"slug":842,"stem":843,"tag":844,"updated":837,"__hash__":845},"legacyQuestions\u002F20210405000000-GridsomeでGoogle Analyticsを使いたい.md","Gridsomeの便利なリンク集を知りたい",{"type":7,"value":771,"toc":831},[772,776,779,783,786,792,795,801,804,808,811,814,820,822,828],[30,773,775],{"id":774},"プラグインを追加するだけokです","プラグインを追加するだけOKです。",[34,777,778],{},"GridsomeでGoogle Analyticsを使う方法は二つあります。どちらもプラグインを追加するだけでGoogle AnalyticsをGridsomeプロジェクトに組み込むことができます。",[189,780,782],{"id":781},"google-analytics-v3の場合","Google Analytics v3の場合",[34,784,785],{},"Google Analyticsの旧バージョンを使っている場合は、公式プラグインの「@gridsome\u002Fplugin-google-analytics」をインストールすれば、すぐにGoogle Analyticsを統合できます。",[61,787,790],{"className":788,"code":789,"language":66},[64],"yarn add @gridsome\u002Fplugin-google-analytics\n\n\u002F\u002F or\n\nnpm install @gridsome\u002Fplugin-google-analytics\n\n",[68,791,789],{"__ignoreMap":10},[34,793,794],{},"プラグインがインストールできたら、grdisome.config.jsに設定を書きます。",[61,796,799],{"className":797,"code":798,"language":66},[64],"module.exports = {\n  plugins: [\n    {\n      use: '@gridsome\u002Fplugin-google-analytics',\n      options: {\n        id: 'UA-XXXXXXXXX-X' \u002F\u002F \u003C== ここを書き換える\n      }\n    }\n  ]\n}\n",[68,800,798],{"__ignoreMap":10},[34,802,803],{},"簡単ですね。",[189,805,807],{"id":806},"google-analytics-v4の場合","Google Analytics v4の場合",[34,809,810],{},"Google Analyticsの現行バージョンであるv4は、トラッキング方法が変わっているため、Googleタグマネージャーと一緒に使う必要があります。",[34,812,813],{},"ただ、GridsomeでGoogleタグマネージャーを使うのも、プラグインをインストールして設定を書くだけなので、非常に簡単です。",[61,815,818],{"className":816,"code":817,"language":66},[64],"yarn add gridsome-plugin-gtm\n\n\u002F\u002F or\n\nnpm install gridsome-plugin-gtm --save\n",[68,819,817],{"__ignoreMap":10},[34,821,794],{},[61,823,826],{"className":824,"code":825,"language":66},[64],"module.exports = {\n  plugins: [\n    {\n      use: 'gridsome-plugin-gtm',\n      options: {\n        id: 'GTM-XXXXXXX', \u002F\u002F \u003C== ここを書き換える\n        enabled: true,\n        debug: true\n      }\n    }\n  ]\n}\n",[68,827,825],{"__ignoreMap":10},[34,829,830],{},"これで、Googleタグマネージャー経由で、Google Analyticsのデータが計測可能になります。",{"title":10,"searchDepth":11,"depth":11,"links":832},[833],{"id":774,"depth":11,"text":775,"children":834},[835,836],{"id":781,"depth":241,"text":782},{"id":806,"depth":241,"text":807},"2021-04-05T07:00:00.000Z","GridsomeでGoogle Analyticsを使いたい",{},"\u002F20210405000000-gridsomegoogle-analytics",{"title":769,"description":838},"1e5902dcc40ec065f26d341ea5f92042","20210405000000-GridsomeでGoogle Analyticsを使いたい",[121],"L8iWsf6MAgp5CPUCLFu7KfHZc4BXBnKTncGgv0PAZJc",{"id":847,"title":848,"author":26,"body":849,"category":20,"date":890,"description":848,"extension":14,"locale":15,"meta":891,"navigation":17,"path":892,"seo":893,"slug":894,"stem":895,"tag":896,"updated":890,"__hash__":897},"legacyQuestions\u002F20210405000000-GridsomeでMatomo Analyticsを使いたい.md","GridsomeでMatomo Analyticsを使いたい",{"type":7,"value":850,"toc":887},[851,853,856,862,865,871,874,877,884],[30,852,775],{"id":774},[34,854,855],{},"GridsomeでMatomo Analyticsを使う方法は、有志の方が開発したプラグイン「gridsome-plugin-matomo」を追加するだけと非常に簡単です。",[61,857,860],{"className":858,"code":859,"language":66},[64],"yarn add gridsome-plugin-matomo\n\n\u002F\u002F or\n\nnpm install gridsome-plugin-matomo\n",[68,861,859],{"__ignoreMap":10},[34,863,864],{},"プラグインをインストールしたら、gridsome.config.jsに設定を書きます。",[61,866,869],{"className":867,"code":868,"language":66},[64],"module.exports = {\n  plugins: [\n    {\n      use: 'gridsome-plugin-matomo',\n      options: {\n        host: 'https:\u002F\u002Fexample.com',　\u002F\u002F \u003C== 書き換える\n        siteId: 1　\u002F\u002F \u003C== 書き換える\n      }\n    }\n  ]\n}\n",[68,870,868],{"__ignoreMap":10},[34,872,873],{},"設定のhostの部分は、httpからのURLを記述します。ドメインだけでは動かないので注意してください。siteIdは、Matomo Analyticsでサイトを追加すると出てくるID（整数）です。",[34,875,876],{},"ベースはVue.js用のプラグイン「VueMatomo」のようですので、ここの設定が使えると思われます。",[34,878,879],{},[689,880,883],{"href":881,"rel":882},"https:\u002F\u002Fgithub.com\u002FAmazingDreams\u002Fvue-matomo\u002Fblob\u002Fmaster\u002FREADME.md",[693],"VueMatomo",[34,885,886],{},"GridsomeでのMatomo Analyticsは、metaInfoの動的変更がトラッキングされないなど一部バグがありますが、それ以外は概ね問題なく動くようです。",{"title":10,"searchDepth":11,"depth":11,"links":888},[889],{"id":774,"depth":11,"text":775},"2021-04-05T08:00:00.000Z",{},"\u002F20210405000000-gridsomematomo-analytics",{"title":848,"description":848},"05dc11649aa7228a1e0d7d6cb5d9176f","20210405000000-GridsomeでMatomo Analyticsを使いたい",[121],"AQQLPadSy8QCIJ7YE4xV4Oto9LZSypk5yR4RNnIyHFo",{"id":899,"title":900,"author":26,"body":901,"category":20,"date":967,"description":900,"extension":14,"locale":15,"meta":968,"navigation":17,"path":969,"seo":970,"slug":971,"stem":972,"tag":973,"updated":967,"__hash__":974},"legacyQuestions\u002F20210405000000-GridsomeでWordPressのデータを取り込むには？.md","GridsomeでWordPressのデータを取り込むには？",{"type":7,"value":902,"toc":964},[903,907,910,916,919,925,928,936,939,942,945,948,954,957],[30,904,906],{"id":905},"公式プラグインgridsomesource-wordpressを使います","公式プラグイン「@gridsome\u002Fsource-wordpress」を使います",[34,908,909],{},"Gridsomeチームが開発している公式プラグイン「@gridsome\u002Fsource-wordpress」があるのでそちらを使います。",[61,911,914],{"className":912,"code":913,"language":66},[64],"yarn add @gridsome\u002Fsource-wordpress\n\n\u002F\u002F or\n\nnpm install @gridsome\u002Fsource-wordpress\n",[68,915,913],{"__ignoreMap":10},[34,917,918],{},"インストールしたら、grdisome.config.jsにプラグインの記述をします。",[61,920,923],{"className":921,"code":922,"language":66},[64],"module.exports = {\n  plugins: [\n    {\n      use: '@gridsome\u002Fsource-wordpress',\n      options: {\n        baseUrl: 'WEBSITE_URL', \u002F\u002F （変更する）httpsから入れる\n        apiBase: 'wp-json',\n        typeName: 'WordPress', \u002F\u002F （変更しても良い）好きなtypeNameを入れる\n        perPage: 100,\n        concurrent: 10\n      }\n    }\n  ],\n  templates: {\n    WordPressPost: '\u002F:year\u002F:month\u002F:day\u002F:slug'\n  }\n}\n",[68,924,922],{"__ignoreMap":10},[34,926,927],{},"公式のドキュメントそんまんまですが、変更すべきは、",[38,929,930,933],{},[41,931,932],{},"baseUrl",[41,934,935],{},"typeName",[34,937,938],{},"の二つです。",[34,940,941],{},"baseUrlはWordPressサイトのURLを記入します。typeNameはドキュメントの通り「WordPress」でも良いですが、ここの文字列をベースにして、様々なQueryが自動生成されるので、短いほうがプログラムを書く際に楽です。",[34,943,944],{},"注意したいのは、この「@gridsome\u002Fsource-wordpress」は、WordPressサイトのデータを「GridsomeのGraphQLデータベースに取り込むだけ」なので、表示する側のロジックは別途組む必要があります。",[34,946,947],{},"表示側まで出来ているものが欲しい場合は、プロジェクト作成時に「wordpress」を指定して、createします。",[61,949,952],{"className":950,"code":951,"language":66},[64],"gridsome create my-wordpress-blog wordpress\n",[68,953,951],{"__ignoreMap":10},[34,955,956],{},"指定したスターターであるwordpressの中身は、下記のGridsome公式レポジトリにあります。",[34,958,959],{},[689,960,963],{"href":961,"rel":962},"https:\u002F\u002Fgithub.com\u002Fgridsome\u002Fgridsome-starter-wordpress",[693],"gridsome-starter-wordpress",{"title":10,"searchDepth":11,"depth":11,"links":965},[966],{"id":905,"depth":11,"text":906},"2021-04-05T04:00:00.000Z",{},"\u002F20210405000000-gridsomewordpress",{"title":900,"description":900},"4ea50e18f56e3712a01861afbd2c4dea","20210405000000-GridsomeでWordPressのデータを取り込むには？",[121],"cTyOOOngMTAJOFxA6KTbJUmktHFjghNN73R15WiMDI4",{"id":976,"title":977,"author":26,"body":978,"category":20,"date":1093,"description":977,"extension":14,"locale":15,"meta":1094,"navigation":17,"path":1095,"seo":1096,"slug":1097,"stem":1098,"tag":1099,"updated":1093,"__hash__":1100},"legacyQuestions\u002F20210405000000-GridsomeでのURLの設定方法・決め方は？.md","GridsomeでのURLの設定方法・決め方は？",{"type":7,"value":979,"toc":1090},[980,984,987,998,1001,1004,1058,1066,1069,1075,1078,1081,1087],[30,981,983],{"id":982},"gridsomeでのurl決定ルールは3つ","GridsomeでのURL決定ルールは3つ",[34,985,986],{},"GridsomeでURLを決定するのは、",[38,988,989,992,995],{},[41,990,991],{},"src\u002Fpages内のVueファイル",[41,993,994],{},"gridsome.config.js内の設定",[41,996,997],{},"gridsome.server.js内の設定",[34,999,1000],{},"の3つです。",[34,1002,1003],{},"それぞれの違いを表にまとめると下記のようになります。",[392,1005,1006,1022],{},[395,1007,1008],{},[398,1009,1010,1013,1016,1019],{},[401,1011,1012],{},"方法",[401,1014,1015],{"align":405},"URLの決まり方",[401,1017,1018],{"align":405},"静的ページ出力",[401,1020,1021],{"align":405},"動的ソースの静的ページ出力",[409,1023,1024,1035,1047],{},[398,1025,1026,1028,1031,1033],{},[414,1027,991],{},[414,1029,1030],{"align":405},"pages以下のパスの通り",[414,1032,419],{"align":405},[414,1034,422],{"align":405},[398,1036,1037,1040,1043,1045],{},[414,1038,1039],{},"gridsome.config.js",[414,1041,1042],{"align":405},"設定を記述",[414,1044,419],{"align":405},[414,1046,419],{"align":405},[398,1048,1049,1052,1054,1056],{},[414,1050,1051],{},"gridsome.server.js",[414,1053,1042],{"align":405},[414,1055,419],{"align":405},[414,1057,419],{"align":405},[34,1059,1060,1061,1065],{},"違いとしては、",[689,1062,1064],{"href":1063},"\u002Fq\u002Fa8c2009a9b420356be5b5cbd9e4bfa48\u002F","GridsomeのTemplateとPageのと違い","に近い形になります。",[34,1067,1068],{},"gridsome.config.js、gridsome.server.jsを使う場合は、Templateを使うことになるので、設定ファイル内で自由にURLを決定できます。",[61,1070,1073],{"className":1071,"code":1072,"language":66},[64],"\u002F\u002F gridsome.config.js\n{\n  use: '@gridsome\u002Fvue-remark',\n  options: {\n    typeName: 'Articles',\n    baseDir: '.\u002Fcontent\u002Farticles',\n    template: '.\u002Fsrc\u002Ftemplates\u002FArticles.vue',\n    route: \"\u002Farticles\u002F:slug\u002F\",\n  }\n},\n",[68,1074,1072],{"__ignoreMap":10},[34,1076,1077],{},"URLを決定するのは「route」の部分です。データソースから文字列を取得してURLを指定できます。",[34,1079,1080],{},"上の例の場合は、「\u002Fcontent\u002Farticles」内にあるマークダウンファイルのフロントマッターにある「slug」という項目を使ってURLを決定しています。",[61,1082,1085],{"className":1083,"code":1084,"language":66},[64],"\u002F\u002F hogehoge.md\n---\ntitle: 記事のタイトル\ndate: 2021-04-05T02:00:00.000Z\nslug: kiji-no-title  \u002F\u002F \u003C=== ここを取得する\n---\n\n記事本文\n",[68,1086,1084],{"__ignoreMap":10},[34,1088,1089],{},"フロントマッターにある全てのソースが利用できますが、URLで禁止されている文字列があるとエラーなるので注意が必要です。",{"title":10,"searchDepth":11,"depth":11,"links":1091},[1092],{"id":982,"depth":11,"text":983},"2021-04-05T02:00:00.000Z",{},"\u002F20210405000000-gridsomeurl",{"title":977,"description":977},"30fb97c8f34c060ce24fdf4faf546c33","20210405000000-GridsomeでのURLの設定方法・決め方は？",[121],"fjG_hsTjCYyUbGVV48OsXzvPddTVhaJf1xRV50QDqHA",{"id":1102,"title":1103,"author":26,"body":1104,"category":20,"date":1300,"description":1103,"extension":14,"locale":15,"meta":1301,"navigation":17,"path":969,"seo":1302,"slug":1303,"stem":1304,"tag":1305,"updated":1300,"__hash__":1306},"legacyQuestions\u002F20210405000000-Gridsomeに取り込んだWordPressのデータをどうなっている？.md","Gridsomeに取り込んだWordPressのデータをどうなっている？",{"type":7,"value":1105,"toc":1296},[1106,1110,1113,1116,1122,1125,1129,1132,1135,1279,1282,1290,1293],[30,1107,1109],{"id":1108},"設定で指定したtypenameを接頭文字にして自動生成されます","設定で指定した「typeName」を接頭文字にして自動生成されます",[34,1111,1112],{},"Gridsome公式プラグイン「@gridsome\u002Fsource-wordpress」を使って、WordPressサイトからデータを取り込むと、自動でWordPressサイトのデータを取り込んでくれます。",[34,1114,1115],{},"どんなデータが取り込まれているかは、gridsome developで立ち上がるGraphQL Playgroundでチェックできます。",[61,1117,1120],{"className":1118,"code":1119,"language":66},[64],"http:\u002F\u002Flocalhost:8080\u002F___explore\n",[68,1121,1119],{"__ignoreMap":10},[34,1123,1124],{},"表示されたページの右側の「DOCS」のボタンをクリックすると、全てのクエリがチェックできます。",[30,1126,1128],{"id":1127},"gridsomeに取り込まれたwordpressのデータの法則","Gridsomeに取り込まれたWordPressのデータの法則",[34,1130,1131],{},"いちいちチェックするのが面倒という場合は、取り込まれ方の法則を知っておけば大丈夫です。",[34,1133,1134],{},"主な項目を一覧にまとめると下記の通りです。（「xx」はgridsome.config.jsで指定した「typeName」）",[392,1136,1137,1150],{},[395,1138,1139],{},[398,1140,1141,1144,1147],{},[401,1142,1143],{},"WordPress項目",[401,1145,1146],{"align":405},"GraphQLクエリ",[401,1148,1149],{"align":405},"補足",[409,1151,1152,1163,1174,1185,1195,1206,1216,1227,1237,1248,1258,1269],{},[398,1153,1154,1157,1160],{},[414,1155,1156],{},"投稿",[414,1158,1159],{"align":405},"xxPost",[414,1161,1162],{"align":405},"投稿の詳細",[398,1164,1165,1168,1171],{},[414,1166,1167],{},"投稿一覧",[414,1169,1170],{"align":405},"allxxPost",[414,1172,1173],{"align":405},"投稿の一覧",[398,1175,1176,1179,1182],{},[414,1177,1178],{},"固定ページ",[414,1180,1181],{"align":405},"xxPage",[414,1183,1184],{"align":405},"固定ページの詳細",[398,1186,1187,1190,1193],{},[414,1188,1189],{},"固定ページ一覧",[414,1191,1192],{"align":405},"allxxPage",[414,1194,1173],{"align":405},[398,1196,1197,1200,1203],{},[414,1198,1199],{},"メディア",[414,1201,1202],{"align":405},"xxAttachment",[414,1204,1205],{"align":405},"メディアの詳細",[398,1207,1208,1211,1214],{},[414,1209,1210],{},"メディアの一覧",[414,1212,1213],{"align":405},"allxxAttachment",[414,1215,1210],{"align":405},[398,1217,1218,1221,1224],{},[414,1219,1220],{},"投稿者",[414,1222,1223],{"align":405},"xxAuthor",[414,1225,1226],{"align":405},"投稿者の詳細",[398,1228,1229,1232,1235],{},[414,1230,1231],{},"投稿者一覧",[414,1233,1234],{"align":405},"allxxAuthor",[414,1236,1231],{"align":405},[398,1238,1239,1242,1245],{},[414,1240,1241],{},"カテゴリ",[414,1243,1244],{"align":405},"xxCategory",[414,1246,1247],{"align":405},"カテゴリの詳細",[398,1249,1250,1253,1256],{},[414,1251,1252],{},"カテゴリ一覧",[414,1254,1255],{"align":405},"allxxCategory",[414,1257,1252],{"align":405},[398,1259,1260,1263,1266],{},[414,1261,1262],{},"タグ",[414,1264,1265],{"align":405},"xxPostTag",[414,1267,1268],{"align":405},"タグの詳細",[398,1270,1271,1274,1277],{},[414,1272,1273],{},"タグの一覧",[414,1275,1276],{"align":405},"allxxPostTa",[414,1278,1273],{"align":405},[34,1280,1281],{},"基本的には、",[38,1283,1284,1287],{},[41,1285,1286],{},"詳細は「接頭文字 + 種類」",[41,1288,1289],{},"一覧は「all + 接頭文字 + 種類」",[34,1291,1292],{},"と覚えておけばOKです。",[34,1294,1295],{},"なお、クエリ名はプラグインが自動生成するので、ユーザー側で変更できるのは「接頭文字」だけです。",{"title":10,"searchDepth":11,"depth":11,"links":1297},[1298,1299],{"id":1108,"depth":11,"text":1109},{"id":1127,"depth":11,"text":1128},"2021-04-05T05:00:00.000Z",{},{"title":1103,"description":1103},"744de5e81698230ebb741f6a982624b4","20210405000000-Gridsomeに取り込んだWordPressのデータをどうなっている？",[121],"FdJEXOSjH-xsUOKy6UGV8V8jhcB1LmGrZGsVPVJNhZc",{"id":1308,"title":769,"author":26,"body":1309,"category":20,"date":1395,"description":769,"extension":14,"locale":15,"meta":1396,"navigation":17,"path":1397,"seo":1398,"slug":1399,"stem":1400,"tag":1401,"updated":1395,"__hash__":1402},"legacyQuestions\u002F20210405000000-Gridsomeの便利なリンク集を知りたい.md",{"type":7,"value":1310,"toc":1391},[1311,1315,1318,1349,1352,1355,1359,1382,1385,1388],[30,1312,1314],{"id":1313},"gridsome公式系","Gridsome公式系",[34,1316,1317],{},"まずはGridsome公式系から。",[1319,1320,1321,1328,1335,1342],"ul",{},[41,1322,1323],{},[689,1324,1327],{"href":1325,"rel":1326},"https:\u002F\u002Fgridsome.org\u002Fdocs\u002F",[693],"Gridsome公式ドキュメント",[41,1329,1330],{},[689,1331,1334],{"href":1332,"rel":1333},"https:\u002F\u002Fgridsome.org\u002Fplugins\u002F",[693],"Gridsomeプラグイン",[41,1336,1337],{},[689,1338,1341],{"href":1339,"rel":1340},"https:\u002F\u002Fgridsome.org\u002Fstarters\u002F",[693],"Gridsomeスターター（テーマ）",[41,1343,1344],{},[689,1345,1348],{"href":1346,"rel":1347},"https:\u002F\u002Fgithub.com\u002Fgridsome\u002Fgridsome",[693],"Gridsome Githubレポジトリ",[34,1350,1351],{},"公式ページは、ドキュメントとプラグイン、スターターだけ押さえていれば事足ります。",[34,1353,1354],{},"また、Gridsomeは発展途上のフレームワークなので、バグなどもちょくちょくあるので、Gridsome公式Githubレポジトリも要チェックです。特にIssuesは、同じようなトラブルに遭遇している人がいないかをチェックするのに役に立ちます。",[30,1356,1358],{"id":1357},"その他読んでおきたい系","その他、読んでおきたい系",[1319,1360,1361,1368,1375],{},[41,1362,1363],{},[689,1364,1367],{"href":1365,"rel":1366},"https:\u002F\u002Fcircleci.com\u002Fja\u002Fblog\u002Fintroduction-to-graphql\u002F",[693],"GraphQL 入門ガイド | Circle CIブログ",[41,1369,1370],{},[689,1371,1374],{"href":1372,"rel":1373},"https:\u002F\u002Fwww.netlify.com\u002Fblog\u002F2019\u002F11\u002F30\u002Fhow-to-deploy-a-vue-site\u002F",[693],"How to Deploy a Vue Site | Netlify",[41,1376,1377],{},[689,1378,1381],{"href":1379,"rel":1380},"https:\u002F\u002Fja.wp-api.org\u002F",[693],"WP REST API",[34,1383,1384],{},"GridsomeはGraphQLと密接に関係しているので、GraphQLの基礎知識はしっかりと押さえておいたほうが開発が楽になります。",[34,1386,1387],{},"また、ベースがVue.jsなのでNetlifyなどのホスティングサービスのガイドもチェックしておくと安心です。",[34,1389,1390],{},"データソースにWordPressを使う場合は、WP REST APIも便利。基本的にはプラグインが全てやってくれますが、どんなデータが来るのかを知っておくと、開発が楽になります。",{"title":10,"searchDepth":11,"depth":11,"links":1392},[1393,1394],{"id":1313,"depth":11,"text":1314},{"id":1357,"depth":11,"text":1358},"2021-04-05T06:00:00.000Z",{},"\u002F20210405000000-gridsome",{"title":769,"description":769},"ec1484074cd3f4db757b75d3fe2ff159","20210405000000-Gridsomeの便利なリンク集を知りたい",[121],"chKm3MXyxMQgclo_PeHsczTc2oIDasdFH5yAADPEPlA",{"id":1404,"title":1405,"author":26,"body":1406,"category":20,"date":1454,"description":1405,"extension":14,"locale":15,"meta":1455,"navigation":17,"path":1456,"seo":1457,"slug":1458,"stem":1459,"tag":1460,"updated":1454,"__hash__":1461},"legacyQuestions\u002F20210405000000-g-linkと通常のリンクの違いは？.md","g-linkと通常のリンクの違いは？",{"type":7,"value":1407,"toc":1450},[1408,1412,1415,1423,1426,1429,1432,1436,1439,1447],[30,1409,1411],{"id":1410},"g-linkはリンク先をプリロードしrouter-linkと同じ挙動をします","「g-link」はリンク先をプリロードし、router-linkと同じ挙動をします",[34,1413,1414],{},"Gridsome独自のコンポーネントである「g-link」は、",[38,1416,1417,1420],{},[41,1418,1419],{},"リンク先のページデータをプリロードする",[41,1421,1422],{},"動作としてはvue-routerの「router-link」と同じ",[34,1424,1425],{},"という特徴があります。",[34,1427,1428],{},"動作的にはrouter-linkなので、HTTPリクエストを伴わないページ遷移になり、スピーディにページの移動がされる上に、プリロードするのでクリックしてすぐにページが表示されるため、超高速レスポンスを実現できます。",[34,1430,1431],{},"Gridsomeでの通常リンクは、通常のHTMLと同様HTTPリクエストを伴うページ遷移になるので、Gridsomeを含めVue.jsでは外部ページへのリンクで使うことがほとんどです。",[30,1433,1435],{"id":1434},"g-linkを使う際の注意点","「g-link」を使う際の注意点",[34,1437,1438],{},"ただし、プリロードすることはメリットだけでなくデメリットもあります。",[38,1440,1441,1444],{},[41,1442,1443],{},"プリロード先のデータが大きい場合",[41,1445,1446],{},"リンク（プリロード先）が多い場合",[34,1448,1449],{},"は、初回ページをロードする際に大量のデータを受信する為ロードが遅くなる可能性があります。ロードが遅いと離脱してしまう可能性が高くなるので、本末転倒です。また、直帰率が上がってしまう要因になるので、1ページに取り入れる「g-link」の数はロードスピードとのバランスを見る必要があります。",{"title":10,"searchDepth":11,"depth":11,"links":1451},[1452,1453],{"id":1410,"depth":11,"text":1411},{"id":1434,"depth":11,"text":1435},"2021-04-05T00:00:00.000Z",{},"\u002F20210405000000-g-link",{"title":1405,"description":1405},"020b1d40fa2c4153999342212469d63a","20210405000000-g-linkと通常のリンクの違いは？",[121],"imEamhbzMJ4BhMY70rCoh9TQL5LG3ehPmr_25U4zRvA",{"id":1463,"title":1464,"author":26,"body":1465,"category":20,"date":1503,"description":1504,"extension":14,"locale":15,"meta":1505,"navigation":17,"path":1506,"seo":1507,"slug":1508,"stem":1509,"tag":1510,"updated":1503,"__hash__":1511},"legacyQuestions\u002F20210405000000-gridsomeのtemplateとpageのと違いは？.md","GridsomeのTemplateとPageのと違いは？",{"type":7,"value":1466,"toc":1499},[1467,1471,1474,1477,1483,1486,1489,1493,1496],[30,1468,1470],{"id":1469},"templateは複数ページを生成するpageは単ページを生成する","Templateは「複数ページを生成する」、Pageは「単ページを生成する」",[34,1472,1473],{},"記事一覧ページなどの「URLが動的に変わらないページ」はPageを使い、「URLが動的に変わるページ」の場合はTemplateを使います。",[34,1475,1476],{},"ブログの例で考えるとわかりやすいですが、",[61,1478,1481],{"className":1479,"code":1480,"language":66},[64],"（一覧ページ）\u002Fblog\u002F => Page\n（記事詳細ページ）\u002Fblog\u002Fhow-to-start-gridsome\u002F => Template\n",[68,1482,1480],{"__ignoreMap":10},[34,1484,1485],{},"という形です。",[34,1487,1488],{},"一覧ページページは、ページの中身は動的に変わりますが、URL自体は固定なのでPageで作成します。一方で、記事詳細ページは、ページの中身もURLも動的に変わるのでTemplateで作成することになります。",[30,1490,1492],{"id":1491},"静的ページを出力するかで使い分けるのもアリ","「静的ページを出力するか？」で使い分けるのもアリ",[34,1494,1495],{},"Gridsomeでは、APIのデータをソースにして静的にページを生成することが出来るので、記事詳細ページをpageで作ることも可能です。ただし、その場合は静的ページ（記事ごとのHTMLファイル）は生成されないという注意点があります。",[34,1497,1498],{},"その意味では、「動的にURLが変更するページを静的ページ生成したい場合はtemaplte、それ以外はpage」と覚えておくと良いかもしれません。",{"title":10,"searchDepth":11,"depth":11,"links":1500},[1501,1502],{"id":1469,"depth":11,"text":1470},{"id":1491,"depth":11,"text":1492},"2021-04-05T01:00:00.000Z","Gridsomeのtemplateとpageのと違いは？",{},"\u002F20210405000000-gridsometemplatepage",{"title":1464,"description":1504},"a8c2009a9b420356be5b5cbd9e4bfa48","20210405000000-gridsomeのtemplateとpageのと違いは？",[121],"1LyjvYYLRZMVw3qX_3sZ5kJhxRUTkIqZ7waFx-oRyqw",{"id":1513,"title":1514,"author":26,"body":1515,"category":20,"date":1553,"description":1514,"extension":14,"locale":15,"meta":1554,"navigation":17,"path":1555,"seo":1556,"slug":1557,"stem":1558,"tag":1559,"updated":1553,"__hash__":1560},"legacyQuestions\u002F20210406000000-Girdsomeでコメント機能を追加したい.md","Girdsomeでコメント機能を追加したい",{"type":7,"value":1516,"toc":1550},[1517,1521,1524,1527,1538,1541,1544,1547],[30,1518,1520],{"id":1519},"プラグインで追加が可能です","プラグインで追加が可能です。",[34,1522,1523],{},"Gridsomeはにはデフォルトではコメント機能がありません。ただ、ベースがVue.jsなので、Vue.jsで使えるコメントプラグインをGridsomeでも使うことが可能です。",[34,1525,1526],{},"Vue.js向けのコメント機能プラグインは、",[38,1528,1529,1532,1535],{},[41,1530,1531],{},"Disqus",[41,1533,1534],{},"Staticman",[41,1536,1537],{},"Vssue",[34,1539,1540],{},"あたりが定番ですが、一番簡単なのはWordPressでも定番のDisqusです。プラグインをインストールして、main.jsでインポート、コンポーネントをロードするだけで使えるのですぐにコメント機能を追加できます。",[34,1542,1543],{},"データをDisqusのAPIサーバーから持ってくるため、WordPressのようにHTMLに直接記述することが出来ない（SEO効果が薄い）のがデメリットでしょうか。",[34,1545,1546],{},"StaticmanとVssueは、自分でデータを持てるというメリットがありますが、どちらもGitレポジトリに直接変更を加えてコメント追加と同時にビルドするタイプなので、ビルド時間などに制限がある場合には不向きです。",[34,1548,1549],{},"それ以外にも、Vue.js的にプログラミングすることが可能なので、独自のAPIなどを使ってコメント機能を追加することも可能です。",{"title":10,"searchDepth":11,"depth":11,"links":1551},[1552],{"id":1519,"depth":11,"text":1520},"2021-04-06T04:00:00.000Z",{},"\u002F20210406000000-girdsome",{"title":1514,"description":1514},"816a4c2eeaeeccaa45b83c15190c6501","20210406000000-Girdsomeでコメント機能を追加したい",[121],"jfn9uWHdeFElBvfnn0SZfxeyk2qvggGdRUCOyPzrwtk",{"id":1562,"title":1563,"author":26,"body":1564,"category":20,"date":1615,"description":1563,"extension":14,"locale":15,"meta":1616,"navigation":17,"path":1617,"seo":1618,"slug":1619,"stem":1620,"tag":1621,"updated":1622,"__hash__":1623},"legacyQuestions\u002F20210406000000-GridsomeでCloudflare Web Analyticsを使いたい.md","GridsomeでCloudflare Web Analyticsを使いたい",{"type":7,"value":1565,"toc":1611},[1566,1570,1573,1576,1582,1585,1588,1591,1597,1601,1604],[30,1567,1569],{"id":1568},"indexhhtmlを用意してスクリプトを記述します","index.hhtmlを用意してスクリプトを記述します",[34,1571,1572],{},"Gridsomeでは、Vue.jsと同じように自動生成のHTMLフォーマットだけでなく、ベースとなるHTML（index.htmlをオーバーライド）も設置できます。",[34,1574,1575],{},"src\u002Findex.htmlに、",[61,1577,1580],{"className":1578,"code":1579,"language":66},[64],"\u003C!DOCTYPE html>\n\u003Chtml ${htmlAttrs}>\n  \u003Chead>\n    ${head}\n  \u003C\u002Fhead>\n  \u003Cbody ${bodyAttrs}>\n    ${app}\n    ${scripts}\n    \u003C!-- Cloudflare Web Analytics -->\u003Cscript defer src='https:\u002F\u002Fstatic.cloudflareinsights.com\u002Fbeacon.min.js' data-cf-beacon='{\"token\": \"トークン\"}'>\u003C\u002Fscript>\u003C!-- End Cloudflare Web Analytics -->\n  \u003C\u002Fbody>\n\u003C\u002Fhtml>\n",[68,1581,1579],{"__ignoreMap":10},[34,1583,1584],{},"と書いて保存するだけでOKです。",[34,1586,1587],{},"後述のプラグインだと、HTMLのヘッダ要素にscriptを追加していますが、Cloudflare Web Analyticsではbodyタグの最後に記述するとあるので、そちらにした方が良いでしょう。",[34,1589,1590],{},"SPAモードのページ遷移もしっかりと計測されます。",[34,1592,1593],{},[689,1594,1596],{"href":1595},"\u002Fq\u002F6220d38fd4d82f9e82507d1dd95d591c\u002F","Gridsomeでデフォルトのindex.htmlを変更するには？",[30,1598,1600],{"id":1599},"プラグインsecurizedplugin-cloudflare-analyticsを使いますトラックできません","プラグイン「@securized\u002Fplugin-cloudflare-analytics」を使います（=>トラックできません）",[34,1602,1603],{},"有志の方がGridsomeでCloudflare Web Analyticsを使えるようにするプラグインを用意してくれているのですが、そちらは計測ができませんでした。",[34,1605,1606],{},[689,1607,1610],{"href":1608,"rel":1609},"https:\u002F\u002Fgridsome.org\u002Fplugins\u002F@securized\u002Fplugin-cloudflare-analytics",[693],"@securized\u002Fplugin-cloudflare-analytics",{"title":10,"searchDepth":11,"depth":11,"links":1612},[1613,1614],{"id":1568,"depth":11,"text":1569},{"id":1599,"depth":11,"text":1600},"2021-04-06T03:00:00.000Z",{},"\u002F20210406000000-gridsomecloudflare-web-analytics",{"title":1563,"description":1563},"e922d77f69e6b46d3c05b83b6b14cfb9","20210406000000-GridsomeでCloudflare Web Analyticsを使いたい",[121],"2021-06-17T03:00:00.000Z","3swWrKtvG_DuJTubvkXABcoxnKLvfymb1-p8zUGZ3Ic",{"id":1625,"title":1596,"author":26,"body":1626,"category":20,"date":1676,"description":1596,"extension":14,"locale":15,"meta":1677,"navigation":17,"path":1678,"seo":1679,"slug":1680,"stem":1681,"tag":1682,"updated":1676,"__hash__":1683},"legacyQuestions\u002F20210406000000-Gridsomeでデフォルトのindex.htmlを変更するには？.md",{"type":7,"value":1627,"toc":1673},[1628,1632,1635,1638,1641,1658,1661,1664,1670],[30,1629,1631],{"id":1630},"srcindexhtmlを作ればオーバーライドされます","src\u002Findex.htmlを作ればオーバーライドされます",[34,1633,1634],{},"Gridsomeでは、srcディレクトリ直下においたindex.htmlファイルがデフォルトのindex.htmlをオーバーライドする仕様になっています。",[34,1636,1637],{},"index.htmlの中身を変更するのではなく、完全に置き換えてしまうので、必要な変数をindex.htmlに仕込んでおく必要があります。",[34,1639,1640],{},"変数は、",[1319,1642,1643,1646,1649,1652,1655],{},[41,1644,1645],{},"htmlAttrs",[41,1647,1648],{},"head",[41,1650,1651],{},"bodyAttrs",[41,1653,1654],{},"app",[41,1656,1657],{},"scripts",[34,1659,1660],{},"です。",[34,1662,1663],{},"公式ドキュメントのサンプルは下記のようになっています。",[61,1665,1668],{"className":1666,"code":1667,"language":66},[64],"\u003C!DOCTYPE html>\n\u003Chtml ${htmlAttrs}>\n  \u003Chead>\n    ${head}\n  \u003C\u002Fhead>\n  \u003Cbody ${bodyAttrs}>\n    ${app}\n    ${scripts}\n  \u003C\u002Fbody>\n\u003C\u002Fhtml>\n",[68,1669,1667],{"__ignoreMap":10},[34,1671,1672],{},"ここは、普通のHTMLとして動くので、独自にJavascript処理を入れることも可能です。",{"title":10,"searchDepth":11,"depth":11,"links":1674},[1675],{"id":1630,"depth":11,"text":1631},"2021-04-06T02:00:00.000Z",{},"\u002F20210406000000-gridsomeindex.html",{"title":1596,"description":1596},"6220d38fd4d82f9e82507d1dd95d591c","20210406000000-Gridsomeでデフォルトのindex.htmlを変更するには？",[121],"iX1qI1hRMJRZXxNFGlgZaU58_Sm2ssZQZs0ybDTOic4",{"id":1685,"title":1686,"author":26,"body":1687,"category":20,"date":1714,"description":1686,"extension":14,"locale":15,"meta":1715,"navigation":17,"path":1716,"seo":1717,"slug":1718,"stem":1719,"tag":1720,"updated":1714,"__hash__":1721},"legacyQuestions\u002F20210406000000-GridsomeにはWordPressみたいにテーマはある?.md","GridsomeにはWordPressみたいにテーマはある?",{"type":7,"value":1688,"toc":1711},[1689,1693,1696,1699,1705,1708],[30,1690,1692],{"id":1691},"gridsomeにはテーマはないがスターターキットがある","Gridsomeにはテーマはないが、スターターキットがある",[34,1694,1695],{},"Gridsomeにはテーマという概念がありません。基本的には一から組み上げていくタイプのフレームワークです。この辺りは、他の静的サイトジェネレータとは少し色が違います。",[34,1697,1698],{},"ただ、Gridsomeには公式・有志の方が開発したスターターキットがあります。スターターキットはGridsomeプロジェクトをクローン出来るもので、Gridsomeプロジェクトを立ち上げる時に指定することで、テーマと同じように使うことが出来ます。",[61,1700,1703],{"className":1701,"code":1702,"language":66},[64],"gridsome create プロジェクト名 スターターキット\n",[68,1704,1702],{"__ignoreMap":10},[34,1706,1707],{},"スターターキットは、Gridsome公式ページに記載されているキット名か、GitレポジトリのURLで指定することが可能です。",[34,1709,1710],{},"WordPRressなどと違うのは、一度テーマを決めたら変更は出来ません。再度、プロジェクトを作り直すことになります。",{"title":10,"searchDepth":11,"depth":11,"links":1712},[1713],{"id":1691,"depth":11,"text":1692},"2021-04-06T01:00:00.000Z",{},"\u002F20210406000000-gridsomewordpress",{"title":1686,"description":1686},"1219767c1cef4cb04e049f09034340a1","20210406000000-GridsomeにはWordPressみたいにテーマはある?",[121],"haIOA9L0NPfl_rO9YoRr6Wz0lJB9luHUiF7uNNQofOM",{"id":1723,"title":1724,"author":26,"body":1725,"category":20,"date":1810,"description":1724,"extension":14,"locale":15,"meta":1811,"navigation":17,"path":1812,"seo":1813,"slug":1814,"stem":1815,"tag":1816,"updated":1810,"__hash__":1818},"legacyQuestions\u002F20210408000000-Cloudflare Workers KVのデータをWorkersから呼び出す方法.md","Cloudflare Workers KVのデータをWorkersから呼び出す方法",{"type":7,"value":1726,"toc":1807},[1727,1731,1734,1745,1748,1751,1754,1760,1763,1766,1772,1775,1778,1784,1787,1790,1804],[30,1728,1730],{"id":1729},"設定をすればクラスとしてロードが出来ます","設定をすればクラスとしてロードが出来ます。",[34,1732,1733],{},"Cloudflare Workers KVのデータをWorkersから呼び出すには、",[38,1735,1736,1739,1742],{},[41,1737,1738],{},"管理画面でKV名前空間のバインディング",[41,1740,1741],{},"wrangler.tomlに記述",[41,1743,1744],{},"Workersで呼び出す",[34,1746,1747],{},"という手順を踏みます。",[34,1749,1750],{},"Cloudflareの管理画面からのバイディングは、Workersの設定ページから「設定」タブをクリックして、「KV 名前空間のバインディング」から追加すればOKです。",[34,1752,1753],{},"これだけだと、「WorkersからKVにアクセスできる権限」が与えられているだけなので、Workerのプログラム内で使う場合は、wrangler.tomlに記述が必要です。",[61,1755,1758],{"className":1756,"code":1757,"language":66},[64],"kv_namespaces = [\n  { binding = \"変数名1\", id = \"KVのnamespace ID\", preview_id = \"KVのnamespace ID\" },\n  { binding = \"変数名2\", id = \"KVのnamespace ID\", preview_id = \"KVのnamespace ID\" }\n]\n\n",[68,1759,1757],{"__ignoreMap":10},[34,1761,1762],{},"連想配列で、複数のKVを設定できます。",[34,1764,1765],{},"idとpreview_idは同じものを指定できますが、Cloudflare的には別々にするのを推奨しているようで、ビルド時に、",[61,1767,1770],{"className":1768,"code":1769,"language":66},[64],"Specifying the same KV namespace ID for both preview and production sessions may cause bugs in your production worker! Proceed with caution.\n",[68,1771,1769],{"__ignoreMap":10},[34,1773,1774],{},"というアラートが出ます。",[34,1776,1777],{},"ここまで設定できたら、Workersのプログラム内で呼び出します。",[61,1779,1782],{"className":1780,"code":1781,"language":66},[64],"const hoge = await 変数名1.get(\"キー名\")\n\n\u002F\u002F 変数名がBlog、キー名がListだったとしたら\n\nconst hoge = await Blog.get(\"List\")\n",[68,1783,1781],{"__ignoreMap":10},[34,1785,1786],{},"でバリューに収納したデータが帰ってきます。",[34,1788,1789],{},"バイディイングしたKVクラスには、",[38,1791,1792,1795,1798,1801],{},[41,1793,1794],{},".put(キー、バリュー)",[41,1796,1797],{},".get(キー)",[41,1799,1800],{},".delete(キー)",[41,1802,1803],{},".list()",[34,1805,1806],{},"の4つのメソッドが用意されています。",{"title":10,"searchDepth":11,"depth":11,"links":1808},[1809],{"id":1729,"depth":11,"text":1730},"2021-04-08T03:00:00.000Z",{},"\u002F20210408000000-cloudflare-workers-kvworkers",{"title":1724,"description":1724},"cd1defa55659594e8b5f77ee425cdf90","20210408000000-Cloudflare Workers KVのデータをWorkersから呼び出す方法",[1817],"cloudflare-workers","NVH8Cn_MYbTio9FpC_a8hkHViOFNDtmoBXHFrfJ8MrQ",{"id":1820,"title":1821,"author":26,"body":1822,"category":20,"date":1852,"description":1821,"extension":14,"locale":15,"meta":1853,"navigation":17,"path":1854,"seo":1855,"slug":1856,"stem":1857,"tag":1858,"updated":1852,"__hash__":1859},"legacyQuestions\u002F20210408000000-Cloudflareのwranglerで別アカウントのWorkersを管理するには？.md","Cloudflareのwranglerで別アカウントのWorkersを管理するには？",{"type":7,"value":1823,"toc":1849},[1824,1828,1831,1834,1840,1843,1846],[30,1825,1827],{"id":1826},"コマンド時にapiコードを指定します","コマンド時にAPIコードを指定します。",[34,1829,1830],{},"wranglerコマンドは、基本的にはloginしているアカウントIDのWorkersしか管理ができません。",[34,1832,1833],{},"しかし、APIトークンを指定することで、別のアカウントIDのWorkersをwranglerコマンドで実行することが可能になります。",[61,1835,1838],{"className":1836,"code":1837,"language":66},[64],"CF_API_TOKEN=トークン wrangler コマンド\n\n\u002F\u002F 例\nCF_API_TOKEN=abcdefgabcdefgabcdefgabcdefg wrangler publish\n",[68,1839,1837],{"__ignoreMap":10},[34,1841,1842],{},"wranglerコマンドの前に「CF_API_TOKEN=トークン」を付けるだけなので、簡単です。",[34,1844,1845],{},"トークンは、Workersを管理できるAPI トークンを発行します。管理画面のマイアカウントにある「Global API Key」では実行ができないので、注意が必要です。",[34,1847,1848],{},"プレビューサーバーを立ち上げる「wrarngler dev」でも別アカウントの場合はCF_API_TOKENの指定が必要です。",{"title":10,"searchDepth":11,"depth":11,"links":1850},[1851],{"id":1826,"depth":11,"text":1827},"2021-04-08T04:00:00.000Z",{},"\u002F20210408000000-cloudflarewranglerworkers",{"title":1821,"description":1821},"2504513b600939bf9c57cd9ff089fcf5","20210408000000-Cloudflareのwranglerで別アカウントのWorkersを管理するには？",[1817],"ooS1wL10HLQpPY3BIrJUOi_cgdxjMPhbuuau8GIgXXE",{"id":1861,"title":1862,"author":26,"body":1863,"category":20,"date":1907,"description":1862,"extension":14,"locale":15,"meta":1908,"navigation":17,"path":1909,"seo":1910,"slug":1911,"stem":1912,"tag":1913,"updated":1907,"__hash__":1914},"legacyQuestions\u002F20210408000000-cloudflare workers kvのデータをローカルアップロードするには？.md","Cloudflare Workers KVのデータをローカルアップロードするには？",{"type":7,"value":1864,"toc":1904},[1865,1869,1872,1875,1883,1886,1892,1895,1901],[30,1866,1868],{"id":1867},"ブラウザからかwrangler-cliでアップロードが可能です","ブラウザからかwrangler CLIでアップロードが可能です。",[34,1870,1871],{},"Cloudflare Workers KVのキー・バリューデータは、Cloudflareの管理画面からデータをアップロード・編集が可能です。",[34,1873,1874],{},"また、wranglerコマンドもアップロード可能で、",[38,1876,1877,1880],{},[41,1878,1879],{},"Cloudflare Workers KVにアクセスできる権限",[41,1881,1882],{},"KVのネームスペースID",[34,1884,1885],{},"の二つがあれば、wranglerがインストールされている環境から直接KVにデータをアップロードできます。",[61,1887,1890],{"className":1888,"code":1889,"language":66},[64],"wrangler kv:key put --namespace-id=KVのネームスペースID \"キー名\" \"バリュー\"\n",[68,1891,1889],{"__ignoreMap":10},[34,1893,1894],{},"jsonなどのファイルをそのままアップロードする場合は、",[61,1896,1899],{"className":1897,"code":1898,"language":66},[64],"wrangler kv:key put --namespace-id=KVのネームスペースID \"キー名\" ファイルのパス --path\n",[68,1900,1898],{"__ignoreMap":10},[34,1902,1903],{},"どちらを使っても問題ないですが、大きめのjsonファイルをアップロードする場合は、wranglerにした方が処理が速くて快適です。",{"title":10,"searchDepth":11,"depth":11,"links":1905},[1906],{"id":1867,"depth":11,"text":1868},"2021-04-08T02:00:00.000Z",{},"\u002F20210408000000-cloudflare-workers-kv",{"title":1862,"description":1862},"24c2ae476005d3d84b946e46361b1da5","20210408000000-cloudflare workers kvのデータをローカルアップロードするには？",[1817],"6f2Ipx8avyiwZZadohlvEvwLBcwINuWc36u9CWU5DKU",{"id":1916,"title":1917,"author":26,"body":1918,"category":20,"date":1950,"description":1917,"extension":14,"locale":15,"meta":1951,"navigation":17,"path":1952,"seo":1953,"slug":1954,"stem":1955,"tag":1956,"updated":1950,"__hash__":1958},"legacyQuestions\u002F20210408000000-cloudflare workers pages用のDNSはどうすればいい？.md","Cloudflare Workers Pages用のDNSはどうすればいい？",{"type":7,"value":1919,"toc":1946},[1920,1924,1927,1933,1936,1940,1943],[30,1921,1923],{"id":1922},"cloudflare-workersはaレコードを192021に向けます","Cloudflare WorkersはAレコードを「192.0.2.1」に向けます。",[34,1925,1926],{},"Cloudflare Pagesや、Cloudflare Workersをドメインと紐づける場合、DNSレコードが必要です。その際に、IPアドレスを何にするかが悩みどころですが、Cloudflare Workersの場合は、",[61,1928,1931],{"className":1929,"code":1930,"language":66},[64],"192.0.2.1\n",[68,1932,1930],{"__ignoreMap":10},[34,1934,1935],{},"にAレコードを向けると、Cloudflareにエッジーサーバーに向かってくれます。",[30,1937,1939],{"id":1938},"cloudflare-pagesはcnameレコードでpagesdevのアドレスに向ける","Cloudflare PagesはCNAMEレコードでpages.devのアドレスに向ける",[34,1941,1942],{},"Cloudflare Pagesを独自ドメインで運用する場合は、自動付与される「xxx.pages.dev」のアドレスに向けてCNAMEレコードを向ければ独自ドメインで運用が出来ます。",[34,1944,1945],{},"wwwあり・なしを両方Cloudflare Pagesで運用する場合は、Cloudflareの「Page Rule」でどちらかに301リダイレクトするようにします。",{"title":10,"searchDepth":11,"depth":11,"links":1947},[1948,1949],{"id":1922,"depth":11,"text":1923},{"id":1938,"depth":11,"text":1939},"2021-04-08T01:00:00.000Z",{},"\u002F20210408000000-cloudflare-workers-pagesdns",{"title":1917,"description":1917},"28214e4d6b1d1a19f8139520edf0192e","20210408000000-cloudflare workers pages用のDNSはどうすればいい？",[1817,1957],"cloudflare-pages","XcRDNdjOb-x-fJuKKJ09BkRyFEMQea7v3Sfkeo5KnYQ",{"id":1960,"title":1961,"author":26,"body":1962,"category":20,"date":2008,"description":1961,"extension":14,"locale":15,"meta":2009,"navigation":17,"path":2010,"seo":2011,"slug":2012,"stem":2013,"tag":2014,"updated":2008,"__hash__":2015},"legacyQuestions\u002F20210409000000-Grdisomeでビルドしたサイトをプレビューしたい.md","Grdisomeでビルドしたサイトをプレビューしたい",{"type":7,"value":1963,"toc":2005},[1964,1967,1970,1973,1984,1987,1990,1993,1999,2002],[30,1965,1966],{"id":1966},"pythonの簡易サーバーを使うとプレビュー出来ます",[34,1968,1969],{},"Gridsomeでビルドしたサイトはパスが相対パスになっているので、そのままindex.htmlを開く形ではプレビューが出来ません。",[34,1971,1972],{},"方法としては、",[38,1974,1975,1978,1981],{},[41,1976,1977],{},"ローカルにWebサーバーを設定する（Apacheなど）",[41,1979,1980],{},"ホスティングサーバーのテスト環境にアップする",[41,1982,1983],{},"プログラム言語の簡易サーバーを使う",[34,1985,1986],{},"がありますが、pythonの簡易サーバーが簡単で便利です。",[34,1988,1989],{},"macOSやLinuxであれば、pythonはデフォルトでインストールされていますし、WindowsでもWSLをインストールしていれば、Linuxのpythonが使えます。",[34,1991,1992],{},"pythonの簡易サーバーでのプレビューの仕方は、",[61,1994,1997],{"className":1995,"code":1996,"language":66},[64],"\u002F\u002F プロジェクトのdistディレクトリに入る\ncd dist\n\n\u002F\u002F pythonサーバーを立ち上げる\npython -m SimpleHTTPServer 8888\n",[68,1998,1996],{"__ignoreMap":10},[34,2000,2001],{},"これで、ブラウザで「localhost:8888」にアクセスすると、ビルドしたGridsomeのサイトが本番のサーバーと全く同じように動くはずです。",[34,2003,2004],{},"Gridsomeはプレビュー用の開発サーバーとビルドしたファイルの挙動が違うことがあるので、この方法でプレビューしておくとエラーチェックなどを確実に行えます。",{"title":10,"searchDepth":11,"depth":11,"links":2006},[2007],{"id":1966,"depth":11,"text":1966},"2021-04-09T02:00:00.000Z",{},"\u002F20210409000000-grdisome",{"title":1961,"description":1961},"019951426dc5cc84c034931fce4e10e3","20210409000000-Grdisomeでビルドしたサイトをプレビューしたい",[121],"OICHEo42U_Jnq7h0-Rkz6kCH9iGW4GyEDu65s8ENBJA",{"id":2017,"title":2018,"author":26,"body":2019,"category":20,"date":2040,"description":2018,"extension":14,"locale":15,"meta":2041,"navigation":17,"path":2042,"seo":2043,"slug":2044,"stem":2045,"tag":2046,"updated":2040,"__hash__":2047},"legacyQuestions\u002F20210409000000-GridsomeでWindow is not definedというエラーが出た.md","GridsomeでWindow is not definedというエラーが出た",{"type":7,"value":2020,"toc":2037},[2021,2025,2028,2031,2034],[30,2022,2024],{"id":2023},"javascriptのwindowインターフェイスを使っているのが原因です","JavascriptのWindowインターフェイスを使っているのが原因です",[34,2026,2027],{},"Gridsomeは、静的サイトにビルドする際にVue.jsのコードを実行してページを生成しているため、Windowインターフェースが使えません（ブラウザじゃないのでWindowがないので）。",[34,2029,2030],{},"Gridsomeのスクリプトでwindowを使っていなくても、インストールしたプラグインがwindowを使っているとエラーになります。",[34,2032,2033],{},"エラー画面に、エラーもとのプラグインが表示されるので、そのプラグインを止めればエラーは出なくなります。",[34,2035,2036],{},"Vue.jsのプラグインはブラウザで使う前提なので、比較的windowを使っていることが多いのです。Gridsome用のプラグインを使うか、自分でロジックを組むことになりますが、エラー対応を考えたら自分で組んだ方が楽だったりもします。",{"title":10,"searchDepth":11,"depth":11,"links":2038},[2039],{"id":2023,"depth":11,"text":2024},"2021-04-09T01:00:00.000Z",{},"\u002F20210409000000-gridsomewindow-is-not-defined",{"title":2018,"description":2018},"2c448e5f023eece57af50359044170e4","20210409000000-GridsomeでWindow is not definedというエラーが出た",[121],"Z2x0AbDycAMkOSBS2HaBt5z2iHFh47SufRqH9x67GpI",{"id":2049,"title":2050,"author":2051,"body":2052,"category":2080,"date":2040,"description":2050,"extension":14,"locale":15,"meta":2081,"navigation":17,"path":2082,"seo":2083,"slug":2084,"stem":2085,"tag":2086,"updated":2040,"__hash__":2088},"legacyQuestions\u002F20210409000000-Hackintoshで使える格安のdGPUは？.md","Hackintosh作るならIntelがいい？それともRyzen？","joji-kanzaki",{"type":7,"value":2053,"toc":2076},[2054,2057,2060,2063,2066,2069,2073],[30,2055,2056],{"id":2056},"どちらも好きな方で大丈夫です",[34,2058,2059],{},"かつてはRyzenだと動かないなどのトラブルがありましたが、現在ではRyzenでも動作レポートがたくさんあります。",[34,2061,2062],{},"Intel CPUは、本物のMacで搭載されているので成功確率は高くなります。今後は自社製のMシリーズのCPUに切り替わっていきますが、Appleの最終Intel MacとなるであろうiMac 2020が第10世代のIntel Coreシリーズを搭載しているので、先5年くらいは使えるでしょう。",[34,2064,2065],{},"コスパでいうと、かつてはロー・ミドルエンドのCPUに4コア・8スレッド以上のモデルが少なかったIntelが、多コア展開をしたRyzenよりも劣っていると見られていましたが、最近ではIntelも4コア・8スレッドが最低ラインになっているので問題ありません。また、同等グレードであればシングル性能はIntelのが良いので、その意味ではIntelにメリットがあります。",[34,2067,2068],{},"Ryzenが得意なマルチコア・マルチスレッドは、動画編集や機械学習などの専門アプリを使わない限りはそこまで影響がないと言われているので、現状では4コア・8スレッド以上あれば問題ないでしょう。",[30,2070,2072],{"id":2071},"ryzentoshでは使えないアプリがあるので注意","Ryzentoshでは使えないアプリがあるので注意",[34,2074,2075],{},"RyzenをHackintoshのCPUにする場合の注意点はアプリです。特に、仮想化技術を使うアプリ（VirtualBox、、Dockerなど）はRyzentoshでは使えないことがほとんどなので、素直にIntelにしておいた方が良いでしょう。",{"title":10,"searchDepth":11,"depth":11,"links":2077},[2078,2079],{"id":2056,"depth":11,"text":2056},{"id":2071,"depth":11,"text":2072},"pc-smartphone",{},"\u002F20210409000000-hackintoshdgpu",{"title":2050,"description":2050},"c3b3d73de84f9e37d0439cf3c255ed04","20210409000000-Hackintoshで使える格安のdGPUは？",[2087],"hackintosh","evKofFq1Izppv1GD0dexmUJ18nCdmRdWNHN-3VgxhDE",{"id":2090,"title":2091,"author":2051,"body":2092,"category":2080,"date":2040,"description":2091,"extension":14,"locale":15,"meta":2198,"navigation":17,"path":2199,"seo":2200,"slug":2201,"stem":2202,"tag":2203,"updated":2040,"__hash__":2204},"legacyQuestions\u002F20210409000000-Hackintosh作るならIntel？Ryzen?.md","Hackintoshで使える格安のdGPUは？",{"type":7,"value":2093,"toc":2194},[2094,2098,2101,2104,2111,2114,2118,2121,2124,2132,2135,2138,2167,2170,2183,2186],[30,2095,2097],{"id":2096},"新品ならgt-710がベスト","新品ならGT 710がベスト",[34,2099,2100],{},"新品で入手可能で、最新のmacOSであるBig Surでも使えるdGPUのうち、格安なのはGT 710シリーズです。",[34,2102,2103],{},"一番安い玄人志向のモデルなら3,000円台、ASUSやZOTACなどの海外メーカーのモデルでも7,000円ほどで入手できます。",[34,2105,2106],{},[689,2107,2110],{"href":2108,"rel":2109},"https:\u002F\u002Fwww.amazon.co.jp\u002Fdp\u002FB07N2YF13J\u002F",[693],"玄人志向 NVIDIA GeForce GT 710 搭載 グラフィックボード 1GB GF-GT710-E1GB\u002FHS | Amazon",[34,2112,2113],{},"GT 710は現行モデルですが、700番台は古いKepler世代のモデルなので、macOSの標準ドライバで使うことが出来ます。",[30,2115,2117],{"id":2116},"gtxの600番台が中古で安く手に入ります","GTXの600番台が中古で安く手に入ります。",[34,2119,2120],{},"macOSで使うdGPUはAMDのdGPUが定番ですが、古い時代のNVIDIAのdGPUも現役で使えます。",[34,2122,2123],{},"macOSで使えるNVIDIAのdGPUのうち安いのは、",[38,2125,2126,2129],{},[41,2127,2128],{},"GTX 700番台",[41,2130,2131],{},"GTX・GT 600番台",[34,2133,2134],{},"で、安いのはGTX 600番台。",[34,2136,2137],{},"GTX 600番台は、",[1319,2139,2140,2143,2146,2149,2152,2155,2158,2161,2164],{},[41,2141,2142],{},"GTX 690",[41,2144,2145],{},"GTX 680",[41,2147,2148],{},"GTX 670",[41,2150,2151],{},"GTX 660 Ti",[41,2153,2154],{},"GTX 660",[41,2156,2157],{},"GTX 650",[41,2159,2160],{},"GT 640",[41,2162,2163],{},"GT 635",[41,2165,2166],{},"GT 630",[34,2168,2169],{},"そのうち、GTX 645、650Ti、660、660Tiはドライバでトラブルがありシステムが不安定になるようなので、",[1319,2171,2172,2175,2178,2180],{},[41,2173,2174],{},"GTX 650(GK 107コアモデル)",[41,2176,2177],{},"GT 640(GK 107\u002F208コアモデル)",[41,2179,2163],{},[41,2181,2182],{},"GT 630(GK 107\u002F208コアモデル)",[34,2184,2185],{},"あたりが、5,000円未満で手に入る格安dGPUでしょう。",[34,2187,2188,2189],{},"参考：",[689,2190,2193],{"href":2191,"rel":2192},"https:\u002F\u002Fdortania.github.io\u002FGPU-Buyers-Guide\u002Fmodern-gpus\u002Fnvidia-gpu.html#kepler-series-gtx-6xx-7xx",[693],"Nvidia GPUs | GPU Buyers Guide",{"title":10,"searchDepth":11,"depth":11,"links":2195},[2196,2197],{"id":2096,"depth":11,"text":2097},{"id":2116,"depth":11,"text":2117},{},"\u002F20210409000000-hackintoshintelryzen",{"title":2091,"description":2091},"a7fa4dd152f380a0979eb27e5f126cb4","20210409000000-Hackintosh作るならIntel？Ryzen?",[2087],"TGUbnj9nkm6tvOMMLa1Dmm-ZcbJa4vvmSazW3NdD3Gs",{"id":2206,"title":2207,"author":2051,"body":2208,"category":2080,"date":2248,"description":2207,"extension":14,"locale":15,"meta":2249,"navigation":17,"path":2250,"seo":2251,"slug":2252,"stem":2253,"tag":2254,"updated":2248,"__hash__":2255},"legacyQuestions\u002F20210412000000-HackintoshのSSDは何でもいいの？.md","HackintoshのSSDは何でもいいの？",{"type":7,"value":2209,"toc":2245},[2210,2213,2216,2219,2239,2242],[30,2211,2212],{"id":2212},"一部の製品を除けばほぼ何でも動作します",[34,2214,2215],{},"市場に流通しているSSDストレージの種類で考えたら、Hackintoshで動作しないSSDの数は微々たるものですが、そのSSDを引いてしまうとトラブルになるので、「避けるべきSSD」を選んでいないかだけはしっかりとチェックするべきです。",[34,2217,2218],{},"Hackintoshで動作しないとされるのは、",[38,2220,2221,2224,2227,2230,2233,2236],{},[41,2222,2223],{},"Samusung PM970 Evo",[41,2225,2226],{},"Samusung PM991",[41,2228,2229],{},"Samusung PM981（NVMeFixで対応可能）",[41,2231,2232],{},"Micron 2200S",[41,2234,2235],{},"Intel 600p",[41,2237,2238],{},"全てのeMMC",[34,2240,2241],{},"とされています。",[34,2243,2244],{},"これらのSSDは代替製品がたくさん流通しているので、選ばない方が賢明です。",{"title":10,"searchDepth":11,"depth":11,"links":2246},[2247],{"id":2212,"depth":11,"text":2212},"2021-04-12T05:00:00.000Z",{},"\u002F20210412000000-hackintoshssd",{"title":2207,"description":2207},"32f96d94d0c7a14d6fe05bdd9bf91a9b","20210412000000-HackintoshのSSDは何でもいいの？",[2087],"rf00ydTL-3j2xan1_25z_OrUsviVKLBf4BEpbP8Fe1Q",{"id":2257,"title":2258,"author":2051,"body":2259,"category":2080,"date":2305,"description":2306,"extension":14,"locale":15,"meta":2307,"navigation":17,"path":2308,"seo":2309,"slug":2310,"stem":2311,"tag":2312,"updated":2305,"__hash__":2313},"legacyQuestions\u002F20210412000000-Hackintoshの正しい設定はどうやって探せば良いですか？.md","Hackintoshの正しい設定はどうやって探せば良いですか？",{"type":7,"value":2260,"toc":2302},[2261,2265,2274,2277,2280,2283,2299],[30,2262,2264],{"id":2263},"githubで探すのが手軽で確実です","Githubで探すのが手軽で確実です",[34,2266,2267,2268,2273],{},"かつては",[689,2269,2272],{"href":2270,"rel":2271},"https:\u002F\u002Fwww.tonymacx86.com\u002F",[693],"tonymacx86.com","などのフォーラムにアップロードされている設定ファイル一式をダウンロードして試す方法が主流でしたが、現在ではHackintoshにトライしたユーザーが独自にGithub上にデータをたくさん公開しているので、気軽にいろんな設定ファイルを試すことが出来ます。",[34,2275,2276],{},"Githubで探す際は、「型番 + Hackintosh」や「型番 + macOS名（Mojaveなど）」で調べると、たくさんのレポジトリが出てくるので、Hackintoshを組む前のパーツ選びの時のヒントにもなります。",[34,2278,2279],{},"Hackintosh初心者の方なら、Githubレポジトリの成功事例と全く同じ構成で組んで、そのレポジトリのデータをそのまま使ってインストールすると、成功確率がグッと上がります。",[34,2281,2282],{},"Githubで情報を探す際は、",[1319,2284,2285,2292],{},[41,2286,2287],{},[689,2288,2291],{"href":2289,"rel":2290},"https:\u002F\u002Fgithub.com\u002Ftopics\u002Fhackintosh",[693],"hackintosh | Github",[41,2293,2294],{},[689,2295,2298],{"href":2296,"rel":2297},"https:\u002F\u002Fgithub.com\u002Ftopics\u002Fopencore",[693],"opencore | Github",[34,2300,2301],{},"と行ったタグで探すのも成功への近道の一つです。",{"title":10,"searchDepth":11,"depth":11,"links":2303},[2304],{"id":2263,"depth":11,"text":2264},"2021-04-12T04:00:00.000Z","Hackintoshの成功している設定ファイルはどうやって探せば良いですか？",{},"\u002F20210412000000-hackintosh",{"title":2258,"description":2306},"dfb1bc750836e3c5d784826fe5e5989c","20210412000000-Hackintoshの正しい設定はどうやって探せば良いですか？",[2087],"5MyHlYKxoC-QbSjIcT43EAIEysmJxfkb-edO3mlADEU",{"id":2315,"title":2316,"author":2051,"body":2317,"category":2080,"date":2346,"description":2316,"extension":14,"locale":15,"meta":2347,"navigation":17,"path":2348,"seo":2349,"slug":2350,"stem":2351,"tag":2352,"updated":2346,"__hash__":2353},"legacyQuestions\u002F20210412000000-Hackintoshは自作PCとノートPCどちらが良いですか？.md","Hackintoshは自作PCとノートPCどちらが良いですか？",{"type":7,"value":2318,"toc":2342},[2319,2323,2326,2329,2332,2336,2339],[30,2320,2322],{"id":2321},"成功しやすいのは圧倒的に自作pc","成功しやすいのは圧倒的に自作PC",[34,2324,2325],{},"Hackintoshを作る上で問題になるのは、PCのパーツをmacOS上で正常に動作するようにできるかという点です。ここが唯一の課題であり、Hackintosh最大のトラブルでもあります。",[34,2327,2328],{},"その意味では、「相性が悪かったら交換する」ことが出来る自作PCの方が圧倒的にHackintoshの成功確率が高くなります。もし動作しないパーツがあったら、そのパーツだけを動作レポートのある製品に交換すれば良いだけなので、失敗した時のリスク（出費）が小さく済むというメリットもあります。",[34,2330,2331],{},"一方で、ノートPCはメーカー独自の設計やパーツが入っていることがあり、パーツの交換もほとんど出来ないので、成功確率は自作PCよりかは低くなります。しかも、HackintoshのためにノートPCを買ってしまうと、うまく動作させられなかったらHackintoshとしては使えなくなるので、失敗した時のリスクも大きくなってしまいます。",[30,2333,2335],{"id":2334},"メーカー製ノートpcでもhackintoshの成功事例はたくさんあります","メーカー製ノートPCでもHackintoshの成功事例はたくさんあります",[34,2337,2338],{},"ただ、ノートPCだから絶対にHackintoshが出来ないのかというとそういうことではなく、メーカー製ノートPCでの成功事例はたくさんあります。",[34,2340,2341],{},"Githubには成功した設定ファイルを公開している方がたくさんいるので、手持ち（or 購入予定）のノートPCでのHackintosh成功事例があるかをチェックしてみると良いでしょう。",{"title":10,"searchDepth":11,"depth":11,"links":2343},[2344,2345],{"id":2321,"depth":11,"text":2322},{"id":2334,"depth":11,"text":2335},"2021-04-12T03:00:00.000Z",{},"\u002F20210412000000-hackintoshpcpc",{"title":2316,"description":2316},"28c6b66bebfe7ed11bf48ec9806fdf3c","20210412000000-Hackintoshは自作PCとノートPCどちらが良いですか？",[2087],"OgyagMe_-NmxdFyNZAFNiayFatQX_xg9BDFuU6ey9wI",{"id":2355,"title":2356,"author":2051,"body":2357,"category":2080,"date":2394,"description":2356,"extension":14,"locale":15,"meta":2395,"navigation":17,"path":2396,"seo":2397,"slug":2398,"stem":2399,"tag":2400,"updated":2394,"__hash__":2401},"legacyQuestions\u002F20210412000000-Hackintoshを作るならdGPUが必須ですか？.md","Hackintoshを作るならdGPUが必須ですか？",{"type":7,"value":2358,"toc":2390},[2359,2363,2366,2374,2377,2380,2384,2387],[30,2360,2362],{"id":2361},"シングルディスプレイならigpuでも問題ありません","シングルディスプレイならiGPUでも問題ありません",[34,2364,2365],{},"Hackintoshを作るときに多いトラブルは、",[38,2367,2368,2371],{},[41,2369,2370],{},"ブートトラブル（起動しない、エラー）",[41,2372,2373],{},"ビデオトラブル（正常に動作しない、映らない）",[34,2375,2376],{},"はトラブルのツートップですが、シングルディスプレイなら、macOSに対応するiGPUで適切に設定を行えば、問題なくHackintoshで使うことが多くなっています。",[34,2378,2379],{},"ただし、旧世代のiGPUを使う場合は、設定やドライバの問題で正常に動作しない可能性もあるため、出来るだけ最新のiGPUを搭載したCPU・マザーで、かつ成功レポートがある製品を使う方が安心です。",[30,2381,2383],{"id":2382},"デュアルディスプレイならdgpuの方がトラブルが少ない","デュアルディスプレイならdGPUの方がトラブルが少ない",[34,2385,2386],{},"HackintoshではiGPUでのデュアルディスプレイ表示でトラブルが多いことが知られています。その意味でも、ディスプレイを2枚以上繋ぐ想定なら、macOSに対応したdGPUを用意した方が安心です。",[34,2388,2389],{},"特に、macOSがネイティブに対応しているdGPUカードなら、デュアルディスプレイでも問題なく動作する可能性が高くなります。",{"title":10,"searchDepth":11,"depth":11,"links":2391},[2392,2393],{"id":2361,"depth":11,"text":2362},{"id":2382,"depth":11,"text":2383},"2021-04-12T02:00:00.000Z",{},"\u002F20210412000000-hackintoshdgpu",{"title":2356,"description":2356},"0caa9c06ee9b64d9f1c7fd8dc4c052f7","20210412000000-Hackintoshを作るならdGPUが必須ですか？",[2087],"Mmjuf0raJG-sX4SU86ilRDfs8v91HdOVjqeToVznyH4",{"id":2403,"title":2404,"author":2051,"body":2405,"category":2080,"date":2513,"description":2404,"extension":14,"locale":15,"meta":2514,"navigation":17,"path":2515,"seo":2516,"slug":2517,"stem":2518,"tag":2519,"updated":2513,"__hash__":2520},"legacyQuestions\u002F20210412000000-Intel Hackintoshのマザーボードの選び方は？.md","Intel Hackintoshのマザーボードの選び方は？",{"type":7,"value":2406,"toc":2509},[2407,2411,2414,2417,2420,2434,2437,2440,2448,2493,2496,2499,2506],[30,2408,2410],{"id":2409},"トラブルがある製品を避ければokです","トラブルがある製品を避ければOKです",[34,2412,2413],{},"一昔前は、「Hackintoshを作るならGigabyte以外のマザーボードはダメ」と言われていましたが、現在では主要なマザーボードのメーカーの製品であれば、ほとんどが問題なく動作するようです。",[34,2415,2416],{},"ただ、マザーボードには特殊な機能を持っているものもあるため、そうした機能があるとHackintoshではうまく動かない可能性があります。",[34,2418,2419],{},"主に注意すべき点は、",[1319,2421,2422,2425,2428,2431],{},[41,2423,2424],{},"音声インターフェイス",[41,2426,2427],{},"ネットワークインターフェイス",[41,2429,2430],{},"USBコントローラー",[41,2432,2433],{},"iGPU",[34,2435,2436],{},"などです。",[30,2438,2439],{"id":2439},"マザーボードメーカーと避けるべき製品",[34,2441,2442,2447],{},[689,2443,2446],{"href":2444,"rel":2445},"https:\u002F\u002Fdortania.github.io\u002FAnti-Hackintosh-Buyers-Guide\u002FMotherboard.html",[693],"Anti-Hackintosh Buyers Guide","では、選ぶべきではないマザーボードが紹介されています。",[392,2449,2450,2460],{},[395,2451,2452],{},[398,2453,2454,2457],{},[401,2455,2456],{},"メーカー",[401,2458,2459],{"align":405},"避けるべき製品",[409,2461,2462,2470,2478,2485],{},[398,2463,2464,2467],{},[414,2465,2466],{},"MSI",[414,2468,2469],{"align":405},"Z390シリーズ",[398,2471,2472,2475],{},[414,2473,2474],{},"AsROCK",[414,2476,2477],{"align":405},"Z390シリーズ以前",[398,2479,2480,2483],{},[414,2481,2482],{},"Gigabyte",[414,2484,2477],{"align":405},[398,2486,2487,2490],{},[414,2488,2489],{},"ASUS",[414,2491,2492],{"align":405},"B460、H470、Z490シリーズ",[34,2494,2495],{},"これらは不具合が起きることが多いようなので、避けるべきでしょう。",[34,2497,2498],{},"Hackintosh界隈で使うやすいされるマザーボードメーカーは、",[1319,2500,2501,2503],{},[41,2502,2489],{},[41,2504,2505],{},"ASRock",[34,2507,2508],{},"という声がよく聞かれます。",{"title":10,"searchDepth":11,"depth":11,"links":2510},[2511,2512],{"id":2409,"depth":11,"text":2410},{"id":2439,"depth":11,"text":2439},"2021-04-12T01:00:00.000Z",{},"\u002F20210412000000-intel-hackintosh",{"title":2404,"description":2404},"883d02695e3aca28e61de08723ffd2d2","20210412000000-Intel Hackintoshのマザーボードの選び方は？",[2087],"G5hxSOS5jgWxG-icxbdQZW-R6bUkqOVTrDg5FPmI290",{"id":2522,"title":2523,"author":2051,"body":2524,"category":2080,"date":2553,"description":2523,"extension":14,"locale":15,"meta":2554,"navigation":17,"path":2555,"seo":2556,"slug":2557,"stem":2558,"tag":2559,"updated":2553,"__hash__":2560},"legacyQuestions\u002F20210427000000-HDDの適正温度はどれくらい？何度を超えたら危険？.md","HDDの適正温度はどれくらい？何度を超えたら危険？",{"type":7,"value":2525,"toc":2550},[2526,2530,2538,2544,2547],[30,2527,2529],{"id":2528},"_50度未満が適正60度以上は危険です","50度未満が適正、60度以上は危険です",[34,2531,2532,2537],{},[689,2533,2536],{"href":2534,"rel":2535},"https:\u002F\u002Fascii.jp\u002Felem\u002F000\u002F001\u002F017\u002F1017019\u002F",[693],"こちらの記事","によると、",[2539,2540,2541],"blockquote",{},[34,2542,2543],{},"一般的には、HDDの稼働時の温度が50度を超えると徐々に故障率が上がり、60度以上になると、いつ故障してもおかしくない危険水域となる。",[34,2545,2546],{},"ということで、HDDメーカーの動作環境温度は60度、ただし基本的には動作温度が50度は超えないようにするべきということでしょう。",[34,2548,2549],{},"HDDに直接ファンの風を当てるようなエアフローになっているPCケースは少ないですが、心配ならレイアウトなどを工夫して、HDDに直接ケースファンの風を当てるようにするのがベストです。",{"title":10,"searchDepth":11,"depth":11,"links":2551},[2552],{"id":2528,"depth":11,"text":2529},"2021-04-26T01:00:00.000Z",{},"\u002F20210427000000-hdd",{"title":2523,"description":2523},"6c39ba7db338109de1e26343a3da480a","20210427000000-HDDの適正温度はどれくらい？何度を超えたら危険？",[2087],"trsM14UNZrGI8BvO0Hl9tiBq1FccUNyM4VO06mHCZbY",{"id":2562,"title":2563,"author":26,"body":2564,"category":20,"date":2596,"description":2563,"extension":14,"locale":15,"meta":2597,"navigation":17,"path":2598,"seo":2599,"slug":2600,"stem":2601,"tag":2602,"updated":2596,"__hash__":2603},"legacyQuestions\u002F20210428000000-GridsomeでAMPに対応したページを出力できますか？.md","GridsomeでAMPに対応したページを出力できますか？",{"type":7,"value":2565,"toc":2593},[2566,2570,2573,2580,2583,2590],[30,2567,2569],{"id":2568},"_2021年4月現在gridsomeはampに対応していません","2021年4月現在、GridsomeはAMPに対応していません",[34,2571,2572],{},"同じJavascriptの静的サイト・ジェネレータでは、Gatsby JSがAMPページの出力に対応していますが、現状ではGridsomeは対応していません。",[34,2574,2575],{},[689,2576,2579],{"href":2577,"rel":2578},"https:\u002F\u002Fwww.gatsbyjs.com\u002Fplugins\u002Fgatsby-plugin-amp\u002F",[693],"gatsby-plugin-amp",[34,2581,2582],{},"GridsomeのGithubレポジトリでは、「NuxtやGatsbyのようにAMPに対応したプラグインが欲しい」という声が上がっていますが、2年ほど放置されているので望みは薄いかもしれません。",[34,2584,2585],{},[689,2586,2589],{"href":2587,"rel":2588},"https:\u002F\u002Fgithub.com\u002Fgridsome\u002Fgridsome\u002Fissues\u002F376",[693],"Feature request: AMP Plugin\u002Fexample",[34,2591,2592],{},"数年前と違ってAMPに対応するメリットも少なくなってきているので、無理にAMPに対応しなくても良いという声もあります。",{"title":10,"searchDepth":11,"depth":11,"links":2594},[2595],{"id":2568,"depth":11,"text":2569},"2021-04-28T02:00:00.000Z",{},"\u002F20210428000000-gridsomeamp",{"title":2563,"description":2563},"501d9f625fc947a7fc7b4f5a6e490972","20210428000000-GridsomeでAMPに対応したページを出力できますか？",[121],"SwiM4gCe9qMVs-X9z9gvZLHmLnxypv2jFk5pDs3uzZ0",{"id":2605,"title":2606,"author":2051,"body":2607,"category":2080,"date":2596,"description":2606,"extension":14,"locale":15,"meta":2636,"navigation":17,"path":2637,"seo":2638,"slug":2639,"stem":2640,"tag":2641,"updated":2596,"__hash__":2642},"legacyQuestions\u002F20210428000000-Hackintoshで内蔵Bluetoothをオフにするには？.md","Hackintoshで内蔵Bluetoothをオフにするには？",{"type":7,"value":2608,"toc":2633},[2609,2613,2616,2627,2630],[30,2610,2612],{"id":2611},"biosuefiでオフにするのが確実です","BIOS\u002FUEFIでオフにするのが確実です。",[34,2614,2615],{},"Hackintoshで内蔵Bluetoothをオフにする方法はいくつかあります。",[38,2617,2618,2621,2624],{},[41,2619,2620],{},"AppleのBluetooth Explorerで切り替える（他のBluetoothを使う）",[41,2622,2623],{},"ブートローダーでロードしないようにする",[41,2625,2626],{},"BIOS\u002FUEFIでオフにする",[34,2628,2629],{},"一番確実で簡単なのはBIOS\u002FUEFIでマザーボードのBluetoothチップをオフにしてしまう方法です。マザーボードでオフになれば、OS側も内蔵Bluetoothがオフになったものと見做して、USBドングルなどを優先させます。",[34,2631,2632],{},"デスクトップPC向けのマザーボードの場合は、Bluetoothのオンオフ設定があることが多いですが、ノートPCなどではBIOS\u002FUEFIでBluetoothのオンオフが出来ないこともあります。その際は、AppleのBluetooth ExplorerでUSBドングルに切り替えるか、ブートローダーで内蔵Bluetoothをロードしないようにする必要があります。",{"title":10,"searchDepth":11,"depth":11,"links":2634},[2635],{"id":2611,"depth":11,"text":2612},{},"\u002F20210428000000-hackintoshbluetooth",{"title":2606,"description":2606},"27be09ea74bb2d25a25db5716a82dff6","20210428000000-Hackintoshで内蔵Bluetoothをオフにするには？",[2087],"zbJYUzWrYT8CBtZ8au7S7RgnCgAnbqanxa--tHLGHj0",{"id":2644,"title":2645,"author":26,"body":2646,"category":20,"date":2684,"description":2606,"extension":14,"locale":15,"meta":2685,"navigation":17,"path":2686,"seo":2687,"slug":2688,"stem":2689,"tag":2690,"updated":2684,"__hash__":2692},"legacyQuestions\u002F20210518000000-VercelでNodejsサーバーを使うには？.md","VercelでNodejsサーバーを使うには？",{"type":7,"value":2647,"toc":2681},[2648,2652,2655,2661,2664,2667,2670,2678],[30,2649,2651],{"id":2650},"node-serverを指定すればok","node-serverを指定すればOK",[34,2653,2654],{},"Vercelのプロジェクト管理をするvercel.json「@now\u002Fnode-server」を指定すると、node.jsサーバーが使えます。",[61,2656,2659],{"className":2657,"code":2658,"language":66},[64],"\u002F\u002F vercel.json\n{\n  \"version\":2,\n  \"name\":\"vercel-nodejs-server\",\n  \"builds\":[\n    {\n      \"src\":\"index.js\",\n      \"use\":\"@now\u002Fnode-server\"\n    }\n  ],\n  \"routes\":[\n    {      \n      \"src\":\"\u002F.*\",\n      \"dest\":\"\u002Findex.js\"\n    }\n  ]\n}\n\n",[68,2660,2658],{"__ignoreMap":10},[34,2662,2663],{},"旧now時代はnode.jsサーバーに関する記載がありましたが、現在ではnode.jsではなく、JavascriptサーバーレスFunctionがメインの機能になっているため、node.jsサーバーはドキュメントにも記載がありませんが、一応使えます。",[34,2665,2666],{},"おそらく、now時代からのプロジェクトをそのまま稼働させるための暫定措置ではないでしょうか。",[34,2668,2669],{},"デメリットもあって、",[38,2671,2672,2675],{},[41,2673,2674],{},"node.jsのバージョンがv12と古い",[41,2676,2677],{},"いつサポート対象外になるかわからない",[34,2679,2680],{},"という点は事前に理解しておくべきでしょう。",{"title":10,"searchDepth":11,"depth":11,"links":2682},[2683],{"id":2650,"depth":11,"text":2651},"2021-05-18T01:00:00.000Z",{},"\u002F20210518000000-vercelnodejs",{"title":2645,"description":2606},"a1707099e97db97fce6190d2adeda0da","20210518000000-VercelでNodejsサーバーを使うには？",[2691],"vercel","kjZTyoH_J1xOKZsvPdmp3b_ZL_n-bWHXfG48do_7mgg",{"id":2694,"title":2695,"author":26,"body":2696,"category":20,"date":2684,"description":2606,"extension":14,"locale":15,"meta":2736,"navigation":17,"path":2737,"seo":2738,"slug":2739,"stem":2740,"tag":2741,"updated":2684,"__hash__":2742},"legacyQuestions\u002F20210519000000-Vercelで環境設定を設定して使う方法は？.md","Vercelで環境設定を設定して使う方法は？",{"type":7,"value":2697,"toc":2733},[2698,2702,2705,2708,2711,2714,2720,2723,2726],[30,2699,2701],{"id":2700},"vercelの管理画面から設定ができます","Vercelの管理画面から設定ができます。",[34,2703,2704],{},"プロジェクトページから、",[34,2706,2707],{},"Settings > Environment Variables",[34,2709,2710],{},"と辿っていくと、環境変数を設定できます。おそらく、セキュリティ的な観点からVercelでは環境変数は管理画面からの設定のみになっているようです。",[34,2712,2713],{},"なお、設定した環境変数は、",[61,2715,2718],{"className":2716,"code":2717,"language":66},[64],"vercel env pull\n",[68,2719,2717],{"__ignoreMap":10},[34,2721,2722],{},"で、.envファイルでローカルにダウンロードできます。",[34,2724,2725],{},"この時、.gitignoreで.envファイルをGitの管理対象外にしておくのが重要です。",[34,2727,2188,2728],{},[689,2729,2732],{"href":2730,"rel":2731},"https:\u002F\u002Fvercel.com\u002Fdocs\u002Fenvironment-variables",[693],"Environment Variables | Vercel",{"title":10,"searchDepth":11,"depth":11,"links":2734},[2735],{"id":2700,"depth":11,"text":2701},{},"\u002F20210519000000-vercel",{"title":2695,"description":2606},"31151aadca44a6d85f087f3048a76322","20210519000000-Vercelで環境設定を設定して使う方法は？",[2691],"5cjH3frJ3zpErYoZajgtw9tNG7ZvV-RXrKi3MtRNIEM",{"id":2744,"title":2745,"author":26,"body":2746,"category":20,"date":2778,"description":2745,"extension":14,"locale":15,"meta":2779,"navigation":17,"path":2780,"seo":2781,"slug":2782,"stem":2783,"tag":2784,"updated":2778,"__hash__":2785},"legacyQuestions\u002F20210527000000-GrdisomeビルドがJavaScript-heap-out-of-memoryエラーになる.md","GrdisomeビルドがJavaScript heap out of memoryエラーになる",{"type":7,"value":2747,"toc":2775},[2748,2751,2754,2757,2760,2763,2769,2772],[30,2749,2750],{"id":2750},"メモリー不足が原因なのでメモリ上限を指定します",[34,2752,2753],{},"「JavaScript heap out of memory」は、JavaScriptのプログラムを実行するためのメモリが足りないことが原因で起こるエラーです。",[34,2755,2756],{},"数10ページ程度のGridsomeプロジェクトではあまり起こりませんが、規模の大きいプロジェクトだとビルド時に大容量のメモリを必要とするので、メモリ容量が少ないVPSなどでGridsomeビルドを実行すると遭遇します。",[34,2758,2759],{},"解決策は、ビルド時にJavaScriptが使用するメモリ上限を指定します。VPSなどのSWAP領域がデフォルトでない環境なら、SWAPを指定した方が安心です。",[34,2761,2762],{},"準備ができたら、いつものGridsomeビルドコマンドの最初に「NODE_OPTIONS=\"--max-old-space-size=xxxx\"」をつけて実行します。xxxxの部分はメモリの容量（MB単位）です。",[61,2764,2767],{"className":2765,"code":2766,"language":66},[64],"NODE_OPTIONS=\"--max-old-space-size=1024\" gridsome build\n",[68,2768,2766],{"__ignoreMap":10},[34,2770,2771],{},"この場合は1GBに制限していますが、実行環境に合わせて数字を調整します。",[34,2773,2774],{},"問題なくビルドが通る数値をテストしつつ調整していけばOKです。",{"title":10,"searchDepth":11,"depth":11,"links":2776},[2777],{"id":2750,"depth":11,"text":2750},"2021-05-27T01:00:00.000Z",{},"\u002F20210527000000-grdisomejavascript-heap-out-of-memory",{"title":2745,"description":2745},"1fd7356658a4bf5dc5d21aeea76ef541","20210527000000-GrdisomeビルドがJavaScript-heap-out-of-memoryエラーになる",[121],"Pead408Z5oW9Hch7sSufZZO5eT5wWNuyFbrlYYDqSqE",{"id":2787,"title":2788,"author":26,"body":2789,"category":20,"date":2814,"description":2788,"extension":14,"locale":15,"meta":2815,"navigation":17,"path":2816,"seo":2817,"slug":2818,"stem":2819,"tag":2820,"updated":2814,"__hash__":2821},"legacyQuestions\u002F20210714000000-Grdisomeで関数型コンポーネントでi18n.md","VueやGrdisomeで関数型コンポーネントでi18nを呼びたい",{"type":7,"value":2790,"toc":2811},[2791,2795,2798,2804],[30,2792,2794],{"id":2793},"parentで呼べば使えます","parentで呼べば使えます。",[34,2796,2797],{},"関数型コンポーネントで、そのままVue-i18nを呼び出すとエラーになってしまいますが、parentで呼び出せば、関数型コンポーネントでもi18nが使えます。",[61,2799,2802],{"className":2800,"code":2801,"language":66},[64],"\u003Ctemplate functional>\n  \u003Cdiv>\n  {{ parent.$t('home') }}\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n",[68,2803,2801],{"__ignoreMap":10},[34,2805,2806],{},[689,2807,2810],{"href":2808,"rel":2809},"https:\u002F\u002Fgithub.com\u002Fkazupon\u002Fvue-i18n\u002Fpull\u002F370\u002Ffiles\u002F03b2c8f9f55753e4dd84d12db629bc953cc975b8",[693],":pencil: (docs) add functional component note",{"title":10,"searchDepth":11,"depth":11,"links":2812},[2813],{"id":2793,"depth":11,"text":2794},"2021-07-14T01:00:00.000Z",{},"\u002F20210714000000-grdisomei18n",{"title":2788,"description":2788},"79063a0d2e05b72657239f01d28ed141","20210714000000-Grdisomeで関数型コンポーネントでi18n",[121],"VH_Tm7scoiXFU2zyK9H8hKmtJeQ-BSHxIp98pN40vOI",{"id":2823,"title":2824,"author":26,"body":2825,"category":20,"date":2849,"description":2824,"extension":14,"locale":15,"meta":2850,"navigation":17,"path":2851,"seo":2852,"slug":2853,"stem":2854,"tag":2855,"updated":2849,"__hash__":2857},"legacyQuestions\u002F20210825000000-Cockpit CMSの設定はどこですれば良いですか？.md","Cockpit CMSの設定はどこですれば良いですか？",{"type":7,"value":2826,"toc":2846},[2827,2831,2834,2840,2843],[30,2828,2830],{"id":2829},"configファイルをアップロードします","configファイルをアップロードします。",[34,2832,2833],{},"Cockpitの設定は、config.phpで行います。admin権限を持っているユーザーなら、管理画面からも編集が可能です。",[61,2835,2838],{"className":2836,"code":2837,"language":66},[64],"\u003C?php\n\nreturn [\n\n    # cockpitのアプリ名\n    'app.name' => 'My Project X',\n\n    # cockpitのセッション名\n    'session.name' => 'mysession',\n\n    # カスタムシークレットキー\n    'sec-key' => 'xxxxx-SiteSecKeyPleaseChangeMe-xxxxx',\n\n    # サイトurl (オプション)\n    'site_url' => 'https:\u002F\u002Fmydomain.com',\n\n    # 言語設定\n    'languages' => [\n        \u002F\u002F'default' => 'English',       #デフォルト言語\n        'fr' => 'French',\n        'de' => 'German'\n    ],\n\n    # ユーザーグループを設定\n    'groups' => [\n        'author' => [\n            '$admin' => false,\n            '$vars' => [\n                'finder.path' => '\u002Fstorage\u002Fupload'\n            ],\n            'cockpit' => [\n                'backend' => true,\n                'finder' => true\n            ],\n            'collections' => [\n                'manage' => true\n            ]\n        ]\n    ],\n\n    # DBにMongo DBを使う際の設定\n    'database' => [   \n        'server' => 'mongodb:\u002F\u002Flocalhost:27017',\n        'options' => [\n            'db' => 'cockpitdb'\n        ]\n    ],\n\n    # SMTPメールサーバーの設定\n    'mailer' => [\n        'from'       => 'info@mydomain.tld',\n        'transport'  => 'smtp'\n        'host'       => 'smtp.myhost.tld',\n        'user'       => 'username'\n        'password'   => 'xxpasswordxx',\n        'port'       => 25,\n        'auth'       => true,\n        'encryption' => '' # '', 'ssl' or 'tls'\n    ]\n\n    # Access-Control (CORS) の設定.\n    # （下記のパラメータは初期設定なので、コピペする必要はない）\n    'cors' => [\n      'allowedHeaders' => 'X-Requested-With, Content-Type, Origin, Cache-Control, Pragma, Authorization, Accept, Accept-Encoding, Cockpit-Token',\n      'allowedMethods' => 'PUT, POST, GET, OPTIONS, DELETE',\n      'allowedOrigins' => '*',\n      'maxAge' => '1000',\n      'allowCredentials' => 'true',\n      'exposedHeaders' => 'true',\n    ],\n];\n",[68,2839,2837],{"__ignoreMap":10},[34,2841,2842],{},"設置する場所は、「\u002Fconfig\u002Fconfig.php」で、configディレクトリは初期状態ではないので、自分でディレクトリを作成してそこにconfig.phpをアップロードします。",[34,2844,2845],{},"なお、言語設定は、他言語設定ファイルをアップロードしていないと有効になりません。",{"title":10,"searchDepth":11,"depth":11,"links":2847},[2848],{"id":2829,"depth":11,"text":2830},"2021-08-25T01:00:00.000Z",{},"\u002F20210825000000-cockpit-cms",{"title":2824,"description":2824},"f570fe5db143d4dddfc0549c86d3a7db","20210825000000-Cockpit CMSの設定はどこですれば良いですか？",[2856],"cockpit-cms","ur8rd2UnkDYXrnxHLsHhSllSy3I4za0vXAHyWi85lIo",{"id":2859,"title":2860,"author":26,"body":2861,"category":20,"date":2849,"description":2860,"extension":14,"locale":15,"meta":2895,"navigation":17,"path":2896,"seo":2897,"slug":2898,"stem":2899,"tag":2900,"updated":2849,"__hash__":2901},"legacyQuestions\u002F20210825010000-Cockpit CMSは日本語化出来ますか？.md","Cockpit CMSは日本語化出来ますか？",{"type":7,"value":2862,"toc":2892},[2863,2867,2870,2877,2880,2883,2889],[30,2864,2866],{"id":2865},"他言語ファイルをアップロードすれば可能です","他言語ファイルをアップロードすれば可能です。",[34,2868,2869],{},"Cockpitは各種言語に翻訳された、i18nファイルが公式で用意されていて、公式に日本語に対応しています。",[34,2871,2872],{},[689,2873,2876],{"href":2874,"rel":2875},"https:\u002F\u002Fgithub.com\u002Fagentejo\u002Fcockpit-i18n",[693],"cockpit-i18n",[34,2878,2879],{},"このレポジトリの中のPHPファイルを、「\u002Fconfig\u002Fcockpit\u002Fi18n」の中にアップロードします。日本語化だけが目的なら「ja.php」だけあればOKです。ディレクトリは初期では存在しないので、作成します。",[34,2881,2882],{},"この状態だと、「ユーザーごとに日本語表示も可能」という形になります。Cockpitの全体として、デフォルトの言語を日本語化したいのであれば、設定ファイル「config.php」に言語の設定を書きます。",[61,2884,2887],{"className":2885,"code":2886,"language":66},[64],"## \u002Fconfig\u002Fconfig.php\n\u003C?php\n\nreturn [\n    # 言語設定\n    'languages' => [\n        'default' => 'Japanese'\n    ],\n\n];\n",[68,2888,2886],{"__ignoreMap":10},[34,2890,2891],{},"翻訳がおかしいところもなく、普通に日本語化できるので便利です。",{"title":10,"searchDepth":11,"depth":11,"links":2893},[2894],{"id":2865,"depth":11,"text":2866},{},"\u002F20210825010000-cockpit-cms",{"title":2860,"description":2860},"04dfbe89bc895cd12180e6f4e0a1ba80","20210825010000-Cockpit CMSは日本語化出来ますか？",[2856],"7SsB2dO_hGDYpLGfHAaFAUmtLmIjP8SxLBnMwx9przc",{"id":2903,"title":2904,"author":26,"body":2905,"category":20,"date":2943,"description":2904,"extension":14,"locale":15,"meta":2944,"navigation":17,"path":2945,"seo":2946,"slug":2947,"stem":2948,"tag":2949,"updated":2943,"__hash__":2950},"legacyQuestions\u002F20210825020000-Cockpit CMSのロゴは変更できますか？.md","Cockpit CMSのロゴは変更できますか？",{"type":7,"value":2906,"toc":2940},[2907,2911,2914,2917,2923,2925,2928,2931,2937],[30,2908,2910],{"id":2909},"cssで上書きするか設定ファイルで指定すれば可能です","CSSで上書きするか、設定ファイルで指定すれば可能です。",[34,2912,2913],{},"Cockpitの表示ロゴは、CSSの背景画像として指定されているので、CSSでそのクラスを上書きしてしまえば違う画像がロゴに使えます。",[34,2915,2916],{},"ロゴで使われているクラスは、",[61,2918,2921],{"className":2919,"code":2920,"language":66},[64],".login-image\n.app-logo\n",[68,2922,2920],{"__ignoreMap":10},[34,2924,1660],{},[34,2926,2927],{},"cssファイルは、「\u002Fconfig\u002Fcockpit\u002Fstyle.css」に入れればOKです。",[34,2929,2930],{},"もしくは、bootstrap.phpを用意して、内部的にロゴファイルを上書きするという方法もあります。",[61,2932,2935],{"className":2933,"code":2934,"language":66},[64],"## \u002Fconfig\u002Fbootstrap.php\n\nif (COCKPIT_ADMIN && !COCKPIT_API_REQUEST) {\n    \u002F\u002F url to your favicon or a path shortcut, e. g.: `#uploads:...`\n    $app->helper('admin')->favicon = '#uploads:2020\u002F02\u002F08\u002F5e3e7c80a4923favicon.png';\n}\n",[68,2936,2934],{"__ignoreMap":10},[34,2938,2939],{},"どちらでも上書きするという意味では同じですので、慣れている方を使えば良いかと思いますが、CSSだと将来的にCockpitがアップデートされた時にクラスが変わる可能性が0ではないので、bootstrapを使った方が安全かもしれません。",{"title":10,"searchDepth":11,"depth":11,"links":2941},[2942],{"id":2909,"depth":11,"text":2910},"2021-08-25T02:00:00.000Z",{},"\u002F20210825020000-cockpit-cms",{"title":2904,"description":2904},"5192f5d49db63fb1a624ca22a74d0c56","20210825020000-Cockpit CMSのロゴは変更できますか？",[2856],"IEauzh27l8vfTGqf59Rrc7Durd_dZcQ5fIj-ankvgtg",{"id":2952,"title":2953,"author":26,"body":2954,"category":20,"date":3016,"description":2953,"extension":14,"locale":15,"meta":3017,"navigation":17,"path":3018,"seo":3019,"slug":3020,"stem":3021,"tag":3022,"updated":3016,"__hash__":3023},"legacyQuestions\u002F20210826010000-Cockpit CMSはどんなサーバーで動きますか？.md","Cockpit CMSはどんなサーバーで動きますか？",{"type":7,"value":2955,"toc":3012},[2956,2960,2963,2974,2977,2980,2983,2987,2990,2993,3000,3003,3009],[30,2957,2959],{"id":2958},"phpサーバーで動きます","PHPサーバーで動きます",[34,2961,2962],{},"公式ドキュメントによると、Cockpitが動作するサーバーの要件は下記のようになっています。",[38,2964,2965,2968,2971],{},[41,2966,2967],{},"PHP 5.4+",[41,2969,2970],{},"SQLite",[41,2972,2973],{},"Apache or Nginx",[34,2975,2976],{},"現在PHPが動くサーバーで、PHP 5.4を動かしているサーバーはほぼないでしょうし、どんなWebサーバーにもApacheかNginxは入っていますし、Litespeedでも問題なく動作するそうです。",[34,2978,2979],{},"SQLiteについては、サーバーによってはモジュールがオフになっているケースがあるかもしれないので、SQLiteだけは事前に確認した方が良さそうです。",[34,2981,2982],{},"国内のレンタルサーバーは、基本的にPHP7以上が動作している（むしろPHP 5.4はサポート外がほとんど）ので問題ないでしょうし、VPSやクラウドなら自分でPHPやSQLiteなどの環境を構築できれば使えます。",[30,2984,2986],{"id":2985},"cockpit-cmsをサーバーレスで使う場合","Cockpit CMSをサーバーレスで使う場合",[34,2988,2989],{},"サーバーレスについては、PHPに対応したサーバーレスサービスでも、SQLiteが動かないことが多いので、その場合は外部のMongo DBサーバーを用意する必要があります。",[34,2991,2992],{},"Mongo DBは公式が「MongoDB Atlas」という無料のクラウドMongo DBサーバーを提供しているので、サーバーレスで構築したいなら、そちらを使っても良いでしょう。",[34,2994,2995],{},[689,2996,2999],{"href":2997,"rel":2998},"https:\u002F\u002Fwww.mongodb.com\u002Fja-jp\u002Fcloud\u002Fatlas",[693],"MongoDB Atlas",[34,3001,3002],{},"Cockpit CMSでMongo DBを使う場合は、設定ファイルにDB情報を書けばOKです。",[61,3004,3007],{"className":3005,"code":3006,"language":66},[64],"## \u002Fconfig\u002Fconfig.php\n\n\u003C?php\n\nreturn [\n  # DBにMongo DBを使う際の設定\n  'database' => [   \n      'server' => 'mongodb:\u002F\u002Flocalhost:27017',\n      'options' => [\n          'db' => 'cockpitdb'\n      ]\n  ]\n]  \n",[68,3008,3006],{"__ignoreMap":10},[34,3010,3011],{},"ただし、CockpitのDBでMongoDBを使う場合は、サーバーレスのPHPが「ext-mongodb」というエクステンションに対応している必要があるため、サーバーレスでは使えないケースもありそうです。",{"title":10,"searchDepth":11,"depth":11,"links":3013},[3014,3015],{"id":2958,"depth":11,"text":2959},{"id":2985,"depth":11,"text":2986},"2021-08-26T01:00:00.000Z",{},"\u002F20210826010000-cockpit-cms",{"title":2953,"description":2953},"67b368074aba42b95fc88e3751f41bf6","20210826010000-Cockpit CMSはどんなサーバーで動きますか？",[2856],"hGWYLgWSW2ZG-mEy6st7yYmVBoys8Wp1m4cE4MuBjJs",{"id":3025,"title":3026,"author":26,"body":3027,"category":20,"date":3059,"description":3026,"extension":14,"locale":15,"meta":3060,"navigation":17,"path":3061,"seo":3062,"slug":3063,"stem":3064,"tag":3065,"updated":3059,"__hash__":3066},"legacyQuestions\u002F20210827010000-Cockpit CMSの初期管理アカウントのID・パスワードがわかりません.md","Cockpit CMSの初期管理アカウントのID・パスワードがわかりません",{"type":7,"value":3028,"toc":3056},[3029,3033,3036,3044,3047,3050],[30,3030,3032],{"id":3031},"インストール段階では自動でidパスワードが生成されます","インストール段階では自動でID・パスワードが生成されます",[34,3034,3035],{},"CMSなどだと初期インストール段階で、管理者のID・パスワードを設定しますが、Cockpit CMSの場合はインストールすると下記のID・パスワードが自動で生成されます。",[1319,3037,3038,3041],{},[41,3039,3040],{},"ID: admin",[41,3042,3043],{},"パスワード：admin",[34,3045,3046],{},"このままだとセキュリティ的に危ないので、一旦ログインしてID・パスワードを変更するか、管理者ユーザーを作成して、adminを削除しましょう。",[34,3048,3049],{},"cockpitのinstall.phpを確認すると、adminは決め打ちでDBに挿入されるようになっているので、回避方法はないかと思います。",[61,3051,3054],{"className":3052,"code":3053,"language":66},[64],"$account = [\n    'user'     => 'admin',\n    'name'     => 'Admin',\n    'email'    => 'admin@yourdomain.de',\n    'active'   => true,\n    'group'    => 'admin',\n    'password' => $app->hash('admin'),\n    'i18n'     => $app->helper('i18n')->locale,\n    '_created' => $created,\n    '_modified'=> $created,\n];\n\n$app->storage->insert(\"cockpit\u002Faccounts\", $account);\n",[68,3055,3053],{"__ignoreMap":10},{"title":10,"searchDepth":11,"depth":11,"links":3057},[3058],{"id":3031,"depth":11,"text":3032},"2021-08-27T01:00:00.000Z",{},"\u002F20210827010000-cockpit-cmsid",{"title":3026,"description":3026},"52a3b9dabf875e1a2237617fb65bb1b4","20210827010000-Cockpit CMSの初期管理アカウントのID・パスワードがわかりません",[2856],"DKbGceCXxf5KwH8Ec6IyvOMlnge79r3aTqHifZIvBMg",{"id":3068,"title":3069,"author":26,"body":3070,"category":20,"date":3165,"description":3069,"extension":14,"locale":15,"meta":3166,"navigation":17,"path":3167,"seo":3168,"slug":3169,"stem":3170,"tag":3171,"updated":3165,"__hash__":3172},"legacyQuestions\u002F20210827010000-Cockpit CMSの権限管理はどうやって設定する？.md","Cockpit CMSの権限管理はどうやって設定する？",{"type":7,"value":3071,"toc":3158},[3072,3076,3079,3082,3085,3093,3096,3099,3102,3106,3109,3112,3115,3121,3124,3130,3132,3135,3138,3141,3144,3152,3155],[30,3073,3075],{"id":3074},"cockpit-cmsの権限管理は大きく分けて二つ","Cockpit CMSの権限管理は大きく分けて二つ",[189,3077,3078],{"id":3078},"コレクション単位の管理",[34,3080,3081],{},"コレクションには、それぞれの権限管理が設定できます。",[34,3083,3084],{},"設定画面では下記のような文言です。",[38,3086,3087,3090],{},[41,3088,3089],{},"公開中：トークンなしで操作が可能",[41,3091,3092],{},"AUTHOR：作成者のトークンなら操作が可能",[34,3094,3095],{},"初期段階ではコレクションは非公開になっています。ですので、APIトークンがあっても、中身は見れません。",[34,3097,3098],{},"同時に注意したいのは、公開中のステータスにするとAPIトークンなしでもAPIコールが可能になる点です。",[34,3100,3101],{},"編集や削除などを公開中にすると、コレクションの内容を権限を与えていない人間がAPIコールして削除したり編集したりできてしまいます。",[30,3103,3105],{"id":3104},"apiトークン単位の管理","APIトークン単位の管理",[34,3107,3108],{},"アカウント・コレクションごとに与える権限を管理したいのであれば、APIトークンの設定で使えるAPIのルールを指定します。",[34,3110,3111],{},"設定方法は「設定 > APIアクセス」ページの中の「カスタムキー」の「ルール」で、使えるようにするAPIを指定します。",[34,3113,3114],{},"例えば、「test」というコレクションの取得のみを付与するのであれば、",[61,3116,3119],{"className":3117,"code":3118,"language":66},[64],"\u002Fapi\u002Fcollections\u002Fget\u002Ftest2\n",[68,3120,3118],{"__ignoreMap":10},[34,3122,3123],{},"コレクション全体の取得を付与するのであれば、",[61,3125,3128],{"className":3126,"code":3127,"language":66},[64],"\u002Fapi\u002Fcollections\u002Fget\n",[68,3129,3127],{"__ignoreMap":10},[34,3131,1485],{},[34,3133,3134],{},"なお、APIトークンの権限付与は、コレクションごとの権限設定よりも優先されるため、完全非公開のコレクションにもアクセスが可能になります。",[30,3136,3137],{"id":3137},"実際の権限管理は二つを組み合わせる",[34,3139,3140],{},"Cockpit CMSの使用方法的には、フロントエンドのためのデータソースとして使うケースがほとんどなので、ビルド時に使うのは取得だけでしょう。",[34,3142,3143],{},"ですので、",[38,3145,3146,3149],{},[41,3147,3148],{},"コレクションは非公開（初期設定）",[41,3150,3151],{},"APIトークンには「\u002Fapi\u002Fcollections\u002Fget」だけを付与",[34,3153,3154],{},"というのがシンプルでセキュリティが高い設定かと思います。なお、APIトークンはSPAなどで使う際は流出しないように細心の注意が必要です。",[34,3156,3157],{},"もし、SPAのコメントフォームなどで外部ユーザーが自由に書き込みをできるようにするのであれば、「公開中」ステータスにしても良いかもしれませんが、基本的にはAPIトークンで管理した方が良いでしょう。",{"title":10,"searchDepth":11,"depth":11,"links":3159},[3160,3163,3164],{"id":3074,"depth":11,"text":3075,"children":3161},[3162],{"id":3078,"depth":241,"text":3078},{"id":3104,"depth":11,"text":3105},{"id":3137,"depth":11,"text":3137},"2021-08-30T01:00:00.000Z",{},"\u002F20210827010000-cockpit-cms",{"title":3069,"description":3069},"e948e7c76ac3fc6fe94b6a8b44ee593f","20210827010000-Cockpit CMSの権限管理はどうやって設定する？",[2856],"Hr9NZH_JqaZchwFo715Jx7FeW4Y8Y1DO-tdpktcU5pI",{"id":3174,"title":3175,"author":26,"body":3176,"category":20,"date":3203,"description":3175,"extension":14,"locale":15,"meta":3204,"navigation":17,"path":3205,"seo":3206,"slug":3207,"stem":3208,"tag":3209,"updated":3203,"__hash__":3210},"legacyQuestions\u002F20210830010000-Cockpit APIのアクセス結果が「Collection not found」になる.md","Cockpit APIのアクセス結果が「Collection not found」になる",{"type":7,"value":3177,"toc":3200},[3178,3182,3185,3188,3191,3197],[30,3179,3181],{"id":3180},"コレクションが存在しないかapiのurlが間違っています","コレクションが存在しないか、APIのURLが間違っています",[34,3183,3184],{},"Cockpit APIが「Collection not found」を返す時は、コレクションが存在しないか、APIのURLが間違っている場合です。",[34,3186,3187],{},"よくあるのが、ネット上の紹介ページで使われることが多い「\u002Fapi\u002Fcollections\u002Fget\u002Fpage」というAPIをコールするケース。pageはメソッドではなく、「page」というコレクションを指しているので、pageコレクションがないと「Collection not found」になります。",[34,3189,3190],{},"なお、コレクションに対して、コールした権限（取得・削除・作成・編集）がない場合は、",[61,3192,3195],{"className":3193,"code":3194,"language":66},[64],"{\"error\": \"Unauthorized\"}\n",[68,3196,3194],{"__ignoreMap":10},[34,3198,3199],{},"が返ってきます。",{"title":10,"searchDepth":11,"depth":11,"links":3201},[3202],{"id":3180,"depth":11,"text":3181},"2021-08-30T02:00:00.000Z",{},"\u002F20210830010000-cockpit-apicollection-not-found",{"title":3175,"description":3175},"2da52f360ff75a33464d284ecf4f9715","20210830010000-Cockpit APIのアクセス結果が「Collection not found」になる",[2856],"XKHjF1iOpRnUK-vAvCsj-Z8BxB4TFq4QjPwaMuSBO6U",{"id":3212,"title":3213,"author":26,"body":3214,"category":20,"date":3260,"description":3175,"extension":14,"locale":15,"meta":3261,"navigation":17,"path":3262,"seo":3263,"slug":3264,"stem":3265,"tag":3266,"updated":3260,"__hash__":3267},"legacyQuestions\u002F20210901010000-GridsomeでAPIから読み込んだデータにrefをつけるには？.md","GridsomeでUNIX Timestampを変換するには？",{"type":7,"value":3215,"toc":3257},[3216,3219,3222,3229,3232,3239,3242,3248,3251],[30,3217,3213],{"id":3218},"gridsomeでunix-timestampを変換するには",[34,3220,3221],{},"Gridsomeでは、日付のフォーマットにGraphQLのformatが使えますが、変換前のデータソースのフォーマットは「ISO 8601」であることが前提となっています。",[34,3223,3224],{},[689,3225,3228],{"href":3226,"rel":3227},"https:\u002F\u002Fja.wikipedia.org\u002Fwiki\u002FISO_8601",[693],"ISO 8601 | Wikipedia",[34,3230,3231],{},"GraphQLでは、日付形式のデータが入ってくると、自動で日付と推定してscalarを「Date」として挿入してくれますが、UNIX Timestampはただの数字なので、Intで収納されてしまいます。",[34,3233,3234],{},[689,3235,3238],{"href":3236,"rel":3237},"https:\u002F\u002Fgraphql.org\u002Flearn\u002Fschema\u002F",[693],"Schemas and Types | GraphQL.org",[34,3240,3241],{},"ですので、記事の日付データがUNIX TimestampであるならVue.jsのテンプレート内で変換を行ってから表示するか、データソース側をUNIX TimestampからISO 8601フォーマットでGraphQLに収容する、もしくはmineTypeでscalarを指定するするしかありません。",[61,3243,3246],{"className":3244,"code":3245,"language":66},[64],"articles.addNode({\n  date: {\n    mineType: 'Date',\n    content: item._created\n  }\n}\n",[68,3247,3245],{"__ignoreMap":10},[34,3249,3250],{},"ヘッドレスCMSなどからデータを引っ張ってきているのであれば、gridsome.server.jsで処理を書くので、そのついでにdayjsなどの日付ライブラリを使ってISO 8601フォーマットにするのが良いでしょう。",[61,3252,3255],{"className":3253,"code":3254,"language":66},[64],"const dayjs = require('dayjs');\n\nmodule.exports = function (api) {\n  api.loadSource(async actions => {\n\n    \u002F\u002F 何かの処理\n\n    \u002F\u002F GraphQLへの挿入、_createdと_modifiedはUNIX Timestamp\n\n    for (const item of dataArticles) {\n      articles.addNode({\n        id: item._id,\n        date: dayjs.unix(item._created).toISOString(),\n        updated: dayjs.unix(item._modified).toISOString()\n      })\n    }    \n  }\n}\n",[68,3256,3254],{"__ignoreMap":10},{"title":10,"searchDepth":11,"depth":11,"links":3258},[3259],{"id":3218,"depth":11,"text":3213},"2021-09-01T02:00:00.000Z",{},"\u002F20210901010000-gridsomeapiref",{"title":3213,"description":3175},"dc5f28776c305748b49f684587cb222b","20210901010000-GridsomeでAPIから読み込んだデータにrefをつけるには？",[121],"D9FssWhmkA7uAY7LdXtxRv0lmcvoHZJeT6MKEe6dJFc",{"id":3269,"title":3270,"author":26,"body":3271,"category":20,"date":3260,"description":3270,"extension":14,"locale":15,"meta":3318,"navigation":17,"path":3319,"seo":3320,"slug":3321,"stem":3322,"tag":3323,"updated":3260,"__hash__":3324},"legacyQuestions\u002F20210901010000-Gridsomeでunix-timestampを変換するには？.md","GridsomeでAPIから読み込んだデータにrefをつけるには？",{"type":7,"value":3272,"toc":3315},[3273,3277,3280,3286,3289,3295,3298,3301,3309,3312],[30,3274,3276],{"id":3275},"collectionにaddreferenceを付与すれば作成されます","CollectionにaddReferenceを付与すれば作成されます",[34,3278,3279],{},"GridsomeにAPIからデータを挿入するときは、",[61,3281,3284],{"className":3282,"code":3283,"language":66},[64],"const articles = actions.addCollection\n",[68,3285,3283],{"__ignoreMap":10},[34,3287,3288],{},"でコレクションを作成しますが、作成した後に、",[61,3290,3293],{"className":3291,"code":3292,"language":66},[64],"articles.addReference('tags', 'Tags')\narticles.addReference('category', 'Categories')\n\n",[68,3294,3292],{"__ignoreMap":10},[34,3296,3297],{},"という形でrefを付与します。これは、「@gridsome\u002Fsource-filesystem」のrefsに相当します。",[34,3299,3300],{},"addReferenceは、",[38,3302,3303,3306],{},[41,3304,3305],{},"第一引数：collection内のキー",[41,3307,3308],{},"第二引数：参照するCollection",[34,3310,3311],{},"を指定します。",[34,3313,3314],{},"refsが作成されているので、GraphQLのfilterやbelongsToで、記事の絞り込みが可能になります。",{"title":10,"searchDepth":11,"depth":11,"links":3316},[3317],{"id":3275,"depth":11,"text":3276},{},"\u002F20210901010000-gridsomeunix-timestamp",{"title":3270,"description":3270},"2d890f4ba879d5292228f8ce40ed8998","20210901010000-Gridsomeでunix-timestampを変換するには？",[121],"-vcuxkBFOZ_M2Q3_ToGtHc7qX-9Jtfnj2vg03-zJneE",{"id":3326,"title":3327,"author":26,"body":3328,"category":20,"date":3373,"description":3327,"extension":14,"locale":15,"meta":3374,"navigation":17,"path":3375,"seo":3376,"slug":3377,"stem":3378,"tag":3379,"updated":3373,"__hash__":3380},"legacyQuestions\u002F20210902010000-Cockpit CMSで他のコレクションとリレーションするには？.md","Cockpit CMSで他のコレクションとリレーションするには？",{"type":7,"value":3329,"toc":3370},[3330,3334,3337,3344,3347,3350,3356,3359,3365,3367],[30,3331,3333],{"id":3332},"collectionlinkを使います","Collectionlinkを使います",[34,3335,3336],{},"Cockpit CMSでは他のコレクション（テーブル）と連携させるのは、フィールドタイプに「Collectionlink」を使います。",[34,3338,3339],{},[689,3340,3343],{"href":3341,"rel":3342},"https:\u002F\u002Fgetcockpit.com\u002Fdocumentation\u002Freference\u002Ffieldtypes",[693],"Fieldtypes",[34,3345,3346],{},"フィールドタイプに「Collectionlink」を使うと、エントリー編集画面で、リンクしたコレクションのデータを一覧から選択できるようになる他、リンクされたコレクションのエントリーからは、「どのエントリーとリンクされているか？」を確認できるようになります。",[34,3348,3349],{},"Collectionlinkを使うには、オプションJSONの項目で、どのコレクションとリンクするかなどを設定する必要があります。",[61,3351,3354],{"className":3352,"code":3353,"language":66},[64],"{\n  \"link\": \"makers\", \u002F\u002F リンクするコレクション\n  \"display\": \"name\", \u002F\u002F jsonで出力する際にどの項目を表示するか\n  \"multiple\": false, \u002F\u002F 複数選択可能にするか？（タグなどを想定）\n  \"limit\": false \u002F\u002F 件数を制限するか？\n}\n",[68,3355,3353],{"__ignoreMap":10},[34,3357,3358],{},"リンクができると、そのエントリーの出力JSONに、リンクしたコレクションのデータが入ります。",[61,3360,3363],{"className":3361,"code":3362,"language":66},[64],"{\n  \"id\": \"1\",\n  \"title\": \"iPhone 12\",\n  \"maker_id\": {\n    \"_id\": \"6130b4c737393784d10000bd\",\n    \"link\": \"makers\",\n    \"display\": \"Apple (アップル)\"\n  },\n",[68,3364,3362],{"__ignoreMap":10},[34,3366,1485],{},[34,3368,3369],{},"静的サイトジェネレータのように、ジェネレータ側で処理を加える場合には設定しない方が使い勝手が良い可能性もありますが、SPAのようにヘッドレスCMSの内容をそのまま表示する場合には、必須の項目かと思います。",{"title":10,"searchDepth":11,"depth":11,"links":3371},[3372],{"id":3332,"depth":11,"text":3333},"2021-09-02T01:00:00.000Z",{},"\u002F20210902010000-cockpit-cms",{"title":3327,"description":3327},"563d56684f6de273ba93a9667423e801","20210902010000-Cockpit CMSで他のコレクションとリレーションするには？",[2856],"eDhqcZFQugKdsDxe8wUIYyCV2wDYgDG-gtT3SNsHXWY",{"id":3382,"title":3383,"author":26,"body":3384,"category":20,"date":3445,"description":3383,"extension":14,"locale":15,"meta":3446,"navigation":17,"path":3447,"seo":3448,"slug":3449,"stem":3450,"tag":3451,"updated":3445,"__hash__":3452},"legacyQuestions\u002F20210903010000-Cockpit CMSのセキュリティ強化はどうやればいいですか？.md","Cockpit CMSのセキュリティ強化はどうやればいいですか？",{"type":7,"value":3385,"toc":3439},[3386,3390,3393,3400,3403,3407,3410,3413,3416,3419,3426,3429,3436],[30,3387,3389],{"id":3388},"サーバー側で認証を入れるかauth0がベストです","サーバー側で認証を入れるかAuth0がベストです",[34,3391,3392],{},"公式の二段階認証（2FA）アドオンが開発されているのでそれを使うのが良いのですが、まだ公開版になっていないだけでなく、レポジトリの更新が3年も止まっているので、現在開発が止まっているようです。",[34,3394,3395],{},[689,3396,3399],{"href":3397,"rel":3398},"https:\u002F\u002Fgithub.com\u002Fagentejo\u002F2FA",[693],"agentejo \u002F 2FA",[34,3401,3402],{},"実際に最新のCockpit CMS(0.12.1)で使ってみると、アカウントの設定画面がバグってしまうので、実質自分で書き換えて使う形になります。",[189,3404,3406],{"id":3405},"一番簡単なのはサーバー側のbasicdigest認証","一番簡単なのはサーバー側のBasic\u002FDigest認証",[34,3408,3409],{},"そう考えると、簡単でベストなのはサーバー側でBasic認証か、Digest認証を入れるのではないかと思います。",[34,3411,3412],{},"設定も楽ですし、PHPが動くサーバーならほとんどがBasic認証には対応しているので、セキュリティはやや弱くなりますが、誰でも導入できるというメリットがあります。",[189,3414,3415],{"id":3415},"auth0を使う",[34,3417,3418],{},"認証系APIサービスのauth0を使っている方は、有志の方がリリースされたauth0用のアドオンを使うことで、auth0を使った認証を追加できます。",[34,3420,3421],{},[689,3422,3425],{"href":3423,"rel":3424},"https:\u002F\u002Fgithub.com\u002Fjoona\u002FCockpitCMS-Auth0",[693]," joona \u002F CockpitCMS-Auth0 ",[34,3427,3428],{},"auth0は、アクティブユーザー7,000人までは無料で使えるます。Cockpit CMSを使うのが不特定多数ではなく、小規模なプロジェクトなのであれば、auth0の無料プランは有用です。",[34,3430,3431],{},[689,3432,3435],{"href":3433,"rel":3434},"https:\u002F\u002Fauth0.com\u002Fjp\u002Fpricing",[693],"料金体型 | auth0 ",[34,3437,3438],{},"auth0の知識などが必要になるのがデメリットでしょうか。",{"title":10,"searchDepth":11,"depth":11,"links":3440},[3441],{"id":3388,"depth":11,"text":3389,"children":3442},[3443,3444],{"id":3405,"depth":241,"text":3406},{"id":3415,"depth":241,"text":3415},"2021-09-03T01:00:00.000Z",{},"\u002F20210903010000-cockpit-cms",{"title":3383,"description":3383},"bd227318de55e0d3a4a8a81343e185a2","20210903010000-Cockpit CMSのセキュリティ強化はどうやればいいですか？",[2856],"JzPOMIwPrvxiCJ_uEElFk3J_2q-GRTpRWdc9qbSYk8w",{"id":3454,"title":3455,"author":26,"body":3456,"category":20,"date":3506,"description":3455,"extension":14,"locale":15,"meta":3507,"navigation":17,"path":3508,"seo":3509,"slug":3510,"stem":3511,"tag":3512,"updated":3506,"__hash__":3513},"legacyQuestions\u002F20210903020000-Cockpit CMSはサイトごとに作った方がいい？.md","Cockpit CMSはサイトごとに作った方がいい？",{"type":7,"value":3457,"toc":3500},[3458,3462,3465,3469,3472,3475,3478,3481,3484,3487,3490,3497],[30,3459,3461],{"id":3460},"どちらにも対応できます","どちらにも対応できます。",[34,3463,3464],{},"Cockpit CMSはどちらの方法でも対応できるように設定が柔軟になっています。",[189,3466,3468],{"id":3467},"シンプルなのはサイトごとにcockpit-cmsを用意する方法","シンプルなのは、サイトごとにCockpit CMSを用意する方法",[34,3470,3471],{},"この場合は、サブドメインなどで展開することになるので、サイトごとに管理画面が別になります。",[34,3473,3474],{},"サイトごとに別ドメインになるのでわかりやすいですが、切り替える手間があるのと、切り替えてもデザイン自体は同じになるので、間違ってしまう可能性もあります。",[34,3476,3477],{},"サイトごとに用意すると、バックアップやアップデートなども複数になるため管理は手間です。",[189,3479,3480],{"id":3480},"一元管理すると管理が容易",[34,3482,3483],{},"Cockpit CMSは、アカウントやアカウントグループごとにアクセスする権限を管理できるので、複数のサイトを一つのCockpit CMSで管理することもできます。",[34,3485,3486],{},"この場合、一つのCockpit CMSで全てを管理ができるため、バックアップやアップデートが楽なのが最大のメリットです。",[34,3488,3489],{},"ただ、一つにまとめることで管理が容易になるという大きなメリットがある一方で、しっかりとアカウントとコレクションの権限管理を行わないといけないので、Cockpit CMSの構造を理解するための多少PHPの知識と、ドキュメント読み込むための英語力が必要になります。",[34,3491,3492],{},[689,3493,3496],{"href":3494,"rel":3495},"https:\u002F\u002Fzeraton.gitlab.io\u002Fcockpit-docs\u002Fguide\u002Fbasics\u002Facl.html",[693],"Access-Control-List | Cockpit CMS Docs",[34,3498,3499],{},"どちらが良いかは、サイトの運営方針や情報管理ポリシーなどによると思いますが、技術的に問題がないのであれば、一元管理の方が、セキュリティリスクなども下がるのでオススメです。",{"title":10,"searchDepth":11,"depth":11,"links":3501},[3502],{"id":3460,"depth":11,"text":3461,"children":3503},[3504,3505],{"id":3467,"depth":241,"text":3468},{"id":3480,"depth":241,"text":3480},"2021-09-03T02:00:00.000Z",{},"\u002F20210903020000-cockpit-cms",{"title":3455,"description":3455},"beda62cc9805414c539face52c3e5876","20210903020000-Cockpit CMSはサイトごとに作った方がいい？",[2856],"wAgJ0L9OytjE50WzUAonHe5PVpme0EcDlywgFr9EeO0",{"id":3515,"title":3516,"author":26,"body":3517,"category":20,"date":3576,"description":3516,"extension":14,"locale":15,"meta":3577,"navigation":17,"path":3578,"seo":3579,"slug":3580,"stem":3581,"tag":3582,"updated":3576,"__hash__":3583},"legacyQuestions\u002F20210903030000-Cockpit CMSでコレクションのアクセス制限をするには？.md","Cockpit CMSでコレクションのアクセス制限をするには？",{"type":7,"value":3518,"toc":3572},[3519,3523,3531,3534,3537,3540,3557,3560,3563,3566,3569],[30,3520,3522],{"id":3521},"グループを作成してコレクションの権限で設定します","グループを作成して、コレクションの「権限」で設定します。",[34,3524,3525,3526,3530],{},"まず最初に権限管理をするグループを作成します。ここでは仮に「GROUP1」というグループを作ったとします。グループの作成がわからなかったら、",[689,3527,3529],{"href":3528},"\u002Fq\u002Fb846f713dde07fb97eb71ed751bbb8ca\u002F","Cockpit CMSでのグループの作成方法","を確認してみてください。",[34,3532,3533],{},"グループの設定の際に、collectionsへの権限は与えても与えなくても大丈夫です。以降説明するコレクションごとの権限管理の方が上位に来ます。",[34,3535,3536],{},"グループを作成したら、admin権限があるアカウントでコレクションの編集を開いて、「権限」タブを開きます。",[34,3538,3539],{},"すると作成したグループ名が出てくるはずなので、",[38,3541,3542,3545,3548,3551,3554],{},[41,3543,3544],{},"コレクションを編集（コレクションの設定を編集できる）",[41,3546,3547],{},"エントリーを見る（コレクションのエントリーを閲覧できる）",[41,3549,3550],{},"エントリーを編集（コレクションの既存エントリーを編集できる）",[41,3552,3553],{},"エントリーを作成（コレクションに新規エントリーを作成できる）",[41,3555,3556],{},"エントリーを削除（コレクションの既存エントリーを削除できる）",[34,3558,3559],{},"のそれぞれに権限を付与します。項目の意味を参照しつつ、適切な権限を与えればOKです。",[30,3561,3562],{"id":3562},"コレクションのへアクセス権限の与え方のコツ",[34,3564,3565],{},"まず、全体を管理できてしまう「コレクションを編集」は基本的に与えない方が良いでしょう。管理者に近いけど、adminは付与しないユーザーグループにだけ付与するのがベストです。",[34,3567,3568],{},"そうしないと、知識のない人間や悪意のある人間が、コレクションのデータ構造や権限を変更可能になってしまいます。",[34,3570,3571],{},"エントリーについては、基本的には全ての権限を与える前提で問題ないかと思いますが、例えば「閲覧だけしかしない管理部署」だったり、「外注業者・ライター」のグループの場合は、閲覧や編集だけを付与するなどの制限があったほうが安心です。",{"title":10,"searchDepth":11,"depth":11,"links":3573},[3574,3575],{"id":3521,"depth":11,"text":3522},{"id":3562,"depth":11,"text":3562},"2021-09-03T03:00:00.000Z",{},"\u002F20210903030000-cockpit-cms",{"title":3516,"description":3516},"e873ec5e255b8ba998100432e91e647f","20210903030000-Cockpit CMSでコレクションのアクセス制限をするには？",[2856],"1hZFEpK9YCUIfsRDNMxQYhSz5ZiFN-wgZHZM46Z-G-Y",{"id":3585,"title":3586,"author":26,"body":3587,"category":20,"date":3623,"description":3586,"extension":14,"locale":15,"meta":3624,"navigation":17,"path":3625,"seo":3626,"slug":3627,"stem":3628,"tag":3629,"updated":3623,"__hash__":3630},"legacyQuestions\u002F20210903040000-Cockpit CMSでユーザーグループを作成する方法は？.md","Cockpit CMSでユーザーグループを作成する方法は？",{"type":7,"value":3588,"toc":3620},[3589,3593,3596,3599,3605,3608,3611,3617],[30,3590,3592],{"id":3591},"configphpで設定します","config.phpで設定します。",[34,3594,3595],{},"Cockpit CMSでは、config.phpに記載することで、複数のグループを設定ができます。",[34,3597,3598],{},"設定の記載方法は、",[61,3600,3603],{"className":3601,"code":3602,"language":66},[64],"\u003C?php\n\nreturn [\n    # ここからグループ設定\n\n    # define additional groups\n    'groups' => [\n        'group1' => [\n            '$admin' => false, \u002F\u002F 管理者権限を付与するか？\n            '$vars' => [\n                'finder.path' => '.\u002Fstorage\u002Fupload' \u002F\u002Fパスの設定など\n            ],\n            'cockpit' => [ \u002F\u002F APIなどのCockpit全体へのアクセス制限\n                'backend' => true,\n                'finder' => true\n            ],\n            'collections' => [ \u002F\u002F コレクションの管理権限\n                'manage' => false,\n            ]            \n        ]\n    ],\n\n    # ここまで\n",[68,3604,3602],{"__ignoreMap":10},[34,3606,3607],{},"となっています。",[34,3609,3610],{},"フォーマット的には、",[61,3612,3615],{"className":3613,"code":3614,"language":66},[64],"groups:\n  GROUP_NAME:\n    RESOURCE_NAME:\n      ACTION_NAME:\n        BOOLEAN\n",[68,3616,3614],{"__ignoreMap":10},[34,3618,3619],{},"という階層構造になっているので、適当なRESOURCE_NAMEとACTION_NAMEが分かれば簡単です。",{"title":10,"searchDepth":11,"depth":11,"links":3621},[3622],{"id":3591,"depth":11,"text":3592},"2021-09-03T05:00:00.000Z",{},"\u002F20210903040000-cockpit-cms",{"title":3586,"description":3586},"b846f713dde07fb97eb71ed751bbb8ca","20210903040000-Cockpit CMSでユーザーグループを作成する方法は？",[2856],"R_p2SymlKiuezQqmcne22olCnoD-TuN0_ywE4uDDfmQ",{"id":3632,"title":3633,"author":26,"body":3634,"category":20,"date":3686,"description":3633,"extension":14,"locale":15,"meta":3687,"navigation":17,"path":3688,"seo":3689,"slug":3690,"stem":3691,"tag":3692,"updated":3686,"__hash__":3693},"legacyQuestions\u002F20210903050000-Cockpit CMSでアカウントにコレクションが表示されない.md","Cockpit CMSでアカウントにコレクションが表示されない",{"type":7,"value":3635,"toc":3682},[3636,3639,3642,3645,3651,3654,3657,3660,3663,3673,3676],[30,3637,3638],{"id":3638},"コレクションへの権限がない可能性があります",[34,3640,3641],{},"Cockpit CMSでは、ユーザーがコレクションとコレクション内のエントリーを操作するためには権限を必要としています。（admin権限ユーザーは除外）",[34,3643,3644],{},"例えば、自分がadminユーザーでないのであれば、権限的にはグループユーザーになりますが、Cockpit CMSの公式ドキュメントの通りにグループを設定すると、",[61,3646,3649],{"className":3647,"code":3648,"language":66},[64],"'groups' => [\n    'group1' => [\n        '$admin' => false, \u002F\u002F 管理者権限を付与するか？\n        '$vars' => [\n            'finder.path' => '.\u002Fstorage\u002Fupload' \u002F\u002Fパスの設定など\n        ],\n        'cockpit' => [ \u002F\u002F APIなどのCockpit全体へのアクセス制限\n            'backend' => true,\n            'finder' => true\n        ],\n        'collections' => [ \u002F\u002F コレクションの管理権限\n            'manage' => false,\n        ]            \n    ]\n],\n",[68,3650,3648],{"__ignoreMap":10},[34,3652,3653],{},"となります。この場合「自信が作成した\u002F一般公開されている」コレクションメニューの「編集」というボタンが押せる権限しかないため、コレクションの作成も閲覧もできないわけです。",[30,3655,3656],{"id":3656},"コレクションを一覧に表示させる方法",[34,3658,3659],{},"一方で、特定のコレクションのエントリー作成・編集などの権限があれば、自分のアカウントのコレクション一覧に表示されるようになります。",[34,3661,3662],{},"所属しているグループが、対象コレクションの権限設定で、",[38,3664,3665,3667,3669,3671],{},[41,3666,3547],{},[41,3668,3550],{},[41,3670,3553],{},[41,3672,3556],{},[34,3674,3675],{},"のどれかにアクセス権限があれば（オンにしてあれば）、自分のコレクション一覧に表示されるようになります。",[34,3677,3678],{},[689,3679,3681],{"href":3680},"\u002Fq\u002Fe873ec5e255b8ba998100432e91e647f\u002F","Cockpit CMSでコレクションのアクセス制限をするには？ ",{"title":10,"searchDepth":11,"depth":11,"links":3683},[3684,3685],{"id":3638,"depth":11,"text":3638},{"id":3656,"depth":11,"text":3656},"2021-09-03T06:00:00.000Z",{},"\u002F20210903050000-cockpit-cms",{"title":3633,"description":3633},"54802b0bca0ad3e89ce85332e611d325","20210903050000-Cockpit CMSでアカウントにコレクションが表示されない",[2856],"_HXVye65XSGKD-sXPVWjG0nuTVc4ac1OIkdOpN5X6xM",{"id":3695,"title":3696,"author":26,"body":3697,"category":3736,"date":3737,"description":3738,"extension":14,"locale":15,"meta":3739,"navigation":17,"path":3740,"seo":3741,"slug":3742,"stem":3743,"tag":3744,"updated":3737,"__hash__":3746},"legacyQuestions\u002F20210910000000-楽天アフィエリエイトで本人確認が取れてないまま3000超えるとどうなりますか？.md","楽天アフィエリエイトで本人確認が取れてないまま報酬が3,000円を超えるとどうなりますか？",{"type":7,"value":3698,"toc":3733},[3699,3703,3706,3714,3717,3720,3723,3730],[30,3700,3702],{"id":3701},"_3000円だけ楽天キャッシュで入ってきて残額は消失します","3,000円だけ楽天キャッシュで入ってきて、残額は消失します",[34,3704,3705],{},"楽天アフィリエイトでは、",[38,3707,3708,3711],{},[41,3709,3710],{},"楽天銀行口座",[41,3712,3713],{},"楽天カード",[34,3715,3716],{},"のどちらかの方法で本人確認が済んでいない場合は、報酬はいくら確定していても3,000円が上限になります。",[34,3718,3719],{},"この上限金額は絶対で、しかも超えてしまった分は翌月などに繰越されることもないので、そのまま残額は消失します。数百円くらいならまだ良いですが、万単位で消失するとかなり痛手です。",[34,3721,3722],{},"その意味では、楽天アフィリエイトを始めるなら、無料で作成可能な楽天銀行の口座も作成しておくとベストです。",[34,3724,3725],{},[689,3726,3729],{"href":3727,"rel":3728},"https:\u002F\u002Fwww.rakuten-bank.co.jp\u002F",[693],"楽天銀行",[34,3731,3732],{},"将来的に銀行振り込みで報酬をもらう際も、楽天銀行だと手数料が優遇されます。",{"title":10,"searchDepth":11,"depth":11,"links":3734},[3735],{"id":3701,"depth":11,"text":3702},"affiliate","2021-09-10T01:00:00.000Z","楽天アフィエリエイトで本人確認が取れてないまま報酬が3000円を超えるとどうなりますか？",{},"\u002F20210910000000-3000",{"title":3696,"description":3738},"de33ea552d6718a1301d98d31d4d127d","20210910000000-楽天アフィエリエイトで本人確認が取れてないまま3000超えるとどうなりますか？",[3745],"rakuten-affiliate","BJ07iC-P7Z_NBJLJ4sU_6HdRq81XCOW6FFl64lkidQE",{"id":3748,"title":3749,"author":26,"body":3750,"category":3736,"date":3787,"description":3749,"extension":14,"locale":15,"meta":3788,"navigation":17,"path":3789,"seo":3790,"slug":3791,"stem":3792,"tag":3793,"updated":3787,"__hash__":3794},"legacyQuestions\u002F20210910000000-楽天銀行口座を登録したのに楽天アフィエリエイトの本人確認が未確認のままになる.md","楽天銀行口座を登録したのに楽天アフィエリエイトの本人確認が未確認のままになる",{"type":7,"value":3751,"toc":3784},[3752,3755,3758,3763,3766,3769,3774,3781],[30,3753,3754],{"id":3754},"毎月10日前後に更新されます",[34,3756,3757],{},"楽天アフィリエイトの報酬ページを見ると、",[2539,3759,3760],{},[34,3761,3762],{},"3,000円を超えた成果報酬のお支払いには、成果報酬お支払い月の前月末までにご本人の楽天銀行口座もしくは楽天カードのご登録が必要となります。",[34,3764,3765],{},"と書いてあるため、アフィリエイト報酬が3,000円を超えそうになると、「早く登録済みにならないとマズイ」と焦ってしまいますが、楽天アカウントの「銀行口座」のところに楽天銀行があれば心配しないでも大丈夫です。",[34,3767,3768],{},"実は、楽天アフィリエイトの報酬ページの「登録状況ステータス」は毎月1回、10日頃に更新されるというルールがあるため、楽天アカウントに楽天銀行情報を登録をしてもすぐには反映されないのです。",[2539,3770,3771],{},[34,3772,3773],{},"アフィリエイトレポート内の「アフィリエイトレポート（成果報酬）」のページ下にある「登録状況」は毎月1回、10日頃更新されます。\n（例：1月1日～31日に手続き完了→2月10日にページ反映）",[34,3775,3776],{},[689,3777,3780],{"href":3778,"rel":3779},"https:\u002F\u002Faffiliate.faq.rakuten.net\u002Fdetail\u002F000001087",[693],"楽天銀行口座または楽天カードの登録状況を確認したい ",[34,3782,3783],{},"なんとも不親切な仕組みですが、10日頃になるのを待つようにしましょう。",{"title":10,"searchDepth":11,"depth":11,"links":3785},[3786],{"id":3754,"depth":11,"text":3754},"2021-09-10T02:00:00.000Z",{},"\u002F20210910000000",{"title":3749,"description":3749},"664edacbae1043724e572f8da02f23a0","20210910000000-楽天銀行口座を登録したのに楽天アフィエリエイトの本人確認が未確認のままになる",[3745],"g_NYKUm1gr_esT21BN6GB8ofINkwy8hiLconjNz7vTU",{"id":3796,"title":3797,"author":26,"body":3798,"category":20,"date":3843,"description":3797,"extension":14,"locale":15,"meta":3844,"navigation":17,"path":3845,"seo":3846,"slug":3847,"stem":3848,"tag":3849,"updated":3843,"__hash__":3850},"legacyQuestions\u002F20210928010000-Cockpit CMSを最新版にアップデートする方法は？.md","Cockpit CMSを最新版にアップデートする方法は？",{"type":7,"value":3799,"toc":3840},[3800,3803,3806,3809,3817,3824,3827,3830,3837],[30,3801,3802],{"id":3802},"最新版をダウンロードして上書きするしかありません",[34,3804,3805],{},"Cockpit CMSにはアップデート機能などがないので、Cockpit CMSの最新版をダウンロードしてきて、Cockpit CMSの中身をFTPなどで上書き（configとstorageディレクトリ以外を）するしかありません。",[34,3807,3808],{},"公式でも上書きしろと書いてあります。",[2539,3810,3811,3814],{},[34,3812,3813],{},"Upgrading to a newer version of Cockpit",[34,3815,3816],{},"Download and unzip your desired version of Cockpit\nOverride the whole cockpit directory except the config and the storage folder.\nThat's it!",[34,3818,3819],{},[689,3820,3823],{"href":3821,"rel":3822},"https:\u002F\u002Fgetcockpit.com\u002Fdocumentation\u002Fgetting-started\u002Finstallation",[693],"Installation | Cockpit",[34,3825,3826],{},"Laravelなどのようにcomposerで管理されているわけではないので、composer updateでアップグレードすることはできません。",[34,3828,3829],{},"また、アップデートがあるかどうかを確認するプログラムもないので、Cockpit CMSのレポジトリをチェックするか、Twitter公式アカウントなどをフォローするのが良いでしょう。",[34,3831,3832],{},[689,3833,3836],{"href":3834,"rel":3835},"https:\u002F\u002Ftwitter.com\u002Fgetcockpit",[693],"@getcockpit",[34,3838,3839],{},"意外と知らないうちに大型の機能追加がされることもあるので、Twitterアカウントをフォローしておくのが便利です。",{"title":10,"searchDepth":11,"depth":11,"links":3841},[3842],{"id":3802,"depth":11,"text":3802},"2021-09-28T01:00:00.000Z",{},"\u002F20210928010000-cockpit-cms",{"title":3797,"description":3797},"e6a470501bed94e38e36d3ce376ca0a5","20210928010000-Cockpit CMSを最新版にアップデートする方法は？",[2856],"PbMzSXCFwKI2mmf49m7OSY-arRAzhdo9TF7XXPv9XcI",{"id":3852,"title":3853,"author":26,"body":3854,"category":20,"date":3884,"description":3853,"extension":14,"locale":15,"meta":3885,"navigation":17,"path":3886,"seo":3887,"slug":3888,"stem":3889,"tag":3890,"updated":3884,"__hash__":3891},"legacyQuestions\u002F20211005010000-Cockpit CMSにアップロードした画像が403になる.md","Cockpit CMSにアップロードした画像が403になる",{"type":7,"value":3855,"toc":3881},[3856,3860,3863,3866,3869,3875,3878],[30,3857,3859],{"id":3858},"webサーバー側の問題です","Webサーバー側の問題です。",[34,3861,3862],{},"Cockpit CMSはassetsとしてアップロードした静的ファイルについては、何も処理をしていない（アクセス禁止など）ので、問題があるとしたらサーバー側の問題です。",[34,3864,3865],{},"レンタルサーバーによっては、SPAなどのJavascriptフレームワークからのアクセスをCORS処理していることがあるので、CORSを追加してあげるとアクセスできることがあります。",[34,3867,3868],{},"Apacheなどなら、cockpit CMSの.htaccessファイルのmod_headersの部分に追記すればアクセス可能になるのではないかと思います。",[61,3870,3873],{"className":3871,"code":3872,"language":66},[64],"\u003CIfModule mod_setenvif.c>\n  \u003CIfModule mod_headers.c>\n    SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\\s*,?\\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding\n    RequestHeader append Accept-Encoding \"gzip,deflate\" env=HAVE_Accept-Encoding\n    # ここから\n    \u003CFilesMatch \"\\.(bmp|cur|gif|ico|jpe?g|png|svgz?|webp)$\">\n      Header set Access-Control-Allow-Origin \"*\"\n    \u003C\u002FFilesMatch>\n    # ここを追記\n  \u003C\u002FIfModule>\n\u003C\u002FIfModule>\n",[68,3874,3872],{"__ignoreMap":10},[34,3876,3877],{},"画像ファイルへのアクセスの時だけ、CORSのAccess-Control-Allow-Originを全てにしています。",[34,3879,3880],{},"また、CloudflareなどのCDNを使っている場合は、CDNがアクセスをブロックすることもあるので、そちらも確認しましょう。",{"title":10,"searchDepth":11,"depth":11,"links":3882},[3883],{"id":3858,"depth":11,"text":3859},"2021-10-05T01:00:00.000Z",{},"\u002F20211005010000-cockpit-cms403",{"title":3853,"description":3853},"0195e9b15d85067d3461d9ef757ad357","20211005010000-Cockpit CMSにアップロードした画像が403になる",[2856],"L7L2Ud80iO9TGV4OiTp9OB1P5n2dq099lRutIH2vhXw",{"id":3893,"title":3894,"author":26,"body":3895,"category":20,"date":3941,"description":3894,"extension":14,"locale":15,"meta":3942,"navigation":17,"path":3943,"seo":3944,"slug":3945,"stem":3946,"tag":3947,"updated":3941,"__hash__":3948},"legacyQuestions\u002F20211028000000-Grdisomeでオリジナル設定を追加する方法.md","Grdisomeでオリジナル設定を追加する方法",{"type":7,"value":3896,"toc":3937},[3897,3901,3904,3907,3910,3913,3919,3922,3928,3931],[30,3898,3900],{"id":3899},"gridsomeconfigjsデータをapiloadsourceで読み込めば出来ます","gridsome.config.jsデータをapi.loadSourceで読み込めば出来ます",[34,3902,3903],{},"Gridsomeでは、gridsome.config.jsのデータのうち、フレームワークに取り込む設定が決められているため、そのまま設定を記載しただけでは、Templateからロードが出来ません。",[34,3905,3906],{},"しかし、gridsome.server.jsから呼び出すapi.loadSourceには、metaデータにGridsomeのGraphQLに追加するaddMetadataというメソッドが用意されているため、そちらを使えば追加が可能です。",[30,3908,3909],{"id":3909},"実装方法",[34,3911,3912],{},"まずは、gridsome.config.jsに設定を追加します。ここはただの連想配列なので、好きな値を追加できます。今回は、「settings」という連想配列で追加します。",[61,3914,3917],{"className":3915,"code":3916,"language":66},[64],"\u002F\u002F gridsome.config.js\nmodule.exports = {\n  siteName: 'SiteName',\n  icon: {\n    favicon: '.\u002Fsrc\u002Fassets\u002Ffavicon.png',\n    touchicon: '.\u002Fsrc\u002Fassets\u002Ffavicon.png'\n  },\n  siteUrl: 'https:\u002F\u002Fexample.com',\n  settings: {\n    twitter: \"https:\u002F\u002Ftwitter.com\u002Fxxx\",\n    leftnav: {\n      links: [\n        { path: '\u002Fdocs\u002F', title: 'Docs' }\n      ]\n    }\n  },\n\n",[68,3918,3916],{"__ignoreMap":10},[34,3920,3921],{},"続いて、この設定値をgridsome.server.jsでGridsomeのGraphQLへ挿入します。",[61,3923,3926],{"className":3924,"code":3925,"language":66},[64],"api.loadSource(({ addCollection, addMetadata }) => {\n  addMetadata('settings', require('.\u002Fgridsome.config').settings);\n});\n",[68,3927,3925],{"__ignoreMap":10},[34,3929,3930],{},"追加したデータは、GraphQLで取得可能です。",[61,3932,3935],{"className":3933,"code":3934,"language":66},[64],"\u003Cstatic-query>\nquery Setting {\n  metadata {\n    settings {\n      twitter\n    }\n  }\n}\n\u003C\u002Fstatic-query>\n",[68,3936,3934],{"__ignoreMap":10},{"title":10,"searchDepth":11,"depth":11,"links":3938},[3939,3940],{"id":3899,"depth":11,"text":3900},{"id":3909,"depth":11,"text":3909},"2021-10-29T01:00:00.000Z",{},"\u002F20211028000000-grdisome",{"title":3894,"description":3894},"96dc285beb73d292e6c566b3808db487","20211028000000-Grdisomeでオリジナル設定を追加する方法",[121],"OmlCDN1vE-2BkyFGWoqCTPqcVytm6VcVUJkalDIzRXc",{"id":3950,"title":3951,"author":26,"body":3952,"category":20,"date":4003,"description":3951,"extension":14,"locale":15,"meta":4004,"navigation":17,"path":4005,"seo":4006,"slug":4007,"stem":4008,"tag":4009,"updated":4003,"__hash__":4010},"legacyQuestions\u002F202111110000000-cockpit cmsのデータをバックアップするには？.md","Cockpit CMSのデータをバックアップするにはどうすればいい？",{"type":7,"value":3953,"toc":4000},[3954,3958,3961,3964,3967,3970,3976,3979,3982,3988,3991,3997],[30,3955,3957],{"id":3956},"ディレクトリをバックアップすればokです","ディレクトリをバックアップすればOKです",[34,3959,3960],{},"Cockpit CMSにはバックアップ機能が搭載されていないので、本番のディレクトリからデータの部分だけをバックアップするのが唯一の解決策です。",[34,3962,3963],{},"バックアップするのは、記事データのみなら「\u002Fstorage\u002F」ディレクトリを、設計系もバックアップするなら「\u002Fconfig\u002F」ディレクトリをバックアップします。",[34,3965,3966],{},"自動でバックアップをしたいなら、SCPやLFTPなどのLinuxコマンドでリモートから自動でローカルにバックアップしるスクリプトを組んで、crondで定時実行すればバックアップ漏れも防げて安心です。",[34,3968,3969],{},"SCPは",[61,3971,3974],{"className":3972,"code":3973,"language":66},[64],"scp -r ユーザ名@サーバのホスト名:リモートのstorageのパス ローカルのバス\n",[68,3975,3973],{"__ignoreMap":10},[34,3977,3978],{},"で再起的にディレクトリを取得すればOKです。",[34,3980,3981],{},"LFTPなら、下記のようなlft.datを組んで、",[61,3983,3986],{"className":3984,"code":3985,"language":66},[64],"open -u ID,PASSWORD SEVER\nmirror cockpit-master\u002Fstorage cockpit\u002Fstorage\nmirror cockpit-master\u002Fconfig cockpit\u002Fconfig\necho end\nclose\nquit\n",[68,3987,3985],{"__ignoreMap":10},[34,3989,3990],{},"-fをつけて実行すれば簡単です。",[61,3992,3995],{"className":3993,"code":3994,"language":66},[64],"lftp -f lftp.dat\n",[68,3996,3994],{"__ignoreMap":10},[34,3998,3999],{},"まとめてbackup.shなどのシェルスクリプトにしておくのも良いでしょう。",{"title":10,"searchDepth":11,"depth":11,"links":4001},[4002],{"id":3956,"depth":11,"text":3957},"2021-11-10T00:00:00.000Z",{},"\u002F202111110000000-cockpit-cms",{"title":3951,"description":3951},"4b100b0803d85a763a167f1c8a84d1b0","202111110000000-cockpit cmsのデータをバックアップするには？",[2856],"EoF8ncd3hgh-mDWafblMOL0L54nwYLgS0PoATWAhDxI",{"id":4012,"title":4013,"author":2051,"body":4014,"category":2080,"date":4102,"description":4013,"extension":14,"locale":15,"meta":4103,"navigation":17,"path":4104,"seo":4105,"slug":4106,"stem":4107,"tag":4108,"updated":4102,"__hash__":4109},"legacyQuestions\u002F20220315000000-hackintoshでapple thunderbolt displayを使う方法.md","HackintoshでApple Thunderbolt Displayを使う方法",{"type":7,"value":4015,"toc":4099},[4016,4020,4023,4026,4029,4036,4039,4080,4083,4086,4089,4092],[30,4017,4019],{"id":4018},"純正macに搭載可能なthunderbolt対応dgpuを使うのがベストです","純正Macに搭載可能なThunderbolt対応dGPUを使うのがベストです",[34,4021,4022],{},"Apple Thunderbolt Displayは名前の通り、Thunderboltポートのみに対応する特殊な液晶ディスプレイです。",[34,4024,4025],{},"そもそもThunderboltポートを搭載したdGPUカードが少ない上に、macOSに対応するものとなるとかなり選択肢が減りますが、Hackintoshで使うのであれば相性の問題もあるので、純正Macに搭載されていた、もしくは公式に搭載可能なdGPUを選ぶのが無難ではないでしょうか。",[34,4027,4028],{},"純正MacでdGPUを搭載可能なのはMac Proのみなので、Mac Proに搭載されていた純正dGPUかつMetalグラフィックドライバに対応したdGPUを選ぶことになります。",[34,4030,4031],{},[689,4032,4035],{"href":4033,"rel":4034},"https:\u002F\u002Fsupport.apple.com\u002Fja-jp\u002FHT208898",[693],"Mac Pro (Mid 2010) および Mac Pro (Mid 2012) に macOS 10.14 Mojave をインストールする Apple",[34,4037,4038],{},"上記のApple公式のサポート情報によると、",[38,4040,4041,4044,4047,4050,4053,4056,4059,4062,4065,4068,4071,4074,4077],{},[41,4042,4043],{},"MSI Gaming Radeon RX 560 128-bit 4GB GDRR5",[41,4045,4046],{},"SAPPHIRE Radeon PULSE RX 580 8GB GDDR5",[41,4048,4049],{},"SAPPHIRE Radeon HD 7950 Mac Edition",[41,4051,4052],{},"NVIDIA Quadro K5000 for Mac",[41,4054,4055],{},"NVIDIA GeForce GTX 680 Mac Edition",[41,4057,4058],{},"AMD Radeon RX 560",[41,4060,4061],{},"AMD Radeon RX 570",[41,4063,4064],{},"AMD Radeon RX 580",[41,4066,4067],{},"AMD Radeon Pro WX 7100",[41,4069,4070],{},"AMD Radeon RX Vega 56",[41,4072,4073],{},"AMD Radeon RX Vega 64",[41,4075,4076],{},"AMD Radeon Pro WX 9100",[41,4078,4079],{},"AMD Radeon Frontier Edition",[34,4081,4082],{},"が公式対応dGPUです。",[34,4084,4085],{},"このうち、Apple Thunderbolt DisplayからはThunderboltのオスが生えているので、Thunderboltポートのメスが生えているので、ThunderboltのメスポートがあるdGPUを選ぶ必要があります。この時点でほとんど選択肢はないと言っても良いかもしれません。",[34,4087,4088],{},"なお、Apple Thunderbolt DisplayはMini DisplayPortとしては動作しない仕様で、mini Displayport端子があるdGPUというだけでは動作しないようです。",[34,4090,4091],{},"「Apple Thunderbolt Displayが映らない」という場合は、mini Displayportに繋いでいる場合があるかもしれません。",[34,4093,4094],{},[689,4095,4098],{"href":4096,"rel":4097},"http:\u002F\u002Fdirect.pc-physics.com\u002Fdisplay\u002Fthunderbolt-display-mini-displayPort-cable.html",[693],"Thunderbolt DisplayでMini DisplayPortケーブルは使えるのか",{"title":10,"searchDepth":11,"depth":11,"links":4100},[4101],{"id":4018,"depth":11,"text":4019},"2022-03-15T01:00:00.000Z",{},"\u002F20220315000000-hackintoshapple-thunderbolt-display",{"title":4013,"description":4013},"0284fe0cb29311b77628e282810eb00a","20220315000000-hackintoshでapple thunderbolt displayを使う方法",[2087],"a6QILvrsUamVMiaxyH7SUEslFhf6UAr7MAhG6RqzI5k",[4111,4133,4167,4193,4366,4494,4524],{"id":4112,"title":4113,"author":26,"body":4114,"category":20,"date":13,"description":4113,"extension":14,"images":4122,"locale":15,"meta":4126,"navigation":17,"path":4127,"seo":4128,"slug":4129,"stem":4130,"tag":4131,"updated":13,"__hash__":4132},"legacyGuides\u002F20210401000000-Cloudflareで始めるサーバーレス.md","Cloudflareで始めるサーバーレス",{"type":7,"value":4115,"toc":4119},[4116],[30,4117,4113],{"id":4118},"cloudflareで始めるサーバーレス",{"title":10,"searchDepth":11,"depth":11,"links":4120},[4121],{"id":4118,"depth":11,"text":4113},{"author":26,"height":4123,"src":4124,"width":4125},500,"\u002Fimgs\u002Fcategories\u002Fsite-content-th.png",1400,{},"\u002F20210401000000-cloudflare",{"title":4113,"description":4113},"bd1c9e03beaa737dcfe744ea4d1e1cce","20210401000000-Cloudflareで始めるサーバーレス",[1817,1957],"7AQUzPwsBV3_WAQ3ZjBVjbvR3pyV2oT3A0cZnHt1mmQ",{"id":4134,"title":4135,"author":26,"body":4136,"category":20,"date":13,"description":4159,"extension":14,"images":4160,"locale":15,"meta":4161,"navigation":17,"path":163,"seo":4162,"slug":4163,"stem":4164,"tag":4165,"updated":13,"__hash__":4166},"legacyGuides\u002F20210401000000-ゼロから始めるGridsomeスターターガイド.md","ゼロから始めるGridsomeスターターガイド",{"type":7,"value":4137,"toc":4155},[4138,4142,4145,4148,4151],[30,4139,4141],{"id":4140},"gridsomeについて","Gridsomeについて",[34,4143,4144],{},"GridsomeはVue.jsベースの静的サイト・ジェネレータです。",[34,4146,4147],{},"Vue.jsベースなので、Vue.jsの知見が利用できるほか、npmでのプラグインのインストールも可能です。",[34,4149,4150],{},"また、デプロイ時に静的サイトとしてHTMLファイルを生成するので、SSR（サーバー・サイド・レンダリング）が不要というメリットもあります。",[30,4152,4154],{"id":4153},"gridsomeの導入","Gridsomeの導入",{"title":10,"searchDepth":11,"depth":11,"links":4156},[4157,4158],{"id":4140,"depth":11,"text":4141},{"id":4153,"depth":11,"text":4154},"これから静的サイトを始める方に向けたGridsomeのスターターガイド。",{"author":26,"height":4123,"src":4124,"width":4125},{},{"title":4135,"description":4159},"f01abcbf1f45750821568f84a2f5afff","20210401000000-ゼロから始めるGridsomeスターターガイド",[121],"ZTwQr4XQbq52JzDCrWMqjln6mWpCdDqfoXsg1ajt5n4",{"id":4168,"title":4169,"author":2051,"body":4170,"category":2080,"date":13,"description":4184,"extension":14,"images":4185,"locale":15,"meta":4186,"navigation":17,"path":4187,"seo":4188,"slug":4189,"stem":4190,"tag":4191,"updated":13,"__hash__":4192},"legacyGuides\u002F20210409000000-Hackintosh私的ガイド.md","Hackintosh私的ガイド",{"type":7,"value":4171,"toc":4180},[4172,4176],[30,4173,4175],{"id":4174},"hackintoshについて","Hackintoshについて",[30,4177,4179],{"id":4178},"hackintosh用パーツの選定","Hackintosh用パーツの選定",{"title":10,"searchDepth":11,"depth":11,"links":4181},[4182,4183],{"id":4174,"depth":11,"text":4175},{"id":4178,"depth":11,"text":4179},"Hackintosh私的ガイドです。",{"author":2051,"height":4123,"src":4124,"width":4125},{},"\u002F20210409000000-hackintosh",{"title":4169,"description":4184},"df19ef5349dabf9d7a5cc1445d3a7272","20210409000000-Hackintosh私的ガイド",[2087],"i_qGaCVmlIUtxh7qCmFkt8FGUdvQk6q05KqumBkUtvk",{"id":4194,"title":4195,"author":2051,"body":4196,"category":2080,"date":4356,"description":4357,"extension":14,"images":4358,"locale":15,"meta":4359,"navigation":17,"path":4360,"seo":4361,"slug":4362,"stem":4363,"tag":4364,"updated":4356,"__hash__":4365},"legacyGuides\u002F20210426000000-5万円未満で作るHackintoshガイド.md","新品5万円未満で作る格安Hackintoshガイド（パーツ選び編）",{"type":7,"value":4197,"toc":4343},[4198,4200,4203,4206,4226,4229,4232,4235,4258,4261,4264,4268,4272,4275,4278,4281,4285,4288,4291,4294,4297,4300,4304,4307,4310,4313,4317,4320,4323,4327,4330,4333,4337,4340],[30,4199,4179],{"id":4178},[189,4201,4202],{"id":4202},"各パーツの価格を1万円未満に抑えよう",[34,4204,4205],{},"Hackintoshに限らず、自作PCを組もうと思ったら、",[38,4207,4208,4211,4214,4217,4220,4223],{},[41,4209,4210],{},"CPU",[41,4212,4213],{},"メモリ",[41,4215,4216],{},"マザーボード",[41,4218,4219],{},"ストレージ",[41,4221,4222],{},"電源",[41,4224,4225],{},"PCケース",[34,4227,4228],{},"が最低限必要です。Hackintoshではグラフィック関連が鬼門だったりするので、dGPUもあると安心です。",[34,4230,4231],{},"そう考えると、5万円未満でHackintoshを組むのであれば、各パーツの予算はそれぞれ1万円未満というのを心がけておくと良いかと思います。",[34,4233,4234],{},"個人的には、",[38,4236,4237,4240,4243,4246,4249,4252,4255],{},[41,4238,4239],{},"CPU => 1.5万",[41,4241,4242],{},"メモリ => 0.5万",[41,4244,4245],{},"マザーボード => 0.5万",[41,4247,4248],{},"dGPU => 0.5万",[41,4250,4251],{},"ストレージ => 0.5万",[41,4253,4254],{},"電源 => 1万",[41,4256,4257],{},"PCケース => 0.5万",[34,4259,4260],{},"で、トータル5万円というバランスかと思います。",[34,4262,4263],{},"実際に組んでみると、メモリを追加したいとか、WifiやBluetoothが欲しいとか、CPUクーラーを交換したいとか色々欲が出てくるので、そうした追加パーツコストも考えるとCPUも1万円くらいに抑えておくと安心です。",[30,4265,4267],{"id":4266},"hackintoshを5万円で組む時のオススメパーツ","Hackintoshを5万円で組む時のオススメパーツ",[189,4269,4271],{"id":4270},"cpuはintelのfシリーズ","CPUはIntelのFシリーズ",[34,4273,4274],{},"自作PCのメインとなるCPUですが、dGPUを使うのであればiGPUを非搭載CPUにすると、CPUの購入コストを数千円抑えることができます。Intel CPUならFシリーズ、AMDならRyzenのGシリーズではないモデルがiGPU非搭載モデルです。",[34,4276,4277],{},"中でもHackintoshの情報が多く、実機のMacでも採用されているIntel CPUのFシリーズがオススメ。低コストならCore i3 10100F、パワーが欲しいなら5万円という予算を少しオーバーする可能性がありますが、Core i5 10400Fが良いでしょう。",[34,4279,4280],{},"iGPUを搭載するCPUを選択すると、dGPUを追加するコストが増えるため、実質CPUで減ったコストと相殺くらいになってしまうこともありますが、それでもHackintoshの難関ポイントであるグラフィック問題を解決できるなら安いものです。",[189,4282,4284],{"id":4283},"マザーボードはasusasrockあたりが無難","マザーボードはASUS、AsRockあたりが無難",[34,4286,4287],{},"現行のIntel 11世代対応マザーボードなどは、メーカーごとにトラブルになるようなポイントはそこまで無いようですが、Hackintoshと相性が良いとされるASUS、AsRockのマザーボードを選ぶのが無難です。",[34,4289,4290],{},"マザーボードでも、特殊なパーツ（Wifi、Bluetoothなど）がついているモデルは相性が悪いケースもあるようなので、ネットでHackintoshの実績がある製品を選ぶと良いでしょう。",[34,4292,4293],{},"ネットで事例を探していると、どうしてもハイエンドなマザーボードの実例が多く出てきますが、根気よく探せばローエンドマザーボードでも実績はたくさんあります。",[34,4295,4296],{},"マザーボードのフォームファクタは好きなものを選べば良いと思いますが、汎用性が高いのはmicroATXです。ATXだと大きすぎることがありますし、ITXだと拡張性が足りなくなることがあります。",[34,4298,4299],{},"その意味では、micro ATXならITXほどではないにしても、省スペースPCケースもありますし、ATXケースにも入るので「使い回しがしやすい」というメリットがあります。",[189,4301,4303],{"id":4302},"dgpuはほぼgt-710一択","dGPUはほぼGT 710一択",[34,4305,4306],{},"dGPUは、macOSの標準ドライバで動くKepler世代で新品で入手できるGT 710がコスパも高くオススメです。MSIやASUSなどのパーツメーカー製品で6,000円台、最安の玄人志向のモデルであれば3,000円台で入手可能です。",[34,4308,4309],{},"筆者も玄人思考のGT 710ファンレスモデルをメインHackintoshで使っていますが、特別設定をしないでも安定して動作しています。",[34,4311,4312],{},"GT 710以外のdGPUでも問題ないですが、5万円という限られた予算だと、新品で入手可能なdGPUでHackintoshで動作する製品はほとんどないと思います。",[189,4314,4316],{"id":4315},"atx電源は安心できる有名メーカーのものを","ATX電源は安心できる有名メーカーのものを",[34,4318,4319],{},"ATX電源は安いものは3,000円未満、高いものは数万円とピンキリな世界ですが、値段よりもメーカーで選ぶと良いでしょう。ATX電源の故障は、CPUやメモリなどシステム全てを故障させるリスクがあるので、出来れば数千円の安いモデルは避けた方が無難です。",[34,4321,4322],{},"各メーカー、1万円くらいのATX電源が普及モデルとして安定動作することが多いので、CORSAIRやSilverstoneなどの有名メーカーのATX電源を選ぶと良いでしょう。電力は500Wほどくらいあれば今回の構成であれば十分です。",[189,4324,4326],{"id":4325},"メモリはどのメーカーでもok","メモリはどのメーカーでもOK",[34,4328,4329],{},"メモリに関しては昔ほど相性問題も起こりませんし、ヨドバシカメラやソフマップなどの大手店舗が取り扱っているメモリであれば、どのメーカーでも問題はないでしょう。",[34,4331,4332],{},"注意したいのは、中古やフリマアプリなどで流通しているメモリの中には詐欺メモリが紛れているという点です。その意味では、信頼できる店舗から買うのが最大のリスク回避になります。",[189,4334,4336],{"id":4335},"pcケースはなるべく安く","PCケースはなるべく安く",[34,4338,4339],{},"PCケースは見た目を決めるものなので、高くて見た目の良いものを選びたくなりますが、5万円という予算の範囲で考えたら、安いものを選んで他のパーツにお金をかけた方が良いです。最近では5,000円未満のケースでも、見た目の良いPCケースはたくさんあります。",[34,4341,4342],{},"PCケースは使っているうちに飽きて新しいものを新調したくなりますが、マザーボードやメモリなどのパーツは長く使うものなので、最初から良いものを買っておくのがベスト。その意味でも、最初はケースをケチって他のパーツに予算を回す方が良いです。",{"title":10,"searchDepth":11,"depth":11,"links":4344},[4345,4348],{"id":4178,"depth":11,"text":4179,"children":4346},[4347],{"id":4202,"depth":241,"text":4202},{"id":4266,"depth":11,"text":4267,"children":4349},[4350,4351,4352,4353,4354,4355],{"id":4270,"depth":241,"text":4271},{"id":4283,"depth":241,"text":4284},{"id":4302,"depth":241,"text":4303},{"id":4315,"depth":241,"text":4316},{"id":4325,"depth":241,"text":4326},{"id":4335,"depth":241,"text":4336},"2021-04-23T00:00:00.000Z","新品5万円未満で作る格安Hackintoshガイドのパーツ選び編です。手頃な価格で新品のHackitnoshを組む時のパーツを選び方のポイントをまとめました。",{"author":2051,"height":4123,"src":4124,"width":4125},{},"\u002F20210426000000-5yenhackintosh",{"title":4195,"description":4357},"6e4c5fd56c0447714b98971cafe8f9d0","20210426000000-5万円未満で作るHackintoshガイド",[2087],"R57YKPM5a41-RFVT5aUudhCV5r_9erVEr5r3lXZe1Aw",{"id":4367,"title":4368,"author":2051,"body":4369,"category":2080,"date":4485,"description":4486,"extension":14,"images":4487,"locale":15,"meta":4488,"navigation":17,"path":4360,"seo":4489,"slug":4490,"stem":4491,"tag":4492,"updated":4485,"__hash__":4493},"legacyGuides\u002F20210426000000-5万円未満で作るHackintoshガイド・セットアップ編.md","5万円未満で作るHackintoshガイド(セットアップ編)",{"type":7,"value":4370,"toc":4477},[4371,4374,4378,4381,4392,4395,4398,4401,4404,4407,4426,4429,4432,4435,4438,4441,4444,4448,4451,4454,4462,4465,4468,4471,4474],[30,4372,4373],{"id":4373},"必要なものを揃えよう",[189,4375,4377],{"id":4376},"hackintoshのセットアップに必要なもの","Hackintoshのセットアップに必要なもの",[34,4379,4380],{},"まず最初に、Hackintoshのセットアップに必要なものを揃えます。",[38,4382,4383,4386,4389],{},[41,4384,4385],{},"Mac実機",[41,4387,4388],{},"インターネット回線",[41,4390,4391],{},"16GB以上のUSBメモリ",[34,4393,4394],{},"macOSのデータを取得するのに、Macの実機が必要です。実機は古い機種でも構いませんが、インストールしたいmacOSのバージョンに対応している機種である必要があります。例えば、macOS Big Surをインストールするなら、Big Sur対応MacでないとBig Surがダウンロードできません。",[34,4396,4397],{},"裏技的にmacOSをAppleのサーバーから直接ダウンロードする方法もありますが、ライセンス的にはグレーです（Hackintosh自体がグレーですが）。",[34,4399,4400],{},"インストールUSBはmacOSが入る16GB以上のUSBメモリを用意しましょう。",[189,4402,4403],{"id":4403},"ダウンロードしておきたいデータ",[34,4405,4406],{},"基本的なものが用意できたら、",[38,4408,4409,4416,4419],{},[41,4410,4411],{},[689,4412,4415],{"href":4413,"rel":4414},"https:\u002F\u002Fdortania.github.io\u002FOpenCore-Install-Guide\u002Finstaller-guide\u002Fopencore-efi.html",[693],"Open Core",[41,4417,4418],{},"kextなどのEFIフォルダに入れるプラグイン",[41,4420,4421],{},[689,4422,4425],{"href":4423,"rel":4424},"https:\u002F\u002Fgithub.com\u002Fcorpnewt\u002FGenSMBIOS",[693],"GenSMBIOS",[34,4427,4428],{},"をダウンロードしてきます。",[34,4430,4431],{},"それぞれの使い方は長くなるので省略しますが、基本的には「kextなどのEFIフォルダに入れるプラグイン」だけが難関で、それ以外は特段難しいことはありません。",[189,4433,4434],{"id":4434},"必要なkextや設定の探し方",[34,4436,4437],{},"今回は自作デスクトップPC前提なので、Open Coreのガイドに沿って進めていけば、必要なkextは探せるかと思います。ただ、英文かつ長いので、サクッとセットアップしたいという方は、Githubに上がっているEFIフォルダのデータを使うのが最短コースです。（そもそもパーツを集める段階で合わせておくのがベストです）",[34,4439,4440],{},"どのkextを使うかは基本的にはマザーボードの機種に依存するので、全く同じマザーボードのEFIデータがあれば万全です。同じ機種のEFIデータがなくても、構成が近い（マザーボードのチップセットが同じなど）であれば、動くことが多いでしょう。",[34,4442,4443],{},"Open Coreは、起動ログをUSBメモリに保存してくれるので、エラーが起こったらエラーログを確認してネットでエラーの原因を探ります。",[30,4445,4447],{"id":4446},"macosをhackintoshにインストールする際のポイント","macOSをHackintoshにインストールする際のポイント",[34,4449,4450],{},"作成したUSBインストーラーでmacOSのセットアップまで進めれば、基本的には半分くらいはゴールしているようなものです。問題となるのは、「インストーラーが進まない（起動しない）」ということだけで、そこをクリアできていればmacOSのインストールまでは問題ないでしょう。",[34,4452,4453],{},"macOSのインストールができたら、",[38,4455,4456,4459],{},[41,4457,4458],{},"EFIフォルダをコピーするまでは、USBインストーラーから起動すること",[41,4460,4461],{},"macOSを立ち上げたら各機能が使えるかチェック",[34,4463,4464],{},"をします。",[34,4466,4467],{},"問題がある場合は、一度セットアップが終わっている環境なら、一からインストールをやり直さなくてもUSBインストーラー側のEFIをカスタマイズしてUSBインストーラーからシステムを起動すれば設定やkextのテストができます。",[34,4469,4470],{},"実際にHackintoshを立ち上げてみると、Wifiが使えない、サウンドが出ないなど問題があることがありますが、時間がなくてサクッとHackintosh組みたいなら、USB機器かBluetoothドングルとBluetooth機器の組み合わせで対処する方が断然楽です。",[34,4472,4473],{},"というのも、起動が出来ているHackintoshでUSBポートが認識しないということはほとんどないので、USB・Bluetooth機器を使えば、普通にMacでUSB・Bluetooth機器を使っているのと同じなのでHackintosh的な対処が不要だからです。",[34,4475,4476],{},"時間がある方は、マザーボードの機能を最大限活用するために色々テストすれば良いですが、「とりあえず動くHackintoshが欲しい」ということなら、USBやBluetoothで対処するのも個人的には悪いことではないと思います。",{"title":10,"searchDepth":11,"depth":11,"links":4478},[4479,4484],{"id":4373,"depth":11,"text":4373,"children":4480},[4481,4482,4483],{"id":4376,"depth":241,"text":4377},{"id":4403,"depth":241,"text":4403},{"id":4434,"depth":241,"text":4434},{"id":4446,"depth":11,"text":4447},"2021-04-23T01:00:00.000Z","5万円未満で作るHackintoshガイド・セットアップ編です。インストールするために必要なものや、実際にセットアップした際のトラブルの解決方法などをまとめました。",{"author":2051,"height":4123,"src":4124,"width":4125},{},{"title":4368,"description":4486},"537a369d80da44b3cd1d13bcb3ba31b1","20210426000000-5万円未満で作るHackintoshガイド・セットアップ編",[2087],"gCglO8ipKj0Orn59qEroiN5fJYS0vD0oUbYqL7VrEHA",{"id":4495,"title":4496,"author":26,"body":4497,"category":20,"date":4515,"description":4516,"extension":14,"images":4517,"locale":15,"meta":4518,"navigation":17,"path":2851,"seo":4519,"slug":4520,"stem":4521,"tag":4522,"updated":4515,"__hash__":4523},"legacyGuides\u002F20210825000000-Cockpit CMS非公式ガイド.md","Cockpit CMS非公式ガイド",{"type":7,"value":4498,"toc":4512},[4499,4503,4506,4509],[30,4500,4502],{"id":4501},"cockpit-cmsについて","Cockpit CMSについて",[34,4504,4505],{},"Cockpit CMSはPHPで動作するヘッドレスCMSです。",[34,4507,4508],{},"WordPressのようにフロント（表示）機能がなく、単純にコンテンツを管理することに特化しています。",[34,4510,4511],{},"Cockpit CMSはオープソースなので、誰でも無料で使うことができますが、動作させるためにはWebサーバーが必要です。",{"title":10,"searchDepth":11,"depth":11,"links":4513},[4514],{"id":4501,"depth":11,"text":4502},"2021-08-25T00:00:00.000Z","Cockpit CMSの非公式ガイドです。",{"author":26,"height":4123,"src":4124,"width":4125},{},{"title":4496,"description":4516},"d70876b201cf77dbe0cde160760dc029","20210825000000-Cockpit CMS非公式ガイド",[2856],"PT8t-W9FmffLHa2vu-LdzZsscYyxJYfmqqBCC5AKSUw",{"id":4525,"title":4526,"author":26,"body":4527,"category":3736,"date":4531,"description":4532,"extension":14,"images":4533,"locale":15,"meta":4534,"navigation":17,"path":3789,"seo":4535,"slug":4536,"stem":4537,"tag":4538,"updated":4531,"__hash__":4539},"legacyGuides\u002F20210910000000-楽天アフィリエイト私的ガイド.md","楽天アフィリエイト私的ガイド",{"type":7,"value":4528,"toc":4529},[],{"title":10,"searchDepth":11,"depth":11,"links":4530},[],"2021-09-10T00:00:00.000Z","楽天アフィリエイト私的ガイドです。",{"author":26,"height":4123,"src":4124,"width":4125},{},{"title":4526,"description":4532},"603e271408b84613c454d532af595caf","20210910000000-楽天アフィリエイト私的ガイド",[3745],"5zwalgqBTRmV1Yrlk3kel2mEDICrc-wK_5Bwg7rQ0Og",1783320302630]