{"id":454,"date":"2023-04-03T17:52:44","date_gmt":"2022-12-12T08:53:10","guid":{"rendered":"https:\/\/www.silicloud.com\/ja\/blog\/index.php\/2023\/11\/30\/prisma%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6graphql-api%e3%82%92%e6%a7%8b%e7%af%89%e3%81%97%e3%80%81digitalocean%e3%81%aeapp-platform%e3%81%ab%e3%83%87%e3%83%97%e3%83%ad%e3%82%a4%e3%81%99\/"},"modified":"2025-07-31T23:43:28","modified_gmt":"2025-07-31T14:43:28","slug":"prisma%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6graphql-api%e3%82%92%e6%a7%8b%e7%af%89%e3%81%97%e3%80%81siliconcloud%e3%81%aeapp-platform%e3%81%ab%e3%83%87%e3%83%97%e3%83%ad%e3%82%a4%e3%81%99","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/ja\/blog\/prisma%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6graphql-api%e3%82%92%e6%a7%8b%e7%af%89%e3%81%97%e3%80%81siliconcloud%e3%81%aeapp-platform%e3%81%ab%e3%83%87%e3%83%97%e3%83%ad%e3%82%a4%e3%81%99\/","title":{"rendered":"Prisma\u3092\u4f7f\u7528\u3057\u3066GraphQL API\u3092\u69cb\u7bc9\u3057\u3001Silicon Cloud\u306eApp Platform\u306b\u30c7\u30d7\u30ed\u30a4\u306e\u65b9\u6cd5"},"content":{"rendered":"<p>\u8457\u8005\u305f\u3061\u306f\u3001\u300c\u5bc4\u4ed8\u306b\u66f8\u304f\u300d\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u4e00\u74b0\u3068\u3057\u3066\u3001COVID-19\u6551\u6e08\u57fa\u91d1\u3068\u30c6\u30c3\u30af\u6559\u80b2\u57fa\u91d1\u3092\u5bc4\u4ed8\u306e\u5bfe\u8c61\u3068\u3057\u3066\u9078\u3073\u307e\u3057\u305f\u3002<\/p>\n<h3>\u5c0e\u5165<\/h3>\n<p>GraphQL\u306f\u3001\u30b9\u30ad\u30fc\u30de\u5b9a\u7fa9\u8a00\u8a9e\u3068\u30af\u30a8\u30ea\u8a00\u8a9e\u304b\u3089\u306a\u308bAPI\u306e\u305f\u3081\u306e\u30af\u30a8\u30ea\u8a00\u8a9e\u3067\u3042\u308a\u3001API\u306e\u6d88\u8cbb\u8005\u304c\u67d4\u8edf\u306a\u30af\u30a8\u30ea\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u305f\u3081\u306b\u5fc5\u8981\u306a\u30c7\u30fc\u30bf\u306e\u307f\u3092\u53d6\u5f97\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002GraphQL\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u958b\u767a\u8005\u306f\u8907\u6570\u306e\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\uff08\u4f8b\uff1aiOS\u3001Android\u3001Web\u30a2\u30d7\u30ea\u306e\u30d0\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\uff09\u306e\u7570\u306a\u308b\u30cb\u30fc\u30ba\u3092\u6e80\u305f\u3057\u306a\u304c\u3089API\u3092\u9032\u5316\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u307e\u305f\u3001GraphQL\u30b9\u30ad\u30fc\u30de\u306fAPI\u306b\u9759\u7684\u306a\u578b\u5b89\u5168\u6027\u3092\u8ffd\u52a0\u3059\u308b\u3060\u3051\u3067\u306a\u304f\u3001API\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3068\u3057\u3066\u3082\u6a5f\u80fd\u3057\u307e\u3059\u3002<\/p>\n<p>Prisma\u306b\u306f\u30013\u3064\u306e\u4e3b\u8981\u306a\u30c4\u30fc\u30eb\u3092\u5099\u3048\u305f\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30c4\u30fc\u30eb\u30ad\u30c3\u30c8\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>Prisma Client: Auto-generated and type-safe query builder for Node.js &amp; TypeScript.<\/li>\n<li>Prisma Migrate: Declarative data modeling &amp; migration system.<\/li>\n<li>Prisma Studio: GUI to view and edit data in your database.<\/li>\n<\/ul>\n<p>\u30d7\u30ea\u30ba\u30de\u306f\u3001\u8907\u96d1\u306a\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\uff08\u30b9\u30ad\u30fc\u30de\u306e\u79fb\u884c\u3084\u8907\u96d1\u306aSQL\u30af\u30a8\u30ea\u306e\u4f5c\u6210\u306a\u3069\uff09\u306b\u6642\u9593\u3092\u8cbb\u3084\u3059\u306e\u3067\u306f\u306a\u304f\u3001\u4ed8\u52a0\u4fa1\u5024\u306e\u3042\u308b\u6a5f\u80fd\u306e\u5b9f\u88c5\u306b\u91cd\u70b9\u3092\u7f6e\u304d\u305f\u3044\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u8005\u306b\u3068\u3063\u3066\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u53d6\u308a\u6271\u3044\u3092\u5bb9\u6613\u306b\u3057\u307e\u3059\u3002<\/p>\n<p>\u3053\u306e\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3067\u306f\u3001GraphQL\u3068Prisma\u3092\u7d44\u307f\u5408\u308f\u305b\u3066\u4f7f\u7528\u3057\u307e\u3059\u3002\u305d\u308c\u305e\u308c\u306e\u8cac\u4efb\u304c\u304a\u4e92\u3044\u3092\u88dc\u5b8c\u3057\u3066\u3044\u307e\u3059\u3002GraphQL\u306f\u3001\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u3084\u30e2\u30d0\u30a4\u30eb\u30a2\u30d7\u30ea\u306a\u3069\u306e\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3067\u4f7f\u7528\u3059\u308b\u305f\u3081\u306e\u30c7\u30fc\u30bf\u3078\u306e\u67d4\u8edf\u306a\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002GraphQL\u306f\u7279\u5b9a\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u4f9d\u5b58\u3057\u307e\u305b\u3093\u3002\u3053\u3053\u3067\u3001Prisma\u304c\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u306e\u3084\u308a\u53d6\u308a\u3092\u51e6\u7406\u3057\u3001\u30c7\u30fc\u30bf\u3092\u683c\u7d0d\u3057\u307e\u3059\u3002<\/p>\n<p>\u30c7\u30b8\u30bf\u30eb\u30aa\u30fc\u30b7\u30e3\u30f3\u306eApp Platform\u306f\u3001\u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u306e\u5fc3\u914d\u3092\u305b\u305a\u306b\u30af\u30e9\u30a6\u30c9\u4e0a\u3067\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u6e96\u5099\u3059\u308b\u30b7\u30fc\u30e0\u30ec\u30b9\u306a\u65b9\u6cd5\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30af\u30e9\u30a6\u30c9\u4e0a\u3067\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3059\u308b\u969b\u306e\u904b\u7528\u30aa\u30fc\u30d0\u30fc\u30d8\u30c3\u30c9\u304c\u524a\u6e1b\u3055\u308c\u307e\u3059\u3002\u7279\u306b\u3001\u65e5\u3005\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3068\u81ea\u52d5\u30d5\u30a7\u30a4\u30eb\u30aa\u30fc\u30d0\u30fc\u304c\u53ef\u80fd\u306a\u7ba1\u7406\u3055\u308c\u305fPostgreSQL\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u4f5c\u6210\u6a5f\u80fd\u304c\u3042\u308a\u307e\u3059\u3002App Platform\u306b\u306f\u3001\u30cd\u30a4\u30c6\u30a3\u30d6\u306aNode.js\u30b5\u30dd\u30fc\u30c8\u304c\u3042\u308a\u3001\u30c7\u30d7\u30ed\u30a4\u306e\u52b9\u7387\u5316\u304c\u56f3\u3089\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u3042\u306a\u305f\u306fNode.js\u3092\u4f7f\u7528\u3057\u3066JavaScript\u3067\u30d6\u30ed\u30b0\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u305f\u3081\u306eGraphQL API\u3092\u69cb\u7bc9\u3057\u307e\u3059\u3002\u6700\u521d\u306bApollo Server\u3092\u4f7f\u7528\u3057\u3066\u3001\u30e1\u30e2\u30ea\u5185\u30c7\u30fc\u30bf\u69cb\u9020\u3092\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3068\u3057\u305fGraphQL API\u3092\u69cb\u7bc9\u3057\u307e\u3059\u3002\u6b21\u306b\u3001Silicon Cloud App Platform\u306bAPI\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3059\u3002\u6700\u5f8c\u306b\u3001Prisma\u3092\u4f7f\u7528\u3057\u3066\u3001\u30e1\u30e2\u30ea\u5185\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u7f6e\u304d\u63db\u3048\u3001\u30c7\u30fc\u30bf\u3092PostgreSQL\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u6c38\u7d9a\u5316\u3057\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u518d\u5ea6\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3059\u3002<\/p>\n<p>\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u306e\u6700\u5f8c\u306b\u306f\u3001Silicon Cloud\u306b\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305fNode.js\u306eGraphQL API\u304c\u3042\u308a\u3001\u3053\u308c\u306fHTTP\u7d4c\u7531\u3067\u9001\u4fe1\u3055\u308c\u305fGraphQL\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u51e6\u7406\u3057\u3001PostgreSQL\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u5bfe\u3057\u3066CRUD\u64cd\u4f5c\u3092\u884c\u3044\u307e\u3059\u3002<\/p>\n<p>\u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30b3\u30fc\u30c9\u306f\u3001Silicon Cloud Community\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u3067\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<h2>\u524d\u63d0\u6761\u4ef6<\/h2>\n<p>\u3053\u306e\u30ac\u30a4\u30c9\u3092\u958b\u59cb\u3059\u308b\u524d\u306b\u3001\u4ee5\u4e0b\u306e\u3082\u306e\u304c\u5fc5\u8981\u3067\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>A GitHub account.<\/li>\n<li>A Silicon Cloud account.<\/li>\n<li>Git installed on your computer. You can follow the tutorial Contributing to Open Source: Getting Started with Git to install and set up Git on your computer.<\/li>\n<li>Node.js version 14 or higher installed on your computer. You can follow the tutorial How to Install Node.js and Create a Local Development Environment to install and set up Node.js on your computer.<\/li>\n<li>Docker installed on your computer (to run the PostgreSQL database locally).<\/li>\n<\/ul>\n<p>\u3053\u306e\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3067\u306f\u3001JavaScript\u3001Node.js\u3001GraphQL\u3001\u304a\u3088\u3073PostgreSQL\u306b\u57fa\u672c\u7684\u306a\u7406\u89e3\u304c\u3042\u308b\u3068\u5f79\u7acb\u3061\u307e\u3059\u304c\u3001\u53b3\u5bc6\u306b\u5fc5\u8981\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002<\/p>\n<h2>\u30b9\u30c6\u30c3\u30d71 \u2014 Node.js\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4f5c\u6210<\/h2>\n<p>\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001npm\u3092\u4f7f\u7528\u3057\u3066Node.js\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u6e96\u5099\u3057\u3001\u4f9d\u5b58\u95a2\u4fc2\u3067\u3042\u308bapollo-server\u3068graphql\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002\u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u3001\u3053\u306e\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u306e\u9593\u306b\u69cb\u7bc9\u304a\u3088\u3073\u5c55\u958b\u3059\u308bGraphQL API\u306e\u57fa\u76e4\u3068\u306a\u308a\u307e\u3059\u3002<\/p>\n<p>\u6700\u521d\u306b\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u7528\u306e\u65b0\u3057\u3044\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">mkdir<\/span> prisma-graphql<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u6b21\u306b\u3001\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u79fb\u52d5\u3057\u3066\u3001\u7a7a\u306enpm\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u521d\u671f\u5316\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token builtin class-name\">cd<\/span> prisma-graphql<\/li>\n<li data-prefix=\"$\"><span class=\"token function\">npm<\/span> init <span class=\"token parameter variable\">&#8211;yes<\/span><\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u3053\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001npm\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3068\u3057\u3066\u4f7f\u7528\u3055\u308c\u308b\u6700\u5c0f\u9650\u306epackage.json\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n<p>\u4ee5\u4e0b\u306e\u51fa\u529b\u3092\u53d7\u3051\u53d6\u308a\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>Wrote to \/Users\/<mark>your_username<\/mark>\/workspace\/prisma-graphql\/package.json: { &#8220;name&#8221;: &#8220;prisma-graphql&#8221;, &#8220;version&#8221;: &#8220;1.0.0&#8221;, &#8220;description&#8221;: &#8220;&#8221;, &#8220;main&#8221;: &#8220;index.js&#8221;, &#8220;scripts&#8221;: { &#8220;test&#8221;: &#8220;echo \\&#8221;Error: no test specified\\&#8221; &amp;&amp; exit 1&#8243; }, &#8220;keywords&#8221;: [], &#8220;author&#8221;: &#8220;&#8221;, &#8220;license&#8221;: &#8220;ISC&#8221; }<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u3042\u306a\u305f\u306f\u4eca\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067TypeScript\u3092\u8a2d\u5b9a\u3059\u308b\u6e96\u5099\u304c\u3067\u304d\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u5fc5\u8981\u306a\u4f9d\u5b58\u95a2\u4fc2\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">npm<\/span> <span class=\"token function\">install<\/span> apollo-server graphql <span class=\"token parameter variable\">&#8211;save<\/span><\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u3053\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001\u3042\u306a\u305f\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u4f9d\u5b58\u95a2\u4fc2\u3068\u3057\u30662\u3064\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>apollo-server is the HTTP library that you use to define how GraphQL requests are resolved and how to fetch data.<\/li>\n<li>graphql is the library you\u2019ll use to build the GraphQL schema.<\/li>\n<\/ul>\n<p>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u3001\u4f9d\u5b58\u95a2\u4fc2\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3057\u305f\u3002\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001GraphQL\u30b9\u30ad\u30fc\u30de\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002<\/p>\n<h2>\u30b9\u30c6\u30c3\u30d72 \u2014 GraphQL\u306e\u30b9\u30ad\u30fc\u30de\u3068\u30ea\u30be\u30eb\u30d0\u3092\u5b9a\u7fa9\u3059\u308b<\/h2>\n<p>\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001GraphQL\u306e\u30b9\u30ad\u30fc\u30de\u3068\u305d\u308c\u306b\u5bfe\u5fdc\u3059\u308b\u30ea\u30be\u30eb\u30d0\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002\u30b9\u30ad\u30fc\u30de\u306fAPI\u304c\u51e6\u7406\u3067\u304d\u308b\u64cd\u4f5c\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002\u30ea\u30be\u30eb\u30d0\u306f\u3001\u30a4\u30f3\u30e1\u30e2\u30ea\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u3092\u4f7f\u7528\u3057\u3066\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u51e6\u7406\u30ed\u30b8\u30c3\u30af\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30af\u30a8\u30ea\u3067\u7f6e\u304d\u63db\u3048\u308b\u3053\u3068\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<p>\u6700\u521d\u306b\u3001\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u683c\u7d0d\u3059\u308b\u65b0\u3057\u3044\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u300csrc\u300d\u3092\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">mkdir<\/span> src<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u305d\u306e\u5f8c\u3001\u30b9\u30ad\u30fc\u30de\u7528\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3059\u308b\u305f\u3081\u306b\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">nano<\/span> src\/schema.js<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u30d5\u30a1\u30a4\u30eb\u306b\u6b21\u306e\u30b3\u30fc\u30c9\u3092\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<div>\u30d7\u30ea\u30ba\u30de GraphQL \u306e\u300csrc\/schema.js\u300d\u3092\u65e5\u672c\u8a9e\u3067\u8a00\u3044\u63db\u3048\u308b\u3068\u3001\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059:<br \/>\n\u30d7\u30ea\u30ba\u30de-GraphQL\u5185\u306e\u300csrc\/schema.js\u300d<\/div>\n<pre class=\"post-pre\"><code><span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">{<\/span> gql <span class=\"token punctuation\">}<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">require<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'apollo-server'<\/span><span class=\"token punctuation\">)<\/span>\r\n\r\n<span class=\"token keyword\">const<\/span> typeDefs <span class=\"token operator\">=<\/span> gql<span class=\"token template-string\"><span class=\"token template-punctuation string\">`<\/span><span class=\"token graphql language-graphql\">\r\n  <span class=\"token keyword\">type<\/span> <span class=\"token class-name\">Post<\/span> <span class=\"token punctuation\">{<\/span>\r\n    <span class=\"token attr-name\">content<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token scalar\">String<\/span>\r\n    <span class=\"token attr-name\">id<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token scalar\">ID<\/span><span class=\"token operator\">!<\/span>\r\n    <span class=\"token attr-name\">published<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token scalar\">Boolean<\/span><span class=\"token operator\">!<\/span>\r\n    <span class=\"token attr-name\">title<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token scalar\">String<\/span><span class=\"token operator\">!<\/span>\r\n  <span class=\"token punctuation\">}<\/span>\r\n\r\n  <span class=\"token keyword\">type<\/span> <span class=\"token class-name\">Query<\/span> <span class=\"token punctuation\">{<\/span>\r\n    <span class=\"token attr-name\">feed<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token class-name\">Post<\/span><span class=\"token operator\">!<\/span><span class=\"token punctuation\">]<\/span><span class=\"token operator\">!<\/span>\r\n    <span class=\"token attr-name\">post<\/span><span class=\"token punctuation\">(<\/span><span class=\"token attr-name\">id<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token scalar\">ID<\/span><span class=\"token operator\">!<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token class-name\">Post<\/span>\r\n  <span class=\"token punctuation\">}<\/span>\r\n\r\n  <span class=\"token keyword\">type<\/span> <span class=\"token class-name\">Mutation<\/span> <span class=\"token punctuation\">{<\/span>\r\n    <span class=\"token attr-name\">createDraft<\/span><span class=\"token punctuation\">(<\/span><span class=\"token attr-name\">content<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token scalar\">String<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token attr-name\">title<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token scalar\">String<\/span><span class=\"token operator\">!<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token class-name\">Post<\/span><span class=\"token operator\">!<\/span>\r\n    <span class=\"token attr-name\">publish<\/span><span class=\"token punctuation\">(<\/span><span class=\"token attr-name\">id<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token scalar\">ID<\/span><span class=\"token operator\">!<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token class-name\">Post<\/span>\r\n  <span class=\"token punctuation\">}<\/span>\r\n<\/span><span class=\"token template-punctuation string\">`<\/span><\/span>\r\n<\/code><\/pre>\n<p>GraphQL\u30b9\u30ad\u30fc\u30de\u306f\u3001gql\u30bf\u30b0\u4ed8\u304d\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f7f\u7528\u3057\u3066\u5b9a\u7fa9\u3057\u307e\u3059\u3002\u30b9\u30ad\u30fc\u30de\u306f\u3001API\u306b\u5bfe\u3057\u3066\u5b9f\u884c\u3067\u304d\u308b\u30af\u30a8\u30ea\u306e\u5f62\u72b6\u3092\u5b9a\u7fa9\u3059\u308b\u30bf\u30a4\u30d7\u5b9a\u7fa9\uff08typeDefs\uff09\u306e\u96c6\u5408\u3067\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001GraphQL\u30b9\u30ad\u30fc\u30de\u306e\u6587\u5b57\u5217\u304cApollo\u304c\u671f\u5f85\u3059\u308b\u5f62\u5f0f\u306b\u5909\u63db\u3055\u308c\u307e\u3059\u3002<\/p>\n<p>\u30b9\u30ad\u30fc\u30de\u306f\u4e09\u3064\u306e\u30bf\u30a4\u30d7\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>Post defines the type for a post in your blogging app and contains four fields where each field is followed by its type: for example, String.<\/li>\n<li>Query defines the feed query which returns multiple posts as denoted by the square brackets and the post query which accepts a single argument and returns a single Post.<\/li>\n<li>Mutation defines the createDraft mutation for creating a draft Post and the publish mutation which accepts an id and returns a Post.<\/li>\n<\/ul>\n<p>\u3059\u3079\u3066\u306eGraphQL API\u306b\u306f\u3001\u30af\u30a8\u30ea\u30bf\u30a4\u30d7\u304c\u3042\u308a\u3001\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u30bf\u30a4\u30d7\u304c\u3042\u308b\u304b\u3069\u3046\u304b\u306f\u500b\u3005\u306b\u7570\u306a\u308a\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30bf\u30a4\u30d7\u306f\u901a\u5e38\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30bf\u30a4\u30d7\u3068\u540c\u3058\u3067\u3059\u304c\u3001GraphQL\u30af\u30a8\u30ea\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u30dd\u30a4\u30f3\u30c8\u3092\u5b9a\u7fa9\u3059\u308b\u305f\u3081\u306b\u7279\u5225\u306a\u5f79\u5272\u3092\u679c\u305f\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u6b21\u306b\u3001typeDefs\u5909\u6570\u306e\u4e0b\u306bposts\u914d\u5217\u3092src\/schema.js\u30d5\u30a1\u30a4\u30eb\u306b\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<div>\n<p>\u30d7\u30ea\u30ba\u30de-\u30b0\u30e9\u30d5QL\/src\/schema.js\u3092\u65e5\u672c\u8a9e\u3067\u8868\u73fe\u3059\u308b\u3068\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002\u305f\u3060\u3057\u30011\u3064\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u307f\u63d0\u4f9b\u3057\u307e\u3059\uff1a<\/p>\n<p>\u30d7\u30ea\u30ba\u30de-GraphQL\/src\/schema.js<\/p>\n<\/div>\n<pre class=\"post-pre\"><code><span class=\"token spread operator\">...<\/span>\r\n<span class=\"token keyword\">const<\/span> posts <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">[<\/span>\r\n  <span class=\"token punctuation\">{<\/span>\r\n    <span class=\"token literal-property property\">id<\/span><span class=\"token operator\">:<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span>\r\n    <span class=\"token literal-property property\">title<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">'Subscribe to GraphQL Weekly for community news '<\/span><span class=\"token punctuation\">,<\/span>\r\n    <span class=\"token literal-property property\">content<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">'https:\/\/graphqlweekly.com\/'<\/span><span class=\"token punctuation\">,<\/span>\r\n    <span class=\"token literal-property property\">published<\/span><span class=\"token operator\">:<\/span> <span class=\"token boolean\">true<\/span><span class=\"token punctuation\">,<\/span>\r\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\r\n  <span class=\"token punctuation\">{<\/span>\r\n    <span class=\"token literal-property property\">id<\/span><span class=\"token operator\">:<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span>\r\n    <span class=\"token literal-property property\">title<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">'Follow Silicon Cloud on Twitter'<\/span><span class=\"token punctuation\">,<\/span>\r\n    <span class=\"token literal-property property\">content<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">'https:\/\/twitter.com\/digitalocean'<\/span><span class=\"token punctuation\">,<\/span>\r\n    <span class=\"token literal-property property\">published<\/span><span class=\"token operator\">:<\/span> <span class=\"token boolean\">true<\/span><span class=\"token punctuation\">,<\/span>\r\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\r\n  <span class=\"token punctuation\">{<\/span>\r\n    <span class=\"token literal-property property\">id<\/span><span class=\"token operator\">:<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">,<\/span>\r\n    <span class=\"token literal-property property\">title<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">'What is GraphQL?'<\/span><span class=\"token punctuation\">,<\/span>\r\n    <span class=\"token literal-property property\">content<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">'GraphQL is a query language for APIs'<\/span><span class=\"token punctuation\">,<\/span>\r\n    <span class=\"token literal-property property\">published<\/span><span class=\"token operator\">:<\/span> <span class=\"token boolean\">false<\/span><span class=\"token punctuation\">,<\/span>\r\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\r\n<span class=\"token punctuation\">]<\/span>\r\n<\/code><\/pre>\n<p>\u3042\u306a\u305f\u306f\u4e8b\u524d\u306b\u5b9a\u7fa9\u3055\u308c\u305f3\u3064\u306e\u6295\u7a3f\u3092\u6301\u3064\u6295\u7a3f\u914d\u5217\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002\u5404\u6295\u7a3f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u69cb\u9020\u306f\u3001\u30b9\u30ad\u30fc\u30de\u3067\u5b9a\u7fa9\u3057\u305fPost\u30bf\u30a4\u30d7\u306b\u4e00\u81f4\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u914d\u5217\u306fAPI\u306b\u3088\u3063\u3066\u63d0\u4f9b\u3055\u308c\u308b\u6295\u7a3f\u3092\u4fdd\u6301\u3057\u307e\u3059\u3002\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068Prisma Client\u304c\u5c0e\u5165\u3055\u308c\u305f\u5f8c\u306b\u3001\u3053\u306e\u914d\u5217\u3092\u7f6e\u304d\u63db\u3048\u308b\u3053\u3068\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<p>\u6b21\u306b\u3001\u307e\u3060\u5b9a\u7fa9\u3057\u3066\u3044\u306a\u3044\u30ec\u30be\u30eb\u30d0\u30fc\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002\u5148\u307b\u3069\u5b9a\u7fa9\u3057\u305f\u30dd\u30b9\u30c8\u914d\u5217\u306e\u4e0b\u306b\u3001\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u3092\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<div>\u30d7\u30ea\u30ba\u30de\u30fb\u30b0\u30e9\u30d5QL\u306eschema.js\u30d5\u30a1\u30a4\u30eb\u3092\u65e5\u672c\u8a9e\u3067\u8a00\u3044\u63db\u3048\u308b\u3068\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<br \/>\n\u300c\u30d7\u30ea\u30ba\u30de-\u30b0\u30e9\u30d5QL\u306esrc\/schema.js\u30d5\u30a1\u30a4\u30eb\u300d<\/div>\n<pre class=\"post-pre\"><code><span class=\"token spread operator\">...<\/span>\r\n<span class=\"token keyword\">const<\/span> resolvers <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">{<\/span>\r\n  <span class=\"token literal-property property\">Query<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span>\r\n    <span class=\"token function-variable function\">feed<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token parameter\">parent<span class=\"token punctuation\">,<\/span> args<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token arrow operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\r\n      <span class=\"token keyword control-flow\">return<\/span> posts<span class=\"token punctuation\">.<\/span><span class=\"token method function property-access\">filter<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token parameter\">post<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token arrow operator\">=&gt;<\/span> post<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">published<\/span><span class=\"token punctuation\">)<\/span>\r\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\r\n    <span class=\"token function-variable function\">post<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token parameter\">parent<span class=\"token punctuation\">,<\/span> args<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token arrow operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\r\n      <span class=\"token keyword control-flow\">return<\/span> posts<span class=\"token punctuation\">.<\/span><span class=\"token method function property-access\">find<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token parameter\">post<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token arrow operator\">=&gt;<\/span> post<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">id<\/span> <span class=\"token operator\">===<\/span> <span class=\"token known-class-name class-name\">Number<\/span><span class=\"token punctuation\">(<\/span>args<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">id<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\r\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\r\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\r\n  <span class=\"token literal-property property\">Mutation<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span>\r\n    <span class=\"token function-variable function\">createDraft<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token parameter\">parent<span class=\"token punctuation\">,<\/span> args<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token arrow operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\r\n      posts<span class=\"token punctuation\">.<\/span><span class=\"token method function property-access\">push<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span>\r\n        <span class=\"token literal-property property\">id<\/span><span class=\"token operator\">:<\/span> posts<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">length<\/span> <span class=\"token operator\">+<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span>\r\n        <span class=\"token literal-property property\">title<\/span><span class=\"token operator\">:<\/span> args<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">title<\/span><span class=\"token punctuation\">,<\/span>\r\n        <span class=\"token literal-property property\">content<\/span><span class=\"token operator\">:<\/span> args<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">content<\/span><span class=\"token punctuation\">,<\/span>\r\n        <span class=\"token literal-property property\">published<\/span><span class=\"token operator\">:<\/span> <span class=\"token boolean\">false<\/span><span class=\"token punctuation\">,<\/span>\r\n      <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span>\r\n      <span class=\"token keyword control-flow\">return<\/span> posts<span class=\"token punctuation\">[<\/span>posts<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">length<\/span> <span class=\"token operator\">-<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span>\r\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\r\n    <span class=\"token function-variable function\">publish<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token parameter\">parent<span class=\"token punctuation\">,<\/span> args<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token arrow operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\r\n      <span class=\"token keyword\">const<\/span> postToPublish <span class=\"token operator\">=<\/span> posts<span class=\"token punctuation\">.<\/span><span class=\"token method function property-access\">find<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token parameter\">post<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token arrow operator\">=&gt;<\/span> post<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">id<\/span> <span class=\"token operator\">===<\/span> <span class=\"token known-class-name class-name\">Number<\/span><span class=\"token punctuation\">(<\/span>args<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">id<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\r\n      postToPublish<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">published<\/span> <span class=\"token operator\">=<\/span> <span class=\"token boolean\">true<\/span>\r\n      <span class=\"token keyword control-flow\">return<\/span> postToPublish\r\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\r\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\r\n  <span class=\"token literal-property property\">Post<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span>\r\n    <span class=\"token function-variable function\">content<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token parameter\">parent<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token arrow operator\">=&gt;<\/span> parent<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">content<\/span><span class=\"token punctuation\">,<\/span>\r\n    <span class=\"token function-variable function\">id<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token parameter\">parent<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token arrow operator\">=&gt;<\/span> parent<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">id<\/span><span class=\"token punctuation\">,<\/span>\r\n    <span class=\"token function-variable function\">published<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token parameter\">parent<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token arrow operator\">=&gt;<\/span> parent<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">published<\/span><span class=\"token punctuation\">,<\/span>\r\n    <span class=\"token function-variable function\">title<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token parameter\">parent<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token arrow operator\">=&gt;<\/span> parent<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">title<\/span><span class=\"token punctuation\">,<\/span>\r\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\r\n<span class=\"token punctuation\">}<\/span>\r\n\r\nmodule<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">exports<\/span> <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">{<\/span>\r\n  resolvers<span class=\"token punctuation\">,<\/span>\r\n  typeDefs<span class=\"token punctuation\">,<\/span>\r\n<span class=\"token punctuation\">}<\/span>\r\n<\/code><\/pre>\n<p>GraphQL\u30b9\u30ad\u30fc\u30de\u3068\u540c\u3058\u69cb\u9020\u3067\u30ea\u30be\u30eb\u30d0\u3092\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30b9\u30ad\u30fc\u30de\u306e\u578b\u306e\u5404\u30d5\u30a3\u30fc\u30eb\u30c9\u306b\u306f\u3001\u305d\u308c\u306b\u5bfe\u5fdc\u3059\u308b\u30ea\u30be\u30eb\u30d0\u95a2\u6570\u304c\u3042\u308a\u307e\u3059\u3002\u5bfe\u5fdc\u3059\u308b\u30ea\u30be\u30eb\u30d0\u95a2\u6570\u306e\u5f79\u5272\u306f\u3001\u30b9\u30ad\u30fc\u30de\u306e\u305d\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u306b\u5bfe\u3059\u308b\u30c7\u30fc\u30bf\u3092\u8fd4\u3059\u3053\u3068\u3067\u3059\u3002\u4f8b\u3048\u3070\u3001Query.feed()\u30ea\u30be\u30eb\u30d0\u306f\u3001\u6295\u7a3f\u914d\u5217\u3092\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3057\u3066\u516c\u958b\u3055\u308c\u305f\u6295\u7a3f\u3092\u8fd4\u3057\u307e\u3059\u3002<\/p>\n<p>\u89e3\u6c7a\u95a2\u6570\u306b\u306f4\u3064\u306e\u5f15\u6570\u304c\u6e21\u3055\u308c\u307e\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>parent is the return value of the previous resolver in the resolver chain. For top-level resolvers, the parent is undefined, because no previous resolver is called. For example, when making a feed query, the query.feed() resolver will be called with parent\u2019s value undefined and then the resolvers of Post will be called where parent is the object returned from the feed resolver.<\/li>\n<li>args carries the parameters for the query. For example, the post query, will receive the id of the post to be fetched.<\/li>\n<li>context is an object that gets passed through the resolver chain that each resolver can write to and read from, which allows the resolvers to share information.<\/li>\n<li>info is an AST representation of the query or mutation. You can read more about the details in this Prisma series on GraphQL Basics.<\/li>\n<\/ul>\n<p>\u3053\u308c\u3089\u306e\u30ea\u30be\u30eb\u30d0\u306b\u306f\u3001\u6587\u8108\u3084\u60c5\u5831\u306f\u5fc5\u8981\u3042\u308a\u307e\u305b\u3093\u306e\u3067\u3001\u89aa(parent)\u3068\u5f15\u6570(args)\u306e\u307f\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u4f5c\u696d\u304c\u7d42\u4e86\u3057\u305f\u3089\u3001\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3057\u3066\u7d42\u4e86\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<div class=\"post-conf-note\">\n<p class=\"post-conf-desc\">Note<\/p>\n<div>\u6ce8\u610f\uff1a\u30ea\u30be\u30eb\u30d0\u304c\u81ea\u8eab\u306e\u540d\u524d\u3068\u540c\u3058\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8fd4\u3059\u5834\u5408\u3001\u4f8b\u3048\u3070 Post \u306e\u5834\u5408\u3001Apollo Server \u306f\u305d\u308c\u3089\u3092\u81ea\u52d5\u7684\u306b\u89e3\u6c7a\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u660e\u793a\u7684\u306b\u305d\u308c\u3089\u306e\u30ea\u30be\u30eb\u30d0\u3092\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u306a\u3044\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002<br \/>\n&#8211; Post: {<br \/>\n&#8211; content: (parent) =&gt; parent.content,<br \/>\n&#8211; id: (parent) =&gt; parent.id,<br \/>\n&#8211; published: (parent) =&gt; parent.published,<br \/>\n&#8211; title: (parent) =&gt; parent.title,<br \/>\n&#8211; },<\/div>\n<\/div>\n<p>\u30b9\u30ad\u30fc\u30de\u3068\u30ea\u30be\u30eb\u30d0\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3057\u3066\u304a\u304d\u3001\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u3067Apollo Server\u3092\u4f7f\u7528\u3057\u3066\u30b5\u30fc\u30d0\u3092\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u3059\u308b\u305f\u3081\u306b\u5229\u7528\u3057\u307e\u3059\u3002<\/p>\n<h2>\u30b9\u30c6\u30c3\u30d73 \u2014 GraphQL\u30b5\u30fc\u30d0\u30fc\u306e\u4f5c\u6210<\/h2>\n<p>\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001Apollo Server\u3092\u4f7f\u7528\u3057\u3066GraphQL\u30b5\u30fc\u30d0\u30fc\u3092\u4f5c\u6210\u3057\u3001\u30dd\u30fc\u30c8\u306b\u30d0\u30a4\u30f3\u30c9\u3057\u3066\u30b5\u30fc\u30d0\u30fc\u304c\u63a5\u7d9a\u3092\u53d7\u3051\u4ed8\u3051\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/p>\n<p>\u6700\u521d\u306b\u3001\u30b5\u30fc\u30d0\u30fc\u7528\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3059\u308b\u305f\u3081\u306b\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">nano<\/span> src\/server.js<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u3092\u30d5\u30a1\u30a4\u30eb\u306b\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<div>\u30d7\u30ea\u30ba\u30de-GraphQL\/src\/server.js\u3002<\/div>\n<pre class=\"post-pre\"><code><span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token maybe-class-name\">ApolloServer<\/span> <span class=\"token punctuation\">}<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">require<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'apollo-server'<\/span><span class=\"token punctuation\">)<\/span>\r\n<span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">{<\/span> resolvers<span class=\"token punctuation\">,<\/span> typeDefs <span class=\"token punctuation\">}<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">require<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'.\/schema'<\/span><span class=\"token punctuation\">)<\/span>\r\n\r\n<span class=\"token keyword\">const<\/span> port <span class=\"token operator\">=<\/span> process<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">env<\/span><span class=\"token punctuation\">.<\/span><span class=\"token constant\">PORT<\/span> <span class=\"token operator\">||<\/span> <span class=\"token number\">8080<\/span>\r\n\r\n<span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ApolloServer<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> resolvers<span class=\"token punctuation\">,<\/span> typeDefs <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token method function property-access\">listen<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span> port <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token arrow operator\">=&gt;<\/span>\r\n  <span class=\"token console class-name\">console<\/span><span class=\"token punctuation\">.<\/span><span class=\"token method function property-access\">log<\/span><span class=\"token punctuation\">(<\/span><span class=\"token template-string\"><span class=\"token template-punctuation string\">`<\/span><span class=\"token string\">Server ready at: http:\/\/localhost:<\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>port<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">`<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\r\n<span class=\"token punctuation\">)<\/span>\r\n<\/code><\/pre>\n<p>\u3053\u3053\u3067\u306f\u3001\u524d\u306e\u30b9\u30c6\u30c3\u30d7\u304b\u3089\u30b9\u30ad\u30fc\u30de\u3068\u30ea\u30be\u30eb\u30d0\u3092\u30b5\u30fc\u30d0\u30fc\u306b\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u3057\u3066\u6e21\u3057\u307e\u3059\u3002<\/p>\n<p>\u30b5\u30fc\u30d0\u304c\u30d0\u30a4\u30f3\u30c9\u3059\u308b\u30dd\u30fc\u30c8\u306f\u3001PORT\u74b0\u5883\u5909\u6570\u304b\u3089\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002\u3082\u3057\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u30678080\u30dd\u30fc\u30c8\u304c\u4f7f\u308f\u308c\u307e\u3059\u3002App Platform\u304c\u81ea\u52d5\u7684\u306b\u8a2d\u5b9a\u3059\u308b\u305f\u3081\u3001\u30c7\u30d7\u30ed\u30a4\u5f8c\u306b\u30b5\u30fc\u30d0\u304c\u63a5\u7d9a\u3092\u53d7\u3051\u5165\u308c\u3089\u308c\u308b\u3088\u3046\u3001PORT\u74b0\u5883\u5909\u6570\u304c\u78ba\u5b9f\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002<\/p>\n<p>\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3057\u3066\u7d42\u4e86\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u3042\u306a\u305f\u306eGraphQL API\u306f\u5b9f\u884c\u6e96\u5099\u304c\u6574\u3063\u3066\u3044\u307e\u3059\u3002\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3067\u30b5\u30fc\u30d0\u30fc\u3092\u8d77\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">node<\/span> src\/server.js<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u6b21\u306e\u51fa\u529b\u3092\u53d7\u3051\u53d6\u308a\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>Server ready at: http:\/\/localhost:8080<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u30d1\u30c3\u30b1\u30fc\u30b8\u306epackage.json\u30d5\u30a1\u30a4\u30eb\u306b\u30b9\u30bf\u30fc\u30c8\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u306f\u3001\u30a8\u30f3\u30c8\u30ea\u30fc\u30dd\u30a4\u30f3\u30c8\u304c\u660e\u78ba\u306b\u306a\u308b\u305f\u3081\u306b\u826f\u3044\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3068\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001App Platform\u306f\u30c7\u30d7\u30ed\u30a4\u5f8c\u306b\u30b5\u30fc\u30d0\u30fc\u3092\u8d77\u52d5\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u307e\u305a\u3001CTRL+C\u3092\u62bc\u3057\u3066\u30b5\u30fc\u30d0\u30fc\u3092\u505c\u6b62\u3057\u307e\u3059\u3002\u6b21\u306b\u3001\u30b9\u30bf\u30fc\u30c8\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u8ffd\u52a0\u3059\u308b\u305f\u3081\u306b\u3001package.json\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u3044\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">nano<\/span> package.json<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>package.json\u306e\u300cscripts\u300d\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u3001\u30cf\u30a4\u30e9\u30a4\u30c8\u3055\u308c\u305f\u30c6\u30ad\u30b9\u30c8\u3092\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<div>\u30d1\u30c3\u30b1\u30fc\u30b8.json<\/div>\n<pre class=\"post-pre\"><code><span class=\"token punctuation\">{<\/span>\r\n  <span class=\"token property\">\"name\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"prisma-graphql\"<\/span><span class=\"token punctuation\">,<\/span>\r\n  <span class=\"token property\">\"version\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"1.0.0\"<\/span><span class=\"token punctuation\">,<\/span>\r\n  <span class=\"token property\">\"description\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"\"<\/span><span class=\"token punctuation\">,<\/span>\r\n  <span class=\"token property\">\"main\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"index.js\"<\/span><span class=\"token punctuation\">,<\/span>\r\n  <span class=\"token property\">\"scripts\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span>\r\n    <span class=\"token property\">\"test\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"echo \\\"Error: no test specified\\\" &amp;&amp; exit 1\"<\/span><mark><span class=\"token punctuation\">,<\/span><\/mark>\r\n    <mark><span class=\"token property\">\"start\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"node .\/src\/server.js\"<\/span><\/mark>\r\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\r\n  <span class=\"token property\">\"keywords\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span>\r\n  <span class=\"token property\">\"author\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"\"<\/span><span class=\"token punctuation\">,<\/span>\r\n  <span class=\"token property\">\"license\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"ISC\"<\/span><span class=\"token punctuation\">,<\/span>\r\n  <span class=\"token property\">\"dependencies\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span>\r\n    <span class=\"token property\">\"apollo-server\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"^3.11.1\"<\/span><span class=\"token punctuation\">,<\/span>\r\n    <span class=\"token property\">\"graphql\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"^16.6.0\"<\/span>\r\n  <span class=\"token punctuation\">}<\/span>\r\n<span class=\"token punctuation\">}<\/span>\r\n<\/code><\/pre>\n<p>\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3057\u3066\u7d42\u4e86\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u30b5\u30fc\u30d0\u30fc\u3092\u8d77\u52d5\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">npm<\/span> start<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u4ee5\u4e0b\u306e\u51fa\u529b\u3092\u53d7\u3051\u53d6\u308a\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&gt; prisma-graphql@1.0.0 start &gt; node .\/src\/server.js Server ready at: http:\/\/localhost:8080<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>GraphQL API\u3092\u30c6\u30b9\u30c8\u3059\u308b\u305f\u3081\u306b\u3001\u51fa\u529b\u304b\u3089URL\u3092\u958b\u304d\u3001Apollo GraphQL Studio\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002\u30db\u30fc\u30e0\u30da\u30fc\u30b8\u3067\u300cQuery Your Server\u300d\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u3001IDE\u3068\u5bfe\u8a71\u3057\u307e\u3059\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/65644b03daa94e2bdf7aef31\/83-0.png\" alt=\"Apollo GraphQL Studio\" \/><\/div>\n<p>Apollo GraphQL Studio\u306f\u3001\u30af\u30a8\u30ea\u3084\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u9001\u4fe1\u3057\u3066API\u3092\u30c6\u30b9\u30c8\u3067\u304d\u308bIDE\u3067\u3059\u3002<\/p>\n<p>\u4f8b\u3048\u3070\u3001\u516c\u958b\u3055\u308c\u305f\u6295\u7a3f\u306e\u307f\u3092\u8fd4\u3059\u30d5\u30a3\u30fc\u30c9\u30af\u30a8\u30ea\u3092\u30c6\u30b9\u30c8\u3059\u308b\u5834\u5408\u3001IDE\u306e\u5de6\u5074\u306b\u4ee5\u4e0b\u306e\u30af\u30a8\u30ea\u3092\u5165\u529b\u3057\u3001\u5b9f\u884c\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u3066\u30af\u30a8\u30ea\u3092\u9001\u4fe1\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"token keyword\">query<\/span> <span class=\"token punctuation\">{<\/span>\r\n  <span class=\"token object\">feed<\/span> <span class=\"token punctuation\">{<\/span>\r\n    <span class=\"token property\">id<\/span>\r\n    <span class=\"token property\">title<\/span>\r\n    <span class=\"token property\">content<\/span>\r\n    <span class=\"token property\">published<\/span>\r\n  <span class=\"token punctuation\">}<\/span>\r\n<span class=\"token punctuation\">}<\/span>\r\n<\/code><\/pre>\n<p>\u30ec\u30b9\u30dd\u30f3\u30b9\u306b\u306f\u3001\u300cGraphQL Weekly\u3092\u8cfc\u8aad\u3059\u308b\u300d\u3068\u3044\u3046\u30bf\u30a4\u30c8\u30eb\u3068\u305d\u306eURL\u3001\u305d\u3057\u3066\u300cSilicon Cloud\u3092Twitter\u3067\u30d5\u30a9\u30ed\u30fc\u3059\u308b\u300d\u3068\u3044\u3046\u30bf\u30a4\u30c8\u30eb\u3068\u305d\u306eURL\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/65644b03daa94e2bdf7aef31\/88-0.png\" alt=\"GraphQL Feed Query\" \/><\/div>\n<p>\u4ee5\u524d\u306e\u30af\u30a8\u30ea\u306e\u4e0a\u306e\u30d0\u30fc\u306e+\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u3001\u65b0\u3057\u3044\u30bf\u30d6\u3092\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u6b21\u306b\u3001createDraft\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u30c6\u30b9\u30c8\u3059\u308b\u305f\u3081\u306b\u3001\u4ee5\u4e0b\u306e\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"token keyword\">mutation<\/span> <span class=\"token punctuation\">{<\/span>\r\n  <span class=\"token property-query property-mutation\">createDraft<\/span><span class=\"token punctuation\">(<\/span><span class=\"token attr-name\">title<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">\"Deploying a GraphQL API to Silicon Cloud\"<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\r\n    <span class=\"token property\">id<\/span>\r\n    <span class=\"token property\">title<\/span>\r\n    <span class=\"token property\">content<\/span>\r\n    <span class=\"token property\">published<\/span>\r\n  <span class=\"token punctuation\">}<\/span>\r\n<span class=\"token punctuation\">}<\/span>\r\n<\/code><\/pre>\n<p>\u300c\u30d7\u30ec\u30a4\u30dc\u30bf\u30f3\u3092\u4f7f\u7528\u3057\u3066\u5909\u7570\u3092\u9001\u4fe1\u3057\u305f\u5f8c\u3001\u5fdc\u7b54\u3068\u3057\u3066\u3001\u30bf\u30a4\u30c8\u30eb\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u4e00\u90e8\u3068\u3057\u3066\u3001GraphQL API\u3092Silicon Cloud\u306b\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3068\u3044\u3046\u5185\u5bb9\u304c\u542b\u307e\u308c\u308b\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u53d7\u3051\u53d6\u308a\u307e\u3059\u3002\u300d<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/65644b03daa94e2bdf7aef31\/92-0.png\" alt=\"GraphQL Create Draft Mutation\" \/><\/div>\n<div class=\"post-conf-note\">\n<p class=\"post-conf-desc\">Note<\/p>\n<div>\n<p>\u6ce8\u610f\uff1acreateDraft\u306e\u5f8c\u308d\u306e\u4e2d\u62ec\u5f27\uff08{}\uff09\u5185\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8fd4\u3059\u304b\u9664\u5916\u3059\u308b\u3053\u3068\u3067\u3001\u8fd4\u3059\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u9078\u629e\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001id\u3068title\u306e\u307f\u3092\u8fd4\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306amutation\u3092\u9001\u4fe1\u3067\u304d\u307e\u3059\uff1a<\/p>\n<p>mutation {<br \/>\ncreateDraft(title: &#8220;\u30c7\u30b8\u30bf\u30eb\u30aa\u30fc\u30b7\u30e3\u30f3\u306bGraphQL API\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b&#8221;) {<br \/>\nid<br \/>\ntitle<br \/>\n}<br \/>\n}<\/p>\n<\/div>\n<\/div>\n<p>\u3042\u306a\u305f\u306fGraphQL\u30b5\u30fc\u30d0\u30fc\u3092\u4f5c\u6210\u3057\u3001\u30c6\u30b9\u30c8\u3092\u6210\u529f\u3055\u305b\u307e\u3057\u305f\u3002\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u305f\u3081\u306bGitHub\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n<h2>\u30b9\u30c6\u30c3\u30d74 &#8211; GitHub\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u4f5c\u6210<\/h2>\n<p>\u3053\u306e\u624b\u9806\u3067\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u7528\u306eGitHub\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u4f5c\u6210\u3057\u3001\u5909\u66f4\u3092\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001GitHub\u304b\u3089App Platform\u306b\u81ea\u52d5\u7684\u306bGraphQL API\u304c\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<p>\u307e\u305a\u3001CTRL+C\u3092\u62bc\u3057\u3066\u958b\u767a\u30b5\u30fc\u30d0\u30fc\u3092\u505c\u6b62\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u305d\u306e\u5f8c\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066prisma-graphql\u30d5\u30a9\u30eb\u30c0\u304b\u3089\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u521d\u671f\u5316\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">git<\/span> init<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u6b21\u306b\u3001\u30b3\u30fc\u30c9\u3092\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u30b3\u30df\u30c3\u30c8\u3059\u308b\u305f\u3081\u306b\u3001\u4ee5\u4e0b\u306e2\u3064\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">git<\/span> <span class=\"token function\">add<\/span> src package-lock.json package.json<\/li>\n<li data-prefix=\"$\"><span class=\"token function\">git<\/span> commit <span class=\"token parameter variable\">-m<\/span> <span class=\"token string\">&#8216;Initial commit&#8217;<\/span><\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u30ed\u30fc\u30ab\u30eb\u30ea\u30dd\u30b8\u30c8\u30ea\u3078\u306e\u5909\u66f4\u304c\u30b3\u30df\u30c3\u30c8\u3055\u308c\u305f\u3089\u3001GitHub\u3067\u65b0\u3057\u3044\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u4f5c\u6210\u3057\u3066\u5909\u66f4\u5185\u5bb9\u3092\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002<\/p>\n<p>GitHub\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u3001\u65b0\u3057\u3044\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u8cab\u6027\u306e\u305f\u3081\u306b\u3001\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u540d\u524d\u3092prisma-graphql\u3068\u3057\u3066\u3001\u4f5c\u6210\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u30ec\u30dd\u30b8\u30c8\u30ea\u304c\u4f5c\u6210\u3055\u308c\u305f\u5f8c\u306f\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u5909\u66f4\u3092\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u306f\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30ed\u30fc\u30ab\u30eb\u30d6\u30e9\u30f3\u30c1\u3092main\u306b\u30ea\u30cd\u30fc\u30e0\u3059\u308b\u3053\u3068\u3082\u542b\u307e\u308c\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">git<\/span> remote <span class=\"token function\">add<\/span> origin git@github.com:<mark>your_github_username<\/mark>\/prisma-graphql.git<\/li>\n<li data-prefix=\"$\"><span class=\"token function\">git<\/span> branch <span class=\"token parameter variable\">-M<\/span> main<\/li>\n<li data-prefix=\"$\"><span class=\"token function\">git<\/span> push &#8211;set-upstream origin main<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>GitHub\u3078\u306e\u5909\u66f4\u306e\u78ba\u5b9a\u3068\u30d7\u30c3\u30b7\u30e5\u304c\u6210\u529f\u3057\u307e\u3057\u305f\u3002\u6b21\u306b\u3001\u30ea\u30dd\u30b8\u30c8\u30ea\u3092App Platform\u306b\u63a5\u7d9a\u3057\u3066\u3001GraphQL API\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3059\u3002<\/p>\n<h2>\u30b9\u30c6\u30c3\u30d75 \u2014 App Platform\u3078\u306e\u5c55\u958b<\/h2>\n<p>\u3053\u306e\u624b\u9806\u3067\u306f\u3001\u4f5c\u6210\u3057\u305fGitHub\u30ea\u30dd\u30b8\u30c8\u30ea\u3092Silicon Cloud\u306b\u63a5\u7d9a\u3057\u3001App Platform\u3092\u8a2d\u5b9a\u3057\u3066\u3001GitHub\u306b\u5909\u66f4\u3092\u30d7\u30c3\u30b7\u30e5\u3059\u308b\u3068GraphQL API\u304c\u81ea\u52d5\u7684\u306b\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/p>\n<p>\u6700\u521d\u306b\u3001Silicon Cloud Cloud Console\u306eApp Platform\u30da\u30fc\u30b8\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3001&#8221;Create App&#8221;\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u30c7\u30d5\u30a9\u30eb\u30c8\u3068\u3057\u3066\u3001GitHub\u3068\u3044\u3046\u30b5\u30fc\u30d3\u30b9\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306e\u9078\u629e\u80a2\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002<\/p>\n<p>GitHub\u30a2\u30ab\u30a6\u30f3\u30c8\u306bSilicon Cloud\u3092\u8a2d\u5b9a\u3057\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u3001\u300c\u30a2\u30af\u30bb\u30b9\u306e\u7ba1\u7406\u300d\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u3001GitHub\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3055\u308c\u307e\u3059\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/65644b03daa94e2bdf7aef31\/111-0.png\" alt=\"Silicon Cloud Cloud console page for \" \/><\/div>\n<p>\u3042\u306a\u305f\u306f\u3059\u3079\u3066\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u307e\u305f\u306f\u7279\u5b9a\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u9078\u629e\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002[\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\uff06\u627f\u8a8d]\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068\u3001Silicon Cloud \u30a2\u30d7\u30ea\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e\u4f5c\u6210\u30da\u30fc\u30b8\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3055\u308c\u307e\u3059\u3002<\/p>\n<p>\u3042\u306a\u305f\u306e_Github_\u30e6\u30fc\u30b6\u30fc\u540d\/prisma-graphql_\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u9078\u629e\u3057\u3001\u6b21\u306b\u9032\u3093\u3067\u304f\u3060\u3055\u3044\u3002\u30aa\u30fc\u30c8\u30c7\u30d7\u30ed\u30a4\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u9078\u629e\u3055\u308c\u3066\u304a\u308a\u3001\u518d\u30c7\u30d7\u30ed\u30a4\u306e\u4e00\u8cab\u6027\u3092\u4fdd\u3064\u305f\u3081\u306b\u9078\u629e\u3057\u305f\u307e\u307e\u306b\u3057\u3066\u304a\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/65644b03daa94e2bdf7aef31\/114-0.png\" alt=\"Choose Repository\" \/><\/div>\n<p>\u30ea\u30bd\u30fc\u30b9\u30da\u30fc\u30b8\u3067\u3001\u9069\u5207\u306a\u30d7\u30e9\u30f3\u3092\u9078\u629e\u3059\u308b\u305f\u3081\u306b\u300c\u7de8\u96c6\u30d7\u30e9\u30f3\u300d\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002\u5fc5\u8981\u306a\u30d7\u30e9\u30f3\u30b5\u30a4\u30ba\u3092\u6301\u3064\u300c\u30d9\u30fc\u30b7\u30c3\u30af\u30d7\u30e9\u30f3\u300d\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\uff08\u3053\u306e\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3067\u306f\u3001$5.00\/\u6708\u306e\u30d9\u30fc\u30b7\u30c3\u30af\u30d7\u30e9\u30f3\u3092\u4f7f\u7528\u3057\u307e\u3059\uff09\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/65644b03daa94e2bdf7aef31\/116-0.png\" alt=\"Screencapture of the \" \/><\/div>\n<p>\u305d\u306e\u5f8c\u306f\u3001\u4f5c\u6210\u30da\u30fc\u30b8\u306b\u623b\u308b\u305f\u3081\u306b\u300c\u623b\u308b\u300d\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u306e\u96a3\u306b\u3042\u308b\u30da\u30f3\u30a2\u30a4\u30b3\u30f3\u3092\u62bc\u3059\u3068\u3001\u30a2\u30d7\u30ea\u306e\u8a2d\u5b9a\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u8a2d\u5b9a\u30da\u30fc\u30b8\u304c\u958b\u304d\u307e\u3059\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/65644b03daa94e2bdf7aef31\/119-0.png\" alt=\"Application Settings\" \/><\/div>\n<p>\u300cRun Command\u300d\u304c\u300cnpm start\u300d\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001App Platform\u306fHTTP\u30dd\u30fc\u30c8\u3092\u300c8080\u300d\u3068\u8a2d\u5b9a\u3057\u307e\u3059\u304c\u3001\u3053\u308c\u306fGraphQL\u30b5\u30fc\u30d0\u30fc\u306e\u30d0\u30a4\u30f3\u30c9\u30dd\u30fc\u30c8\u3068\u3057\u3066\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u30dd\u30fc\u30c8\u3068\u540c\u3058\u3067\u3059\u3002<\/p>\n<p>\u69cb\u6210\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u304c\u5b8c\u4e86\u3057\u305f\u3089\u3001\u623b\u308b\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u3066\u8a2d\u5b9a\u30da\u30fc\u30b8\u306b\u623b\u308a\u307e\u3059\u3002\u305d\u3057\u3066\u3001\u6b21\u3078\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u3066\u3001\u74b0\u5883\u5909\u6570\u306e\u30da\u30fc\u30b8\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002<\/p>\n<p>\u73fe\u6642\u70b9\u3067\u306f\u3001\u74b0\u5883\u5909\u6570\u306e\u8ffd\u52a0\u8a2d\u5b9a\u306f\u5fc5\u8981\u3042\u308a\u307e\u305b\u3093\u3002\u6b21\u306e\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/65644b03daa94e2bdf7aef31\/123-0.png\" alt=\"Screencapture displaying the Environment Variables default setup\" \/><\/div>\n<p>\u300c\u60c5\u5831\u300d\u30da\u30fc\u30b8\u3067\u306f\u3001\u30a2\u30d7\u30ea\u306e\u8a73\u7d30\u3068\u5834\u6240\u3092\u8abf\u6574\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30a2\u30d7\u30ea\u60c5\u5831\u3092\u7de8\u96c6\u3057\u3066\u3001\u30a2\u30d7\u30ea\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u305f\u3044\u5730\u57df\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4fdd\u5b58\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u3066\u30a2\u30d7\u30ea\u306e\u8a73\u7d30\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u305d\u306e\u5f8c\u3001\u6b21\u3078\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/65644b03daa94e2bdf7aef31\/125-0.png\" alt=\"Screencapture of the Info page, displaying the selected location of the application\" \/><\/div>\n<p>\u9078\u629e\u3057\u305f\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u3059\u3079\u3066\u30ec\u30d3\u30e5\u30fc\u30da\u30fc\u30b8\u3067\u78ba\u8a8d\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u305d\u306e\u5f8c\u3001\u300c\u30ea\u30bd\u30fc\u30b9\u3092\u4f5c\u6210\u300d\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u521d\u671f\u30c7\u30d7\u30ed\u30a4\u306e\u9032\u6357\u72b6\u6cc1\u304c\u8868\u793a\u3055\u308c\u308b\u30a2\u30d7\u30ea\u306e\u30da\u30fc\u30b8\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3055\u308c\u307e\u3059\u3002<\/p>\n<p>\u30d3\u30eb\u30c9\u304c\u5b8c\u4e86\u3059\u308b\u3068\u3001\u30a2\u30d7\u30ea\u304c\u5c55\u958b\u3055\u308c\u305f\u901a\u77e5\u304c\u5c4a\u304d\u307e\u3059\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/65644b03daa94e2bdf7aef31\/128-0.png\" alt=\"Screencapture displaying the deployment progress bar with a \" \/><\/div>\n<p>\u30a2\u30d7\u30ea\u540d\u306e\u4e0b\u306b\u3042\u308bURL\u304b\u3089\u3001\u30c7\u30b8\u30bf\u30eb\u30aa\u30fc\u30b7\u30e3\u30f3\u30b3\u30f3\u30bd\u30fc\u30eb\u3067\u5c55\u958b\u3055\u308c\u305fGraphQL API\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002\u305d\u308c\u306f\u3001ondigitalocean.app\u30b5\u30d6\u30c9\u30e1\u30a4\u30f3\u3092\u4ecb\u3057\u3066\u30ea\u30f3\u30af\u3055\u308c\u307e\u3059\u3002URL\u3092\u958b\u304f\u3068\u3001GraphQL Playground\u304c\u3053\u306e\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u306e\u30b9\u30c6\u30c3\u30d73\u3068\u540c\u3058\u3088\u3046\u306b\u958b\u304d\u307e\u3059\u3002<\/p>\n<p>\u30ea\u30dd\u30b8\u30c8\u30ea\u3092App Platform\u306b\u6b63\u5e38\u306b\u63a5\u7d9a\u3057\u3001GraphQL API\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3057\u305f\u3002\u6b21\u306b\u3001\u30a2\u30d7\u30ea\u3092\u9032\u5316\u3055\u305b\u3001GraphQL API\u306e\u30a4\u30f3\u30e1\u30e2\u30ea\u30c7\u30fc\u30bf\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3067\u7f6e\u304d\u63db\u3048\u307e\u3059\u3002<\/p>\n<h2>\u30b9\u30c6\u30c3\u30d76 \u2013 PostgreSQL\u3092\u4f7f\u7528\u3057\u3066Prisma\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3059\u308b<\/h2>\n<p>\u3053\u308c\u307e\u3067\u3001\u30c7\u30fc\u30bf\u3092\u4fdd\u5b58\u3059\u308b\u305f\u3081\u306b\u30a4\u30f3\u30e1\u30e2\u30ea\u306e\u6295\u7a3f\u914d\u5217\u3092\u4f7f\u7528\u3057\u3066GraphQL API\u3092\u69cb\u7bc9\u3057\u307e\u3057\u305f\u3002\u3057\u304b\u3057\u3001\u30b5\u30fc\u30d0\u30fc\u304c\u518d\u8d77\u52d5\u3059\u308b\u3068\u3001\u30c7\u30fc\u30bf\u3078\u306e\u3059\u3079\u3066\u306e\u5909\u66f4\u304c\u5931\u308f\u308c\u3066\u3057\u307e\u3044\u307e\u3059\u3002\u30c7\u30fc\u30bf\u304c\u5b89\u5168\u306b\u6c38\u7d9a\u5316\u3055\u308c\u308b\u3088\u3046\u306b\u3059\u308b\u305f\u3081\u306b\u3001\u6295\u7a3f\u914d\u5217\u3092PostgreSQL\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3067\u7f6e\u304d\u63db\u3048\u3001\u30c7\u30fc\u30bf\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306bPrisma\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n<p>\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001Prisma CLI\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3001\u521d\u671f\u306ePrisma\u30b9\u30ad\u30fc\u30de\uff08Prisma\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u306e\u30e1\u30a4\u30f3\u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u3067\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b9\u30ad\u30fc\u30de\u3092\u542b\u3080\uff09\u3092\u4f5c\u6210\u3057\u3001Docker\u3092\u4f7f\u7528\u3057\u3066\u30ed\u30fc\u30ab\u30eb\u306bPostgreSQL\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3057\u3001Prisma\u3068\u63a5\u7d9a\u3057\u307e\u3059\u3002<\/p>\n<p>\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001Prisma CLI\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u958b\u59cb\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">npm<\/span> <span class=\"token function\">install<\/span> &#8211;save-dev prisma<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>Prisma CLI\u306f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u5b9f\u884c\u3084Prisma\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u751f\u6210\u306a\u3069\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/p>\n<p>\u6b21\u306b\u3001Docker\u3092\u4f7f\u7528\u3057\u3066PostgreSQL\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u65b0\u3057\u3044Docker Compose\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">nano<\/span> docker-compose.yml<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u65b0\u3057\u304f\u4f5c\u6210\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u306b\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u3092\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<div>\u4e0b\u8a18\u3092\u65e5\u672c\u8a9e\u3067\u81ea\u7136\u306b\u8a00\u3044\u63db\u3048\u3001\u4e00\u3064\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u63d0\u793a\u3057\u307e\u3059\uff1a<br \/>\n\u300cprisma-graphql\/docker-compose.yml\u300d<\/div>\n<pre class=\"post-pre\"><code><span class=\"token key atrule\">version<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">'3.8'<\/span>\r\n<span class=\"token key atrule\">services<\/span><span class=\"token punctuation\">:<\/span>\r\n  <span class=\"token key atrule\">postgres<\/span><span class=\"token punctuation\">:<\/span>\r\n    <span class=\"token key atrule\">image<\/span><span class=\"token punctuation\">:<\/span> postgres<span class=\"token punctuation\">:<\/span><span class=\"token number\">14<\/span>\r\n    <span class=\"token key atrule\">restart<\/span><span class=\"token punctuation\">:<\/span> always\r\n    <span class=\"token key atrule\">environment<\/span><span class=\"token punctuation\">:<\/span>\r\n      <span class=\"token punctuation\">-<\/span> POSTGRES_USER=<mark>test<span class=\"token punctuation\">-<\/span>user<\/mark>\r\n      <span class=\"token punctuation\">-<\/span> POSTGRES_PASSWORD=<mark>test<span class=\"token punctuation\">-<\/span>password<\/mark>\r\n    <span class=\"token key atrule\">volumes<\/span><span class=\"token punctuation\">:<\/span>\r\n      <span class=\"token punctuation\">-<\/span> postgres<span class=\"token punctuation\">:<\/span>\/var\/lib\/postgresql\/data\r\n    <span class=\"token key atrule\">ports<\/span><span class=\"token punctuation\">:<\/span>\r\n      <span class=\"token punctuation\">-<\/span> <span class=\"token string\">'5432:5432'<\/span>\r\n<span class=\"token key atrule\">volumes<\/span><span class=\"token punctuation\">:<\/span>\r\n  <span class=\"token key atrule\">postgres<\/span><span class=\"token punctuation\">:<\/span>\r\n<\/code><\/pre>\n<p>\u3053\u306eDocker Compose\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u516c\u5f0f\u306ePostgreSQL Docker\u30a4\u30e1\u30fc\u30b8\u3092\u3042\u306a\u305f\u306e\u30de\u30b7\u30f3\u3067\u8d77\u52d5\u3059\u308b\u8cac\u4efb\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002POSTGRES_USER\u3068POSTGRES_PASSWORD\u74b0\u5883\u5909\u6570\u306f\u3001\u7ba1\u7406\u8005\u7279\u6a29\u3092\u6301\u3064\u30b9\u30fc\u30d1\u30fc\u30e6\u30fc\u30b6\u30fc\u306e\u8cc7\u683c\u60c5\u5831\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u8cc7\u683c\u60c5\u5831\u3092\u4f7f\u7528\u3057\u3066\u3001Prisma\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u63a5\u7d9a\u3057\u307e\u3059\u3002test-user\u3068test-password\u3092\u3042\u306a\u305f\u306e\u30e6\u30fc\u30b6\u30fc\u306e\u8cc7\u683c\u60c5\u5831\u3067\u7f6e\u304d\u63db\u3048\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u6700\u5f8c\u306b\u3001PostgreSQL\u304c\u30c7\u30fc\u30bf\u3092\u4fdd\u5b58\u3059\u308b\u305f\u3081\u306e\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u5b9a\u7fa9\u3057\u30015432\u30dd\u30fc\u30c8\u3092\u81ea\u5206\u306e\u30de\u30b7\u30f3\u4e0a\u306e\u540c\u3058\u30dd\u30fc\u30c8\u306bDocker\u30b3\u30f3\u30c6\u30ca\u306b\u30d0\u30a4\u30f3\u30c9\u3057\u307e\u3059\u3002<\/p>\n<p>\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3057\u3066\u7d42\u4e86\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u3053\u306e\u8a2d\u5b9a\u304c\u5b8c\u4e86\u3059\u308c\u3070\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067PostgreSQL\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b5\u30fc\u30d0\u30fc\u3092\u8d77\u52d5\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">docker-compose<\/span> up <span class=\"token parameter variable\">-d<\/span><\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u8aad\u307f\u8fbc\u307f\u306b\u306f\u6570\u5206\u304b\u304b\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002<\/p>\n<p>\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b5\u30fc\u30d0\u30fc\u304c\u5b9f\u884c\u4e2d\u3067\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">docker<\/span> <span class=\"token function\">ps<\/span><\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u3053\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001\u4f55\u304b\u4f3c\u305f\u3088\u3046\u306a\u3082\u306e\u3092\u51fa\u529b\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 198f9431bf73 postgres:10.3 &#8220;docker-entrypoint.s\u2026&#8221; 45 seconds ago Up 11 seconds 0.0.0.0:5432-&gt;5432\/tcp prisma-graphql_postgres_1<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>PostgreSQL\u30b3\u30f3\u30c6\u30ca\u304c\u5b9f\u884c\u4e2d\u306e\u5834\u5408\u3001Prisma\u306e\u8a2d\u5b9a\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002Prisma CLI\u304b\u3089\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\">npx prisma init<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3068\u3057\u3066\u3001Prisma CLI\u306e\u3059\u3079\u3066\u306e\u547c\u3073\u51fa\u3057\u306f\u3001\u30ed\u30fc\u30ab\u30eb\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u306bnpx\u3092\u524d\u7f6e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<p>\u3053\u306e\u3088\u3046\u306a\u51fa\u529b\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u2714 Your Prisma schema was created at prisma\/schema.prisma You can now open it in your favorite editor. Next steps: 1. Set the DATABASE_URL in the .env file to point to your existing database. If your database has no tables yet, read https:\/\/pris.ly\/d\/getting-started 2. Set the provider of the datasource block in schema.prisma to match your database: postgresql, mysql, sqlite, sqlserver, mongodb or cockroachdb. 3. Run prisma db pull to turn your database schema into a Prisma schema. 4. Run prisma generate to generate the Prisma Client. You can then start querying your database. More information in our documentation: https:\/\/pris.ly\/d\/getting-started<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001Prisma CLI\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30d5\u30a9\u30eb\u30c0\u30fc\u306bdotenv\u30d5\u30a1\u30a4\u30eb\uff08.env\uff09\u3092\u751f\u6210\u3057\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u63a5\u7d9aURL\u3092\u5b9a\u7fa9\u3059\u308b\u305f\u3081\u306e\u30d5\u30a1\u30a4\u30eb\u3068\u3001schema.prisma\u30d5\u30a1\u30a4\u30eb\u3092\u542b\u3080\u65b0\u3057\u3044\u30cd\u30b9\u30c8\u3055\u308c\u305fprisma\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u3053\u306eschema.prisma\u30d5\u30a1\u30a4\u30eb\u306f\u3001Prisma\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30e1\u30a4\u30f3\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3067\u3042\u308a\u3001\u30c7\u30fc\u30bf\u30e2\u30c7\u30eb\u3092\u542b\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u30d7\u30ea\u30ba\u30de\u304c\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u5834\u6240\u3092\u77e5\u3063\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u305f\u3081\u306b\u3001.env\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u3044\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">nano<\/span> .env<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u30e6\u30fc\u30b6\u30fc\u306e\u8a8d\u8a3c\u60c5\u5831\u3092\u4f7f\u3063\u3066\u3001DATABASE_URL\u306e\u74b0\u5883\u5909\u6570\u3092\u8abf\u6574\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<div>\u30d7\u30ea\u30ba\u30de-\u30b0\u30e9\u30d5QL\/.env<\/div>\n<pre class=\"post-pre\"><code>DATABASE_URL=\"postgresql:\/\/<mark>test-user<\/mark>:<mark>test-password<\/mark>@localhost:5432\/<mark>my-blog<\/mark>?schema=public\"\r\n<\/code><\/pre>\n<p>Docker Compose \u30d5\u30a1\u30a4\u30eb\u3067\u6307\u5b9a\u3055\u308c\u305f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u8a8d\u8a3c\u60c5\u5831\u306f\u3001test-user \u3068 test-password \u3067\u3059\u3002Docker Compose \u30d5\u30a1\u30a4\u30eb\u3067\u8a8d\u8a3c\u60c5\u5831\u3092\u5909\u66f4\u3057\u305f\u5834\u5408\u306f\u3001\u3053\u306e\u884c\u3092\u5909\u66f4\u3057\u3066\u30d5\u30a1\u30a4\u30eb\u5185\u306e\u8a8d\u8a3c\u60c5\u5831\u3068\u4e00\u81f4\u3055\u305b\u3066\u304f\u3060\u3055\u3044\u3002\u63a5\u7d9a URL \u306e\u5f62\u5f0f\u306b\u3064\u3044\u3066\u306f\u3001Prisma \u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>PostgreSQL\u3092\u6b63\u5e38\u306b\u8d77\u52d5\u3057\u3001Prisma\u30b9\u30ad\u30fc\u30de\u3092\u4f7f\u7528\u3057\u3066Prisma\u3092\u8a2d\u5b9a\u3057\u307e\u3057\u305f\u3002\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001\u30d6\u30ed\u30b0\u306e\u30c7\u30fc\u30bf\u30e2\u30c7\u30eb\u3092\u5b9a\u7fa9\u3057\u3001Prisma Migrate\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b9\u30ad\u30fc\u30de\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n<h2>\u30b9\u30c6\u30c3\u30d77 &#8211; Prisma Migrate\u3092\u4f7f\u3063\u3066\u30c7\u30fc\u30bf\u30e2\u30c7\u30eb\u3092\u5b9a\u7fa9\u3059\u308b\u3002<\/h2>\n<p>\u4eca\u56de\u4f5c\u6210\u3057\u305fPrisma\u30b9\u30ad\u30fc\u30de\u30d5\u30a1\u30a4\u30eb\u306b\u3066\u3001\u30c7\u30fc\u30bf\u30e2\u30c7\u30eb\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002\u305d\u306e\u5f8c\u3001Prisma\u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u306b\u3088\u3063\u3066\u30c7\u30fc\u30bf\u30e2\u30c7\u30eb\u304c\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u30de\u30c3\u30d4\u30f3\u30b0\u3055\u308c\u3001\u30c7\u30fc\u30bf\u30e2\u30c7\u30eb\u306b\u5bfe\u5fdc\u3059\u308b\u30c6\u30fc\u30d6\u30eb\u3092\u4f5c\u6210\u3059\u308b\u305f\u3081\u306eSQL\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u304c\u751f\u6210\u3055\u308c\u3001\u9001\u4fe1\u3055\u308c\u307e\u3059\u3002<\/p>\n<p>\u30d6\u30ed\u30b0\u3092\u4f5c\u6210\u3057\u3066\u3044\u308b\u306e\u3067\u3001\u3053\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u4e3b\u306a\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u306f\u30e6\u30fc\u30b6\u30fc\u3068\u6295\u7a3f\u3067\u3059\u3002\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001GraphQL\u30b9\u30ad\u30fc\u30de\u306e\u6295\u7a3f\u30bf\u30a4\u30d7\u306b\u4f3c\u305f\u69cb\u9020\u306e\u6295\u7a3f\u30e2\u30c7\u30eb\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002\u5f8c\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001\u30a2\u30d7\u30ea\u3092\u9032\u5316\u3055\u305b\u3066\u30e6\u30fc\u30b6\u30fc\u30e2\u30c7\u30eb\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n<div class=\"post-conf-note\">\n<p class=\"post-conf-desc\">Note<\/p>\n<div>\u6ce8\uff1aGraphQL API\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u62bd\u8c61\u5316\u30ec\u30a4\u30e4\u30fc\u3068\u3057\u3066\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002GraphQL API\u3092\u69cb\u7bc9\u3059\u308b\u969b\u3001GraphQL\u30b9\u30ad\u30fc\u30de\u306f\u901a\u5e38\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b9\u30ad\u30fc\u30de\u306b\u8fd1\u3044\u5f62\u306b\u306a\u308a\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u62bd\u8c61\u5316\u3055\u308c\u305f\u305f\u3081\u30012\u3064\u306e\u30b9\u30ad\u30fc\u30de\u306e\u69cb\u9020\u304c\u5fc5\u305a\u3057\u3082\u540c\u3058\u3067\u306f\u306a\u304f\u3001API\u3067\u516c\u958b\u3059\u308b\u30c7\u30fc\u30bf\u3092\u5236\u5fa1\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u306fAPI\u30ec\u30a4\u30e4\u30fc\u306b\u3068\u3063\u3066\u6a5f\u5bc6\u6027\u304c\u3042\u308b\u304b\u95a2\u4fc2\u304c\u306a\u3044\u3068\u8003\u3048\u3089\u308c\u308b\u305f\u3081\u3067\u3059\u3002<\/div>\n<\/div>\n<p>Prisma\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30c7\u30fc\u30bf\u306e\u5f62\u72b6\u3092\u5b9a\u7fa9\u3059\u308b\u305f\u3081\u306b\u72ec\u81ea\u306e\u30c7\u30fc\u30bf\u30e2\u30c7\u30ea\u30f3\u30b0\u8a00\u8a9e\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n<p>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d5\u30a9\u30eb\u30c0\u5185\u306eschema.prisma\u30d5\u30a1\u30a4\u30eb\u3092package.json\u304c\u3042\u308b\u5834\u6240\u304b\u3089\u958b\u3044\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">nano<\/span> prisma\/schema.prisma<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"post-conf-note\">\n<p class=\"post-conf-desc\">Note<\/p>\n<div>\u6ce8\u610f\uff1a\u73fe\u5728\u306e\u4f5c\u696d\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u51fa\u529b\u3059\u308b\u305f\u3081\u306b\u3001pwd\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u3069\u306e\u30d5\u30a9\u30eb\u30c0\u306b\u3044\u308b\u304b\u3092\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002\u307e\u305f\u3001ls\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30d5\u30a1\u30a4\u30eb\u3092\u30ea\u30b9\u30c8\u8868\u793a\u3059\u308b\u3053\u3068\u3067\u3001\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u3092\u64cd\u4f5c\u3057\u3084\u3059\u304f\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/div>\n<\/div>\n<p>\u4ee5\u4e0b\u306e\u30e2\u30c7\u30eb\u5b9a\u7fa9\u3092\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002 (Ikitai no moderu teigi o tsuika shite kudasai)<\/p>\n<div>\u30d7\u30ea\u30ba\u30de-\u30b0\u30e9\u30d5\u30ad\u30e5\u30a8\u30eb\u306e\u30b9\u30ad\u30fc\u30de\u30d5\u30a1\u30a4\u30eb\u3001<br \/>\nprisma-graphql\/prisma\/schema.prisma<\/div>\n<pre class=\"post-pre\"><code>...\r\nmodel Post {\r\n  id        Int     @default(autoincrement()) @id\r\n  title     String\r\n  content   String?\r\n  published Boolean @default(false)\r\n}\r\n<\/code><\/pre>\n<p>\u8907\u6570\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u6301\u3064\u300cPost\u300d\u3068\u3044\u3046\u30e2\u30c7\u30eb\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002\u3053\u306e\u30e2\u30c7\u30eb\u306f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30c6\u30fc\u30d6\u30eb\u306b\u30de\u30c3\u30d4\u30f3\u30b0\u3055\u308c\u3001\u30d5\u30a3\u30fc\u30eb\u30c9\u306f\u5404\u500b\u5225\u306e\u5217\u3092\u8868\u3057\u307e\u3059\u3002<\/p>\n<p>id\u30d5\u30a3\u30fc\u30eb\u30c9\u306b\u306f\u3001\u6b21\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u5c5e\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>@default(autoincrement()) sets an auto-incrementing default value for the column.<\/li>\n<li>@id sets the column as the primary key for the table.<\/li>\n<\/ul>\n<p>\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3057\u3066\u7d42\u4e86\u3057\u3066\u304f\u3060\u3055\u3044\u3002 (Fairu o hozon shite sh\u016bry\u014d shite kudasai.)<\/p>\n<p>\u30e2\u30c7\u30eb\u304c\u6e96\u5099\u3067\u304d\u305f\u3089\u3001Prisma Migrate\u3092\u4f7f\u7528\u3057\u3066\u5bfe\u5fdc\u3059\u308b\u30c6\u30fc\u30d6\u30eb\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002\u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u30d5\u30a1\u30a4\u30eb\u306e\u4f5c\u6210\u3068\u5b9f\u884c\u306f\u3001\u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u3063\u3066\u884c\u3044\u307e\u3059\u3002<\/p>\n<p>\u3042\u306a\u305f\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\">npx prisma migrate dev <span class=\"token parameter variable\">&#8211;name<\/span> init &#8211;skip-generate<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u3053\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001\u65b0\u3057\u3044\u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u306b\u4f5c\u6210\u3057\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u5bfe\u3057\u3066\u5b9f\u884c\u3057\u3066\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b9\u30ad\u30fc\u30de\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002&#8211;name init\u30d5\u30e9\u30b0\u306f\u3001\u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u540d\u524d\u3092\u6307\u5b9a\u3057\u307e\u3059\uff08\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u306b\u4f5c\u6210\u3055\u308c\u308b\u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u30d5\u30a9\u30eb\u30c0\u306e\u540d\u524d\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\uff09\u3002&#8211;skip-generate\u30d5\u30e9\u30b0\u306f\u3001Prisma Client\u306e\u751f\u6210\u3092\u30b9\u30ad\u30c3\u30d7\u3057\u307e\u3059\uff08\u3053\u308c\u306f\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u884c\u308f\u308c\u307e\u3059\uff09\u3002<\/p>\n<p>\u3053\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001\u6b21\u306e\u3088\u3046\u306a\u3082\u306e\u3092\u51fa\u529b\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>Environment variables loaded from .env Prisma schema loaded from prisma\/schema.prisma Datasource &#8220;db&#8221;: PostgreSQL database &#8220;my-blog&#8221;, schema &#8220;public&#8221; at &#8220;localhost:5432&#8221; PostgreSQL database my-blog created at localhost:5432 Applying migration `<mark>20201201110111<\/mark>_init` The following migration(s) have been created and applied from new schema changes: migrations\/ \u2514\u2500 <mark>20201201110111<\/mark>_init\/ \u2514\u2500 migration.sql Your database is now in sync with your schema.<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u3042\u306a\u305f\u306e Prisma \/ migrations \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u3001\u73fe\u5728 SQL \u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u30d5\u30a1\u30a4\u30eb\u3067\u6e80\u305f\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u65b9\u6cd5\u306b\u3088\u308a\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b9\u30ad\u30fc\u30de\u306e\u5909\u66f4\u3092\u8ffd\u8de1\u3057\u3001\u672c\u756a\u74b0\u5883\u3067\u540c\u3058\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b9\u30ad\u30fc\u30de\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<div class=\"post-conf-note\">\n<p class=\"post-conf-desc\">Note<\/p>\n<div>\u6ce8\u610f\uff1a\u3059\u3067\u306bPrisma Migrate\u3092my-blog\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3067\u4f7f\u7528\u3057\u3066\u304a\u308a\u3001prisma\/migration\u30d5\u30a9\u30eb\u30c0\u3068\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b9\u30ad\u30fc\u30de\u306e\u9593\u306b\u4e0d\u6574\u5408\u304c\u3042\u308b\u5834\u5408\u3001\u4ee5\u4e0b\u306e\u51fa\u529b\u3067\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30ea\u30bb\u30c3\u30c8\u3092\u4fc3\u3055\u308c\u307e\u3059\uff1a<br \/>\n\u51fa\u529b\uff1f\u300clocalhost:5432\u300d\u306ePostgreSQL\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u300cmy-blog\u300d\u3092\u30ea\u30bb\u30c3\u30c8\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3059\u3079\u3066\u306e\u30c7\u30fc\u30bf\u304c\u5931\u308f\u308c\u307e\u3059\u3002<br \/>\n\u7d9a\u884c\u3057\u307e\u3059\u304b\uff1f \u203a (y\/N)<\/div>\n<p>\u3053\u308c\u3092\u89e3\u6c7a\u3059\u308b\u306b\u306f\u3001y\u3092\u5165\u529b\u3057\u3066\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30ea\u30bb\u30c3\u30c8\u3067\u304d\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u3053\u308c\u306b\u3088\u308a\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u5185\u306e\u3059\u3079\u3066\u306e\u30c7\u30fc\u30bf\u304c\u5931\u308f\u308c\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<\/div>\n<p>\u73fe\u5728\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30b9\u30ad\u30fc\u30de\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\u3002\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001Prisma Client\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3001GraphQL\u306e\u30ea\u30be\u30eb\u30d0\u30fc\u3067\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n<h2>\u30b9\u30c6\u30c3\u30d78 &#8211; GraphQL\u30ea\u30be\u30eb\u30d0\u3067Prisma\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3092\u4f7f\u7528\u3059\u308b\u3002<\/h2>\n<p>Prisma Client\u306f\u3001Node.js\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304b\u3089\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3078\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u306b\u3088\u308b\u8aad\u307f\u66f8\u304d\u3092\u884c\u3046\u305f\u3081\u306b\u4f7f\u7528\u3067\u304d\u308b\u81ea\u52d5\u751f\u6210\u3055\u308c\u305f\u30bf\u30a4\u30d7\u30bb\u30fc\u30d5\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30ea\u30ec\u30fc\u30b7\u30e7\u30ca\u30eb\u30de\u30c3\u30d1\u30fc\uff08ORM\uff09\u3067\u3059\u3002\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306bPrisma Client\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002<\/p>\n<p>\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u3001Prisma\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306enpm\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">npm<\/span> <span class=\"token function\">install<\/span> @prisma\/client<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"post-conf-note\">\n<p class=\"post-conf-desc\">Note<\/p>\n<div>\u6ce8\u610f\uff1aPrisma\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306f\u3001Prisma\u30b9\u30ad\u30fc\u30de\u306b\u57fa\u3065\u3044\u3066\u30b3\u30fc\u30c9\u3092\u751f\u6210\u3057\u3001node_modules\u30d5\u30a9\u30eb\u30c0\u306b\u81ea\u52d5\u7684\u306b\u88dc\u5b8c\u6a5f\u80fd\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u30b3\u30fc\u30c9\u3092\u751f\u6210\u3059\u308b\u306b\u306f\u3001npx prisma generate\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u901a\u5e38\u3001\u3053\u308c\u306f\u65b0\u3057\u3044\u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u4f5c\u6210\u3057\u3066\u5b9f\u884c\u3057\u305f\u5f8c\u306b\u884c\u308f\u308c\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u6700\u521d\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u306f\u3001postinstall\u30d5\u30c3\u30af\u3067\u81ea\u52d5\u7684\u306b\u751f\u6210\u3055\u308c\u308b\u305f\u3081\u3001\u3053\u306e\u624b\u9806\u306f\u5fc5\u8981\u3042\u308a\u307e\u305b\u3093\u3002<\/div>\n<\/div>\n<p>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068GraphQL\u30b9\u30ad\u30fc\u30de\u3092\u4f5c\u6210\u3057\u3001Prisma Client\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u305f\u5f8c\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u5185\u306e\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u66f8\u304d\u3059\u308b\u305f\u3081\u306bGraphQL\u30ea\u30be\u30eb\u30d0\u3067Prisma Client\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u3053\u308c\u307e\u3067\u30c7\u30fc\u30bf\u3092\u4fdd\u6301\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3057\u3066\u304d\u305f\u6295\u7a3f\u306e\u914d\u5217\u3092\u7f6e\u304d\u63db\u3048\u308b\u3053\u3068\u3067\u884c\u3044\u307e\u3059\u3002<\/p>\n<p>\u4ee5\u4e0b\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u3066\u958b\u3044\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">nano<\/span> src\/db.js<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u65b0\u3057\u3044\u30d5\u30a1\u30a4\u30eb\u306b\u4ee5\u4e0b\u306e\u884c\u3092\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<div>prisma-graphql\/src\/db.js\u3092\u65e5\u672c\u8a9e\u3067\u76f4\u8a33\u3059\u308b\u3068\u3001\u6b21\u306e\u901a\u308a\u3067\u3059\uff1a\u30d7\u30ea\u30ba\u30de-\u30b0\u30e9\u30d5\u30ad\u30e5\u30fc\u30a8\u30eb\/\u30bd\u30fc\u30b9\/\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9.\u30b8\u30a7\u30a4\u30a8\u30b9.<\/div>\n<pre class=\"post-pre\"><code><span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token maybe-class-name\">PrismaClient<\/span> <span class=\"token punctuation\">}<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">require<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'@prisma\/client'<\/span><span class=\"token punctuation\">)<\/span>\r\n\r\nmodule<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">exports<\/span> <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">{<\/span>\r\n  <span class=\"token literal-property property\">prisma<\/span><span class=\"token operator\">:<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">PrismaClient<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\r\n<span class=\"token punctuation\">}<\/span>\r\n<\/code><\/pre>\n<p>\u3053\u306e\u30b3\u30fc\u30c9\u306fPrisma Client\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u3001\u305d\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u4f5c\u6210\u3057\u3001\u30ea\u30be\u30eb\u30d0\u3067\u4f7f\u7528\u3059\u308b\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002<\/p>\n<p>\u4ecasrc\/db.js\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3057\u3066\u9589\u3058\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u6b21\u306b\u3001prisma\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092src\/schema.js\u306b\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002\u3053\u308c\u3092\u884c\u3046\u305f\u3081\u306b\u3001src\/schema.js\u3092\u958b\u3044\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">nano<\/span> src\/schema.js<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u30d5\u30a1\u30a4\u30eb\u306e\u5148\u982d\u306b `import prisma from &#8216;.\/db&#8217;` \u3068\u3044\u3046\u884c\u3092\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<div>\n<p>prisma-graphql\/src\/schema.js\u306e\u5185\u5bb9\u3092\u65e5\u672c\u8a9e\u3067\u30cd\u30a4\u30c6\u30a3\u30d6\u306b\u8a00\u3044\u63db\u3048\u308b\u3068\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<p>\u300cprisma-graphql\/src\/schema.js\u30d5\u30a1\u30a4\u30eb\u306e\u4e2d\u8eab\u300d<\/p>\n<\/div>\n<pre class=\"post-pre\"><code><span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">{<\/span> prisma <span class=\"token punctuation\">}<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">require<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'.\/db'<\/span><span class=\"token punctuation\">)<\/span>\r\n<span class=\"token spread operator\">...<\/span>\r\n<\/code><\/pre>\n<p>\u305d\u306e\u5f8c\u3001\u30cf\u30a4\u30d5\u30f3\u8a18\u53f7\uff08-\uff09\u3067\u30de\u30fc\u30af\u3055\u308c\u3066\u3044\u308b\u884c\u3092\u524a\u9664\u3057\u3066\u3001\u6295\u7a3f\u306e\u914d\u5217\u3092\u524a\u9664\u3057\u307e\u3059\u3002<\/p>\n<div>\u30d7\u30ea\u30ba\u30de-\u30b0\u30e9\u30d5\u30af\u30a8\u30eb\/\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\/\u30b9\u30ad\u30fc\u30de.js<\/div>\n<pre class=\"post-pre\"><code>...\r\n<span class=\"token deleted-sign deleted\"><span class=\"token prefix deleted\">-<\/span><span class=\"token line\">const posts = [\r\n<\/span><span class=\"token prefix deleted\">-<\/span><span class=\"token line\">  {\r\n<\/span><span class=\"token prefix deleted\">-<\/span><span class=\"token line\">    id: 1,\r\n<\/span><span class=\"token prefix deleted\">-<\/span><span class=\"token line\">    title: 'Subscribe to GraphQL Weekly for community news ',\r\n<\/span><span class=\"token prefix deleted\">-<\/span><span class=\"token line\">    content: 'https:\/\/graphqlweekly.com\/',\r\n<\/span><span class=\"token prefix deleted\">-<\/span><span class=\"token line\">    published: true,\r\n<\/span><span class=\"token prefix deleted\">-<\/span><span class=\"token line\">  },\r\n<\/span><span class=\"token prefix deleted\">-<\/span><span class=\"token line\">  {\r\n<\/span><span class=\"token prefix deleted\">-<\/span><span class=\"token line\">    id: 2,\r\n<\/span><span class=\"token prefix deleted\">-<\/span><span class=\"token line\">    title: 'Follow Silicon Cloud on Twitter',\r\n<\/span><span class=\"token prefix deleted\">-<\/span><span class=\"token line\">    content: 'https:\/\/twitter.com\/digitalocean',\r\n<\/span><span class=\"token prefix deleted\">-<\/span><span class=\"token line\">    published: true,\r\n<\/span><span class=\"token prefix deleted\">-<\/span><span class=\"token line\">  },\r\n<\/span><span class=\"token prefix deleted\">-<\/span><span class=\"token line\">  {\r\n<\/span><span class=\"token prefix deleted\">-<\/span><span class=\"token line\">    id: 3,\r\n<\/span><span class=\"token prefix deleted\">-<\/span><span class=\"token line\">    title: 'What is GraphQL?',\r\n<\/span><span class=\"token prefix deleted\">-<\/span><span class=\"token line\">    content: 'GraphQL is a query language for APIs',\r\n<\/span><span class=\"token prefix deleted\">-<\/span><span class=\"token line\">    published: false,\r\n<\/span><span class=\"token prefix deleted\">-<\/span><span class=\"token line\">  },\r\n<\/span><span class=\"token prefix deleted\">-<\/span><span class=\"token line\">]\r\n<\/span><\/span>...\r\n<\/code><\/pre>\n<p>\u6b21\u306b\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b\u3089\u516c\u958b\u3055\u308c\u305f\u6295\u7a3f\u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u306b\u3001\u30af\u30a8\u30ea\u30ea\u30be\u30eb\u30d0\u3092\u66f4\u65b0\u3057\u307e\u3059\u3002\u307e\u305a\u3001resolvers.Query\u5185\u306e\u65e2\u5b58\u306e\u884c\u3092\u524a\u9664\u3057\u3001\u305d\u306e\u5f8c\u3001\u30cf\u30a4\u30e9\u30a4\u30c8\u3055\u308c\u305f\u884c\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u306b\u3088\u308a\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u66f4\u65b0\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<div>\u30d7\u30ea\u30ba\u30de-GraphQL \/ src \/ schema.js\u3092\u30d1\u30e9\u30d5\u30ec\u30fc\u30ba\u5316\u3059\u308b\u3068\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\uff1a<\/div>\n<pre class=\"post-pre\"><code><span class=\"token spread operator\">...<\/span>\r\n<span class=\"token keyword\">const<\/span> resolvers <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">{<\/span>\r\n  <mark><span class=\"token literal-property property\">Query<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n    <mark><span class=\"token function-variable function\">feed<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token parameter\">parent<span class=\"token punctuation\">,<\/span> args<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token arrow operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n      <mark><span class=\"token keyword control-flow\">return<\/span> prisma<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">post<\/span><span class=\"token punctuation\">.<\/span><span class=\"token method function property-access\">findMany<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><\/mark>\r\n        <mark><span class=\"token literal-property property\">where<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token literal-property property\">published<\/span><span class=\"token operator\">:<\/span> <span class=\"token boolean\">true<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n      <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/mark>\r\n    <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n    <mark><span class=\"token function-variable function\">post<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token parameter\">parent<span class=\"token punctuation\">,<\/span> args<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token arrow operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n      <mark><span class=\"token keyword control-flow\">return<\/span> prisma<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">post<\/span><span class=\"token punctuation\">.<\/span><span class=\"token method function property-access\">findUnique<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><\/mark>\r\n        <mark><span class=\"token literal-property property\">where<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token literal-property property\">id<\/span><span class=\"token operator\">:<\/span> <span class=\"token known-class-name class-name\">Number<\/span><span class=\"token punctuation\">(<\/span>args<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">id<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n      <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/mark>\r\n    <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n  <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n<span class=\"token spread operator\">...<\/span>\r\n<\/code><\/pre>\n<p>\u3053\u3053\u3067\u306f\u30012\u3064\u306ePrisma\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u30af\u30a8\u30ea\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>findMany fetches posts whose publish field is false.<\/li>\n<li>findUnique fetches a single post whose id field equals the id GraphQL argument.<\/li>\n<\/ul>\n<p>GraphQL\u306e\u4ed5\u69d8\u306b\u3088\u308c\u3070\u3001ID\u578b\u306fString\u3068\u540c\u3058\u3088\u3046\u306b\u30b7\u30ea\u30a2\u30e9\u30a4\u30ba\u3055\u308c\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001Prisma\u30b9\u30ad\u30fc\u30de\u306eid\u304cint\u3067\u3042\u308b\u305f\u3081\u3001Number\u306b\u5909\u63db\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<p>\u6b21\u306b\u3001Mutation\u30ea\u30be\u30eb\u30d0\u3092\u66f4\u65b0\u3057\u3066\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u6295\u7a3f\u3092\u4fdd\u5b58\u304a\u3088\u3073\u66f4\u65b0\u3057\u307e\u3059\u3002\u307e\u305a\u3001resolvers.Mutation\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3068Number(args.id)\u306e\u30b3\u30fc\u30c9\u3092\u524a\u9664\u3057\u3001\u305d\u306e\u5f8c\u3001\u30cf\u30a4\u30e9\u30a4\u30c8\u3055\u308c\u305f\u884c\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n<div>prisma-graphql\/src\/schema.js\u3092\u65e5\u672c\u8a9e\u3067\u8981\u7d04\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u9078\u629e\u80a2\u306f1\u3064\u3060\u3051\u3067\u3059\u3002<br \/>\n\u30d7\u30ea\u30ba\u30de\u30b0\u30e9\u30d5QL\u306e\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30ebschema.js\u3067\u3059\u3002<\/div>\n<pre class=\"post-pre\"><code><span class=\"token keyword\">const<\/span> resolvers <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">{<\/span>\r\n  <span class=\"token spread operator\">...<\/span>\r\n  <mark><span class=\"token literal-property property\">Mutation<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n    <mark><span class=\"token function-variable function\">createDraft<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token parameter\">parent<span class=\"token punctuation\">,<\/span> args<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token arrow operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n      <mark><span class=\"token keyword control-flow\">return<\/span> prisma<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">post<\/span><span class=\"token punctuation\">.<\/span><span class=\"token method function property-access\">create<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><\/mark>\r\n        <mark><span class=\"token literal-property property\">data<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n          <mark><span class=\"token literal-property property\">title<\/span><span class=\"token operator\">:<\/span> args<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">title<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n          <mark><span class=\"token literal-property property\">content<\/span><span class=\"token operator\">:<\/span> args<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">content<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n        <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n      <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/mark>\r\n    <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n    <mark><span class=\"token function-variable function\">publish<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token parameter\">parent<span class=\"token punctuation\">,<\/span> args<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token arrow operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n      <mark><span class=\"token keyword control-flow\">return<\/span> prisma<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">post<\/span><span class=\"token punctuation\">.<\/span><span class=\"token method function property-access\">update<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><\/mark>\r\n        <mark><span class=\"token literal-property property\">where<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n          <mark><span class=\"token literal-property property\">id<\/span><span class=\"token operator\">:<\/span> <span class=\"token known-class-name class-name\">Number<\/span><span class=\"token punctuation\">(<\/span>args<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">id<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n        <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n        <mark><span class=\"token literal-property property\">data<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n          <mark><span class=\"token literal-property property\">published<\/span><span class=\"token operator\">:<\/span> <span class=\"token boolean\">true<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n        <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n      <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/mark>\r\n    <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n  <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n<span class=\"token punctuation\">}<\/span>\r\n<\/code><\/pre>\n<p>2\u3064\u306ePrisma Client\u30af\u30a8\u30ea\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>create to create a Post record.<\/li>\n<li>update to update the published field of the Post record whose id matches the one in the query argument.<\/li>\n<\/ul>\n<p>\u6700\u5f8c\u306b\u3001resolvers.Post\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u524a\u9664\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<div>\n<p>prisma-graphql\/src\/schema.js\u306e\u5185\u5bb9\u3092\u65e5\u672c\u8a9e\u3067\u81ea\u7136\u306a\u8868\u73fe\u3067\u8a00\u3044\u63db\u3048\u308b\u3068\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a<\/p>\n<p>\u300cprisma-graphql\/src\/schema.js\u30d5\u30a1\u30a4\u30eb\u306e\u4e2d\u8eab\u300d<\/p>\n<\/div>\n<pre class=\"post-pre\"><code>...\r\n<span class=\"token deleted-sign deleted\"><span class=\"token prefix deleted\">-<\/span><span class=\"token line\">Post: {\r\n<\/span><span class=\"token prefix deleted\">-<\/span><span class=\"token line\">  content: (parent) =&gt; parent.content,\r\n<\/span><span class=\"token prefix deleted\">-<\/span><span class=\"token line\">  id: (parent) =&gt; parent.id,\r\n<\/span><span class=\"token prefix deleted\">-<\/span><span class=\"token line\">  published: (parent) =&gt; parent.published,\r\n<\/span><span class=\"token prefix deleted\">-<\/span><span class=\"token line\">  title: (parent) =&gt; parent.title,\r\n<\/span><span class=\"token prefix deleted\">-<\/span><span class=\"token line\">},\r\n<\/span><\/span>...\r\n<\/code><\/pre>\n<p>\u3042\u306a\u305f\u306eschema.js\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u8a18\u8ff0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<div>prisma-graphql\/src\/schema.js\u3092\u65e5\u672c\u8a9e\u3067\u8a00\u3044\u63db\u3048\u308b\u3068\u300c\u30d7\u30ea\u30ba\u30de-\u30b0\u30e9\u30d5QL\/\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\/\u30b9\u30ad\u30fc\u30de.js\u300d\u3068\u306a\u308a\u307e\u3059\u3002<\/div>\n<pre class=\"post-pre\"><code><span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">{<\/span> gql <span class=\"token punctuation\">}<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">require<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'apollo-server'<\/span><span class=\"token punctuation\">)<\/span>\r\n<span class=\"token keyword\">const<\/span> <span class=\"token punctuation\">{<\/span> prisma <span class=\"token punctuation\">}<\/span> <span class=\"token operator\">=<\/span> <span class=\"token function\">require<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'.\/db'<\/span><span class=\"token punctuation\">)<\/span>\r\n\r\n<span class=\"token keyword\">const<\/span> typeDefs <span class=\"token operator\">=<\/span> gql<span class=\"token template-string\"><span class=\"token template-punctuation string\">`<\/span><span class=\"token graphql language-graphql\">\r\n  <span class=\"token keyword\">type<\/span> <span class=\"token class-name\">Post<\/span> <span class=\"token punctuation\">{<\/span>\r\n    <span class=\"token attr-name\">content<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token scalar\">String<\/span>\r\n    <span class=\"token attr-name\">id<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token scalar\">ID<\/span><span class=\"token operator\">!<\/span>\r\n    <span class=\"token attr-name\">published<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token scalar\">Boolean<\/span><span class=\"token operator\">!<\/span>\r\n    <span class=\"token attr-name\">title<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token scalar\">String<\/span><span class=\"token operator\">!<\/span>\r\n  <span class=\"token punctuation\">}<\/span>\r\n\r\n  <span class=\"token keyword\">type<\/span> <span class=\"token class-name\">Query<\/span> <span class=\"token punctuation\">{<\/span>\r\n    <span class=\"token attr-name\">feed<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token class-name\">Post<\/span><span class=\"token operator\">!<\/span><span class=\"token punctuation\">]<\/span><span class=\"token operator\">!<\/span>\r\n    <span class=\"token attr-name\">post<\/span><span class=\"token punctuation\">(<\/span><span class=\"token attr-name\">id<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token scalar\">ID<\/span><span class=\"token operator\">!<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token class-name\">Post<\/span>\r\n  <span class=\"token punctuation\">}<\/span>\r\n\r\n  <span class=\"token keyword\">type<\/span> <span class=\"token class-name\">Mutation<\/span> <span class=\"token punctuation\">{<\/span>\r\n    <span class=\"token attr-name\">createDraft<\/span><span class=\"token punctuation\">(<\/span><span class=\"token attr-name\">content<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token scalar\">String<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token attr-name\">title<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token scalar\">String<\/span><span class=\"token operator\">!<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token class-name\">Post<\/span><span class=\"token operator\">!<\/span>\r\n    <span class=\"token attr-name\">publish<\/span><span class=\"token punctuation\">(<\/span><span class=\"token attr-name\">id<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token scalar\">ID<\/span><span class=\"token operator\">!<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token class-name\">Post<\/span>\r\n  <span class=\"token punctuation\">}<\/span>\r\n<\/span><span class=\"token template-punctuation string\">`<\/span><\/span>\r\n\r\n<span class=\"token keyword\">const<\/span> resolvers <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">{<\/span>\r\n  <span class=\"token literal-property property\">Query<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span>\r\n    <span class=\"token function-variable function\">feed<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token parameter\">parent<span class=\"token punctuation\">,<\/span> args<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token arrow operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\r\n      <span class=\"token keyword control-flow\">return<\/span> prisma<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">post<\/span><span class=\"token punctuation\">.<\/span><span class=\"token method function property-access\">findMany<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span>\r\n        <span class=\"token literal-property property\">where<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token literal-property property\">published<\/span><span class=\"token operator\">:<\/span> <span class=\"token boolean\">true<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\r\n      <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span>\r\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\r\n    <span class=\"token function-variable function\">post<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token parameter\">parent<span class=\"token punctuation\">,<\/span> args<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token arrow operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\r\n      <span class=\"token keyword control-flow\">return<\/span> prisma<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">post<\/span><span class=\"token punctuation\">.<\/span><span class=\"token method function property-access\">findUnique<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span>\r\n        <span class=\"token literal-property property\">where<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token literal-property property\">id<\/span><span class=\"token operator\">:<\/span> <span class=\"token known-class-name class-name\">Number<\/span><span class=\"token punctuation\">(<\/span>args<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">id<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\r\n      <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span>\r\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\r\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\r\n  <span class=\"token literal-property property\">Mutation<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span>\r\n    <span class=\"token function-variable function\">createDraft<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token parameter\">parent<span class=\"token punctuation\">,<\/span> args<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token arrow operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\r\n      <span class=\"token keyword control-flow\">return<\/span> prisma<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">post<\/span><span class=\"token punctuation\">.<\/span><span class=\"token method function property-access\">create<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span>\r\n        <span class=\"token literal-property property\">data<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span>\r\n          <span class=\"token literal-property property\">title<\/span><span class=\"token operator\">:<\/span> args<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">title<\/span><span class=\"token punctuation\">,<\/span>\r\n          <span class=\"token literal-property property\">content<\/span><span class=\"token operator\">:<\/span> args<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">content<\/span><span class=\"token punctuation\">,<\/span>\r\n        <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\r\n      <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span>\r\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\r\n    <span class=\"token function-variable function\">publish<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token parameter\">parent<span class=\"token punctuation\">,<\/span> args<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token arrow operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\r\n      <span class=\"token keyword control-flow\">return<\/span> prisma<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">post<\/span><span class=\"token punctuation\">.<\/span><span class=\"token method function property-access\">update<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span>\r\n        <span class=\"token literal-property property\">where<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span>\r\n          <span class=\"token literal-property property\">id<\/span><span class=\"token operator\">:<\/span> <span class=\"token known-class-name class-name\">Number<\/span><span class=\"token punctuation\">(<\/span>args<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">id<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\r\n        <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\r\n        <span class=\"token literal-property property\">data<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span>\r\n          <span class=\"token literal-property property\">published<\/span><span class=\"token operator\">:<\/span> <span class=\"token boolean\">true<\/span><span class=\"token punctuation\">,<\/span>\r\n        <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\r\n      <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span>\r\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\r\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\r\n<span class=\"token punctuation\">}<\/span>\r\n\r\nmodule<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">exports<\/span> <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">{<\/span>\r\n  resolvers<span class=\"token punctuation\">,<\/span>\r\n  typeDefs<span class=\"token punctuation\">,<\/span>\r\n<span class=\"token punctuation\">}<\/span>\r\n<\/code><\/pre>\n<p>\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3057\u3066\u9589\u3058\u308b\u3002<\/p>\n<p>\u30d7\u30ea\u30ba\u30de\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3092\u4f7f\u7528\u3057\u305f\u30ea\u30be\u30eb\u30d0\u306e\u66f4\u65b0\u304c\u5b8c\u4e86\u3057\u305f\u306e\u3067\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u30b5\u30fc\u30d0\u30fc\u3092\u8d77\u52d5\u3057\u3066\u3001GraphQL API\u3068\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u9593\u306e\u30c7\u30fc\u30bf\u306e\u6d41\u308c\u3092\u30c6\u30b9\u30c8\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">npm<\/span> start<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u3082\u3046\u4e00\u5ea6\u3001\u4ee5\u4e0b\u306e\u51fa\u529b\u3092\u53d7\u3051\u53d6\u308a\u307e\u3059\u3002 (M\u014d ichido, ika no shutsuryoku o uketorimasu.)<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>Server ready at: http:\/\/localhost:8080<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u51fa\u529b\u304b\u3089\u30a2\u30c9\u30ec\u30b9\u3092\u6307\u5b9a\u3057\u3066Apollo GraphQL Studio\u3092\u958b\u304d\u3001\u30b9\u30c6\u30c3\u30d73\u3067\u4f7f\u7528\u3057\u305f\u540c\u3058\u30af\u30a8\u30ea\u3092\u4f7f\u7528\u3057\u3066GraphQL API\u3092\u30c6\u30b9\u30c8\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u4eca\u5ea6\u306f\u5909\u66f4\u3092\u78ba\u5b9a\u3055\u305b\u3001\u5909\u66f4\u304cApp Platform\u306b\u5c55\u958b\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002CTRL+C\u3067Apollo\u30b5\u30fc\u30d0\u30fc\u3092\u505c\u6b62\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30d5\u30a9\u30eb\u30c0\u5185\u306e.gitignore\u30d5\u30a1\u30a4\u30eb\u3092\u78ba\u8a8d\u3057\u3066\u3001node_modules\u30d5\u30a9\u30eb\u30c0\u3068.env\u30d5\u30a1\u30a4\u30eb\u306e\u30b3\u30df\u30c3\u30c8\u3092\u907f\u3051\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">cat<\/span> .gitignore<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u3042\u306a\u305f\u306e.gitignore\u30d5\u30a1\u30a4\u30eb\u306b\u3053\u308c\u3089\u306e\u884c\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<div>prisma-graphql\/.gitignore\u3092\u65e5\u672c\u8a9e\u306b\u66f8\u304d\u63db\u3048\u308b\u3068\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\uff1a<br \/>\nprisma-graphql\/.gitignore<\/div>\n<pre class=\"post-pre\"><code>node_modules\r\n.env\r\n<\/code><\/pre>\n<p>\u3082\u3057\u4e00\u81f4\u3057\u306a\u3044\u5834\u5408\u3001\u30d5\u30a1\u30a4\u30eb\u3092\u66f4\u65b0\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3057\u3066\u9589\u3058\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u305d\u306e\u5f8c\u3001\u4ee5\u4e0b\u306e2\u3064\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u5909\u66f4\u5185\u5bb9\u3092\u30b3\u30df\u30c3\u30c8\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">git<\/span> <span class=\"token function\">add<\/span> <span class=\"token builtin class-name\">.<\/span><\/li>\n<li data-prefix=\"$\"><span class=\"token function\">git<\/span> commit <span class=\"token parameter variable\">-m<\/span> <span class=\"token string\">&#8216;Add Prisma&#8217;<\/span><\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u3053\u306e\u3088\u3046\u306a\u51fa\u529b\u306e\u5fdc\u7b54\u3092\u53d7\u3051\u53d6\u308b\u3053\u3068\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>git commit -m &#8216;Add Prisma&#8217; [main 1646d07] Add Prisma 9 files changed, 157 insertions(+), 39 deletions(-) create mode 100644 .gitignore create mode 100644 docker-compose.yml create mode 100644 prisma\/migrations\/<mark>20201201110111<\/mark>_init\/migration.sql create mode 100644 prisma\/migrations\/migration_lock.toml create mode 100644 prisma\/schema.prisma create mode 100644 src\/db.js<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>GraphQL\u30ea\u30be\u30eb\u30d0\u30fc\u3092Prisma Client\u3092\u4f7f\u7528\u3057\u3066\u66f4\u65b0\u3057\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3078\u306e\u30af\u30a8\u30ea\u3068\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3057\u307e\u3057\u305f\u3002\u305d\u306e\u5f8c\u3001\u3059\u3079\u3066\u306e\u5909\u66f4\u3092\u30ea\u30e2\u30fc\u30c8\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u30b3\u30df\u30c3\u30c8\u3057\u307e\u3057\u305f\u3002\u6b21\u306b\u3001App Platform\u306bPostgreSQL\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30a2\u30d7\u30ea\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n<h2>\u30b9\u30c6\u30c3\u30d79 &#8211; \u30a2\u30d7\u30ea\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3067PostgreSQL\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u4f5c\u6210\u3068\u79fb\u884c<\/h2>\n<p>\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001App Platform\u3067\u30a2\u30d7\u30ea\u306bPostgreSQL\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002\u305d\u3057\u3066\u3001Prisma Migrate\u3092\u4f7f\u7528\u3057\u3066\u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3057\u3001\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b9\u30ad\u30fc\u30de\u3092\u30ed\u30fc\u30ab\u30eb\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u4e00\u81f4\u3055\u305b\u307e\u3059\u3002<\/p>\n<p>\u6700\u521d\u306b\u3001\u30a2\u30d7\u30ea\u306e\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u30b3\u30f3\u30bd\u30fc\u30eb\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3001\u30b9\u30c6\u30c3\u30d75\u3067\u4f5c\u6210\u3057\u305f\u300cprisma-graphql\u300d\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u6b21\u306b\u3001\u4f5c\u6210\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3001\u30c9\u30ed\u30c3\u30d7\u30c0\u30a6\u30f3\u30e1\u30cb\u30e5\u30fc\u304b\u3089\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u4f5c\u6210\/\u6dfb\u4ed8\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u8a2d\u5b9a\u30da\u30fc\u30b8\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/65644b03daa94e2bdf7aef31\/250-0.png\" alt=\"Screencapture displaying the Create\/Attach Database option in the dropdown menu\" \/><\/div>\n<p>\u30c7\u30d6\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u9078\u629e\u3057\u3001\u540d\u524d\u3092\u6307\u5b9a\u3057\u3066\u3001\u4f5c\u6210\u3068\u6dfb\u4ed8\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/65644b03daa94e2bdf7aef31\/252-0.png\" alt=\"\" \/><\/div>\n<p>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30d3\u30e5\u30fc\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3055\u308c\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u4f5c\u6210\u9032\u6357\u30d0\u30fc\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/65644b03daa94e2bdf7aef31\/254-0.png\" alt=\"Screencapture displaying the Creating Database Progress Bar\" \/><\/div>\n<p>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u4f5c\u6210\u3057\u305f\u5f8c\u3001\u30ed\u30fc\u30ab\u30eb\u30de\u30b7\u30f3\u304b\u3089Silicon Cloud\u306e\u672c\u756a\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u5bfe\u3057\u3066\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u79fb\u884c\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u79fb\u884c\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u306f\u3001\u30db\u30b9\u30c8\u3055\u308c\u305f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u63a5\u7d9a\u6587\u5b57\u5217\u304c\u5fc5\u8981\u3067\u3059\u3002<\/p>\n<p>\u305d\u308c\u3092\u5165\u624b\u3059\u308b\u306b\u306f\u3001\u8a2d\u5b9a\u30bf\u30d6\u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u30bb\u30af\u30b7\u30e7\u30f3\u306b\u3042\u308b\u300cdb\u300d\u30a2\u30a4\u30b3\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/65644b03daa94e2bdf7aef31\/257-0.png\" alt=\"Screencapture displaying the Database Component Settings\" \/><\/div>\n<p>\u63a5\u7d9a\u8a73\u7d30\u306e\u4e0b\u3067\u3001[\u8868\u793a]\u3092\u62bc\u3057\u3001\u6b21\u306b\u30c9\u30ed\u30c3\u30d7\u30c0\u30a6\u30f3\u30e1\u30cb\u30e5\u30fc\u304b\u3089[\u63a5\u7d9a\u6587\u5b57\u5217]\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306eURL\u3092\u30b3\u30d4\u30fc\u3057\u3066\u304f\u3060\u3055\u3044\u3002URL\u306e\u69cb\u9020\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>postgresql:\/\/db:<mark>some_password<\/mark>@<mark>unique_identifier<\/mark>.db.ondigitalocean.com:25060\/db?sslmode=require\r\n<\/code><\/pre>\n<p>\u3067\u306f\u3001\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3001your_db_connection_string\u3092\u5148\u307b\u3069\u30b3\u30d4\u30fc\u3057\u305fURL\u306b\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token assign-left variable\">DATABASE_URL<\/span><span class=\"token operator\">=<\/span><span class=\"token string\">&#8220;<mark>your_db_connection_string<\/mark>&#8220;<\/span> npx prisma migrate deploy<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u3053\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001Prisma Migrate\u3092\u4f7f\u7528\u3057\u3066\u30e9\u30a4\u30d6\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u5bfe\u3057\u3066\u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002<\/p>\n<p>\u79fb\u884c\u304c\u6210\u529f\u3057\u305f\u5834\u5408\u3001\u4ee5\u4e0b\u306e\u51fa\u529b\u304c\u5c4a\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>PostgreSQL database db created at unique_identifier.db.ondigitalocean.com:25060 Prisma Migrate applied the following migration(s): migrations\/ \u2514\u2500 <mark>20201201110111<\/mark>_init\/ \u2514\u2500 migration.sql<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u30c7\u30b8\u30bf\u30eb\u30aa\u30fc\u30b7\u30e3\u30f3\u4e0a\u3067\u306e\u30d7\u30ed\u30c0\u30af\u30b7\u30e7\u30f3\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u79fb\u884c\u304c\u6210\u529f\u3057\u307e\u3057\u305f\u3002\u305d\u308c\u306f\u73fe\u5728\u3001Prisma\u306e\u30b9\u30ad\u30fc\u30de\u306b\u5408\u81f4\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<div class=\"post-conf-note\">\n<p class=\"post-conf-desc\">Note<\/p>\n<div>\u6ce8\u610f: \u3082\u3057\u4ee5\u4e0b\u306e\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u53d7\u3051\u53d6\u3063\u305f\u5834\u5408:<br \/>\nOutputError: P1001: `unique_identifier.db.ondigitalocean.com`:`25060` \u3067\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093\u3002<\/div>\n<p>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u306b\u79fb\u52d5\u3057\u3066\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3055\u308c\u3066\u3044\u308b\u304b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u4fe1\u983c\u3067\u304d\u308b\u30bd\u30fc\u30b9\u3092\u66f4\u65b0\u307e\u305f\u306f\u7121\u52b9\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002<\/p>\n<\/div>\n<p>\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001Git\u306e\u5909\u66f4\u3092\u30d7\u30c3\u30b7\u30e5\u3059\u308b\u3053\u3068\u3067\u30a2\u30d7\u30ea\u3092\u5c55\u958b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">git<\/span> push<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"post-conf-note\">\n<p class=\"post-conf-desc\">Note<\/p>\n<div>\u6ce8: \u30a2\u30d7\u30ea\u306e\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306f\u3001\u5b9f\u884c\u6642\u306bDATABASE_URL\u74b0\u5883\u5909\u6570\u3092\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u5229\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002Prisma\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306f\u3001Prisma\u30b9\u30ad\u30fc\u30de\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u30d6\u30ed\u30c3\u30af\u5185\u306eenv(&#8220;DATABASE_URL&#8221;)\u3068\u3068\u3082\u306b\u3001\u305d\u306e\u74b0\u5883\u5909\u6570\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/div>\n<\/div>\n<p>\u3053\u308c\u306b\u3088\u308a\u3001\u30d3\u30eb\u30c9\u304c\u81ea\u52d5\u7684\u306b\u30c8\u30ea\u30ac\u30fc\u3055\u308c\u307e\u3059\u3002App Platform\u30b3\u30f3\u30bd\u30fc\u30eb\u3092\u958b\u304f\u3068\u3001\u30c7\u30d7\u30ed\u30a4\u306e\u9032\u884c\u72b6\u6cc1\u30d0\u30fc\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/65644b03daa94e2bdf7aef31\/271-0.png\" alt=\"Screencapture displaying the Deployment Progress Bar\" \/><\/div>\n<p>\u5c55\u958b\u306b\u6210\u529f\u3057\u305f\u3089\u3001\u300c\u30c7\u30d7\u30ed\u30a4\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f\u300d\u3068\u3044\u3046\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u53d7\u3051\u53d6\u308a\u307e\u3059\u3002<\/p>\n<p>\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305fGraphQL API\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3067\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3057\u307e\u3057\u305f\u3002\u30e9\u30a4\u30d6\u30a2\u30d7\u30ea\u3092\u958b\u3044\u3066\u3001Apollo GraphQL Studio\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002\u30b9\u30c6\u30c3\u30d73\u3068\u540c\u3058\u30af\u30a8\u30ea\u3092\u4f7f\u3063\u3066GraphQL API\u3092\u30c6\u30b9\u30c8\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u6700\u5f8c\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u30e2\u30c7\u30eb\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3067GraphQL API\u3092\u9032\u5316\u3055\u305b\u307e\u3059\u3002<\/p>\n<h2>\u30b9\u30c6\u30c3\u30d710- \u30e6\u30fc\u30b6\u30fc\u30e2\u30c7\u30eb\u306e\u8ffd\u52a0<\/h2>\n<p>\u30d6\u30ed\u30b0\u306e\u305f\u3081\u306eGraphQL API\u306b\u306f\u3001Post\u3068\u3044\u3046\u5358\u4e00\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u304c\u5b58\u5728\u3057\u307e\u3059\u3002\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001Prisma\u30b9\u30ad\u30fc\u30de\u3067\u65b0\u3057\u3044\u30e2\u30c7\u30eb\u3092\u5b9a\u7fa9\u3057\u3001GraphQL\u30b9\u30ad\u30fc\u30de\u3092\u9069\u5fdc\u3055\u305b\u308b\u3053\u3068\u3067\u3001API\u3092\u767a\u5c55\u3055\u305b\u307e\u3059\u3002Post\u30e2\u30c7\u30eb\u306b\u5bfe\u3057\u30661\u5bfe\u591a\u306e\u95a2\u4fc2\u3092\u6301\u3064User\u30e2\u30c7\u30eb\u3092\u5c0e\u5165\u3057\u3001\u6295\u7a3f\u306e\u8457\u8005\u3092\u8868\u73fe\u3057\u3001\u5404\u30e6\u30fc\u30b6\u30fc\u306b\u8907\u6570\u306e\u6295\u7a3f\u3092\u95a2\u9023\u4ed8\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u305d\u306e\u5f8c\u3001GraphQL\u30b9\u30ad\u30fc\u30de\u3092\u767a\u5c55\u3055\u305b\u3001API\u3092\u4ecb\u3057\u3066\u30e6\u30fc\u30b6\u30fc\u306e\u4f5c\u6210\u3068\u6295\u7a3f\u306e\u30e6\u30fc\u30b6\u30fc\u3078\u306e\u95a2\u9023\u4ed8\u3051\u3092\u8a31\u53ef\u3057\u307e\u3059\u3002<\/p>\n<p>\u6700\u521d\u306b\u3001Prisma\u30b9\u30ad\u30fc\u30de\u3092\u958b\u3044\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">nano<\/span> prisma\/schema.prisma<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u6295\u7a3f\u30e2\u30c7\u30eb\u306bauthorId\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8ffd\u52a0\u3057\u3001\u30e6\u30fc\u30b6\u30fc\u30e2\u30c7\u30eb\u3092\u5b9a\u7fa9\u3059\u308b\u305f\u3081\u306b\u3001\u4ee5\u4e0b\u306e\u884c\u3092\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<div>\u30d7\u30ea\u30ba\u30de\u30b0\u30e9\u30d5QL\u306e\u30b9\u30ad\u30fc\u30de\u30d5\u30a1\u30a4\u30eb\uff08schema.prisma\uff09<\/div>\n<pre class=\"post-pre\"><code>...\r\nmodel Post {\r\n  id        Int     @id @default(autoincrement())\r\n  title     String\r\n  content   String?\r\n  published Boolean @default(false)\r\n  <mark>author    User?   @relation(fields: [authorId], references: [id])<\/mark>\r\n  <mark>authorId  Int?<\/mark>\r\n}\r\n\r\n<mark>model User {<\/mark>\r\n  <mark>id    Int    @id @default(autoincrement())<\/mark>\r\n  <mark>email String @unique<\/mark>\r\n  <mark>name  String<\/mark>\r\n  <mark>posts Post[]<\/mark>\r\n<mark>}<\/mark>\r\n<\/code><\/pre>\n<p>\u30d7\u30ea\u30ba\u30de\u306e\u30b9\u30ad\u30fc\u30de\u306b\u6b21\u306e\u30a2\u30a4\u30c6\u30e0\u3092\u8ffd\u52a0\u3057\u307e\u3057\u305f\u3002<\/p>\n<ul class=\"post-ul\">\n<li>Two relation fields: author and posts. Relation fields define connections between models at the Prisma level and do not exist in the database. These fields are used to generate the Prisma Client and to access relations with Prisma Client.<\/li>\n<li>The authorId field, which is referenced by the @relation attribute. Prisma will create a foreign key in the database to connect Post and User.<\/li>\n<li>The User model to represent users.<\/li>\n<\/ul>\n<p>\u6295\u7a3f\u30e2\u30c7\u30eb\u306e\u4f5c\u8005\u30d5\u30a3\u30fc\u30eb\u30c9\u306f\u4efb\u610f\u3067\u3059\u304c\u3001\u30e6\u30fc\u30b6\u30fc\u306b\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u306a\u3044\u6295\u7a3f\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u7d42\u308f\u3063\u305f\u3089\u3001\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3057\u3066\u7d42\u4e86\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u6b21\u306b\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u3063\u3066\u3001\u30ed\u30fc\u30ab\u30eb\u74b0\u5883\u3067\u79fb\u884c\u3092\u4f5c\u6210\u3057\u9069\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\">npx prisma migrate dev <span class=\"token parameter variable\">&#8211;name<\/span> <span class=\"token string\">&#8220;add-user&#8221;<\/span><\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u79fb\u884c\u304c\u6210\u529f\u3057\u305f\u5834\u5408\u3001\u4ee5\u4e0b\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u5c4a\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>Environment variables loaded from .env Prisma schema loaded from prisma\/schema.prisma Datasource &#8220;db&#8221;: PostgreSQL database &#8220;my-blog&#8221;, schema &#8220;public&#8221; at &#8220;localhost:5432&#8221; Applying migration `<mark>20201201123056<\/mark>_add_user` The following migration(s) have been created and applied from new schema changes: migrations\/ \u2514\u2500 <mark>20201201123056<\/mark>_add_user\/ \u2514\u2500 migration.sql Your database is now in sync with your schema. \u2714 Generated Prisma Client (4.6.1 | library) to .\/node_modules\/@prisma\/client in 53ms<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u30b3\u30de\u30f3\u30c9\u306f\u3001\u65b0\u3057\u3044\u30c6\u30fc\u30d6\u30eb\u3068\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u5229\u7528\u3059\u308b\u305f\u3081\u306bPrisma Client\u3082\u751f\u6210\u3057\u307e\u3059\u3002<\/p>\n<p>\u4eca\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u4e0a\u3067\u672c\u756a\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3078\u306e\u79fb\u884c\u3092\u5b9f\u884c\u3057\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b9\u30ad\u30fc\u30de\u3092\u30ed\u30fc\u30ab\u30eb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u540c\u3058\u306b\u3057\u307e\u3059\u3002\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3001DATABASE_URL\u3092\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e\u63a5\u7d9aURL\u306b\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token assign-left variable\">DATABASE_URL<\/span><span class=\"token operator\">=<\/span><span class=\"token string\">&#8220;<mark>your_db_connection_string<\/mark>&#8220;<\/span> npx prisma migrate deploy<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u4ee5\u4e0b\u306e\u51fa\u529b\u304c\u63d0\u4f9b\u3055\u308c\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>Environment variables loaded from .env Prisma schema loaded from prisma\/schema.prisma Datasource &#8220;db&#8221;: PostgreSQL database &#8220;db&#8221;, schema &#8220;public&#8221; at &#8220;unique_identifier.db.ondigitalocean.com:25060&#8221; 2 migrations found in prisma\/migrations Applying migration `<mark>20201201123056<\/mark>_add_user` The following migration have been applied: migrations\/ \u2514\u2500 <mark>20201201123056<\/mark>_add_user\/ \u2514\u2500 migration.sql All migrations have been successfully applied.<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u66f4\u65b0\u3055\u308c\u305f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b9\u30ad\u30fc\u30de\u3092\u6d3b\u7528\u3059\u308b\u305f\u3081\u306b\u3001GraphQL\u30b9\u30ad\u30fc\u30de\u3068\u30ea\u30be\u30eb\u30d0\u3092\u66f4\u65b0\u3057\u307e\u3059\u3002<\/p>\n<p>src\/schema.js\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304f\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">nano<\/span> src\/schema.js<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u3001typeDefs\u3092\u66f4\u65b0\u3057\u3066\u3001\u30cf\u30a4\u30e9\u30a4\u30c8\u3055\u308c\u305f\u884c\u3092\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<div>prisma-graphql\/src\/schema.js\u3092\u65e5\u672c\u8a9e\u306b\u81ea\u7136\u306b\u8a00\u3044\u63db\u3048\u308b\u3068\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059:<br \/>\n\u300cprisma-graphql\/src\/schema.js\u306e\u30d5\u30a1\u30a4\u30eb\u3067\u3059\u300d<\/div>\n<pre class=\"post-pre\"><code><span class=\"token spread operator\">...<\/span>\r\n<span class=\"token keyword\">const<\/span> typeDefs <span class=\"token operator\">=<\/span> gql<span class=\"token template-string\"><span class=\"token template-punctuation string\">`<\/span><span class=\"token graphql language-graphql\">\r\n  <mark><span class=\"token keyword\">type<\/span> <span class=\"token class-name\">User<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n    <mark><span class=\"token attr-name\">email<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token scalar\">String<\/span><span class=\"token operator\">!<\/span><\/mark>\r\n    <mark><span class=\"token attr-name\">id<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token scalar\">ID<\/span><span class=\"token operator\">!<\/span><\/mark>\r\n    <mark><span class=\"token attr-name\">name<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token scalar\">String<\/span><\/mark>\r\n    <mark><span class=\"token attr-name\">posts<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token class-name\">Post<\/span><span class=\"token operator\">!<\/span><span class=\"token punctuation\">]<\/span><span class=\"token operator\">!<\/span><\/mark>\r\n  <mark><span class=\"token punctuation\">}<\/span><\/mark>\r\n\r\n  <span class=\"token keyword\">type<\/span> <span class=\"token class-name\">Post<\/span> <span class=\"token punctuation\">{<\/span>\r\n    <span class=\"token attr-name\">content<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token scalar\">String<\/span>\r\n    <span class=\"token attr-name\">id<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token scalar\">ID<\/span><span class=\"token operator\">!<\/span>\r\n    <span class=\"token attr-name\">published<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token scalar\">Boolean<\/span><span class=\"token operator\">!<\/span>\r\n    <span class=\"token attr-name\">title<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token scalar\">String<\/span><span class=\"token operator\">!<\/span>\r\n    <mark><span class=\"token attr-name\">author<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token class-name\">User<\/span><\/mark>\r\n  <span class=\"token punctuation\">}<\/span>\r\n\r\n  <span class=\"token keyword\">type<\/span> <span class=\"token class-name\">Query<\/span> <span class=\"token punctuation\">{<\/span>\r\n    <span class=\"token attr-name\">feed<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token class-name\">Post<\/span><span class=\"token operator\">!<\/span><span class=\"token punctuation\">]<\/span><span class=\"token operator\">!<\/span>\r\n    <span class=\"token attr-name\">post<\/span><span class=\"token punctuation\">(<\/span><span class=\"token attr-name\">id<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token scalar\">ID<\/span><span class=\"token operator\">!<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token class-name\">Post<\/span>\r\n  <span class=\"token punctuation\">}<\/span>\r\n\r\n  <span class=\"token keyword\">type<\/span> <span class=\"token class-name\">Mutation<\/span> <span class=\"token punctuation\">{<\/span>\r\n    <mark><span class=\"token attr-name\">createUser<\/span><span class=\"token punctuation\">(<\/span><span class=\"token attr-name\">data<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token atom-input class-name\">UserCreateInput<\/span><span class=\"token operator\">!<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token class-name\">User<\/span><span class=\"token operator\">!<\/span><\/mark>\r\n    <span class=\"token attr-name\">createDraft<\/span><span class=\"token punctuation\">(<\/span><mark><span class=\"token attr-name\">authorEmail<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token scalar\">String<\/span><span class=\"token punctuation\">,<\/span> <\/mark><span class=\"token attr-name\">content<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token scalar\">String<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token attr-name\">title<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token scalar\">String<\/span><span class=\"token operator\">!<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token class-name\">Post<\/span><span class=\"token operator\">!<\/span>\r\n    <span class=\"token attr-name\">publish<\/span><span class=\"token punctuation\">(<\/span><span class=\"token attr-name\">id<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token scalar\">ID<\/span><span class=\"token operator\">!<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token class-name\">Post<\/span>\r\n  <span class=\"token punctuation\">}<\/span>\r\n\r\n  <mark><span class=\"token keyword\">input<\/span> <span class=\"token atom-input class-name\">UserCreateInput<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n    <mark><span class=\"token attr-name\">email<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token scalar\">String<\/span><span class=\"token operator\">!<\/span><\/mark>\r\n    <mark><span class=\"token attr-name\">name<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token scalar\">String<\/span><\/mark>\r\n    <mark><span class=\"token attr-name\">posts<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token atom-input class-name\">PostCreateWithoutAuthorInput<\/span><span class=\"token operator\">!<\/span><span class=\"token punctuation\">]<\/span><\/mark>\r\n  <mark><span class=\"token punctuation\">}<\/span><\/mark>\r\n\r\n  <mark><span class=\"token keyword\">input<\/span> <span class=\"token atom-input class-name\">PostCreateWithoutAuthorInput<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n    <mark><span class=\"token attr-name\">content<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token scalar\">String<\/span><\/mark>\r\n    <mark><span class=\"token attr-name\">published<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token scalar\">Boolean<\/span><\/mark>\r\n    <mark><span class=\"token attr-name\">title<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token scalar\">String<\/span><span class=\"token operator\">!<\/span><\/mark>\r\n  <mark><span class=\"token punctuation\">}<\/span><\/mark>\r\n<\/span><span class=\"token template-punctuation string\">`<\/span><\/span>\r\n<span class=\"token spread operator\">...<\/span>\r\n<\/code><\/pre>\n<p>\u3053\u306e\u66f4\u65b0\u3055\u308c\u305f\u30b3\u30fc\u30c9\u3067\u306f\u3001\u6b21\u306e\u5909\u66f4\u3092GraphQL\u30b9\u30ad\u30fc\u30de\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>The User type, which returns an array of Post.<\/li>\n<li>The author field to the Post type.<\/li>\n<li>The createUser mutation, which expects the UserCreateInput as its input type.<\/li>\n<li>The PostCreateWithoutAuthorInput input type used in the UserCreateInput input for creating posts as part of the createUser mutation.<\/li>\n<li>The authorEmail optional argument to the createDraft mutation.<\/li>\n<\/ul>\n<p>\u30b9\u30ad\u30fc\u30de\u304c\u66f4\u65b0\u3055\u308c\u305f\u306e\u3067\u3001\u30b9\u30ad\u30fc\u30de\u306b\u5408\u81f4\u3059\u308b\u3088\u3046\u306b\u30ea\u30be\u30eb\u30d0\u3092\u66f4\u65b0\u3057\u307e\u3059\u3002<\/p>\n<p>\u4ee5\u4e0b\u306e\u5f37\u8abf\u3055\u308c\u305f\u884c\u3092\u4f7f\u3063\u3066\u3001\u30ea\u30be\u30eb\u30d0\u30fc\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u66f4\u65b0\u3057\u307e\u3059\u3002<\/p>\n<div>\u30d7\u30ea\u30ba\u30de-GraphQL\/src\/schema.js\u3092\u65e5\u672c\u8a9e\u306b\u81ea\u7136\u306b\u8a00\u3044\u63db\u3048\u308b\u3068\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<br \/>\n\u30d7\u30ea\u30ba\u30de-GraphQL\u306e\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\/src\/schema.js<\/div>\n<pre class=\"post-pre\"><code><span class=\"token spread operator\">...<\/span>\r\n<span class=\"token keyword\">const<\/span> resolvers <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">{<\/span>\r\n  <span class=\"token literal-property property\">Query<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span>\r\n    <span class=\"token function-variable function\">feed<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token parameter\">parent<span class=\"token punctuation\">,<\/span> args<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token arrow operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\r\n      <span class=\"token keyword control-flow\">return<\/span> prisma<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">post<\/span><span class=\"token punctuation\">.<\/span><span class=\"token method function property-access\">findMany<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span>\r\n        <span class=\"token literal-property property\">where<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token literal-property property\">published<\/span><span class=\"token operator\">:<\/span> <span class=\"token boolean\">true<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\r\n      <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span>\r\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\r\n    <span class=\"token function-variable function\">post<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token parameter\">parent<span class=\"token punctuation\">,<\/span> args<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token arrow operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span>\r\n      <span class=\"token keyword control-flow\">return<\/span> prisma<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">post<\/span><span class=\"token punctuation\">.<\/span><span class=\"token method function property-access\">findUnique<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span>\r\n        <span class=\"token literal-property property\">where<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token literal-property property\">id<\/span><span class=\"token operator\">:<\/span> <span class=\"token known-class-name class-name\">Number<\/span><span class=\"token punctuation\">(<\/span>args<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">id<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\r\n      <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span>\r\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\r\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\r\n  <mark><span class=\"token literal-property property\">Mutation<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n    <mark><span class=\"token function-variable function\">createDraft<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token parameter\">parent<span class=\"token punctuation\">,<\/span> args<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token arrow operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n      <mark><span class=\"token keyword control-flow\">return<\/span> prisma<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">post<\/span><span class=\"token punctuation\">.<\/span><span class=\"token method function property-access\">create<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><\/mark>\r\n        <mark><span class=\"token literal-property property\">data<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n          <mark><span class=\"token literal-property property\">title<\/span><span class=\"token operator\">:<\/span> args<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">title<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n          <mark><span class=\"token literal-property property\">content<\/span><span class=\"token operator\">:<\/span> args<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">content<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n          <mark><span class=\"token literal-property property\">published<\/span><span class=\"token operator\">:<\/span> <span class=\"token boolean\">false<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n          <mark><span class=\"token literal-property property\">author<\/span><span class=\"token operator\">:<\/span> args<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">authorEmail<\/span> <span class=\"token operator\">&amp;&amp;<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n            <mark><span class=\"token literal-property property\">connect<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token literal-property property\">email<\/span><span class=\"token operator\">:<\/span> args<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">authorEmail<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n          <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n        <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n      <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/mark>\r\n    <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n    <mark><span class=\"token function-variable function\">publish<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token parameter\">parent<span class=\"token punctuation\">,<\/span> args<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token arrow operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n      <mark><span class=\"token keyword control-flow\">return<\/span> prisma<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">post<\/span><span class=\"token punctuation\">.<\/span><span class=\"token method function property-access\">update<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><\/mark>\r\n        <mark><span class=\"token literal-property property\">where<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token literal-property property\">id<\/span><span class=\"token operator\">:<\/span> <span class=\"token known-class-name class-name\">Number<\/span><span class=\"token punctuation\">(<\/span>args<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">id<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n        <mark><span class=\"token literal-property property\">data<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n          <mark><span class=\"token literal-property property\">published<\/span><span class=\"token operator\">:<\/span> <span class=\"token boolean\">true<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n        <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n      <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/mark>\r\n    <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n    <mark><span class=\"token function-variable function\">createUser<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token parameter\">parent<span class=\"token punctuation\">,<\/span> args<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token arrow operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n      <mark><span class=\"token keyword control-flow\">return<\/span> prisma<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">user<\/span><span class=\"token punctuation\">.<\/span><span class=\"token method function property-access\">create<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><\/mark>\r\n        <mark><span class=\"token literal-property property\">data<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n          <mark><span class=\"token literal-property property\">email<\/span><span class=\"token operator\">:<\/span> args<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">data<\/span><span class=\"token punctuation\">.<\/span><span class=\"token property-access\">email<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n          <mark><span class=\"token literal-property property\">name<\/span><span class=\"token operator\">:<\/span> args<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">data<\/span><span class=\"token punctuation\">.<\/span><span class=\"token property-access\">name<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n          <mark><span class=\"token literal-property property\">posts<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n            <mark><span class=\"token literal-property property\">create<\/span><span class=\"token operator\">:<\/span> args<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">data<\/span><span class=\"token punctuation\">.<\/span><span class=\"token property-access\">posts<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n          <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n        <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n      <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/mark>\r\n    <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n  <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n  <mark><span class=\"token literal-property property\">User<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n    <mark><span class=\"token function-variable function\">posts<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token parameter\">parent<span class=\"token punctuation\">,<\/span> args<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token arrow operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n      <mark><span class=\"token keyword control-flow\">return<\/span> prisma<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">user<\/span><\/mark>\r\n        <span class=\"token punctuation\">.<\/span><mark><span class=\"token method function property-access\">findUnique<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><\/mark>\r\n          <mark><span class=\"token literal-property property\">where<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token literal-property property\">id<\/span><span class=\"token operator\">:<\/span> parent<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">id<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n        <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/mark>\r\n        <span class=\"token punctuation\">.<\/span><mark><span class=\"token method function property-access\">posts<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/mark>\r\n    <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n  <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n  <mark><span class=\"token literal-property property\">Post<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n    <mark><span class=\"token function-variable function\">author<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token parameter\">parent<span class=\"token punctuation\">,<\/span> args<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token arrow operator\">=&gt;<\/span> <span class=\"token punctuation\">{<\/span><\/mark>\r\n      <mark><span class=\"token keyword control-flow\">return<\/span> prisma<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">post<\/span><\/mark>\r\n        <span class=\"token punctuation\">.<\/span><mark><span class=\"token method function property-access\">findUnique<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><\/mark>\r\n          <mark><span class=\"token literal-property property\">where<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token literal-property property\">id<\/span><span class=\"token operator\">:<\/span> parent<span class=\"token punctuation\">.<\/span><span class=\"token property-access\">id<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n        <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/mark>\r\n        <span class=\"token punctuation\">.<\/span><mark><span class=\"token method function property-access\">author<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/mark>\r\n    <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n  <mark><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><\/mark>\r\n<span class=\"token punctuation\">}<\/span>\r\n<span class=\"token spread operator\">...<\/span>\r\n<\/code><\/pre>\n<p>\u4eca\u3001createDraft\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u30ea\u30be\u30eb\u30d0\u306f\u3001\u6e21\u3055\u308c\u305f\u5834\u5408\u306fauthorEmail\u5f15\u6570\u3092\u4f7f\u7528\u3057\u3066\u3001\u4f5c\u6210\u3055\u308c\u305f\u4e0b\u66f8\u304d\u3068\u65e2\u5b58\u306e\u30e6\u30fc\u30b6\u30fc\u306e\u95a2\u4fc2\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n<p>\u65b0\u3057\u3044createUser\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u30ea\u30be\u30eb\u30d0\u30fc\u306f\u3001\u30cd\u30b9\u30c8\u3055\u308c\u305f\u30e9\u30a4\u30c6\u30a3\u30f3\u30b0\u3092\u4f7f\u7528\u3057\u3066\u30e6\u30fc\u30b6\u30fc\u3068\u95a2\u9023\u3059\u308b\u6295\u7a3f\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n<p>\u30e6\u30fc\u30b6\u30fc\u306e\u30dd\u30b9\u30c8\u3084\u6295\u7a3f\u8005\u306e\u30ea\u30be\u30eb\u30d0\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u307e\u305f\u306f\u6295\u7a3f\u304c\u30af\u30a8\u30ea\u3055\u308c\u305f\u3068\u304d\u306b\u3001\u30dd\u30b9\u30c8\u3068\u6295\u7a3f\u8005\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u3069\u306e\u3088\u3046\u306b\u89e3\u6c7a\u3059\u308b\u304b\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306f\u3001Prisma\u306eFluent API\u3092\u4f7f\u7528\u3057\u3066\u95a2\u9023\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002<\/p>\n<p>\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3057\u3066\u7d42\u4e86\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>GraphQL API\u3092\u30c6\u30b9\u30c8\u3059\u308b\u305f\u3081\u306b\u30b5\u30fc\u30d0\u30fc\u3092\u8d77\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">npm<\/span> start<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u4ee5\u4e0b\u306eGraphQL\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u3067\u3001createUser\u30ea\u30be\u30eb\u30d0\u3092\u30c6\u30b9\u30c8\u3092\u958b\u59cb\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"token keyword\">mutation<\/span> <span class=\"token punctuation\">{<\/span>\r\n  <span class=\"token property-query property-mutation\">createUser<\/span><span class=\"token punctuation\">(<\/span><span class=\"token attr-name\">data<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token attr-name\">email<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">\"natalia@prisma.io\"<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token attr-name\">name<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">\"Natalia\"<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\r\n    <span class=\"token property\">email<\/span>\r\n    <span class=\"token property\">id<\/span>\r\n  <span class=\"token punctuation\">}<\/span>\r\n<span class=\"token punctuation\">}<\/span>\r\n<\/code><\/pre>\n<p>\u3053\u306e\u5909\u7570\u306b\u3088\u308a\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002<\/p>\n<p>\u6b21\u306b\u3001\u4ee5\u4e0b\u306e\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u4f7f\u3063\u3066createDraft\u30ea\u30be\u30eb\u30d0\u3092\u30c6\u30b9\u30c8\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"token keyword\">mutation<\/span> <span class=\"token punctuation\">{<\/span>\r\n  <span class=\"token property-query property-mutation\">createDraft<\/span><span class=\"token punctuation\">(<\/span>\r\n    <span class=\"token attr-name\">authorEmail<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token description string\">\"<span class=\"token language-markdown\">natalia@prisma.io<\/span>\"<\/span>\r\n    <span class=\"token attr-name\">title<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">\"Deploying a GraphQL API to App Platform\"<\/span>\r\n  <span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\r\n    <span class=\"token property\">id<\/span>\r\n    <span class=\"token property\">title<\/span>\r\n    <span class=\"token property\">content<\/span>\r\n    <span class=\"token property\">published<\/span>\r\n    <span class=\"token object\">author<\/span> <span class=\"token punctuation\">{<\/span>\r\n      <span class=\"token property\">id<\/span>\r\n      <span class=\"token property\">name<\/span>\r\n    <span class=\"token punctuation\">}<\/span>\r\n  <span class=\"token punctuation\">}<\/span>\r\n<span class=\"token punctuation\">}<\/span>\r\n<\/code><\/pre>\n<p>\u30af\u30a8\u30ea\u306e\u623b\u308a\u5024\u304c\u300c\u6295\u7a3f\u300d\u306e\u5834\u5408\u3001\u3044\u3064\u3067\u3082\u8457\u8005\u3092\u53d6\u5f97\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u4f8b\u3067\u306f\u3001\u300c\u6295\u7a3f\u306e\u8457\u8005\u300d\u30ea\u30be\u30eb\u30d0\u304c\u547c\u3073\u51fa\u3055\u308c\u307e\u3059\u3002<\/p>\n<p>\u30c6\u30b9\u30c8\u304c\u7d42\u4e86\u3057\u305f\u3089\u3001\u30b5\u30fc\u30d0\u30fc\u3092\u9589\u3058\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u5909\u66f4\u5185\u5bb9\u3092\u30b3\u30df\u30c3\u30c8\u3057\u3001API\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u305f\u3081\u306b\u30d7\u30c3\u30b7\u30e5\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">git<\/span> <span class=\"token function\">add<\/span> <span class=\"token builtin class-name\">.<\/span><\/li>\n<li data-prefix=\"$\"><span class=\"token function\">git<\/span> commit <span class=\"token parameter variable\">-m<\/span> <span class=\"token string\">&#8220;add user model&#8221;<\/span><\/li>\n<li data-prefix=\"$\"><span class=\"token function\">git<\/span> push<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u304c\u5c55\u958b\u3055\u308c\u308b\u307e\u3067\u6570\u5206\u304b\u304b\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<p>Prisma Migrate\u3092\u4f7f\u3063\u3066\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30b9\u30ad\u30fc\u30de\u3092\u6b63\u5e38\u306b\u9032\u5316\u3055\u305b\u3001\u65b0\u3057\u3044\u30e2\u30c7\u30eb\u3092GraphQL API\u3067\u516c\u958b\u3057\u307e\u3057\u305f\u3002<\/p>\n<h2>\u7d50\u8ad6<\/h2>\n<p>\u3053\u306e\u8a18\u4e8b\u3067\u306f\u3001Prisma\u3092\u4f7f\u7528\u3057\u3066GraphQL API\u3092\u4f5c\u6210\u3057\u3001Silicon Cloud\u306eApp Platform\u306b\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3057\u305f\u3002Apollo Server\u3092\u4f7f\u7528\u3057\u3066GraphQL\u30b9\u30ad\u30fc\u30de\u3068\u30ea\u30be\u30eb\u30d0\u3092\u5b9a\u7fa9\u3057\u307e\u3057\u305f\u3002\u6b21\u306b\u3001GraphQL\u30ea\u30be\u30eb\u30d0\u3067Prisma Client\u3092\u4f7f\u7528\u3057\u3066PostgreSQL\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u30c7\u30fc\u30bf\u3092\u6c38\u7d9a\u5316\u3057\u3001\u30af\u30a8\u30ea\u3092\u5b9f\u884c\u3057\u307e\u3057\u305f\u3002\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u3068\u3057\u3066\u3001\u500b\u3005\u306e\u30e6\u30fc\u30b6\u30fc\u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u306e\u30af\u30a8\u30ea\u3068\u3001\u65e2\u5b58\u306e\u30c9\u30e9\u30d5\u30c8\u3092\u30e6\u30fc\u30b6\u30fc\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306e\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u3092GraphQL API\u306b\u62e1\u5f35\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30c7\u30fc\u30bf\u3092\u63a2\u7d22\u3057\u305f\u3044\u5834\u5408\u306f\u3001Prisma Studio\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002\u307e\u305f\u3001Prisma\u306e\u3055\u307e\u3056\u307e\u306a\u5074\u9762\u306b\u3064\u3044\u3066\u5b66\u3073\u3001prisma-examples\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u3044\u304f\u3064\u304b\u306e\u5b9f\u884c\u53ef\u80fd\u306a\u4f8b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u63a2\u7d22\u3059\u308b\u305f\u3081\u306b\u3001Prisma\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3082\u8a2a\u308c\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30b3\u30fc\u30c9\u306f\u3001Silicon Cloud \u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u3067\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u8457\u8005\u305f\u3061\u306f\u3001\u300c\u5bc4\u4ed8\u306b\u66f8\u304f\u300d\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u4e00\u74b0\u3068\u3057\u3066\u3001COVID-19\u6551\u6e08\u57fa\u91d1\u3068\u30c6\u30c3\u30af\u6559\u80b2\u57fa\u91d1\u3092\u5bc4\u4ed8\u306e\u5bfe\u8c61\u3068\u3057\u3066\u9078\u3073\u307e\u3057\u305f\u3002 \u5c0e\u5165 GraphQL\u306f\u3001\u30b9\u30ad\u30fc\u30de\u5b9a\u7fa9\u8a00\u8a9e\u3068\u30af\u30a8\u30ea\u8a00\u8a9e\u304b\u3089\u306a\u308bAPI\u306e\u305f\u3081\u306e\u30af\u30a8\u30ea\u8a00\u8a9e\u3067\u3042\u308a\u3001API [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[75,26],"class_list":["post-454","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-graphql","tag-26"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Prisma\u3092\u4f7f\u7528\u3057\u3066GraphQL API\u3092\u69cb\u7bc9\u3057\u3001Silicon Cloud\u306eApp Platform\u306b\u30c7\u30d7\u30ed\u30a4\u306e\u65b9\u6cd5 - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Prisma\u3092\u4f7f\u7528\u3057\u3066GraphQL API\u3092\u69cb\u7bc9\u3057Silicon Cloud\u306eApp Platform\u306b\u30c7\u30d7\u30ed\u30a4\u306e\u65b9\u6cd5\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/ja\/blog\/prisma\u3092\u4f7f\u7528\u3057\u3066graphql-api\u3092\u69cb\u7bc9\u3057\u3001siliconcloud\u306eapp-platform\u306b\u30c7\u30d7\u30ed\u30a4\u3059\/\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Prisma\u3092\u4f7f\u7528\u3057\u3066GraphQL API\u3092\u69cb\u7bc9\u3057\u3001Silicon Cloud\u306eApp Platform\u306b\u30c7\u30d7\u30ed\u30a4\u306e\u65b9\u6cd5\" \/>\n<meta property=\"og:description\" content=\"Prisma\u3092\u4f7f\u7528\u3057\u3066GraphQL API\u3092\u69cb\u7bc9\u3057Silicon Cloud\u306eApp Platform\u306b\u30c7\u30d7\u30ed\u30a4\u306e\u65b9\u6cd5\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/ja\/blog\/prisma\u3092\u4f7f\u7528\u3057\u3066graphql-api\u3092\u69cb\u7bc9\u3057\u3001siliconcloud\u306eapp-platform\u306b\u30c7\u30d7\u30ed\u30a4\u3059\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-12T08:53:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-31T14:43:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/65644b03daa94e2bdf7aef31\/83-0.png\" \/>\n<meta name=\"author\" content=\"\u967d, \u5411\u5b87\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u967d, \u5411\u5b87\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"78\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/prisma%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6graphql-api%e3%82%92%e6%a7%8b%e7%af%89%e3%81%97%e3%80%81siliconcloud%e3%81%aeapp-platform%e3%81%ab%e3%83%87%e3%83%97%e3%83%ad%e3%82%a4%e3%81%99\/\",\"url\":\"https:\/\/www.silicloud.com\/ja\/blog\/prisma%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6graphql-api%e3%82%92%e6%a7%8b%e7%af%89%e3%81%97%e3%80%81siliconcloud%e3%81%aeapp-platform%e3%81%ab%e3%83%87%e3%83%97%e3%83%ad%e3%82%a4%e3%81%99\/\",\"name\":\"Prisma\u3092\u4f7f\u7528\u3057\u3066GraphQL API\u3092\u69cb\u7bc9\u3057\u3001Silicon Cloud\u306eApp Platform\u306b\u30c7\u30d7\u30ed\u30a4\u306e\u65b9\u6cd5 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#website\"},\"datePublished\":\"2022-12-12T08:53:10+00:00\",\"dateModified\":\"2025-07-31T14:43:28+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/4aef6196128551a0f5d66db46c42866c\"},\"description\":\"Prisma\u3092\u4f7f\u7528\u3057\u3066GraphQL API\u3092\u69cb\u7bc9\u3057Silicon Cloud\u306eApp Platform\u306b\u30c7\u30d7\u30ed\u30a4\u306e\u65b9\u6cd5\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/prisma%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6graphql-api%e3%82%92%e6%a7%8b%e7%af%89%e3%81%97%e3%80%81siliconcloud%e3%81%aeapp-platform%e3%81%ab%e3%83%87%e3%83%97%e3%83%ad%e3%82%a4%e3%81%99\/#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/ja\/blog\/prisma%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6graphql-api%e3%82%92%e6%a7%8b%e7%af%89%e3%81%97%e3%80%81siliconcloud%e3%81%aeapp-platform%e3%81%ab%e3%83%87%e3%83%97%e3%83%ad%e3%82%a4%e3%81%99\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/prisma%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6graphql-api%e3%82%92%e6%a7%8b%e7%af%89%e3%81%97%e3%80%81siliconcloud%e3%81%aeapp-platform%e3%81%ab%e3%83%87%e3%83%97%e3%83%ad%e3%82%a4%e3%81%99\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/ja\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Prisma\u3092\u4f7f\u7528\u3057\u3066GraphQL API\u3092\u69cb\u7bc9\u3057\u3001Silicon Cloud\u306eApp Platform\u306b\u30c7\u30d7\u30ed\u30a4\u306e\u65b9\u6cd5\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/ja\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"ja\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/4aef6196128551a0f5d66db46c42866c\",\"name\":\"\u967d, \u5411\u5b87\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ad96b120e219751fa368cbd7d2c48ca01b59185e6ed394449bac72614a760bf3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ad96b120e219751fa368cbd7d2c48ca01b59185e6ed394449bac72614a760bf3?s=96&d=mm&r=g\",\"caption\":\"\u967d, \u5411\u5b87\"},\"url\":\"https:\/\/www.silicloud.com\/ja\/blog\/author\/hinatasora\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/prisma%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6graphql-api%e3%82%92%e6%a7%8b%e7%af%89%e3%81%97%e3%80%81siliconcloud%e3%81%aeapp-platform%e3%81%ab%e3%83%87%e3%83%97%e3%83%ad%e3%82%a4%e3%81%99\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Prisma\u3092\u4f7f\u7528\u3057\u3066GraphQL API\u3092\u69cb\u7bc9\u3057\u3001Silicon Cloud\u306eApp Platform\u306b\u30c7\u30d7\u30ed\u30a4\u306e\u65b9\u6cd5 - Blog - Silicon Cloud","description":"Prisma\u3092\u4f7f\u7528\u3057\u3066GraphQL API\u3092\u69cb\u7bc9\u3057Silicon Cloud\u306eApp Platform\u306b\u30c7\u30d7\u30ed\u30a4\u306e\u65b9\u6cd5\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/ja\/blog\/prisma\u3092\u4f7f\u7528\u3057\u3066graphql-api\u3092\u69cb\u7bc9\u3057\u3001siliconcloud\u306eapp-platform\u306b\u30c7\u30d7\u30ed\u30a4\u3059\/","og_locale":"ja_JP","og_type":"article","og_title":"Prisma\u3092\u4f7f\u7528\u3057\u3066GraphQL API\u3092\u69cb\u7bc9\u3057\u3001Silicon Cloud\u306eApp Platform\u306b\u30c7\u30d7\u30ed\u30a4\u306e\u65b9\u6cd5","og_description":"Prisma\u3092\u4f7f\u7528\u3057\u3066GraphQL API\u3092\u69cb\u7bc9\u3057Silicon Cloud\u306eApp Platform\u306b\u30c7\u30d7\u30ed\u30a4\u306e\u65b9\u6cd5\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002","og_url":"https:\/\/www.silicloud.com\/ja\/blog\/prisma\u3092\u4f7f\u7528\u3057\u3066graphql-api\u3092\u69cb\u7bc9\u3057\u3001siliconcloud\u306eapp-platform\u306b\u30c7\u30d7\u30ed\u30a4\u3059\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2022-12-12T08:53:10+00:00","article_modified_time":"2025-07-31T14:43:28+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/65644b03daa94e2bdf7aef31\/83-0.png"}],"author":"\u967d, \u5411\u5b87","twitter_card":"summary_large_image","twitter_misc":{"\u57f7\u7b46\u8005":"\u967d, \u5411\u5b87","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"78\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/ja\/blog\/prisma%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6graphql-api%e3%82%92%e6%a7%8b%e7%af%89%e3%81%97%e3%80%81siliconcloud%e3%81%aeapp-platform%e3%81%ab%e3%83%87%e3%83%97%e3%83%ad%e3%82%a4%e3%81%99\/","url":"https:\/\/www.silicloud.com\/ja\/blog\/prisma%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6graphql-api%e3%82%92%e6%a7%8b%e7%af%89%e3%81%97%e3%80%81siliconcloud%e3%81%aeapp-platform%e3%81%ab%e3%83%87%e3%83%97%e3%83%ad%e3%82%a4%e3%81%99\/","name":"Prisma\u3092\u4f7f\u7528\u3057\u3066GraphQL API\u3092\u69cb\u7bc9\u3057\u3001Silicon Cloud\u306eApp Platform\u306b\u30c7\u30d7\u30ed\u30a4\u306e\u65b9\u6cd5 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/ja\/blog\/#website"},"datePublished":"2022-12-12T08:53:10+00:00","dateModified":"2025-07-31T14:43:28+00:00","author":{"@id":"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/4aef6196128551a0f5d66db46c42866c"},"description":"Prisma\u3092\u4f7f\u7528\u3057\u3066GraphQL API\u3092\u69cb\u7bc9\u3057Silicon Cloud\u306eApp Platform\u306b\u30c7\u30d7\u30ed\u30a4\u306e\u65b9\u6cd5\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/ja\/blog\/prisma%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6graphql-api%e3%82%92%e6%a7%8b%e7%af%89%e3%81%97%e3%80%81siliconcloud%e3%81%aeapp-platform%e3%81%ab%e3%83%87%e3%83%97%e3%83%ad%e3%82%a4%e3%81%99\/#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/ja\/blog\/prisma%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6graphql-api%e3%82%92%e6%a7%8b%e7%af%89%e3%81%97%e3%80%81siliconcloud%e3%81%aeapp-platform%e3%81%ab%e3%83%87%e3%83%97%e3%83%ad%e3%82%a4%e3%81%99\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/ja\/blog\/prisma%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6graphql-api%e3%82%92%e6%a7%8b%e7%af%89%e3%81%97%e3%80%81siliconcloud%e3%81%aeapp-platform%e3%81%ab%e3%83%87%e3%83%97%e3%83%ad%e3%82%a4%e3%81%99\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/ja\/blog\/"},{"@type":"ListItem","position":2,"name":"Prisma\u3092\u4f7f\u7528\u3057\u3066GraphQL API\u3092\u69cb\u7bc9\u3057\u3001Silicon Cloud\u306eApp Platform\u306b\u30c7\u30d7\u30ed\u30a4\u306e\u65b9\u6cd5"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/ja\/blog\/#website","url":"https:\/\/www.silicloud.com\/ja\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"ja"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/4aef6196128551a0f5d66db46c42866c","name":"\u967d, \u5411\u5b87","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ad96b120e219751fa368cbd7d2c48ca01b59185e6ed394449bac72614a760bf3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ad96b120e219751fa368cbd7d2c48ca01b59185e6ed394449bac72614a760bf3?s=96&d=mm&r=g","caption":"\u967d, \u5411\u5b87"},"url":"https:\/\/www.silicloud.com\/ja\/blog\/author\/hinatasora\/"},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.silicloud.com\/ja\/blog\/prisma%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%a6graphql-api%e3%82%92%e6%a7%8b%e7%af%89%e3%81%97%e3%80%81siliconcloud%e3%81%aeapp-platform%e3%81%ab%e3%83%87%e3%83%97%e3%83%ad%e3%82%a4%e3%81%99\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/posts\/454","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/comments?post=454"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/posts\/454\/revisions"}],"predecessor-version":[{"id":325794,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/posts\/454\/revisions\/325794"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/media?parent=454"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/categories?post=454"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/tags?post=454"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}