{"id":10779,"date":"2023-06-15T09:34:30","date_gmt":"2023-06-15T00:34:30","guid":{"rendered":"https:\/\/www.moonmile.net\/blog\/?p=10779"},"modified":"2023-06-15T09:34:30","modified_gmt":"2023-06-15T00:34:30","slug":"vue2-%e3%81%8b%e3%82%89-vue3-%e3%81%b8%e7%a7%bb%e8%a1%8c%e3%81%99%e3%82%8b-%e3%83%9c%e3%82%bf%e3%83%b3%e3%82%a4%e3%83%99%e3%83%b3%e3%83%88%e7%b7%a8","status":"publish","type":"post","link":"https:\/\/www.moonmile.net\/blog\/archives\/10779","title":{"rendered":"Vue2 \u304b\u3089 Vue3 \u3078\u79fb\u884c\u3059\u308b \u30dc\u30bf\u30f3\u30a4\u30d9\u30f3\u30c8\u7de8"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u524d\u56de\u306e\u7d9a\u304d<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.moonmile.net\/blog\/wp-content\/uploads\/2023\/06\/image-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"728\" height=\"870\" src=\"https:\/\/www.moonmile.net\/blog\/wp-content\/uploads\/2023\/06\/image-1.png\" alt=\"\" class=\"wp-image-10780\" srcset=\"https:\/\/www.moonmile.net\/blog\/wp-content\/uploads\/2023\/06\/image-1.png 728w, https:\/\/www.moonmile.net\/blog\/wp-content\/uploads\/2023\/06\/image-1-251x300.png 251w\" sizes=\"auto, (max-width: 728px) 100vw, 728px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u3093\u306a\u98a8\u306b CRUD \u6a5f\u80fd\u304c\u4ed8\u3044\u305f\u753b\u9762\u3092 Vue2 \u304b\u3089 Vue3 \u3078\u79fb\u690d\u3057\u3066\u307f\u308b\uff08\u5b9f\u8cea\u7684\u306b\u306f Vue3 \u304b\u3089 Vue2 \u5f62\u5f0f\u3092\u66f8\u304d\u8d77\u3053\u3057\u3066\u3044\u308b\uff09\u3002\u901a\u5e38\u306a\u3089\u3070\u3001\u4e0a\u90e8\u306e\u30ea\u30b9\u30c8\u90e8\u5206\u3068\u304b\u3001\u4e0b\u90e8\u306e\u7de8\u96c6\u9805\u76ee\u306e\u3068\u3053\u308d\u3092 Vue \u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u5316\u3059\u308b\u3068\u3053\u308d\u306a\u306e\u3060\u304c\u3001\u305d\u306e\u524d\u6bb5\u968e\u3068\u3057\u3066\u3001\uff11\u679a\u306e\u30d9\u30bf\u306e *.vue \u30d5\u30a1\u30a4\u30eb\u306b\u66f8\u304d\u8d77\u3053\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">template \u90e8\u5206<\/h2>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>template&gt;\n    &lt;div&gt;\n        &lt;h1&gt;Mos Main by vue2&lt;\/h1&gt;\n        &lt;div&gt;\n            &lt;ul&gt;\n            &lt;li v-for=&quot;it in items&quot; :key=&quot;it.id&quot;&gt;\n                    {{ it.id }} : &lt;a @click=&quot;onClickItem(it)&quot;&gt;{{ it.title }}&lt;\/a&gt;\n                &lt;\/li&gt; \n            &lt;\/ul&gt;\n        &lt;\/div&gt;\n        &lt;hr \/&gt;\n        &lt;button @click=&quot;onClickCreateItem&quot; class=&quot;btn btn-primary&quot;&gt;\u65b0\u898f\u4f5c\u6210&lt;\/button&gt;\u3000  \n        &lt;button @click=&quot;onClickUpdateItem&quot; class=&quot;btn btn-secondary&quot;&gt;\u66f4\u65b0&lt;\/button&gt;\u3000\n        &lt;button @click=&quot;onClickDeleteItem&quot; class=&quot;btn btn-danger&quot;&gt;\u524a\u9664&lt;\/button&gt;\n        &lt;hr \/&gt;\n        &lt;div&gt;\n        &lt;!-- \u30ab\u30c6\u30b4\u30ea\u60c5\u5831\u3092\u8868\u793a --&gt;\n            &lt;div v-if=&quot;mode == 0&quot;&gt;\n                &lt;table class=&quot;table&quot;&gt;\n                    &lt;thead&gt;\n                        &lt;tr&gt;\n                            &lt;th&gt;\u9805\u76ee&lt;\/th&gt;\n                            &lt;th&gt;\u5024&lt;\/th&gt;\n                        &lt;\/tr&gt;\n                    &lt;\/thead&gt;\n                    &lt;tbody&gt;\n                        &lt;tr&gt;\n                            &lt;td&gt;id: &lt;\/td&gt;&lt;td&gt;{{  cur.id }}&lt;\/td&gt;\n                        &lt;\/tr&gt;\n                        &lt;tr&gt;\n                            &lt;td&gt;title: &lt;\/td&gt;&lt;td&gt;{{  cur.title }}&lt;\/td&gt;\n                        &lt;\/tr&gt;\n                        &lt;tr&gt;\n                            &lt;td&gt;image: &lt;\/td&gt;&lt;td&gt;{{  cur.image }}&lt;\/td&gt;\n                        &lt;\/tr&gt;\n                        &lt;tr&gt;\n                            &lt;td&gt;\u4f5c\u6210\u65e5\u6642: &lt;\/td&gt;&lt;td&gt;{{  cur.created_at }}&lt;\/td&gt;\n                        &lt;\/tr&gt;\n                        &lt;tr&gt;\n                            &lt;td&gt;\u66f4\u65b0\u65e5\u6642: &lt;\/td&gt;&lt;td&gt;{{  cur.updated_at }}&lt;\/td&gt;\n                        &lt;\/tr&gt;\n                    &lt;\/tbody&gt;\n                &lt;\/table&gt;\n            &lt;\/div&gt;\n            &lt;div v-if=&quot;mode == 1&quot;&gt;\n                &lt;div&gt;\u65b0\u898f\u4f5c\u6210\u306e\u30e2\u30fc\u30c9&lt;\/div&gt;\n                &lt;table class=&quot;table&quot;&gt;\n                    &lt;thead&gt;\n                        &lt;tr&gt;\n                            &lt;th&gt;\u9805\u76ee&lt;\/th&gt;\n                            &lt;th&gt;\u5024&lt;\/th&gt;\n                        &lt;\/tr&gt;\n                    &lt;\/thead&gt;\n                    &lt;tbody&gt;\n                    &lt;tr&gt;\n                        &lt;td&gt;title: &lt;\/td&gt;\n                        &lt;td&gt;&lt;input v-model=&quot;cur.title&quot; placeholder=&quot;\u30bf\u30a4\u30c8\u30eb&quot; \/&gt;&lt;\/td&gt;\n                    &lt;\/tr&gt;\n                    &lt;tr&gt;\n                        &lt;td&gt;image: &lt;\/td&gt;\n                        &lt;td&gt;&lt;input v-model=&quot;cur.image&quot; placeholder=&quot;\u753b\u50cf&quot; \/&gt;&lt;\/td&gt;\n                    &lt;\/tr&gt;\n                &lt;\/tbody&gt;\n                &lt;\/table&gt;\n                &lt;button @click=&quot;onClickCommit&quot; class=&quot;btn btn-primary&quot;&gt;\u767b\u9332&lt;\/button&gt;\u3000\n                &lt;button @click=&quot;onClickClear&quot; class=&quot;btn btn-secondary&quot;&gt;\u30af\u30ea\u30a2&lt;\/button&gt;\n            &lt;\/div&gt;\n            &lt;div v-if=&quot;mode == 2&quot;&gt;\n                &lt;div&gt;\u66f4\u65b0\u306e\u30e2\u30fc\u30c9&lt;\/div&gt;\n                &lt;table class=&quot;table&quot;&gt;\n                    &lt;thead&gt;\n                        &lt;tr&gt;\n                            &lt;th&gt;\u9805\u76ee&lt;\/th&gt;\n                            &lt;th&gt;\u5024&lt;\/th&gt;\n                        &lt;\/tr&gt;\n                    &lt;\/thead&gt;\n                    &lt;tbody&gt;\n                        &lt;tr&gt;\n                            &lt;td&gt;id: &lt;\/td&gt;\n                            &lt;td&gt;{{  cur.id }}&lt;\/td&gt;\n                        &lt;\/tr&gt;\n                        &lt;tr&gt;\n                            &lt;td&gt;title: &lt;\/td&gt;\n                            &lt;td&gt;&lt;input v-model=&quot;cur.title&quot; placeholder=&quot;\u30bf\u30a4\u30c8\u30eb&quot; \/&gt;&lt;\/td&gt;\n                        &lt;\/tr&gt;\n                        &lt;tr&gt;\n                            &lt;td&gt;image: &lt;\/td&gt;\n                            &lt;td&gt;&lt;input v-model=&quot;cur.image&quot; placeholder=&quot;\u753b\u50cf&quot; \/&gt;&lt;\/td&gt;\n                        &lt;\/tr&gt;\n                        &lt;tr&gt;\n                            &lt;td&gt;\u4f5c\u6210\u65e5\u6642: &lt;\/td&gt;&lt;td&gt;{{  cur.created_at }}&lt;\/td&gt;\n                        &lt;\/tr&gt;\n                        &lt;tr&gt;\n                            &lt;td&gt;\u66f4\u65b0\u65e5\u6642: &lt;\/td&gt;&lt;td&gt;{{  cur.updated_at }}&lt;\/td&gt;\n                        &lt;\/tr&gt;\n                    &lt;\/tbody&gt;\n                &lt;\/table&gt;\n                &lt;button @click=&quot;onClickCommit&quot; class=&quot;btn btn-primary&quot;&gt;\u767b\u9332&lt;\/button&gt;\u3000\n                &lt;button @click=&quot;onClickClear&quot; class=&quot;btn btn-secondary&quot;&gt;\u623b\u3059&lt;\/button&gt;\n            &lt;\/div&gt;\n            &lt;div v-if=&quot;mode == 3&quot;&gt;\n                &lt;div&gt;\u524a\u9664\u306e\u30e2\u30fc\u30c9&lt;\/div&gt;\n                &lt;table class=&quot;table&quot;&gt;\n                    &lt;thead&gt;\n                        &lt;tr&gt;\n                            &lt;th&gt;\u9805\u76ee&lt;\/th&gt;\n                            &lt;th&gt;\u5024&lt;\/th&gt;\n                        &lt;\/tr&gt;\n                    &lt;\/thead&gt;\n                    &lt;tbody&gt;\n                        &lt;tr&gt;\n                            &lt;td&gt;id: &lt;\/td&gt;&lt;td&gt;{{  cur.id }}&lt;\/td&gt;\n                        &lt;\/tr&gt;\n                        &lt;tr&gt;\n                            &lt;td&gt;title: &lt;\/td&gt;&lt;td&gt;{{  cur.title }}&lt;\/td&gt;\n                        &lt;\/tr&gt;\n                        &lt;tr&gt;\n                            &lt;td&gt;image: &lt;\/td&gt;&lt;td&gt;{{  cur.image }}&lt;\/td&gt;\n                        &lt;\/tr&gt;\n                        &lt;tr&gt;\n                            &lt;td&gt;\u4f5c\u6210\u65e5\u6642: &lt;\/td&gt;&lt;td&gt;{{  cur.created_at }}&lt;\/td&gt;\n                        &lt;\/tr&gt;\n                        &lt;tr&gt;\n                            &lt;td&gt;\u66f4\u65b0\u65e5\u6642: &lt;\/td&gt;&lt;td&gt;{{  cur.updated_at }}&lt;\/td&gt;\n                        &lt;\/tr&gt;\n                    &lt;\/tbody&gt;\n                &lt;\/table&gt;\n                &lt;button @click=&quot;onClickDelete&quot; class=&quot;btn btn-danger&quot;&gt;\u524a\u9664\u3059\u308b&lt;\/button&gt;\u3000\n            &lt;\/div&gt;\n        &lt;\/div&gt;\n    &lt;\/div&gt;\n&lt;\/template&gt;<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u30ea\u30b9\u30c8\u306e\u90e8\u5206\u306f\u5171\u901a\u306b\u3057\u3066\u304a\u3044\u3066\u3001CURD \u6a5f\u80fd\u3092 v-if \u3067\u5207\u308a\u5206\u3051\u308b\u3002\u521d\u5fc3\u8005\u3063\u307d\u3044\u3051\u3069\u3001\u65b0\u4eba\u6559\u80b2\u3067\u306f\u521d\u5fc3\u8005\u306a\u306e\u3067\u3053\u308c\u3067\u554f\u984c\u306a\u3057\u3002\u6700\u521d\u306f v-if \u3067\u533a\u5207\u3063\u3066\u304a\u3044\u3066\u3001\u5f90\u3005\u306b Vue \u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306b\u6163\u308c\u3066\u3044\u304f\u3068\u3044\u3046\u30b9\u30bf\u30a4\u30eb\u306b\u3059\u308b\u3002\u3044\u304d\u306a\u308a Atomic Design \u306b\u9032\u3080\u306e\u3082\u30a2\u30ea\u306a\u3093\u3060\u308d\u3046\u3051\u3069\u3001\u6b74\u53f2\u7684\u306a\u7d4c\u7def\u3092\u8ffd\u3063\u3066\u304a\u304f\u307b\u3046\u304c\u4f53\u7cfb\u7684\u3067\u899a\u3048\u3084\u3059\u3044\u3002\u306a\u306b\u3088\u308a\u3082\u3001\u696d\u52d9\u30b7\u30b9\u30c6\u30e0\u304c Vue2 \u3068 Vue3 \u304c\u6df7\u5728\u3057\u3066\u3044\u308b\u72b6\u614b\u306a\u306e\u3067\u4e21\u65b9\u899a\u3048\u308b\u306e\u306f\u5fc5\u9808\u306a\u306e\u3060\u304b\u3089\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>            &lt;div v-if=&quot;mode == 2&quot;&gt;\n                &lt;div&gt;\u66f4\u65b0\u306e\u30e2\u30fc\u30c9&lt;\/div&gt;\n                &lt;table class=&quot;table&quot;&gt;\n                    &lt;thead&gt;\n                        &lt;tr&gt;\n                            &lt;th&gt;\u9805\u76ee&lt;\/th&gt;\n                            &lt;th&gt;\u5024&lt;\/th&gt;\n                        &lt;\/tr&gt;\n                    &lt;\/thead&gt;\n                    &lt;tbody&gt;\n                        &lt;tr&gt;\n                            &lt;td&gt;id: &lt;\/td&gt;\n                            &lt;td&gt;{{  cur.id }}&lt;\/td&gt;\n                        &lt;\/tr&gt;\n                        &lt;tr&gt;\n                            &lt;td&gt;title: &lt;\/td&gt;\n                            &lt;td&gt;&lt;input v-model=&quot;cur.title&quot; placeholder=&quot;\u30bf\u30a4\u30c8\u30eb&quot; \/&gt;&lt;\/td&gt;\n                        &lt;\/tr&gt;\n                        &lt;tr&gt;\n                            &lt;td&gt;image: &lt;\/td&gt;\n                            &lt;td&gt;&lt;input v-model=&quot;cur.image&quot; placeholder=&quot;\u753b\u50cf&quot; \/&gt;&lt;\/td&gt;\n                        &lt;\/tr&gt;\n                        &lt;tr&gt;\n                            &lt;td&gt;\u4f5c\u6210\u65e5\u6642: &lt;\/td&gt;&lt;td&gt;{{  cur.created_at }}&lt;\/td&gt;\n                        &lt;\/tr&gt;\n                        &lt;tr&gt;\n                            &lt;td&gt;\u66f4\u65b0\u65e5\u6642: &lt;\/td&gt;&lt;td&gt;{{  cur.updated_at }}&lt;\/td&gt;\n                        &lt;\/tr&gt;\n                    &lt;\/tbody&gt;\n                &lt;\/table&gt;\n                &lt;button @click=&quot;onClickCommit&quot; class=&quot;btn btn-primary&quot;&gt;\u767b\u9332&lt;\/button&gt;\u3000\n                &lt;button @click=&quot;onClickClear&quot; class=&quot;btn btn-secondary&quot;&gt;\u623b\u3059&lt;\/button&gt;\n            &lt;\/div&gt;\n<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u66f4\u65b0\u3059\u308b\u3068\u304d\u306e\u753b\u9762\u306f<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30c6\u30ad\u30b9\u30c8\u5165\u529b\uff08input\uff09\u3092 v-model \u3067\u53c2\u7167\u3055\u305b\u308b\uff08\u53cc\u65b9\u5411\u306a\u306e\u3067\uff09<\/li>\n\n\n\n<li>\u30dc\u30bf\u30f3\uff08button\uff09\u306e\u30a4\u30d9\u30f3\u30c8\u306f @click \u3067\u6e21\u3059<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u3068\u3044\u3046\u30ce\u30fc\u30de\u30eb\u306a\u5f62\u306b\u3059\u308b\u3002:value \u3092\u4f7f\u3046\u3068\u304b\u30c8\u30ea\u30c3\u30ad\u30fc\u306a\u65b9\u6cd5\u3082\u3042\u308b\u306e\u3060\u304c\u3001\u3053\u3053\u306f\u30ce\u30fc\u30de\u30eb\u306b v-model \u3092\u4f7f\u3063\u305f\u307b\u3046\u304c\u79fb\u690d\u6027\u304c\u3088\u3044\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">vue2 \u3067\u306f v-if \u306b\u5373\u5024\u3092\u4f7f\u3063\u3066\u3057\u307e\u3063\u3066\u3044\u308b\u304c\u3001vue3 \u3067\u306f enum \u304c\u4f7f\u3048\u308b<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>        &lt;div v-if=&quot;mode == MODE.UPDATE&quot;&gt;\n            &lt;div&gt;\u66f4\u65b0\u306e\u30e2\u30fc\u30c9&lt;\/div&gt;\n            &lt;table class=&quot;table&quot;&gt;\n                &lt;thead&gt;\n                    &lt;tr&gt;\n                        &lt;th&gt;\u9805\u76ee&lt;\/th&gt;\n                        &lt;th&gt;\u5024&lt;\/th&gt;\n                    &lt;\/tr&gt;\n                &lt;\/thead&gt;\n<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">vue2 \u3067\u3082 const \u3059\u308c\u3070\u5b9a\u7fa9\u5024\u3092\u4f7f\u3046\u3053\u3068\u3082\u3067\u304d\u308b\u3051\u3069\u3001\uff11\u753b\u9762\u5185\u306a\u3089\u3070\u5373\u5024\u3067\u3082\u5341\u5206\u306a\u306e\u3067\u3053\u306e\u5f62\u5f0f\u306b\u3057\u3066\u304a\u304f\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">vue2 \u306e script \u30b3\u30fc\u30c9<\/h2>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>import axios from &#39;axios&#39;\n\nexport default {\n  name: &#39;MosMain&#39;,\n  props: {\n  },\n  data() {\n    return {\n        items: [],  \/\/ \u30ab\u30c6\u30b4\u30ea\u4e00\u89a7\n        cur: {},    \/\/ \u9078\u629e\u3057\u305f\u30ab\u30c6\u30b4\u30ea\n        mode: 0,    \/\/ \u8868\u793a\u30e2\u30fc\u30c9\n    }\n  },\n  mounted() {\n    axios.get(&#39;http:\/\/localhost:8000\/api\/category&#39;)\n    .then ( response =&gt; {\n        console.log( response )\n        this.items = response.data\n    })\n  },\n  methods: {\n    getCategoryById( id ) \n    {\n        axios.get(`http:\/\/localhost:8000\/api\/category\/${id}`)\n        .then ( response =&gt; {\n            console.log( response )\n            this.cur = response.data\n        })\n    },\n    \/\/ \u65b0\u898f\u4f5c\u6210\u306eAPI\u3092\u547c\u3076\n    createCategory( item ) {\n        console.log( &quot;called createCategory&quot; )\n        \/\/ TODO: POST \u3092\u8a18\u8ff0\u3059\u308b\n        return \n    },\n    \/\/ \u66f4\u65b0\u306eAPI\u3092\u547c\u3076\n    updateCategory( item ) {\n        console.log( &quot;called updateCategory&quot; )\n        \/\/ TODO: PUT \u3092\u8a18\u8ff0\u3059\u308b\n        return \n    },\n    \/\/ \u9078\u629e\u9805\u76ee\u3092\u65b0\u898f\u4f5c\u6210\u3059\u308b\n    onClickCreateItem() {\n        console.log( &quot;onClickCreateItem &quot; + this.cur.title )\n        this.mode = 1\n        this.cur.id = 0\n        this.cur.title = &quot;&quot;\n        this.cur.image = &quot;&quot;\n    },\n    \/\/ \u767b\u9332\u30dc\u30bf\u30f3\u3092\u62bc\u4e0b\n    onClickCommit() {\n        console.log( &quot;onClickCommit &quot; + this.cur.title )\n        console.log( &quot;onClickCommit &quot; + this.cur.image )\n        if ( this.mode == 1 ) {\n            \/\/ \u65b0\u898f\u4f5c\u6210\u306e\u5834\u5408 POST \u3092\u547c\u3076\n            createCategory( this.cur )\n        } else {\n            \/\/ \u66f4\u65b0\u306e\u5834\u5408 PUT \u3092\u547c\u3076\n            updateCategory( this.cur )\n        }\n    },\n    \/\/ \u30af\u30ea\u30a2\u30dc\u30bf\u30f3\u3092\u62bc\u4e0b\n    onClickClear() {\n        console.log( &quot;onClickClear &quot;)\n        if ( this.mode == 1 ) {\n            \/\/ \u65b0\u898f\u4f5c\u6210\u306e\u5834\u5408\n            this.cur.title = &quot;&quot;\n            this.cur.image = &quot;&quot;\n        } else {\n            const original = this.items.find( x =&gt; x.id == this.cur.id )\n            if ( original ) {\n                \/\/ \u66f4\u65b0\u306e\u5834\u5408\n                this.cur.title = original.title\n                this.cur.image = original.image\n            }\n        }\n    },\n    \/\/ \n    onClickDelete() {\n        console.log( &quot;onClickDelete &quot;)\n        \/\/ \u524a\u9664 API \u3092\u547c\u3073\u51fa\u3059\n        deleteCategory( this.cur )\n    },\n\n    \/\/ \u30ea\u30b9\u30c8\u3067\u9805\u76ee\u3092\u9078\u629e\n    onClickItem( item )\n    {\n        console.log( &quot;onClickItem &quot; + item.title )\n        this.getCategoryById( item.id )\n    },  \n  \n    \/**\n     * \u9078\u629e\u9805\u76ee\u3092\u66f4\u65b0\u3059\u308b\n     *\/\n    onClickUpdateItem() {\n        if ( !this.cur.id ) {\n            console.log( &quot;ERROR: onClickUpdateItem cur.value.id is null&quot; )\n            return \n        }\n        console.log( &quot;onClickUpdateItem &quot; + this.cur.title )\n        this.mode = 2\n    },\n\n    \/**\n     * \u9078\u629e\u9805\u76ee\u3092\u524a\u9664\u3059\u308b\n     *\/\n    onClickDeleteItem() {\n        if ( !this.cur.id ) {\n            console.log( &quot;ERROR: onClickDeleteItem cur.value.id is null&quot; )\n            return \n        }\n        console.log( &quot;onClickDeleteItem &quot; + this.cur.title )\n        this.mode = 3\n    },\n  }\n}\n<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u305d\u306e\u58f1\u3068\u540c\u3058\u3088\u3046\u306b\u3001<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>export default \u3067\u516c\u958b\u3059\u308b<\/li>\n\n\n\n<li>props, data, mounted, methods \u30d6\u30ed\u30c3\u30af\u3067\u533a\u5207\u308b<\/li>\n\n\n\n<li>\u30dc\u30bf\u30f3\u306e\u30a4\u30d9\u30f3\u30c8\u3068\u30dc\u30bf\u30f3\u304b\u3089\u547c\u3073\u51fa\u3059\u95a2\u6570\u306f\u3001methods \u5185\u306b\u7a81\u3063\u8fbc\u3093\u3067\u3042\u308b<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">data \u3092\u53c2\u7167\u3059\u308b\u306e\u306b\u3001this.* \u3092\u4ed8\u3051\u306a\u3044\u3068\u3044\u3051\u306a\u3044\u3002\u300c\u4ed8\u3051\u306a\u3044\u3068\u3044\u3051\u306a\u3044\u300d\u3068\u66f8\u3044\u305f\u304c\u3001C++ \u3084 C#, Java \u306a\u3069\u3092\u4f7f\u3063\u3066\u3044\u308b\u3068\u3001\u30af\u30e9\u30b9\u5185\u3067\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u5909\u6570\u306f this.* \u3092\u4ed8\u3051\u305f\u307b\u3046\u304c\u89e3\u308a\u3084\u3059\u3044\u306e\u3067\u3001\u3053\u3046\u3044\u3046\u98a8\u306b\u66f8\u304f\u3053\u3068\u304c\u591a\u3044\u3002\u6700\u8fd1\u306e Visual Studio 2022 \u3067\u306f this \u306a\u3057\u304c\u63a8\u5968\u3055\u308c\u3066\u308b\u3051\u3069\u3082\u3001this \u3092\u4ed8\u3051\u308b\u307b\u3046\u304c\u5916\u90e8\u306a\u306e\u304b\u5185\u90e8\u306a\u306e\u304b\u308f\u304b\u308a\u3084\u3059\u3044\u306e\u3068\u3001this.* \u3068\u3057\u305f\u3068\u3053\u308d\u3067\u30a4\u30f3\u30c6\u30ea\u30bb\u30f3\u30b9\u304c\u52b9\u304f\u306e\u3067\u3001\u4fbf\u5229\u3060\u3063\u305f\u308a\u3059\u308b\u3002\u305f\u3060\u3057\u3001\u6700\u8fd1\u306e\u50be\u5411\u3068\u3057\u3066\u306f\u3001\u3067\u304d\u308b\u3060\u3051\u5916\u90e8\u306e\u5909\u6570\u3092\u53c2\u7167\u3057\u306a\u3044\uff1d\u30af\u30e9\u30b9\u5185\u3042\u308b\u3044\u306f\u95a2\u6570\u5185\u3060\u3051\u3067\u304a\u3055\u307e\u308b\u3088\u3046\u306b\u3059\u308b\u3001\u95a2\u6570\u578b\u3063\u307d\u3044\u66f8\u304d\u65b9\u304c\u63a8\u5968\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u3001this \u3068\u6253\u3064\u306e\u306f\u300c\u9762\u5012\u304f\u3055\u3044\u300d\u3068\u3044\u3046\u306e\u306f\u305d\u3046\u306a\u306e\u3060\u308d\u3046\u3002F# \u306e let mut \u3068\u540c\u3058\u3088\u3046\u306b\u3001\u5909\u66f4\u53ef\u80fd\u306a\u5909\u6570\u306e\u66f8\u304d\u65b9\u306e\u307b\u3046\u304c *\u9762\u5012\u304f\u3055\u3044* \u307b\u3046\u304c\u3001\u5fc3\u7406\u7684\u306b\u697d\u306b\u6d41\u308c\u308b\uff08\u3053\u308c\u306f\u4e94\u884c\u5927\u5100\u306e\u524d\u6587\u306b\u3082\u639b\u304b\u308c\u3066\u3044\u308b\u3001\u3068\u3044\u3046\u30cd\u30bf\u3092\u62ab\u9732\u3057\u3066\u304a\u304f\uff09\u306e\u3067\u884c\u52d5\u7d4c\u6e08\u5b66\u7684\u306b\u3082\u7406\u306b\u304b\u306a\u3063\u3066\u3044\u308b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3088\u3063\u3066\u3001vue2 \u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001this.items \u3084 this.cur \u304c\u983b\u767a\u3059\u308b\u3002\u3069\u3046\u305b\u30ed\u30fc\u30ab\u30eb\u3067\u3057\u304b\u53c2\u7167\u3057\u306a\u3044\u65b9\u91dd\u306a\u3089\u3070 this \u306f\u4e0d\u8981\u3067\u3042\u308d\u3046\u3068\u3044\u3046\u601d\u60f3\u304c vue3 \u306b\u306f\u3042\u308b\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">vue3 \u306e script <\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u3067\u306f\u3001\u540c\u3058\u30b3\u30fc\u30c9\u3092 vue3 \u5f62\u5f0f\u3067\u66f8\u3044\u3066\u307f\u3088\u3046<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-ts\" data-lang=\"TypeScript\"><code>import { ref, onMounted } from &#39;vue&#39;\nimport axios from &#39;axios&#39;\n\n\/**\n * \u30ab\u30c6\u30b4\u30ea\u306e\u30af\u30e9\u30b9\n *\/\nclass Category {\n    id: number\n    title: string\n    category: string\n    image: string\n    created_at: string | null\n    updated_at: string | null\n    is_delete: boolean\n}\n\n\/\/ \u30ab\u30c6\u30b4\u30ea\u4e00\u89a7\nconst items = ref([] as Category[])\n\/\/ \u9078\u629e\u3057\u305f\u30ab\u30c6\u30b4\u30ea\nconst cur = ref({} as Category)\n\/\/ \u8868\u793a\u30e2\u30fc\u30c9\uff08\u5217\u6319\u578b)\nenum MODE {\n    DETAIL,     \/\/ \u8a73\u7d30\n    NEW,        \/\/ \u65b0\u898f\u4f5c\u6210\n    UPDATE,     \/\/ \u66f4\u65b0\n    DELETE,     \/\/\u3000\u524a\u9664\n}\nconst mode = ref(MODE.DETAIL)\n\n\n\n\/**\n * \u30ab\u30c6\u30b4\u30ea\u4e00\u89a7\u3092\u53d6\u5f97\u3059\u308b\n *\/\nfunction getCategories() {\n    axios.get(&#39;http:\/\/localhost:8000\/api\/category&#39;)\n    .then ( response =&gt; {\n        console.log( response )\n        items.value = response.data\n    })\n}\n\/**\n * \u3072\u3068\u3064\u306e\u30ab\u30c6\u30b4\u30ea\u3092\u53d6\u5f97\u3059\u308b\n *\/\n function getCategoryById( id: number  ) {\n    axios.get(`http:\/\/localhost:8000\/api\/category\/${id}`)\n    .then ( response =&gt; {\n        console.log( response )\n        cur.value = response.data\n    })\n}\n\n\/**\n * \u65b0\u898f\u4f5c\u6210\u306eAPI\u3092\u547c\u3076\n * @param item \u66f4\u65b0\u3059\u308b Category \n *\/\nfunction createCategory( item: Category ) {\n    console.log( &quot;called createCategory&quot; )\n    \/\/ TODO: POST \u3092\u8a18\u8ff0\u3059\u308b\n    return \n}\n\n\/**\n * \u66f4\u65b0\u306eAPI\u3092\u547c\u3076\n * @param item \u66f4\u65b0\u3059\u308b Category \n *\/\nfunction updateCategory( item: Category ) {\n    console.log( &quot;called updateCategory&quot; )\n    \/\/ TODO: PUT \u3092\u8a18\u8ff0\u3059\u308b\n    return \n}\n\n\n\/**\n * \u524a\u9664\u306eAPI\u3092\u547c\u3076\n * @param item \u524a\u9664\u3059\u308b Category \n *\/\n function deleteCategory( item: Category ) {\n    console.log( &quot;called deleteCategory&quot; )\n    \/\/ TODO: DELETE \u3092\u8a18\u8ff0\u3059\u308b\n    return \n}\n\n\/**\n * \u3072\u3068\u3064\u306e\u30ab\u30c6\u30b4\u30ea\u3092\u8868\u793a\u3059\u308b\n * @param item \u9078\u629e\u3057\u305f\u30ab\u30c6\u30b4\u30ea\n *\/\nfunction onClickItem( item : Category) {\n    console.log( &quot;onClickItem &quot; + item.title )\n    mode.value = MODE.DETAIL\n    getCategoryById( item.id )\n}\n\n\/**\n * \u9078\u629e\u9805\u76ee\u3092\u65b0\u898f\u4f5c\u6210\u3059\u308b\n *\/\nfunction onClickCreateItem() {\n    console.log( &quot;onClickCreateItem &quot; + cur.value.title )\n    mode.value = MODE.NEW\n    cur.value.id = 0\n    cur.value.title = &quot;&quot;\n    cur.value.image = &quot;&quot;\n}\n\n\/**\n * \u767b\u9332\u30dc\u30bf\u30f3\u3092\u62bc\u4e0b\n *\/\nfunction onClickCommit() {\n    console.log( &quot;onClickCommit &quot; + cur.value.title )\n    console.log( &quot;onClickCommit &quot; + cur.value.image )\n    if ( mode.value == MODE.NEW ) {\n        \/\/ \u65b0\u898f\u4f5c\u6210\u306e\u5834\u5408 POST \u3092\u547c\u3076\n        createCategory( cur.value )\n    } else {\n        \/\/ \u66f4\u65b0\u306e\u5834\u5408 PUT \u3092\u547c\u3076\n        updateCategory( cur.value )\n    }\n}\n\n\/**\n * \u30af\u30ea\u30a2\u30dc\u30bf\u30f3\u3092\u62bc\u4e0b\n *\/\n function onClickClear() {\n    console.log( &quot;onClickClear &quot;)\n    if ( mode.value == MODE.NEW ) {\n        \/\/ \u65b0\u898f\u4f5c\u6210\u306e\u5834\u5408\n        cur.value.title = &quot;&quot;\n        cur.value.image = &quot;&quot;\n    } else {\n        const original = items.value.find( x =&gt; x.id == cur.value.id )\n        if ( original ) {\n            \/\/ \u66f4\u65b0\u306e\u5834\u5408\n            cur.value.title = original.title\n            cur.value.image = original.image\n        }\n    }\n}\n\n\/**\n * \u524a\u9664\u3059\u308b\u30dc\u30bf\u30f3\u3092\u62bc\u4e0b\n *\/\nfunction onClickDelete() {\n    console.log( &quot;onClickDelete &quot;)\n    \/\/ \u524a\u9664 API \u3092\u547c\u3073\u51fa\u3059\n    deleteCategory( cur.value )\n}\n\n\/**\n * \u9078\u629e\u9805\u76ee\u3092\u66f4\u65b0\u3059\u308b\n *\/\nfunction onClickUpdateItem() {\n    if ( !cur.value.id ) {\n        console.log( &quot;ERROR: onClickUpdateItem cur.value.id is null&quot; )\n        return \n    }\n    console.log( &quot;onClickUpdateItem &quot; + cur.value.title )\n    mode.value = MODE.UPDATE\n    \n}\n\n\/**\n * \u9078\u629e\u9805\u76ee\u3092\u524a\u9664\u3059\u308b\n *\/\nfunction onClickDeleteItem() {\n    if ( !cur.value.id ) {\n        console.log( &quot;ERROR: onClickDeleteItem cur.value.id is null&quot; )\n        return \n    }\n    console.log( &quot;onClickDeleteItem &quot; + cur.value.title )\n    mode.value = MODE.DELETE\n\n    \/*\n    const result = confirm(&quot;\u524a\u9664\u3057\u3066\u3088\u308d\u3057\u3044\u3067\u3059\u304b\uff1f&quot;)\n    if ( result == true ) {\n        deleteCategory( cur.value )\n    }\n    *\/\n}\n\n\/\/ \u30da\u30fc\u30b8\u8868\u793a\u6642\u306b\u3001\u30ab\u30c6\u30b4\u30ea\u4e00\u89a7\u3092\u53d6\u5f97\u3059\u308b\nonMounted(()=&gt;{\n    getCategories() \n})\n<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u30b3\u30fc\u30c9\u306f TypeScript \u306a\u306e\u3067\u3001Category \u3068\u3044\u3046\u30af\u30e9\u30b9\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u308b\u306e\u3068\u3001 MODE \u5217\u6319\u5b50\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u308b\u306e\u3068\u9055\u3044\u306f\u3042\u308b\u304c\u3001\u540c\u3058\u52d5\u4f5c\u306b\u3057\u3066\u3042\u308b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u753b\u9762\u3092\u8868\u793a\u3059\u308b\u3068\u304d\u306e\u30e2\u30fc\u30c9\u306f \u30ea\u30a2\u30af\u30c6\u30a3\u30d6\u3092\u4f7f\u3046<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-ts\" data-lang=\"TypeScript\"><code>const mode = ref(MODE.DETAIL)<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u30ea\u30a2\u30af\u30c6\u30a3\u30d6\u3068\u3044\u3046\u7528\u8a9e\u304c\u3067\u3066\u304f\u308b\u304c\u3001\u5b9f\u306f vue2 \u3067\u306f\u3046\u307e\u304f\u96a0\u853d\u5316\u3055\u308c\u3066\u3044\u305f\u3082\u306e\u304c\u3001vue3 \u3067\u306f\u3080\u304d\u51fa\u3057\u306b\u306a\u3063\u3066\u3057\u307e\u3063\u305f\u3060\u3051\u3067\u3042\u308b\u3002\u7406\u7531\u306f\u3001\u3080\u304d\u51fa\u3057\u306b\u3057\u305f\u307b\u3046\u304c\u30b9\u30c6\u30fc\u30c8\u3042\u308a\u3068\u30b9\u30c6\u30fc\u30c8\u7121\u3057\u306e\u753b\u9762\u304c\u610f\u56f3\u7684\u306b\u533a\u5225\u304c\u3067\u304d\u3066\u753b\u9762\u306e\u8868\u793a\u30b9\u30d4\u30fc\u30c9\u304c\u4e0a\u304c\u308b\u3001\u306e\u3060\u304c\u3001vue2 \u30e6\u30fc\u30b6\u30fc\u304c vue3 \u306b\u79fb\u884c\u3059\u308b\u3068\u304d\u306b\u8e93\u304f\u306e\u306f\u3053\u3053\u304c\u5927\u304d\u3044\u3060\u308d\u3046\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-ts\" data-lang=\"TypeScript\"><code>\/**\n * \u30af\u30ea\u30a2\u30dc\u30bf\u30f3\u3092\u62bc\u4e0b\n *\/\n function onClickClear() {\n    console.log( &quot;onClickClear &quot;)\n    if ( mode.value == MODE.NEW ) {\n        \/\/ \u65b0\u898f\u4f5c\u6210\u306e\u5834\u5408\n        cur.value.title = &quot;&quot;\n        cur.value.image = &quot;&quot;\n    } else {\n        const original = items.value.find( x =&gt; x.id == cur.value.id )\n        if ( original ) {\n            \/\/ \u66f4\u65b0\u306e\u5834\u5408\n            cur.value.title = original.title\n            cur.value.image = original.image\n        }\n    }\n}<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u30af\u30ea\u30a2\u30dc\u30bf\u30f3\u3092\u62bc\u4e0b\u3057\u305f\u3068\u304d\u306b\u3001\u7de8\u96c6\u753b\u9762\u3092\u7a7a\u767d\u3042\u308b\u3044\u306f\u623b\u3059\u51e6\u7406\u3092\u8a18\u8ff0\u3057\u305f\u3082\u306e\u3067\u3042\u308b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u753b\u9762\u306e\u30e2\u30fc\u30c9\u3068\u3057\u3066\u65b0\u898f\u4f5c\u6210\u3068\u66f4\u65b0\u304c\u3042\u308b\u8a33\u3060\u304c\u3001\u3053\u306e\u90e8\u5206\u306f\u5225\u3005\u306e\u95a2\u6570\u306b\u308f\u3051\u3066\u3082\u3088\u3044\u3002\u5b9f\u969b\u306b template \u4e0a\u3067\u306f\u3001\u65b0\u898f\u4f5c\u6210\u3067\u306f\u300c\u30af\u30ea\u30a2\u300d\u3001\u66f4\u65b0\u3067\u306f\u300c\u623b\u3059\u300d\u306b\u306a\u3063\u3066\u3044\u3066\u3001\u3061\u3087\u3063\u3068\u6df7\u4e71\u3057\u305f\u5f62\u306b\u306a\u3063\u3066\u3044\u308b\u3002\u3053\u308c\u306f\u65b0\u4eba\u7814\u4fee\u7528\u306b\u5c11\u3057\u6df7\u4e71\u3055\u305b\u308b\u3053\u3068\u304c\u76ee\u7684\u3067\u3082\u3042\u308b\uff08\u5b9f\u969b\u306e\u696d\u52d9\u3067\u306f\u3001\u3053\u306e\u3088\u3046\u306b\u30e2\u30fc\u30c9\u3067\u5207\u308a\u66ff\u3048\u308b\u3053\u3068\u304c\u591a\u3044\u306e\u3067\uff09\u306e\u3067\u3001\u3053\u308c\u3067\u826f\u3057\u3068\u3059\u308b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">vue2 \u3067\u306f this.cur \u3084 this.items \u3067\u53c2\u7167\u3055\u308c\u3066\u3044\u305f\u3082\u306e\u304c\u3001vue3 \u3067\u306f cur.value.* \u3084 items.value.* \u306b\u306a\u3063\u3066\u3044\u308b\u3002vlaue \u304c\u4ed8\u3044\u3066\u3044\u308b\u306e\u306f\u30ea\u30a2\u30af\u30c6\u30a3\u30d6\uff08\u5909\u66f4\u901a\u77e5\u304c\u53ef\u80fd\uff09\u3068\u306a\u3063\u3066\u3044\u308b\u306e\u3067\u3001\u5909\u66f4\u901a\u77e5\u304c\u5fc5\u8981\u306e\u306a\u3044\u56fa\u5b9a\u5024\u306e\u5834\u5408\u306b\u306f\u3001cur.* \u3084 items.* \u3068\u66f8\u304f\u3053\u3068\u304c\u3067\u304d\u308b\u3002vue3 \u306e\u672c\u3067\u3001\u3053\u306e\u3042\u305f\u308a\u306e\u9055\u3044\u304c\u639b\u304b\u308c\u3066\u3044\u308b\u306e\u304c\u7121\u3044\u306e\u304c\u6b8b\u5ff5\u306a\u3068\u3053\u308d\u306a\u306e\u3060\u304c\u3001\u307e\u3042\u3001\u521d\u5b66\u306a\u4eba\u306b\u306f\u300cvue3 \u3067\u306f\u30ea\u30a2\u30af\u30c6\u30a3\u30d6 ref \u3084 reactive \u3092\u4f7f\u3044\u307e\u3059\uff01\u300d\u3068\u3057\u305f\u307b\u3046\u304c\u8ff7\u3044\u304c\u5c11\u306a\u3044\u306e\u3067\u3001\u305d\u3063\u3061\u306e\u307b\u3046\u304c\u3044\u3044\u3060\u308d\u3046\u3002\u6163\u308c\u3066\u304f\u308b\u3068\u30b9\u30d4\u30fc\u30c9\u3092\u512a\u5148\u3055\u305b\u3066\u3001ref \u306a\u3057\u3068 ref \u3042\u308a\u3092\u533a\u5225\u3059\u308b\u3068\u3088\u3044\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u304a\u6b21\u306f\u3001\u7de8\u96c6\u753b\u9762\u3092 vue \u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u5316\u3059\u308b<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u3055\u3066\u3001\u3044\u3088\u3044\u3088 vue \u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u4f7f\u3063\u305f\u5f62\u306b\u66f8\u304d\u63db\u3048\u3066\u3044\u304f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">vue2 \u3067 props \u3068 $emits \u3092\u4f7f\u3063\u3066\u89aa\u5b50\u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u9593\u3067\u30c7\u30fc\u30bf\u3092\u3084\u308a\u53d6\u308a\u3057\u305f\u3082\u306e\u3092\u3001vue3 \u3067\u306f\u3069\u3046\u3044\u3046\u98a8\u306b\u66f8\u304f\u306e\u304b\u3068\u3044\u3046\u3053\u3068\u306b\u306a\u308b\u3002\u307e\u3060 Atomic Design \u306e\u307b\u3046\u307e\u3067\u81f3\u3089\u306a\u3044\u304c\uff08\u79c1\u7684\u306b\u306f\u81f3\u3089\u306a\u304f\u3066\u3082\u826f\u3044\u3068\u601d\u3063\u3066\u3044\u308b\u3001\u305d\u306e\u7406\u7531\u306f\u5225\u9014\u66f8\u3053\u3046\uff09\u3002MVVM \u30d1\u30bf\u30fc\u30f3\u3068\u304b\u3001Flux \u3068\u304b\u3092\u6df7\u305c\u308b\u3068\u3001\u305d\u306e\u300c\u5371\u967a\u5ea6\u300d\u304c\u308f\u304b\u308b\u3068\u601d\u3046\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u524d\u56de\u306e\u7d9a\u304d \u3053\u3093\u306a\u98a8\u306b CRUD \u6a5f\u80fd\u304c\u4ed8\u3044\u305f\u753b\u9762\u3092 Vue2 \u304b\u3089 Vue3 \u3078\u79fb\u690d\u3057\u3066\u307f\u308b\uff08\u5b9f\u8cea\u7684\u306b\u306f Vue3 \u304b\u3089 Vue2 \u5f62\u5f0f\u3092\u66f8\u304d\u8d77\u3053\u3057\u3066\u3044\u308b\uff09\u3002\u901a\u5e38\u306a\u3089\u3070\u3001\u4e0a\u90e8\u306e\u30ea\u30b9\u30c8\u90e8\u5206\u3068\u304b\u3001\u4e0b\u90e8\u306e\u7de8\u96c6\u9805\u76ee\u306e\u3068\u3053\u308d\u3092  &hellip; <a href=\"https:\/\/www.moonmile.net\/blog\/archives\/10779\">\u7d9a\u304d\u3092\u8aad\u3080 <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3],"tags":[],"class_list":["post-10779","post","type-post","status-publish","format-standard","hentry","category-dev"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts\/10779","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/comments?post=10779"}],"version-history":[{"count":1,"href":"https:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts\/10779\/revisions"}],"predecessor-version":[{"id":10781,"href":"https:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts\/10779\/revisions\/10781"}],"wp:attachment":[{"href":"https:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/media?parent=10779"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/categories?post=10779"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/tags?post=10779"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}