{
  "value": [
    {
      "name": "QClassStudentOrGuest",
      "description": "生徒やゲスト向けの招待トークンが含まれていないクラスの情報",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "name",
            "description": "クラス名",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "id",
            "description": "クラスID",
            "type": {
              "typePartId": "624e37b7230f763e6318c627c2c728ec",
              "parameter": []
            }
          },
          {
            "name": "createAccountId",
            "description": "作成したアカウントのID",
            "type": {
              "typePartId": "c1a17b07e8e664ca80217833ff2ad3f1",
              "parameter": []
            }
          }
        ]
      },
      "id": "067954ebc8a7f155be3a4ee196ccf99a"
    },
    {
      "name": "QLocation",
      "description": "quest の ページの場所を表現する",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "Top",
            "description": "トップページ. アカウントの状態に応じて表示が変わる",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Setting",
            "description": "設定ページ. アカウントの情報やログアウトできる",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "NewProgram",
            "description": "プログラム作成ページ",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Program",
            "description": "プログラム詳細ページ",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "4fe2f5da0a887c2a6b33c16c5d52058f",
                "parameter": []
              }
            }
          },
          {
            "name": "NewQuestion",
            "description": "質問作成ページ",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "8960809c7ca4954e9235c197f5d63cdf",
                "parameter": []
              }
            }
          },
          {
            "name": "Question",
            "description": "質問ページ",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "5249c5510c734bbe48e63a23e4e202b3",
                "parameter": []
              }
            }
          },
          {
            "name": "Class",
            "description": "クラス詳細ページ",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "624e37b7230f763e6318c627c2c728ec",
                "parameter": []
              }
            }
          },
          {
            "name": "NewClass",
            "description": "クラス作成ページ",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "4fe2f5da0a887c2a6b33c16c5d52058f",
                "parameter": []
              }
            }
          },
          {
            "name": "ClassInvitation",
            "description": "クラスの招待URL",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "a5f14e3ce94846347dc38bc1fb29ba7f",
                "parameter": []
              }
            }
          },
          {
            "name": "EditQuestion",
            "description": "質問編集画面",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "5249c5510c734bbe48e63a23e4e202b3",
                "parameter": []
              }
            }
          }
        ]
      },
      "id": "0951f74f6309835e7ff412f105474aa7"
    },
    {
      "name": "ElmVariant",
      "description": "バリアント. 値コンストラクタ. タグ",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "name",
            "description": "バリアント名",
            "type": {
              "typePartId": "d77f1f967b892c739a1555f74d2ff9fd",
              "parameter": []
            }
          },
          {
            "name": "parameter",
            "description": "パラメーター",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "173f661790b059baf212043f816ba1a9",
                  "parameter": []
                }
              ]
            }
          }
        ]
      },
      "id": "0bc2e5ab2fd2caeb6e6c331573ae735f"
    },
    {
      "name": "GetClassAndRoleResult",
      "description": "クラスの情報をクラスの招待トークンから取得するときのレスポンス",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "NotJoin",
            "description": "クラスに参加していない",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "cf779792c0201a3874f77765b063b64b",
                "parameter": []
              }
            }
          },
          {
            "name": "JoinedAsStudent",
            "description": "すでに生徒として参加している",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "cf779792c0201a3874f77765b063b64b",
                "parameter": []
              }
            }
          },
          {
            "name": "JoinedAsGuest",
            "description": "すでにゲストとして参加している",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "cf779792c0201a3874f77765b063b64b",
                "parameter": []
              }
            }
          }
        ]
      },
      "id": "0bc48429266ac8dfe8f9f8f304938c88"
    },
    {
      "name": "ExportDefinition",
      "description": "外部に公開する定義",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "TypeAlias",
            "description": "TypeAlias",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "bf69f7e46f5e4949fe801c234fc3ad15",
                "parameter": []
              }
            }
          },
          {
            "name": "Function",
            "description": "Function",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "dd3366ce7254327c85732d2932ff219b",
                "parameter": []
              }
            }
          },
          {
            "name": "Variable",
            "description": "Variable",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "a2580a29c047f54d635c4456696bbef3",
                "parameter": []
              }
            }
          }
        ]
      },
      "id": "0c8b854b812290a054877ca5de6c4daf"
    },
    {
      "name": "UnaryOperatorExpr",
      "description": "単項演算子と適用される式",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "operator",
            "description": "単項演算子",
            "type": {
              "typePartId": "4b4c3f8f34d1c05bb9d7d1b930bc9c9a",
              "parameter": []
            }
          },
          {
            "name": "expr",
            "description": "適用される式",
            "type": {
              "typePartId": "8b0bdbeae05df3badac2ee69bf22011f",
              "parameter": []
            }
          }
        ]
      },
      "id": "0cb0a34b3953e57b30f4a5c8f9d305da"
    },
    {
      "name": "ProjectId",
      "description": "プロジェクトの識別子",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": { "_": "Kernel", "typePartBodyKernel": "Id" },
      "id": "0cd913118a2ad1469d656146a08c5f76"
    },
    {
      "name": "Language",
      "description": "英語,日本語,エスペラント語\n\nナルミンチョが使える? プログラミングじゃない言語",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "Japanese",
            "description": "日本語",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "English",
            "description": "英語",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Esperanto",
            "description": "エスペラント語",
            "parameter": { "_": "Nothing" }
          }
        ]
      },
      "id": "0d9510723f4d34605e41f3a47a8b0ea7"
    },
    {
      "name": "ElmTypeName",
      "description": "Elmで使う型の名前. Elmで使える型名ということを確認済み",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "ElmTypeName",
            "description": "**直接 ElmTypeName.ElmTypeName(\"Int\") と指定してはいけない!! Elmの識別子として使える文字としてチェックできないため**",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
                "parameter": []
              }
            }
          }
        ]
      },
      "id": "13e52324ba81c7ffe655455ad739ea73"
    },
    {
      "name": "Int32",
      "description": "-2 147 483 648 ～ 2 147 483 647. 32bit 符号付き整数. JavaScriptのnumberとして扱える. numberの32bit符号あり整数をSigned Leb128のバイナリに変換する",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": { "_": "Kernel", "typePartBodyKernel": "Int32" },
      "id": "16c2d8602e3e5e2d38b9215bd0c44d8d"
    },
    {
      "name": "ElmType",
      "description": "Elm の 型",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "ImportedType",
            "description": "インポートした型",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "43aa21ed2225cacc4489c30113e87787",
                "parameter": []
              }
            }
          },
          {
            "name": "TypeParameter",
            "description": "型パラメーター",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
                "parameter": []
              }
            }
          },
          {
            "name": "Function",
            "description": "関数",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "5ec9dae951d8d2b250c81185a259adca",
                "parameter": []
              }
            }
          },
          {
            "name": "List",
            "description": "List リスト",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "173f661790b059baf212043f816ba1a9",
                "parameter": []
              }
            }
          },
          {
            "name": "Tuple0",
            "description": "() 1種類の値だけ持つ型. Unit",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Tuple2",
            "description": "(a, b)",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "8b479d8726bb494ac76d529fbf03908c",
                "parameter": []
              }
            }
          },
          {
            "name": "Tuple3",
            "description": "(a, b, c)",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "42e5ab4936af4abf8673472ce96fd794",
                "parameter": []
              }
            }
          },
          {
            "name": "Record",
            "description": "{ name: String, age: Int } レコード型",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
                "parameter": [
                  {
                    "typePartId": "2392b884a9c2238a65ecd272bd23a9cd",
                    "parameter": []
                  }
                ]
              }
            }
          },
          {
            "name": "LocalType",
            "description": "モジュール内にある型",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "2b42264a878355f0257141fa013fed5c",
                "parameter": []
              }
            }
          }
        ]
      },
      "id": "173f661790b059baf212043f816ba1a9"
    },
    {
      "name": "TsType",
      "description": "",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "Number",
            "description": "プリミティブの型のnumber",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "String",
            "description": "プリミティブの型のstring",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Boolean",
            "description": "プリミティブの型のboolean",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Undefined",
            "description": "プリミティブの型のundefined",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Null",
            "description": "プリミティブの型のnull",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Never",
            "description": "never型",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Void",
            "description": "void型",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Object",
            "description": "オブジェクト",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
                "parameter": [
                  {
                    "typePartId": "c68bac5afb1a1d35af096bf317d09339",
                    "parameter": []
                  }
                ]
              }
            }
          },
          {
            "name": "Function",
            "description": "関数 `(parameter: parameter) => returnType`",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "98904215e50e04fa2197a7a96df8f646",
                "parameter": []
              }
            }
          },
          {
            "name": "WithTypeParameter",
            "description": "型パラメータ付きの型 `Promise<number>` `ReadonlyArray<string>`",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "23fa0e8b66c9d093d4c18579ffefaaa3",
                "parameter": []
              }
            }
          },
          {
            "name": "Union",
            "description": "ユニオン型 `a | b`",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
                "parameter": [
                  {
                    "typePartId": "1835ebdc909b0fa93d11ae0ed93d0606",
                    "parameter": []
                  }
                ]
              }
            }
          },
          {
            "name": "Intersection",
            "description": "\"交差型 `left & right`",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "d82150857d0f2e78c1df0f418ba9b01a",
                "parameter": []
              }
            }
          },
          {
            "name": "ImportedType",
            "description": "インポートされた外部の型",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "b44289bc65640d4ad0ad79a5a627ef78",
                "parameter": []
              }
            }
          },
          {
            "name": "ScopeInFile",
            "description": "ファイル内で定義された型",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "2a75ad7c7ccc58ba56f6c8545c8150d1",
                "parameter": []
              }
            }
          },
          {
            "name": "ScopeInGlobal",
            "description": "グローバル空間の型",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "2a75ad7c7ccc58ba56f6c8545c8150d1",
                "parameter": []
              }
            }
          },
          {
            "name": "StringLiteral",
            "description": "文字列リテラル型",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
                "parameter": []
              }
            }
          }
        ]
      },
      "id": "1835ebdc909b0fa93d11ae0ed93d0606"
    },
    {
      "name": "ResourceState",
      "description": "Project, Account, TypePartなどのリソースの状態とデータ. 読み込み中だとか",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [
        { "name": "data", "typePartId": "cdf3576a38b1f792a7e2f9e21598ae06" }
      ],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "Loaded",
            "description": "読み込み済み",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "55d4de38cfb884b9008abd7f7f63325e",
                "parameter": [
                  {
                    "typePartId": "cdf3576a38b1f792a7e2f9e21598ae06",
                    "parameter": []
                  }
                ]
              }
            }
          },
          {
            "name": "Deleted",
            "description": "削除されたか, 存在しない",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "7d91f0f70643799692aa144ee51a62b1",
                "parameter": []
              }
            }
          },
          {
            "name": "Unknown",
            "description": "削除されたか, 存在しない",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "7d91f0f70643799692aa144ee51a62b1",
                "parameter": []
              }
            }
          },
          {
            "name": "Requesting",
            "description": "サーバに問い合わせ中",
            "parameter": { "_": "Nothing" }
          }
        ]
      },
      "id": "18cbd2fa4bd72a0eacf3f0f44aeb6feb"
    },
    {
      "name": "JoinClassAsStudentParameter",
      "description": "quest で 生徒(質問を答え, フィードバックするひと) としてクラスに参加するためのパラメータ",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "accountToken",
            "description": "参加するアカウントのアカウントトークン",
            "type": {
              "typePartId": "deb01f82879754c03aa4d244e136e59d",
              "parameter": []
            }
          },
          {
            "name": "classInvitationToken",
            "description": "招待トークン",
            "type": {
              "typePartId": "a5f14e3ce94846347dc38bc1fb29ba7f",
              "parameter": []
            }
          }
        ]
      },
      "id": "1928498fae964eff3fc965142c9677dc"
    },
    {
      "name": "AppMessage",
      "description": "definy.app のメッセージ",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "NoOp",
            "description": "何もしない",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Jump",
            "description": "指定したページへジャンプ",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "7210f04a85c5f0f58f7aa20826d67f05",
                "parameter": []
              }
            }
          },
          {
            "name": "RequestLogin",
            "description": "ログインURLをリクエストする",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "84597034eb252267ce1a599ab7a0b543",
                "parameter": []
              }
            }
          },
          {
            "name": "RespondLogInUrlTag",
            "description": "ログインURLを受け取った",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "304f21ae8208a21d08731aa6d183742d",
                "parameter": [
                  {
                    "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
                    "parameter": []
                  }
                ]
              }
            }
          }
        ]
      },
      "id": "1c280bc21ab8d5ccc4455800650cf31b"
    },
    {
      "name": "Unit",
      "description": "Unit. 1つの値しかない型. JavaScriptのundefinedで扱う",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Just", "value": "AsUndefined" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "UnitValue",
            "description": "Unit型にある.唯一の値",
            "parameter": { "_": "Nothing" }
          }
        ]
      },
      "id": "217263d8cdca613c2d1ba77e19d4cbb0"
    },
    {
      "name": "TypeAttribute",
      "description": "コンパイラに向けた, 型のデータ形式をどうするかの情報",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "AsBoolean",
            "description": "JavaScript, TypeScript で boolean として扱うように指示する. 定義が2つのパターンで両方パラメーターなし false, trueの順である必要がある",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "AsUndefined",
            "description": "cription:             \"JavaScript, TypeScript で undefined として扱うように指示する. 定義が1つのパターンでパラメーターなしである必要がある",
            "parameter": { "_": "Nothing" }
          }
        ]
      },
      "id": "22d8f2d392c573a7aa54c39fa4c98ad0"
    },
    {
      "name": "ElmField",
      "description": "",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "name",
            "description": "フィールド名",
            "type": {
              "typePartId": "d256109676f834b74931495891b61d1b",
              "parameter": []
            }
          },
          {
            "name": "type",
            "description": "型",
            "type": {
              "typePartId": "173f661790b059baf212043f816ba1a9",
              "parameter": []
            }
          }
        ]
      },
      "id": "2392b884a9c2238a65ecd272bd23a9cd"
    },
    {
      "name": "TsTypeWithTypeParameter",
      "description": "パラメーター付きの型",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "type",
            "description": "パラメーターをつけられる型",
            "type": {
              "typePartId": "1835ebdc909b0fa93d11ae0ed93d0606",
              "parameter": []
            }
          },
          {
            "name": "typeParameterList",
            "description": "パラメーターに指定する型. なにも要素を入れなけければ T<>ではなく T の形式で出力される",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "1835ebdc909b0fa93d11ae0ed93d0606",
                  "parameter": []
                }
              ]
            }
          }
        ]
      },
      "id": "23fa0e8b66c9d093d4c18579ffefaaa3"
    },
    {
      "name": "EvaluateExprError",
      "description": "評価したときに失敗した原因を表すもの",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "NeedPartDefinition",
            "description": "式を評価するには,このパーツの定義が必要だと言っている",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "5880cd7c0b6f0205c739a06181898d03",
                "parameter": []
              }
            }
          },
          {
            "name": "Blank",
            "description": "計算結果にblankが含まれている",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "TypeError",
            "description": "型が合わない",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
                "parameter": []
              }
            }
          },
          {
            "name": "NotSupported",
            "description": "まだサポートしていないものが含まれている",
            "parameter": { "_": "Nothing" }
          }
        ]
      },
      "id": "25d0af5522da614f7617016ca7868edd"
    },
    {
      "name": "TsIdentifier",
      "description": "TypeScriptの識別子として使える文字",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "Identifer",
            "description": "**直接 Identifer.Identifer(\"name\") と指定してはいけない!! TypeScriptの識別子として使える文字としてチェックできないため**",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
                "parameter": []
              }
            }
          }
        ]
      },
      "id": "2a75ad7c7ccc58ba56f6c8545c8150d1"
    },
    {
      "name": "ElmLocalType",
      "description": "モジュール内の型",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "typeName",
            "description": "型名",
            "type": {
              "typePartId": "13e52324ba81c7ffe655455ad739ea73",
              "parameter": []
            }
          },
          {
            "name": "parameter",
            "description": "型パラメーター",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "173f661790b059baf212043f816ba1a9",
                  "parameter": []
                }
              ]
            }
          }
        ]
      },
      "id": "2b42264a878355f0257141fa013fed5c"
    },
    {
      "name": "FunctionCall",
      "description": "関数呼び出し",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "function",
            "description": "関数",
            "type": {
              "typePartId": "ed9a046b5f121f6e54ac7f3834cbc644",
              "parameter": []
            }
          },
          {
            "name": "parameter",
            "description": "パラメーター",
            "type": {
              "typePartId": "ed9a046b5f121f6e54ac7f3834cbc644",
              "parameter": []
            }
          }
        ]
      },
      "id": "2f9784d2c41d0974487a1ca2b0a51ec5"
    },
    {
      "name": "Maybe",
      "description": "Maybe. nullableのようなもの. 今後はRustのstd::Optionに出力するために属性をつけよう (確信)",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [
        { "name": "value", "typePartId": "7340e6b552af43695335a64e057f4250" }
      ],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "Just",
            "description": "値があるということ",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "7340e6b552af43695335a64e057f4250",
                "parameter": []
              }
            }
          },
          {
            "name": "Nothing",
            "description": "値がないということ",
            "parameter": { "_": "Nothing" }
          }
        ]
      },
      "id": "304f21ae8208a21d08731aa6d183742d"
    },
    {
      "name": "ArrayItem",
      "description": "配列リテラルの要素",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "expr",
            "description": "式",
            "type": {
              "typePartId": "8b0bdbeae05df3badac2ee69bf22011f",
              "parameter": []
            }
          },
          {
            "name": "spread",
            "description": "スプレッド ...a のようにするか",
            "type": {
              "typePartId": "db57caf129f60db969b5b5224a72b937",
              "parameter": []
            }
          }
        ]
      },
      "id": "35f7e442c0838f9982e6b49da398d97f"
    },
    {
      "name": "GetClassAndRoleParameter",
      "description": "quest で ログインしている状態で, クラスの招待URLを受け取ったときに, クラスの情報と, クラスにすでに入っているかなどを取得する",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "accountToken",
            "description": "ログインするアカウントのアカウントトークン",
            "type": {
              "typePartId": "deb01f82879754c03aa4d244e136e59d",
              "parameter": []
            }
          },
          {
            "name": "classInvitationToken",
            "description": "クラスの招待トークン",
            "type": {
              "typePartId": "a5f14e3ce94846347dc38bc1fb29ba7f",
              "parameter": []
            }
          }
        ]
      },
      "id": "37e7ea136171a7fd4e23be7a7385af6b"
    },
    {
      "name": "GetQuestionListInProgramByQuestionIdParameter",
      "description": "質問IDからプログラムに属する質問を取得する",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "accountToken",
            "description": "quest の アカウントトークン",
            "type": {
              "typePartId": "deb01f82879754c03aa4d244e136e59d",
              "parameter": []
            }
          },
          {
            "name": "questionId",
            "description": "質問ID",
            "type": {
              "typePartId": "5249c5510c734bbe48e63a23e4e202b3",
              "parameter": []
            }
          }
        ]
      },
      "id": "38f8436dbd5f16407883acb3917cca49"
    },
    {
      "name": "Binary",
      "description": "バイナリ. JavaScriptのUint8Arrayで扱える. 最初にLED128でバイト数, その次にバイナリそのまま",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": { "_": "Kernel", "typePartBodyKernel": "Binary" },
      "id": "3e2f740c88923b0393a1ef93d92f157b"
    },
    {
      "name": "ElmTuple3",
      "description": "3つの要素のタプルの型",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "first",
            "description": "左の型",
            "type": {
              "typePartId": "173f661790b059baf212043f816ba1a9",
              "parameter": []
            }
          },
          {
            "name": "second",
            "description": "真ん中の型",
            "type": {
              "typePartId": "173f661790b059baf212043f816ba1a9",
              "parameter": []
            }
          },
          {
            "name": "third",
            "description": "右の型",
            "type": {
              "typePartId": "173f661790b059baf212043f816ba1a9",
              "parameter": []
            }
          }
        ]
      },
      "id": "42e5ab4936af4abf8673472ce96fd794"
    },
    {
      "name": "ElmImportedType",
      "description": "外部のモジュールの型",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "moduleName",
            "description": "モジュール名",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "typeName",
            "description": "型名",
            "type": {
              "typePartId": "13e52324ba81c7ffe655455ad739ea73",
              "parameter": []
            }
          },
          {
            "name": "parameter",
            "description": "型パラメーター",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "173f661790b059baf212043f816ba1a9",
                  "parameter": []
                }
              ]
            }
          }
        ]
      },
      "id": "43aa21ed2225cacc4489c30113e87787"
    },
    {
      "name": "BinaryOperator",
      "description": "2項演算子",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "Exponentiation",
            "description": "べき乗 `a ** b`",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Multiplication",
            "description": "数値の掛け算 `a * b`",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Division",
            "description": "数値の割り算 `a / b`",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Remainder",
            "description": "剰余演算 `a % b`",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Addition",
            "description": "数値の足し算, 文字列の結合 `a + b`",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Subtraction",
            "description": "数値の引き算 `a - b`",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "LeftShift",
            "description": "左シフト `a << b`",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "SignedRightShift",
            "description": "符号を維持する右シフト `a >> b`",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "UnsignedRightShift",
            "description": "符号を維持しない(0埋め)右シフト `a >>> b`",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "LessThan",
            "description": "未満 `a < b`",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "LessThanOrEqual",
            "description": "以下 `a <= b`",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Equal",
            "description": "等号 `a === b`",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "NotEqual",
            "description": "不等号 `a !== b`",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "BitwiseAnd",
            "description": "ビットAND `a & b`",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "BitwiseXOr",
            "description": "ビットXOR `a ^ b`",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "BitwiseOr",
            "description": "ビットOR `a | b`",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "LogicalAnd",
            "description": "論理AND `a && b`",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "LogicalOr",
            "description": "論理OR `a || b`",
            "parameter": { "_": "Nothing" }
          }
        ]
      },
      "id": "4953938f040aefdaa5f2601e2a78d43b"
    },
    {
      "name": "TypeAssertion",
      "description": "型アサーション",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "expr",
            "description": "型アサーションを受ける式",
            "type": {
              "typePartId": "8b0bdbeae05df3badac2ee69bf22011f",
              "parameter": []
            }
          },
          {
            "name": "type",
            "description": "型",
            "type": {
              "typePartId": "1835ebdc909b0fa93d11ae0ed93d0606",
              "parameter": []
            }
          }
        ]
      },
      "id": "49f05a756bd75da670fa5b64ed8bf1ae"
    },
    {
      "name": "UnaryOperator",
      "description": "JavaScriptの単項演算子",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "Minus",
            "description": "単項マイナス演算子 `-a`",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "BitwiseNot",
            "description": "ビット否定 `~a`",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "LogicalNot",
            "description": "論理否定 `!a`",
            "parameter": { "_": "Nothing" }
          }
        ]
      },
      "id": "4b4c3f8f34d1c05bb9d7d1b930bc9c9a"
    },
    {
      "name": "TypePartBody",
      "description": "型の定義本体",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "Product",
            "description": "直積型",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
                "parameter": [
                  {
                    "typePartId": "9481ceae2c3e2765243f5c7ce7eb76c7",
                    "parameter": []
                  }
                ]
              }
            }
          },
          {
            "name": "Sum",
            "description": "直和型",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
                "parameter": [
                  {
                    "typePartId": "e4ef8a0713aceb0eaa7606cd516ad847",
                    "parameter": []
                  }
                ]
              }
            }
          },
          {
            "name": "Kernel",
            "description": "definyだけでは表現できないデータ型",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "657b5a5519b095480a21fdadd0f6fbd1",
                "parameter": []
              }
            }
          }
        ]
      },
      "id": "4c60c73d6b8f236d34281fbb9119a598"
    },
    {
      "name": "QCreateClassParameter",
      "description": "クラスを作成するためのパラメータ",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "accountToken",
            "description": "クラスを作成するアカウントのアカウントトークン",
            "type": {
              "typePartId": "deb01f82879754c03aa4d244e136e59d",
              "parameter": []
            }
          },
          {
            "name": "programId",
            "description": "プログラムID",
            "type": {
              "typePartId": "4fe2f5da0a887c2a6b33c16c5d52058f",
              "parameter": []
            }
          },
          {
            "name": "className",
            "description": "クラス名",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          }
        ]
      },
      "id": "4d9e178c23a42a4dc2e2b68270d50363"
    },
    {
      "name": "ElmCustomTypeExportLevel",
      "description": "カスタム型の公開レベル",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "NoExport",
            "description": "公開しない",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "ExportTypeOnly",
            "description": "型の指定のみ公開. 外部のモジュールで値の構成とパターンマッチングの分岐がされることはない",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "ExportTypeAndVariant",
            "description": "型とバリアントを公開する. 外部のモジュールで値の構成とパターンマッチングができる",
            "parameter": { "_": "Nothing" }
          }
        ]
      },
      "id": "4e1cab8c9074c1a058d6ef3ffcf29ab0"
    },
    {
      "name": "QAccount",
      "description": "quest の アカウント",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "name",
            "description": "アカウント名",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "iconHash",
            "description": "アイコン画像のハッシュ値",
            "type": {
              "typePartId": "e71e15a15b0883940a75e58367151d1a",
              "parameter": []
            }
          },
          {
            "name": "id",
            "description": "アカウントのID",
            "type": {
              "typePartId": "c1a17b07e8e664ca80217833ff2ad3f1",
              "parameter": []
            }
          }
        ]
      },
      "id": "4e6857a774597ae66e5c316642a8ae8b"
    },
    {
      "name": "QProgramId",
      "description": "quest の プログラムのID",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": { "_": "Kernel", "typePartBodyKernel": "Id" },
      "id": "4fe2f5da0a887c2a6b33c16c5d52058f"
    },
    {
      "name": "GetClassParticipantParameter",
      "description": "クラスの参加者を取得するときに必要なパラメータ",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "accountToken",
            "description": "アカウントトークン",
            "type": {
              "typePartId": "deb01f82879754c03aa4d244e136e59d",
              "parameter": []
            }
          },
          {
            "name": "classId",
            "description": "クラスID",
            "type": {
              "typePartId": "624e37b7230f763e6318c627c2c728ec",
              "parameter": []
            }
          }
        ]
      },
      "id": "510d8ea5d62965942071b7ed6b4edae8"
    },
    {
      "name": "QQuestionId",
      "description": "クエストの質問 ID",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": { "_": "Kernel", "typePartBodyKernel": "Id" },
      "id": "5249c5510c734bbe48e63a23e4e202b3"
    },
    {
      "name": "Parameter",
      "description": "関数のパラメーター. パラメーター名, 型",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "name",
            "description": "パラメーター名",
            "type": {
              "typePartId": "2a75ad7c7ccc58ba56f6c8545c8150d1",
              "parameter": []
            }
          },
          {
            "name": "type",
            "description": "パラメーターの型",
            "type": {
              "typePartId": "1835ebdc909b0fa93d11ae0ed93d0606",
              "parameter": []
            }
          }
        ]
      },
      "id": "5433bade7738da21e7663ff043f588d5"
    },
    {
      "name": "Dict",
      "description": "辞書型. TypeScriptでは ReadonlyMap として扱う",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [
        { "name": "key", "typePartId": "cb26a5badbccc2f37b8e9a1904867d2d" },
        { "name": "value", "typePartId": "3471e961a12c6ec91d511d074cbe3838" }
      ],
      "body": { "_": "Kernel", "typePartBodyKernel": "Dict" },
      "id": "5516d41d180b98b7f5a8950d4f43dfd6"
    },
    {
      "name": "WithTime",
      "description": "取得日時と任意のデータ",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [
        { "name": "data", "typePartId": "1aa6b16efd6aaeebaf0fc58f3c2c5997" }
      ],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "getTime",
            "description": "データベースから取得した日時",
            "type": {
              "typePartId": "7d91f0f70643799692aa144ee51a62b1",
              "parameter": []
            }
          },
          {
            "name": "data",
            "description": "データ",
            "type": {
              "typePartId": "1aa6b16efd6aaeebaf0fc58f3c2c5997",
              "parameter": []
            }
          }
        ]
      },
      "id": "55d4de38cfb884b9008abd7f7f63325e"
    },
    {
      "name": "ElmTypeAlias",
      "description": "型エイリアス. 型に名前を付け, レコード型の場合, その名前の関数を作成する",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "name",
            "description": "型エイリアス名",
            "type": {
              "typePartId": "13e52324ba81c7ffe655455ad739ea73",
              "parameter": []
            }
          },
          {
            "name": "export",
            "description": "外部に公開するか",
            "type": {
              "typePartId": "db57caf129f60db969b5b5224a72b937",
              "parameter": []
            }
          },
          {
            "name": "comment",
            "description": "コメント",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "parameter",
            "description": "型パラメーター",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
                  "parameter": []
                }
              ]
            }
          },
          {
            "name": "type",
            "description": "別名を付ける型",
            "type": {
              "typePartId": "173f661790b059baf212043f816ba1a9",
              "parameter": []
            }
          }
        ]
      },
      "id": "57f429fd5c67eb2542447a2eaeb34497"
    },
    {
      "name": "PartId",
      "description": "パーツの識別子",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": { "_": "Kernel", "typePartBodyKernel": "Id" },
      "id": "5880cd7c0b6f0205c739a06181898d03"
    },
    {
      "name": "AccountTokenAndUserId",
      "description": "AccountToken と UserId",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "accountToken",
            "description": "accountToken",
            "type": {
              "typePartId": "deb01f82879754c03aa4d244e136e59d",
              "parameter": []
            }
          },
          {
            "name": "userId",
            "description": "UserId",
            "type": {
              "typePartId": "c1a17b07e8e664ca80217833ff2ad3f1",
              "parameter": []
            }
          }
        ]
      },
      "id": "5d291325e9d7bc27ff35e907f59bde54"
    },
    {
      "name": "TagId",
      "description": "タグの識別子. タグは直和型に使うもの.\n\n実行時に使わないことは確定しているが, コード内の形式としてタグにUUIDを使うべきかは考慮中. index で充分かと思ったが別に型の情報も必要になることが多い",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": { "_": "Kernel", "typePartBodyKernel": "Id" },
      "id": "5ec292c48424e5e9ee8cc2d672830ecd"
    },
    {
      "name": "ElmFunctionType",
      "description": "関数の型. 入力と出力",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "input",
            "description": "入力の型",
            "type": {
              "typePartId": "173f661790b059baf212043f816ba1a9",
              "parameter": []
            }
          },
          {
            "name": "output",
            "description": "出力の型",
            "type": {
              "typePartId": "173f661790b059baf212043f816ba1a9",
              "parameter": []
            }
          }
        ]
      },
      "id": "5ec9dae951d8d2b250c81185a259adca"
    },
    {
      "name": "TsPattern",
      "description": "switch文のcase \"text\": { statementList } の部分",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "caseString",
            "description": "case に使う文字列",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "statementList",
            "description": "マッチしたときに実行する部分",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "7c957d411f448a03764f16d43e6e5008",
                  "parameter": []
                }
              ]
            }
          }
        ]
      },
      "id": "6126431def47ecba239b3add7f472b19"
    },
    {
      "name": "QClassId",
      "description": "QUEST. クラスのID",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": { "_": "Kernel", "typePartBodyKernel": "Id" },
      "id": "624e37b7230f763e6318c627c2c728ec"
    },
    {
      "name": "DataTypeParameter",
      "description": "データ型パラメーター\n型パーツの定義, パーツの定義で使われるデータ型のパラメーター",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "name",
            "description": "データ型パラメーターの名前",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          }
        ]
      },
      "id": "627dc8fa15214481812af12268d97b6b"
    },
    {
      "name": "ElmCode",
      "description": "Elmのコードを表現するもの",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "moduleName",
            "description": "モジュール名",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "typeDeclarationList",
            "description": "型定義",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "f4bed793b657b39db5a579c9e158eba5",
                  "parameter": []
                }
              ]
            }
          }
        ]
      },
      "id": "62923d32a2730114e665cef13f93ff13"
    },
    {
      "name": "TypePartBodyKernel",
      "description": "definyだけでは表現できないデータ型",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "Int32",
            "description": "32bit整数",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "String",
            "description": "文字列",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Binary",
            "description": "バイナリ型. TypeScriptではUint8Arrayとして扱う",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Id",
            "description": "UUID (16byte) を表現する. 内部表現はとりあえず0-f長さ32の文字列",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Token",
            "description": "sha256などでハッシュ化したもの (32byte) を表現する. 内部表現はとりあえず0-f長さ64の文字列",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "List",
            "description": "配列型. TypeScriptではReadonlyArrayとして扱う",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Dict",
            "description": "辞書型. TypeScriptでは ReadonlyMapとして扱う",
            "parameter": { "_": "Nothing" }
          }
        ]
      },
      "id": "657b5a5519b095480a21fdadd0f6fbd1"
    },
    {
      "name": "String",
      "description": "文字列. JavaScriptのstringで扱う. バイナリ形式はUTF-8. 不正な文字が入っている可能性がある",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": { "_": "Kernel", "typePartBodyKernel": "String" },
      "id": "666361c9ae68ab64f273c47f3feb8c73"
    },
    {
      "name": "Account",
      "description": "ユーザー名. 表示される名前. 他のユーザーとかぶっても良い. 絵文字も使える. 全角英数は半角英数,半角カタカナは全角カタカナ, (株)の合字を分解するなどのNFKCの正規化がされる. U+0000-U+0019 と U+007F-U+00A0 の範囲の文字は入らない. 前後に空白を含められない. 間の空白は2文字以上連続しない. 文字数のカウント方法は正規化されたあとのCodePoint単位. Twitterと同じ, 1文字以上50文字以下",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "imageHash",
            "description": "プロフィール画像",
            "type": {
              "typePartId": "e71e15a15b0883940a75e58367151d1a",
              "parameter": []
            }
          },
          {
            "name": "introduction",
            "description": "initMemberDescription",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "createTime",
            "description": "definyでユーザーが作成された日時",
            "type": {
              "typePartId": "7d91f0f70643799692aa144ee51a62b1",
              "parameter": []
            }
          },
          {
            "name": "name",
            "description": "アカウント名. 表示される名前. 他のユーザーとかぶっても良い. 絵文字も使える. 全角英数は半角英数,半角カタカナは全角カタカナ, (株)の合字を分解するなどのNFKCの正規化がされる. U+0000-U+0019 と U+007F-U+00A0 の範囲の文字は入らない. 前後に空白を含められない. 間の空白は2文字以上連続しない. 文字数のカウント方法は正規化されたあとのCodePoint単位. Twitterと同じ, 1文字以上50文字以下",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "id",
            "description": "アカウントを識別するID",
            "type": {
              "typePartId": "c1a17b07e8e664ca80217833ff2ad3f1",
              "parameter": []
            }
          }
        ]
      },
      "id": "67d4e3bc4f13e1132b6c5e81d5b74395"
    },
    {
      "name": "StaticResourceState",
      "description": "キーであるTokenによってデータが必ず1つに決まるもの. 絶対に更新されない. リソースがないということはデータが不正な状態になっているということ",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [
        { "name": "data", "typePartId": "5ef14dcfa0f01d9a505b7b00e223a922" }
      ],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "Loaded",
            "description": "取得済み",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "5ef14dcfa0f01d9a505b7b00e223a922",
                "parameter": []
              }
            }
          },
          {
            "name": "Unknown",
            "description": "データを取得できなかった (サーバーの障害, オフライン)",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Loading",
            "description": "indexedDBにアクセス中",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Requesting",
            "description": "サーバに問い合わせ中",
            "parameter": { "_": "Nothing" }
          }
        ]
      },
      "id": "68d925f7b35bab8f265cd9e5eb7ea3da"
    },
    {
      "name": "SetStatement",
      "description": "代入文",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "target",
            "description": "対象となる式. 指定の仕方によってはJSのSyntaxErrorになる",
            "type": {
              "typePartId": "8b0bdbeae05df3badac2ee69bf22011f",
              "parameter": []
            }
          },
          {
            "name": "operatorMaybe",
            "description": "演算子を=の左につける",
            "type": {
              "typePartId": "304f21ae8208a21d08731aa6d183742d",
              "parameter": [
                {
                  "typePartId": "4953938f040aefdaa5f2601e2a78d43b",
                  "parameter": []
                }
              ]
            }
          },
          {
            "name": "expr",
            "description": "式",
            "type": {
              "typePartId": "8b0bdbeae05df3badac2ee69bf22011f",
              "parameter": []
            }
          }
        ]
      },
      "id": "6a5a7886b0f117a50d9d7b11ffe87c9f"
    },
    {
      "name": "ParameterWithDocument",
      "description": "ドキュメント付きの関数のパラメーター. パラメーター名, ドキュメント, 型",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "name",
            "description": "パラメーター名",
            "type": {
              "typePartId": "2a75ad7c7ccc58ba56f6c8545c8150d1",
              "parameter": []
            }
          },
          {
            "name": "document",
            "description": "ドキュメント",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "type",
            "description": "パラメーターの型",
            "type": {
              "typePartId": "1835ebdc909b0fa93d11ae0ed93d0606",
              "parameter": []
            }
          }
        ]
      },
      "id": "6b05e33009ade6b4decd452e8fd4bff1"
    },
    {
      "name": "TypePartId",
      "description": "型パーツの識別子",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": { "_": "Kernel", "typePartBodyKernel": "Id" },
      "id": "6e3cff317f8bfbbd1391c0afb9ad6b72"
    },
    {
      "name": "Result",
      "description": "成功と失敗を表す型. 今後はRustのstd::Resultに出力するために属性をつける?",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [
        { "name": "ok", "typePartId": "2163b3c97b382de8085973eff850c919" },
        { "name": "error", "typePartId": "bd8be8409130f30f15c5c86c01de6dc5" }
      ],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "Ok",
            "description": "成功",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "2163b3c97b382de8085973eff850c919",
                "parameter": []
              }
            }
          },
          {
            "name": "Error",
            "description": "失敗",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "bd8be8409130f30f15c5c86c01de6dc5",
                "parameter": []
              }
            }
          }
        ]
      },
      "id": "6f937e46fce1cf70d29c54780f132c18"
    },
    {
      "name": "UrlData",
      "description": "言語とページの場所. URLとして表現されるデータ. Googleなどの検索エンジンの都合( https://support.google.com/webmasters/answer/182192?hl=ja )で,URLにページの言語を入れて,言語ごとに別のURLである必要がある.",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "location",
            "description": "場所",
            "type": {
              "typePartId": "bbcb8e43df8afff9fe24b001c66fb065",
              "parameter": []
            }
          },
          {
            "name": "language",
            "description": "言語",
            "type": {
              "typePartId": "0d9510723f4d34605e41f3a47a8b0ea7",
              "parameter": []
            }
          }
        ]
      },
      "id": "7210f04a85c5f0f58f7aa20826d67f05"
    },
    {
      "name": "SwitchStatement",
      "description": "switch文",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "expr",
            "description": "switch(a) {} の a",
            "type": {
              "typePartId": "8b0bdbeae05df3badac2ee69bf22011f",
              "parameter": []
            }
          },
          {
            "name": "patternList",
            "description": "case \"text\": { statementList }",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "6126431def47ecba239b3add7f472b19",
                  "parameter": []
                }
              ]
            }
          }
        ]
      },
      "id": "725f84ef82e6c3b5b5f6fd5208977dd8"
    },
    {
      "name": "VariableDefinitionStatement",
      "description": "ローカル変数定義",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "name",
            "description": "変数名",
            "type": {
              "typePartId": "2a75ad7c7ccc58ba56f6c8545c8150d1",
              "parameter": []
            }
          },
          {
            "name": "type",
            "description": "変数の型",
            "type": {
              "typePartId": "1835ebdc909b0fa93d11ae0ed93d0606",
              "parameter": []
            }
          },
          {
            "name": "expr",
            "description": "式",
            "type": {
              "typePartId": "8b0bdbeae05df3badac2ee69bf22011f",
              "parameter": []
            }
          },
          {
            "name": "isConst",
            "description": "constかどうか. falseはlet",
            "type": {
              "typePartId": "db57caf129f60db969b5b5224a72b937",
              "parameter": []
            }
          }
        ]
      },
      "id": "7277cf2483388ee2f5ad7a7fc8585d98"
    },
    {
      "name": "DataTypeOrDataTypeParameter",
      "description": "データ型か, 型パラメーター",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "DataType",
            "description": "DataType",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "7e689d3cd011d42947cca759ecebd1cf",
                "parameter": []
              }
            }
          },
          {
            "name": "DataTypeParameter",
            "description": "パーツで定義されたり, 型パーツで定義された, データタイプパラメーター",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "16c2d8602e3e5e2d38b9215bd0c44d8d",
                "parameter": []
              }
            }
          }
        ]
      },
      "id": "7b01edcb8f7b313ab03aa6b376876545"
    },
    {
      "name": "CreateProjectParameter",
      "description": "プロジェクト作成時に必要なパラメーター",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "accountToken",
            "description": "プロジェクトを作るときのアカウント",
            "type": {
              "typePartId": "deb01f82879754c03aa4d244e136e59d",
              "parameter": []
            }
          },
          {
            "name": "projectName",
            "description": "プロジェクト名",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          }
        ]
      },
      "id": "7b987551cc112a64f5c9a8cb1647f4bd"
    },
    {
      "name": "Statement",
      "description": "JavaScript の 文",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "EvaluateExpr",
            "description": "式を評価する",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "8b0bdbeae05df3badac2ee69bf22011f",
                "parameter": []
              }
            }
          },
          {
            "name": "Set",
            "description": "代入やプロパティの値を設定する",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "6a5a7886b0f117a50d9d7b11ffe87c9f",
                "parameter": []
              }
            }
          },
          {
            "name": "If",
            "description": "if (condition) { thenStatementList }",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "cd325760f992e47a8438ae78ca9b1529",
                "parameter": []
              }
            }
          },
          {
            "name": "ThrowError",
            "description": "throw new Error(\"エラーメッセージ\");",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "8b0bdbeae05df3badac2ee69bf22011f",
                "parameter": []
              }
            }
          },
          {
            "name": "Return",
            "description": "return expr;",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "8b0bdbeae05df3badac2ee69bf22011f",
                "parameter": []
              }
            }
          },
          {
            "name": "ReturnVoid",
            "description": "戻り値がvoidの関数を早く抜ける",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Continue",
            "description": "forの繰り返しを次に進める",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "VariableDefinition",
            "description": "`const a: type_ = expr`\\nローカル変数の定義",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "7277cf2483388ee2f5ad7a7fc8585d98",
                "parameter": []
              }
            }
          },
          {
            "name": "FunctionDefinition",
            "description": "`const name = (parameterList): returnType => { statementList }`\\nローカル関数の定義",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "df5c5388248252a92864ceb219628b8e",
                "parameter": []
              }
            }
          },
          {
            "name": "For",
            "description": "for文. 繰り返し.",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "c53be8bcaf56ff90080cf7a75f1e4815",
                "parameter": []
              }
            }
          },
          {
            "name": "ForOf",
            "description": "for文. 繰り返し.",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "8be8db4404f302dd36c8a2c6c6e37e7c",
                "parameter": []
              }
            }
          },
          {
            "name": "WhileTrue",
            "description": "while (true) での無限ループ",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
                "parameter": [
                  {
                    "typePartId": "7c957d411f448a03764f16d43e6e5008",
                    "parameter": []
                  }
                ]
              }
            }
          },
          {
            "name": "Break",
            "description": "whileのループから抜ける",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Switch",
            "description": "switch文",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "725f84ef82e6c3b5b5f6fd5208977dd8",
                "parameter": []
              }
            }
          }
        ]
      },
      "id": "7c957d411f448a03764f16d43e6e5008"
    },
    {
      "name": "Time",
      "description": "日時. `0001-01-01T00:00:00.000Z to 9999-12-31T23:59:59.999Z` 最小単位はミリ秒. ミリ秒の求め方は `day*1000*60*60*24 + millisecond`",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "day",
            "description": "`1970-01-01` からの経過日数. マイナスになることもある",
            "type": {
              "typePartId": "16c2d8602e3e5e2d38b9215bd0c44d8d",
              "parameter": []
            }
          },
          {
            "name": "millisecond",
            "description": "日にちの中のミリ秒. `0 to 86399999 (=1000*60*60*24-1)`",
            "type": {
              "typePartId": "16c2d8602e3e5e2d38b9215bd0c44d8d",
              "parameter": []
            }
          }
        ]
      },
      "id": "7d91f0f70643799692aa144ee51a62b1"
    },
    {
      "name": "AccountTokenAndProjectId",
      "description": "アカウントトークンとプロジェクトID",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "accountToken",
            "description": "アカウントトークン",
            "type": {
              "typePartId": "deb01f82879754c03aa4d244e136e59d",
              "parameter": []
            }
          },
          {
            "name": "projectId",
            "description": "プロジェクトID",
            "type": {
              "typePartId": "0cd913118a2ad1469d656146a08c5f76",
              "parameter": []
            }
          }
        ]
      },
      "id": "7e4613f18e8e3bcfdfc00356654414d5"
    },
    {
      "name": "DataType",
      "description": "関数ではない型",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "typePartId",
            "description": "型パーツID",
            "type": {
              "typePartId": "6e3cff317f8bfbbd1391c0afb9ad6b72",
              "parameter": []
            }
          },
          {
            "name": "parameter",
            "description": "型のパラメータ",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "7b01edcb8f7b313ab03aa6b376876545",
                  "parameter": []
                }
              ]
            }
          }
        ]
      },
      "id": "7e689d3cd011d42947cca759ecebd1cf"
    },
    {
      "name": "ImportedVariable",
      "description": "インポートした変数",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "moduleName",
            "description": "モジュール名, 使うときにはnamedインポートされ, そのモジュール識別子は自動的につけられる",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "name",
            "description": "変数名",
            "type": {
              "typePartId": "2a75ad7c7ccc58ba56f6c8545c8150d1",
              "parameter": []
            }
          }
        ]
      },
      "id": "8150e2833dc1f2a77715aa1bb7b2baad"
    },
    {
      "name": "OpenIdConnectProvider",
      "description": "\"ソーシャルログインを提供するプロバイダー (例: Google, GitHub)\n\nGitHub いらないかも (GitHubのアカウント作成するの分かりづらいので, 選択肢を減らしたい)",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "Google",
            "description": "Google ( https://developers.google.com/identity/sign-in/web/ )",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "GitHub",
            "description": "GitHub ( https://developer.github.com/v3/guides/basics-of-authentication/ )",
            "parameter": { "_": "Nothing" }
          }
        ]
      },
      "id": "84597034eb252267ce1a599ab7a0b543"
    },
    {
      "name": "TypePart",
      "description": "型パーツ",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "name",
            "description": "型パーツの名前",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "description",
            "description": "型パーツの説明",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "projectId",
            "description": "所属しているプロジェクトのID",
            "type": {
              "typePartId": "0cd913118a2ad1469d656146a08c5f76",
              "parameter": []
            }
          },
          {
            "name": "attribute",
            "description": "コンパイラに与える,この型を表現するのにどういう特殊な状態にするかという情報",
            "type": {
              "typePartId": "304f21ae8208a21d08731aa6d183742d",
              "parameter": [
                {
                  "typePartId": "22d8f2d392c573a7aa54c39fa4c98ad0",
                  "parameter": []
                }
              ]
            }
          },
          {
            "name": "dataTypeParameterList",
            "description": "型パラメーター",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "627dc8fa15214481812af12268d97b6b",
                  "parameter": []
                }
              ]
            }
          },
          {
            "name": "body",
            "description": "定義本体",
            "type": {
              "typePartId": "4c60c73d6b8f236d34281fbb9119a598",
              "parameter": []
            }
          },
          {
            "name": "id",
            "description": "型パーツを識別するID",
            "type": {
              "typePartId": "6e3cff317f8bfbbd1391c0afb9ad6b72",
              "parameter": []
            }
          }
        ]
      },
      "id": "87fc411d10f6986dd33e5dbaff6d06ae"
    },
    {
      "name": "QNewQuestionParameter",
      "description": "質問を作るページのパラメータ",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "programId",
            "description": "属するプログラム",
            "type": {
              "typePartId": "4fe2f5da0a887c2a6b33c16c5d52058f",
              "parameter": []
            }
          },
          {
            "name": "parent",
            "description": "親にする質問",
            "type": {
              "typePartId": "304f21ae8208a21d08731aa6d183742d",
              "parameter": [
                {
                  "typePartId": "5249c5510c734bbe48e63a23e4e202b3",
                  "parameter": []
                }
              ]
            }
          },
          {
            "name": "text",
            "description": "本文. 質問テンプレートにどうぞ",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          }
        ]
      },
      "id": "8960809c7ca4954e9235c197f5d63cdf"
    },
    {
      "name": "ProjectDataFile",
      "description": "プロジェクトのデータファイル\nパーツや,型パーツのデータが含まれている",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "id",
            "description": "プロジェクトID",
            "type": {
              "typePartId": "0cd913118a2ad1469d656146a08c5f76",
              "parameter": []
            }
          },
          {
            "name": "name",
            "description": "プロジェクト名",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "typePartList",
            "description": "型パーツの定義",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "87fc411d10f6986dd33e5dbaff6d06ae",
                  "parameter": []
                }
              ]
            }
          },
          {
            "name": "partList",
            "description": "パーツの定義",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "d8bccc70252cee9ce70784bf5dfa493b",
                  "parameter": []
                }
              ]
            }
          }
        ]
      },
      "id": "8aa41233812aab908b1d71d11ad97375"
    },
    {
      "name": "TsExpr",
      "description": "JavaScript の 式",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "NumberLiteral",
            "description": "数値リテラル `123`",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "16c2d8602e3e5e2d38b9215bd0c44d8d",
                "parameter": []
              }
            }
          },
          {
            "name": "StringLiteral",
            "description": "文字列リテラル `\"text\"`",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
                "parameter": []
              }
            }
          },
          {
            "name": "BooleanLiteral",
            "description": "booleanリテラル",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "db57caf129f60db969b5b5224a72b937",
                "parameter": []
              }
            }
          },
          {
            "name": "NullLiteral",
            "description": "`null`",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "UndefinedLiteral",
            "description": "`undefined`",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "UnaryOperator",
            "description": "単項演算子での式",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "0cb0a34b3953e57b30f4a5c8f9d305da",
                "parameter": []
              }
            }
          },
          {
            "name": "BinaryOperator",
            "description": "2項演算子での式",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "eec2dab74fbcd3237bfa1c773f9b9d21",
                "parameter": []
              }
            }
          },
          {
            "name": "ConditionalOperator",
            "description": "条件演算子 `a ? b : c`",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "c7a771f770f0f92690faeb59eaff6268",
                "parameter": []
              }
            }
          },
          {
            "name": "ArrayLiteral",
            "description": "配列リテラル `[1, 2, 3]`",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
                "parameter": [
                  {
                    "typePartId": "35f7e442c0838f9982e6b49da398d97f",
                    "parameter": []
                  }
                ]
              }
            }
          },
          {
            "name": "ObjectLiteral",
            "description": "オブジェクトリテラル `{ data: 123, text: \"sorena\" }`",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
                "parameter": [
                  {
                    "typePartId": "fddd2a65994fae205dd636f3a6b9f1ea",
                    "parameter": []
                  }
                ]
              }
            }
          },
          {
            "name": "Lambda",
            "description": "ラムダ式 `() => {}`",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "eeeef818144e5a42460c4efdaa221460",
                "parameter": []
              }
            }
          },
          {
            "name": "Variable",
            "description": "変数. 変数が存在するかのチャックがされる",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "2a75ad7c7ccc58ba56f6c8545c8150d1",
                "parameter": []
              }
            }
          },
          {
            "name": "GlobalObjects",
            "description": "グローバルオブジェクト",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "2a75ad7c7ccc58ba56f6c8545c8150d1",
                "parameter": []
              }
            }
          },
          {
            "name": "ImportedVariable",
            "description": "インポートされた変数",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "8150e2833dc1f2a77715aa1bb7b2baad",
                "parameter": []
              }
            }
          },
          {
            "name": "Get",
            "description": "プロパティの値を取得する `a.b a[12] data[f(2)]`",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "a9ce526a22f09800aa3773a1614cce89",
                "parameter": []
              }
            }
          },
          {
            "name": "Call",
            "description": "関数を呼ぶ f(x)\",",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "a1f71188b7c3ab2a21954471f3ac67f1",
                "parameter": []
              }
            }
          },
          {
            "name": "New",
            "description": "式からインスタンスを作成する `new Date()`",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "a1f71188b7c3ab2a21954471f3ac67f1",
                "parameter": []
              }
            }
          },
          {
            "name": "TypeAssertion",
            "description": "型アサーション `a as string`",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "49f05a756bd75da670fa5b64ed8bf1ae",
                "parameter": []
              }
            }
          }
        ]
      },
      "id": "8b0bdbeae05df3badac2ee69bf22011f"
    },
    {
      "name": "ElmTuple2",
      "description": "2つの要素のタプルの型",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "first",
            "description": "左の型",
            "type": {
              "typePartId": "173f661790b059baf212043f816ba1a9",
              "parameter": []
            }
          },
          {
            "name": "second",
            "description": "右の型",
            "type": {
              "typePartId": "173f661790b059baf212043f816ba1a9",
              "parameter": []
            }
          }
        ]
      },
      "id": "8b479d8726bb494ac76d529fbf03908c"
    },
    {
      "name": "Project",
      "description": "definy の プロジェクト",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "name",
            "description": "プロジェクト名",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "iconHash",
            "description": "プロジェクトのアイコン画像",
            "type": {
              "typePartId": "e71e15a15b0883940a75e58367151d1a",
              "parameter": []
            }
          },
          {
            "name": "imageHash",
            "description": "initMemberDescription",
            "type": {
              "typePartId": "e71e15a15b0883940a75e58367151d1a",
              "parameter": []
            }
          },
          {
            "name": "createTime",
            "description": "initMemberDescription",
            "type": {
              "typePartId": "7d91f0f70643799692aa144ee51a62b1",
              "parameter": []
            }
          },
          {
            "name": "createAccountId",
            "description": "プロジェクトを作成したアカウント",
            "type": {
              "typePartId": "c1a17b07e8e664ca80217833ff2ad3f1",
              "parameter": []
            }
          },
          {
            "name": "updateTime",
            "description": "更新日時",
            "type": {
              "typePartId": "7d91f0f70643799692aa144ee51a62b1",
              "parameter": []
            }
          },
          {
            "name": "id",
            "description": "プロジェクトを識別するID",
            "type": {
              "typePartId": "0cd913118a2ad1469d656146a08c5f76",
              "parameter": []
            }
          }
        ]
      },
      "id": "8bc81fa2a15bdbd8c2414d22f3e1b462"
    },
    {
      "name": "ForOfStatement",
      "description": "forOf文",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "elementVariableName",
            "description": "要素の変数名",
            "type": {
              "typePartId": "2a75ad7c7ccc58ba56f6c8545c8150d1",
              "parameter": []
            }
          },
          {
            "name": "iterableExpr",
            "description": "繰り返す対象",
            "type": {
              "typePartId": "8b0bdbeae05df3badac2ee69bf22011f",
              "parameter": []
            }
          },
          {
            "name": "statementList",
            "description": "繰り返す文",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "7c957d411f448a03764f16d43e6e5008",
                  "parameter": []
                }
              ]
            }
          }
        ]
      },
      "id": "8be8db4404f302dd36c8a2c6c6e37e7c"
    },
    {
      "name": "JsTsCode",
      "description": "TypeScriptやJavaScriptのコードを表現する. TypeScriptでも出力できるように型情報をつける必要がある",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "exportDefinitionList",
            "description": "外部に公開する定義",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "0c8b854b812290a054877ca5de6c4daf",
                  "parameter": []
                }
              ]
            }
          },
          {
            "name": "statementList",
            "description": "定義した後に実行するコード",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "7c957d411f448a03764f16d43e6e5008",
                  "parameter": []
                }
              ]
            }
          }
        ]
      },
      "id": "92ea504049ca5b7e2227a95195fe74eb"
    },
    {
      "name": "Member",
      "description": "直積型のメンバー",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "name",
            "description": "メンバー名",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "description",
            "description": "メンバーの説明",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "type",
            "description": "メンバー値の型",
            "type": {
              "typePartId": "b3b36f39469d23321ed01b92f048ccc0",
              "parameter": []
            }
          }
        ]
      },
      "id": "9481ceae2c3e2765243f5c7ce7eb76c7"
    },
    {
      "name": "QAccountData",
      "description": "アカウントの情報",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "account",
            "description": "アカウント情報",
            "type": {
              "typePartId": "4e6857a774597ae66e5c316642a8ae8b",
              "parameter": []
            }
          },
          {
            "name": "createdProgramList",
            "description": "作成したプログラム",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "d59eabf90cfeb709b136e1c832b4f5d4",
                  "parameter": []
                }
              ]
            }
          },
          {
            "name": "createdClassList",
            "description": "作成したクラス",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "cf779792c0201a3874f77765b063b64b",
                  "parameter": []
                }
              ]
            }
          },
          {
            "name": "joinedClassList",
            "description": "参加したクラス",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "9b55e2a5ed07246355fbeba998eaf5fe",
                  "parameter": [
                    {
                      "typePartId": "067954ebc8a7f155be3a4ee196ccf99a",
                      "parameter": []
                    },
                    {
                      "typePartId": "ce031774e68409c72ea855cf929f2293",
                      "parameter": []
                    }
                  ]
                }
              ]
            }
          }
        ]
      },
      "id": "94aa0a477dfb8362d00aaac05b29b79c"
    },
    {
      "name": "ElmExpr",
      "description": "Elm の 式",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "StringLiteral",
            "description": "文字列リテラル",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
                "parameter": []
              }
            }
          },
          {
            "name": "IntLiteral",
            "description": "整数リテラル",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "16c2d8602e3e5e2d38b9215bd0c44d8d",
                "parameter": []
              }
            }
          },
          {
            "name": "LocalVariant",
            "description": "ファイル内で定義したバリアント. 値コンストラクタ. タグ.",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "ImportedVariant",
            "description": "インポートしたバリアント. 値コンストラクタ. タグ.",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "List",
            "description": "リストリテラル",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
                "parameter": [
                  {
                    "typePartId": "94e53139b3a82087777ea3e001b2adb4",
                    "parameter": []
                  }
                ]
              }
            }
          },
          {
            "name": "Op",
            "description": "????",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Negate",
            "description": "単行マイナス",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "94e53139b3a82087777ea3e001b2adb4",
                "parameter": []
              }
            }
          },
          {
            "name": "Binops",
            "description": "????",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Lambda",
            "description": "ラムダ式. 関数リテラル",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Call",
            "description": "関数呼び出し",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "If",
            "description": "if式. else ifも含めている",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Let",
            "description": "let式. ローカル関数定義",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Case",
            "description": "case式",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Accessor",
            "description": "アクセサ .name メンバーを取得する関数",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
                "parameter": []
              }
            }
          },
          {
            "name": "Access",
            "description": "user.name メンバー取得",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Update",
            "description": "{ user | name = \"新しい名前\" }",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Record",
            "description": "レコード. { name = \"名前\", age = 20 }",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Unit",
            "description": "Unit. ()",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Tuple2",
            "description": "2つの要素のタプル. (1, \"あ\")",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Tuple3",
            "description": "3つの要素のタプル. (1, \"い\", 3)",
            "parameter": { "_": "Nothing" }
          }
        ]
      },
      "id": "94e53139b3a82087777ea3e001b2adb4"
    },
    {
      "name": "FunctionType",
      "description": "関数の型",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "typeParameterList",
            "description": "型パラメーターのリスト",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "2a75ad7c7ccc58ba56f6c8545c8150d1",
                  "parameter": []
                }
              ]
            }
          },
          {
            "name": "parameterList",
            "description": "パラメーターの型. 意味のない引数名は適当に付く",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "1835ebdc909b0fa93d11ae0ed93d0606",
                  "parameter": []
                }
              ]
            }
          },
          {
            "name": "return",
            "description": "戻り値の型",
            "type": {
              "typePartId": "1835ebdc909b0fa93d11ae0ed93d0606",
              "parameter": []
            }
          }
        ]
      },
      "id": "98904215e50e04fa2197a7a96df8f646"
    },
    {
      "name": "QEditQuestion",
      "description": "質問を編集する",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "accountToken",
            "description": "accountToken",
            "type": {
              "typePartId": "deb01f82879754c03aa4d244e136e59d",
              "parameter": []
            }
          },
          {
            "name": "questionId",
            "description": "questionId",
            "type": {
              "typePartId": "5249c5510c734bbe48e63a23e4e202b3",
              "parameter": []
            }
          },
          {
            "name": "name",
            "description": "新たな質問文",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "parentId",
            "description": "親の質問",
            "type": {
              "typePartId": "304f21ae8208a21d08731aa6d183742d",
              "parameter": [
                {
                  "typePartId": "5249c5510c734bbe48e63a23e4e202b3",
                  "parameter": []
                }
              ]
            }
          }
        ]
      },
      "id": "98bc46a897ffdb9d86782890776c9221"
    },
    {
      "name": "Tuple2",
      "description": "2つの値を持つ型",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [
        { "name": "first", "typePartId": "85f328c72b935491618d127811a328a5" },
        { "name": "second", "typePartId": "6276b43c4866574cc345f2055fceb291" }
      ],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "first",
            "description": "0番目の値",
            "type": {
              "typePartId": "85f328c72b935491618d127811a328a5",
              "parameter": []
            }
          },
          {
            "name": "second",
            "description": "1番目の値",
            "type": {
              "typePartId": "6276b43c4866574cc345f2055fceb291",
              "parameter": []
            }
          }
        ]
      },
      "id": "9b55e2a5ed07246355fbeba998eaf5fe"
    },
    {
      "name": "ElmCustomType",
      "description": "カスタム型. 代数的データ型",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "name",
            "description": "カスタム型名",
            "type": {
              "typePartId": "13e52324ba81c7ffe655455ad739ea73",
              "parameter": []
            }
          },
          {
            "name": "export",
            "description": "外部に公開するレベル",
            "type": {
              "typePartId": "4e1cab8c9074c1a058d6ef3ffcf29ab0",
              "parameter": []
            }
          },
          {
            "name": "comment",
            "description": "コメント",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "parameter",
            "description": "型パラメーター",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
                  "parameter": []
                }
              ]
            }
          },
          {
            "name": "variantList",
            "description": "バリアントのリスト. 値コンストラクタ. タグ",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "0bc2e5ab2fd2caeb6e6c331573ae735f",
                  "parameter": []
                }
              ]
            }
          }
        ]
      },
      "id": "a0cee28e982f5fbcae6b2c7bd1e27e2a"
    },
    {
      "name": "CallExpr",
      "description": "式と呼ぶパラメーター",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "expr",
            "description": "呼ばれる式",
            "type": {
              "typePartId": "8b0bdbeae05df3badac2ee69bf22011f",
              "parameter": []
            }
          },
          {
            "name": "parameterList",
            "description": "パラメーター",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "8b0bdbeae05df3badac2ee69bf22011f",
                  "parameter": []
                }
              ]
            }
          }
        ]
      },
      "id": "a1f71188b7c3ab2a21954471f3ac67f1"
    },
    {
      "name": "Variable",
      "description": "",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "name",
            "description": "変数の名前",
            "type": {
              "typePartId": "2a75ad7c7ccc58ba56f6c8545c8150d1",
              "parameter": []
            }
          },
          {
            "name": "document",
            "description": "ドキュメント",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "type",
            "description": "変数の型",
            "type": {
              "typePartId": "1835ebdc909b0fa93d11ae0ed93d0606",
              "parameter": []
            }
          },
          {
            "name": "expr",
            "description": "変数の式",
            "type": {
              "typePartId": "8b0bdbeae05df3badac2ee69bf22011f",
              "parameter": []
            }
          }
        ]
      },
      "id": "a2580a29c047f54d635c4456696bbef3"
    },
    {
      "name": "QClassInvitationToken",
      "description": "questのクラス招待トークン",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": { "_": "Kernel", "typePartBodyKernel": "Token" },
      "id": "a5f14e3ce94846347dc38bc1fb29ba7f"
    },
    {
      "name": "QCreateProgramParameter",
      "description": "quest で プログラムを作るときに必要になるパラメータ",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "programName",
            "description": "プログラム名",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "accountToken",
            "description": "アカウントトークン",
            "type": {
              "typePartId": "deb01f82879754c03aa4d244e136e59d",
              "parameter": []
            }
          }
        ]
      },
      "id": "a86e36ceeff2a4fefb8d9147c232dbb6"
    },
    {
      "name": "KernelCall",
      "description": "複数の引数が必要な内部関数の部分呼び出し",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "kernel",
            "description": "関数",
            "type": {
              "typePartId": "b6eef263a982482747a8ad0bc9f05e21",
              "parameter": []
            }
          },
          {
            "name": "expr",
            "description": "呼び出すパラメーター",
            "type": {
              "typePartId": "daa9bf22c3f2e52ff92edcdd896d6a6d",
              "parameter": []
            }
          }
        ]
      },
      "id": "a8c830bd6b3473f2fac7a62ede58ecf0"
    },
    {
      "name": "GetExpr",
      "description": "プロパティアクセス",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "expr",
            "description": "式",
            "type": {
              "typePartId": "8b0bdbeae05df3badac2ee69bf22011f",
              "parameter": []
            }
          },
          {
            "name": "propertyExpr",
            "description": "プロパティの式",
            "type": {
              "typePartId": "8b0bdbeae05df3badac2ee69bf22011f",
              "parameter": []
            }
          }
        ]
      },
      "id": "a9ce526a22f09800aa3773a1614cce89"
    },
    {
      "name": "QCreateQuestionParamter",
      "description": "質問を作成するときのパラメータ",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "accountToken",
            "description": "アカウントトークン",
            "type": {
              "typePartId": "deb01f82879754c03aa4d244e136e59d",
              "parameter": []
            }
          },
          {
            "name": "programId",
            "description": "プログラムID",
            "type": {
              "typePartId": "4fe2f5da0a887c2a6b33c16c5d52058f",
              "parameter": []
            }
          },
          {
            "name": "parent",
            "description": "親の質問ID",
            "type": {
              "typePartId": "304f21ae8208a21d08731aa6d183742d",
              "parameter": [
                {
                  "typePartId": "5249c5510c734bbe48e63a23e4e202b3",
                  "parameter": []
                }
              ]
            }
          },
          {
            "name": "questionText",
            "description": "質問文",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          }
        ]
      },
      "id": "aa65c956d46bd985c325c3567ad65abb"
    },
    {
      "name": "QQuestion",
      "description": "質問",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "name",
            "description": "質問",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "parent",
            "description": "親の質問",
            "type": {
              "typePartId": "304f21ae8208a21d08731aa6d183742d",
              "parameter": [
                {
                  "typePartId": "5249c5510c734bbe48e63a23e4e202b3",
                  "parameter": []
                }
              ]
            }
          },
          {
            "name": "programId",
            "description": "所属するプログラム",
            "type": {
              "typePartId": "4fe2f5da0a887c2a6b33c16c5d52058f",
              "parameter": []
            }
          },
          {
            "name": "id",
            "description": "質問を識別するID",
            "type": {
              "typePartId": "5249c5510c734bbe48e63a23e4e202b3",
              "parameter": []
            }
          }
        ]
      },
      "id": "ab9150e30802a0e39f7fdca3703da3ab"
    },
    {
      "name": "Type",
      "description": "definy の 関数を含んだ型. 式や値に対して決まる. 型パーツの定義にも使う",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "input",
            "description": "関数の入力.\nNotiong の場合は単なる値だということ",
            "type": {
              "typePartId": "304f21ae8208a21d08731aa6d183742d",
              "parameter": [
                {
                  "typePartId": "7b01edcb8f7b313ab03aa6b376876545",
                  "parameter": []
                }
              ]
            }
          },
          {
            "name": "output",
            "description": "関数の出力か, 値の型",
            "type": {
              "typePartId": "7b01edcb8f7b313ab03aa6b376876545",
              "parameter": []
            }
          }
        ]
      },
      "id": "b3b36f39469d23321ed01b92f048ccc0"
    },
    {
      "name": "ImportedType",
      "description": "インポートされた型",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "moduleName",
            "description": "モジュール名. namedImportされるがその識別子は自動的に作成される",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "name",
            "description": "型の名前",
            "type": {
              "typePartId": "2a75ad7c7ccc58ba56f6c8545c8150d1",
              "parameter": []
            }
          }
        ]
      },
      "id": "b44289bc65640d4ad0ad79a5a627ef78"
    },
    {
      "name": "AccountTokenHash",
      "description": "アカウントトークンのハッシュ値. データベースに保存する用",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": { "_": "Kernel", "typePartBodyKernel": "Token" },
      "id": "b553ab17ca45f4975d9fe17fe1a63ac4"
    },
    {
      "name": "KernelExpr",
      "description": "definyだけでは表現できない式",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "Int32Add",
            "description": "32bit整数を足す関数",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Int32Sub",
            "description": "32bit整数を引く関数",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Int32Mul",
            "description": "32bit整数をかける関数",
            "parameter": { "_": "Nothing" }
          }
        ]
      },
      "id": "b6eef263a982482747a8ad0bc9f05e21"
    },
    {
      "name": "ProjectDataFileHashValue",
      "description": "プロジェクトデータファイルのハッシュ値\nCloud Storage に保存するときのファイル名",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": { "_": "Kernel", "typePartBodyKernel": "Token" },
      "id": "b8bf6c22e275c06c7dc42300c332b47d"
    },
    {
      "name": "Location",
      "description": "definyWebアプリ内での場所を示すもの. URLから求められる. URLに変換できる",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "Home",
            "description": "最初のページ",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "CreateProject",
            "description": "プロジェクト作成画面",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Project",
            "description": "プロジェクトの詳細ページ",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "0cd913118a2ad1469d656146a08c5f76",
                "parameter": []
              }
            }
          },
          {
            "name": "Account",
            "description": "アカウント詳細ページ",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "c1a17b07e8e664ca80217833ff2ad3f1",
                "parameter": []
              }
            }
          },
          {
            "name": "Setting",
            "description": "設定ページ",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "About",
            "description": "definyについて説明したページ",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "TypePart",
            "description": "型パーツ編集ページ",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "6e3cff317f8bfbbd1391c0afb9ad6b72",
                "parameter": []
              }
            }
          },
          {
            "name": "Part",
            "description": "パーツ編集ページ",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "5880cd7c0b6f0205c739a06181898d03",
                "parameter": []
              }
            }
          }
        ]
      },
      "id": "bbcb8e43df8afff9fe24b001c66fb065"
    },
    {
      "name": "TypeAlias",
      "description": "TypeAlias. `export type T = {}`",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "name",
            "description": "型の名前",
            "type": {
              "typePartId": "2a75ad7c7ccc58ba56f6c8545c8150d1",
              "parameter": []
            }
          },
          {
            "name": "typeParameterList",
            "description": "型パラメーターのリスト",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "2a75ad7c7ccc58ba56f6c8545c8150d1",
                  "parameter": []
                }
              ]
            }
          },
          {
            "name": "document",
            "description": "ドキュメント",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "type",
            "description": "型本体",
            "type": {
              "typePartId": "1835ebdc909b0fa93d11ae0ed93d0606",
              "parameter": []
            }
          }
        ]
      },
      "id": "bf69f7e46f5e4949fe801c234fc3ad15"
    },
    {
      "name": "AccountId",
      "description": "アカウントを識別するためのID",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": { "_": "Kernel", "typePartBodyKernel": "Id" },
      "id": "c1a17b07e8e664ca80217833ff2ad3f1"
    },
    {
      "name": "KeyValue",
      "description": "文字列のkeyと式のvalue",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "key",
            "description": "key",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "value",
            "description": "value",
            "type": {
              "typePartId": "8b0bdbeae05df3badac2ee69bf22011f",
              "parameter": []
            }
          }
        ]
      },
      "id": "c2428cbcd62b33ce2c904a200b876863"
    },
    {
      "name": "List",
      "description": "リスト. JavaScriptのArrayで扱う",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [
        {
          "name": "element",
          "typePartId": "91b5185b554cf5ab00c5dae0ae9eafac"
        }
      ],
      "body": { "_": "Kernel", "typePartBodyKernel": "List" },
      "id": "c3fc2a6cea61086db59e11dc2bef0eee"
    },
    {
      "name": "LogInState",
      "description": "definy.app の ログイン状態",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "LoadingAccountTokenFromIndexedDB",
            "description": "アカウントトークンをindexedDBから読み取っている状態",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Guest",
            "description": "ログインしていない状態",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "RequestingLogInUrl",
            "description": "ログインへの画面URLをリクエストした状態",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "84597034eb252267ce1a599ab7a0b543",
                "parameter": []
              }
            }
          },
          {
            "name": "JumpingToLogInPage",
            "description": "ログインURLを受け取り,ログイン画面へ移行中",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "VerifyingAccountToken",
            "description": "アカウントトークンの検証とログインしているユーザーの情報を取得している状態",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "deb01f82879754c03aa4d244e136e59d",
                "parameter": []
              }
            }
          },
          {
            "name": "LoggedIn",
            "description": "ログインしている状態",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "5d291325e9d7bc27ff35e907f59bde54",
                "parameter": []
              }
            }
          }
        ]
      },
      "id": "c4b574e3ca8bad17022054d5e77fd3d0"
    },
    {
      "name": "ForStatement",
      "description": "for文",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "counterVariableName",
            "description": "カウンタ変数名",
            "type": {
              "typePartId": "2a75ad7c7ccc58ba56f6c8545c8150d1",
              "parameter": []
            }
          },
          {
            "name": "untilExpr",
            "description": "ループの上限の式",
            "type": {
              "typePartId": "8b0bdbeae05df3badac2ee69bf22011f",
              "parameter": []
            }
          },
          {
            "name": "statementList",
            "description": "繰り返す文",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "7c957d411f448a03764f16d43e6e5008",
                  "parameter": []
                }
              ]
            }
          }
        ]
      },
      "id": "c53be8bcaf56ff90080cf7a75f1e4815"
    },
    {
      "name": "TsMemberType",
      "description": "オブジェクトのメンバーの型",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "name",
            "description": "プロパティ名",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "required",
            "description": "必須かどうか falseの場合 ? がつく",
            "type": {
              "typePartId": "db57caf129f60db969b5b5224a72b937",
              "parameter": []
            }
          },
          {
            "name": "type",
            "description": "型",
            "type": {
              "typePartId": "1835ebdc909b0fa93d11ae0ed93d0606",
              "parameter": []
            }
          },
          {
            "name": "document",
            "description": "ドキュメント",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          }
        ]
      },
      "id": "c68bac5afb1a1d35af096bf317d09339"
    },
    {
      "name": "ConditionalOperatorExpr",
      "description": "条件演算子",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "condition",
            "description": "条件の式",
            "type": {
              "typePartId": "8b0bdbeae05df3badac2ee69bf22011f",
              "parameter": []
            }
          },
          {
            "name": "thenExpr",
            "description": "条件がtrueのときに評価される式",
            "type": {
              "typePartId": "8b0bdbeae05df3badac2ee69bf22011f",
              "parameter": []
            }
          },
          {
            "name": "elseExpr",
            "description": "条件がfalseのときに評価される式",
            "type": {
              "typePartId": "8b0bdbeae05df3badac2ee69bf22011f",
              "parameter": []
            }
          }
        ]
      },
      "id": "c7a771f770f0f92690faeb59eaff6268"
    },
    {
      "name": "IfStatement",
      "description": "if文",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "condition",
            "description": "条件の式",
            "type": {
              "typePartId": "8b0bdbeae05df3badac2ee69bf22011f",
              "parameter": []
            }
          },
          {
            "name": "thenStatementList",
            "description": "条件がtrueのときに実行する文",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "7c957d411f448a03764f16d43e6e5008",
                  "parameter": []
                }
              ]
            }
          }
        ]
      },
      "id": "cd325760f992e47a8438ae78ca9b1529"
    },
    {
      "name": "QRole",
      "description": "クラスに生徒として入っているか, ゲストとして入っているか",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "Student",
            "description": "生徒, 質問を答えたり, フィードバックできる人",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Guest",
            "description": "ゲスト",
            "parameter": { "_": "Nothing" }
          }
        ]
      },
      "id": "ce031774e68409c72ea855cf929f2293"
    },
    {
      "name": "QClass",
      "description": "questの クラス",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "id",
            "description": "クラスID",
            "type": {
              "typePartId": "624e37b7230f763e6318c627c2c728ec",
              "parameter": []
            }
          },
          {
            "name": "name",
            "description": "クラス名",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "programId",
            "description": "属するプログラムID",
            "type": {
              "typePartId": "4fe2f5da0a887c2a6b33c16c5d52058f",
              "parameter": []
            }
          },
          {
            "name": "invitationToken",
            "description": "招待トークン",
            "type": {
              "typePartId": "a5f14e3ce94846347dc38bc1fb29ba7f",
              "parameter": []
            }
          },
          {
            "name": "createAccountId",
            "description": "クラスの作成者",
            "type": {
              "typePartId": "c1a17b07e8e664ca80217833ff2ad3f1",
              "parameter": []
            }
          }
        ]
      },
      "id": "cf779792c0201a3874f77765b063b64b"
    },
    {
      "name": "ElmFieldName",
      "description": "フィールド名",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "FieldName",
            "description": "**直接 FieldName.FieldName(\"name\") と指定してはいけない!! Elmの識別子として使える文字としてチェックできないため**",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
                "parameter": []
              }
            }
          }
        ]
      },
      "id": "d256109676f834b74931495891b61d1b"
    },
    {
      "name": "QProgram",
      "description": "質問を作成するプログラム. 複数のクラスを開催できる.",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "id",
            "description": "プログラムを識別するID",
            "type": {
              "typePartId": "4fe2f5da0a887c2a6b33c16c5d52058f",
              "parameter": []
            }
          },
          {
            "name": "name",
            "description": "プログラム名",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "createAccountId",
            "description": "プログラム作成者",
            "type": {
              "typePartId": "c1a17b07e8e664ca80217833ff2ad3f1",
              "parameter": []
            }
          }
        ]
      },
      "id": "d59eabf90cfeb709b136e1c832b4f5d4"
    },
    {
      "name": "ElmVariantName",
      "description": "バリアント名",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "VariantName",
            "description": "**直接 VariantName.VariantName(\"Loading\") と指定してはいけない!! Elmの識別子として使える文字としてチェックできないため**",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
                "parameter": []
              }
            }
          }
        ]
      },
      "id": "d77f1f967b892c739a1555f74d2ff9fd"
    },
    {
      "name": "IntersectionType",
      "description": "交差型",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "left",
            "description": "左に指定する型",
            "type": {
              "typePartId": "1835ebdc909b0fa93d11ae0ed93d0606",
              "parameter": []
            }
          },
          {
            "name": "right",
            "description": "右に指定する型",
            "type": {
              "typePartId": "1835ebdc909b0fa93d11ae0ed93d0606",
              "parameter": []
            }
          }
        ]
      },
      "id": "d82150857d0f2e78c1df0f418ba9b01a"
    },
    {
      "name": "Part",
      "description": "パーツの定義. 他のプログラミング言語でいう関数や, 変数のこと",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "name",
            "description": "パーツの名前",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "description",
            "description": "パーツの説明",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "type",
            "description": "パーツの型",
            "type": {
              "typePartId": "b3b36f39469d23321ed01b92f048ccc0",
              "parameter": []
            }
          },
          {
            "name": "expr",
            "description": "パーツの式",
            "type": {
              "typePartId": "ed9a046b5f121f6e54ac7f3834cbc644",
              "parameter": []
            }
          },
          {
            "name": "projectId",
            "description": "所属しているプロジェクトのID",
            "type": {
              "typePartId": "0cd913118a2ad1469d656146a08c5f76",
              "parameter": []
            }
          },
          {
            "name": "id",
            "description": "パーツを識別するID",
            "type": {
              "typePartId": "5880cd7c0b6f0205c739a06181898d03",
              "parameter": []
            }
          }
        ]
      },
      "id": "d8bccc70252cee9ce70784bf5dfa493b"
    },
    {
      "name": "EvaluatedExpr",
      "description": "definyの評価しきった式",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "Kernel",
            "description": "definyだけでは表現できない式",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "b6eef263a982482747a8ad0bc9f05e21",
                "parameter": []
              }
            }
          },
          {
            "name": "Int32",
            "description": "32bit整数",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "16c2d8602e3e5e2d38b9215bd0c44d8d",
                "parameter": []
              }
            }
          },
          {
            "name": "TagReference",
            "description": "タグを参照",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "edd59bd2ab4852c149f6ce5917767908",
                "parameter": []
              }
            }
          },
          {
            "name": "KernelCall",
            "description": "内部関数呼び出し",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "a8c830bd6b3473f2fac7a62ede58ecf0",
                "parameter": []
              }
            }
          }
        ]
      },
      "id": "daa9bf22c3f2e52ff92edcdd896d6a6d"
    },
    {
      "name": "SetTypePartParameter",
      "description": "# 型の変更が必要\n\nhttps://www.notion.so/setTypePart-definy-app-api-a2500046da77432796b7ccaab6e4e3ee\n\n1つの型パーツを保存するために指定するパラメーター\n",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "accountToken",
            "description": "アカウントトークン",
            "type": {
              "typePartId": "deb01f82879754c03aa4d244e136e59d",
              "parameter": []
            }
          },
          {
            "name": "typePartId",
            "description": "型パーツのID",
            "type": {
              "typePartId": "6e3cff317f8bfbbd1391c0afb9ad6b72",
              "parameter": []
            }
          },
          {
            "name": "name",
            "description": "設定する型パーツ名",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "description",
            "description": "設定する説明文",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "attribute",
            "description": "設定する属性",
            "type": {
              "typePartId": "304f21ae8208a21d08731aa6d183742d",
              "parameter": [
                {
                  "typePartId": "22d8f2d392c573a7aa54c39fa4c98ad0",
                  "parameter": []
                }
              ]
            }
          },
          {
            "name": "typeParameterList",
            "description": "設定する型パラメーター",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "627dc8fa15214481812af12268d97b6b",
                  "parameter": []
                }
              ]
            }
          },
          {
            "name": "body",
            "description": "設定する型定義本体",
            "type": {
              "typePartId": "4c60c73d6b8f236d34281fbb9119a598",
              "parameter": []
            }
          }
        ]
      },
      "id": "dac038758a5c45f762de388bb5193fb8"
    },
    {
      "name": "Bool",
      "description": "Bool. 真か偽. JavaScriptのbooleanで扱える. true: 1, false: 0. (1byte)としてバイナリに変換する",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Just", "value": "AsBoolean" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "False",
            "description": "偽",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "True",
            "description": "真",
            "parameter": { "_": "Nothing" }
          }
        ]
      },
      "id": "db57caf129f60db969b5b5224a72b937"
    },
    {
      "name": "ElmDefinition",
      "description": "Elmの関数の定義. 引数がない関数(定数)も含まれる",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "name",
            "description": "関数名",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "type",
            "description": "型",
            "type": {
              "typePartId": "173f661790b059baf212043f816ba1a9",
              "parameter": []
            }
          },
          {
            "name": "expr",
            "description": "式",
            "type": {
              "typePartId": "173f661790b059baf212043f816ba1a9",
              "parameter": []
            }
          },
          {
            "name": "comment",
            "description": "コメント",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          }
        ]
      },
      "id": "db8b9f83d99ef58fd206acca4e56d098"
    },
    {
      "name": "Function",
      "description": "外部に公開する関数",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "name",
            "description": "外部に公開する関数の名前",
            "type": {
              "typePartId": "2a75ad7c7ccc58ba56f6c8545c8150d1",
              "parameter": []
            }
          },
          {
            "name": "document",
            "description": "ドキュメント",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "typeParameterList",
            "description": "型パラメーターのリスト",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "2a75ad7c7ccc58ba56f6c8545c8150d1",
                  "parameter": []
                }
              ]
            }
          },
          {
            "name": "parameterList",
            "description": "パラメーター",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "6b05e33009ade6b4decd452e8fd4bff1",
                  "parameter": []
                }
              ]
            }
          },
          {
            "name": "returnType",
            "description": "戻り値の型",
            "type": {
              "typePartId": "1835ebdc909b0fa93d11ae0ed93d0606",
              "parameter": []
            }
          },
          {
            "name": "statementList",
            "description": "関数の本体",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "7c957d411f448a03764f16d43e6e5008",
                  "parameter": []
                }
              ]
            }
          }
        ]
      },
      "id": "dd3366ce7254327c85732d2932ff219b"
    },
    {
      "name": "AccountToken",
      "description": "アカウントトークン. アカウントトークンを持っていればアクセストークンをdefinyのサーバーにリクエストした際に得られるIDのアカウントを保有していると証明できる. サーバーにハッシュ化したものを保存している. これが盗まれた場合,不正に得た人はアカウントを乗っ取ることができる. 有効期限はなし, 最後に発行したアカウントトークン以外は無効になる",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": { "_": "Kernel", "typePartBodyKernel": "Token" },
      "id": "deb01f82879754c03aa4d244e136e59d"
    },
    {
      "name": "FunctionDefinitionStatement",
      "description": "ローカル関数定義",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "name",
            "description": "変数名",
            "type": {
              "typePartId": "2a75ad7c7ccc58ba56f6c8545c8150d1",
              "parameter": []
            }
          },
          {
            "name": "typeParameterList",
            "description": "型パラメーターのリスト",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "2a75ad7c7ccc58ba56f6c8545c8150d1",
                  "parameter": []
                }
              ]
            }
          },
          {
            "name": "parameterList",
            "description": "パラメーターのリスト",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "6b05e33009ade6b4decd452e8fd4bff1",
                  "parameter": []
                }
              ]
            }
          },
          {
            "name": "returnType",
            "description": "戻り値の型",
            "type": {
              "typePartId": "1835ebdc909b0fa93d11ae0ed93d0606",
              "parameter": []
            }
          },
          {
            "name": "statementList",
            "description": "関数本体",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "7c957d411f448a03764f16d43e6e5008",
                  "parameter": []
                }
              ]
            }
          }
        ]
      },
      "id": "df5c5388248252a92864ceb219628b8e"
    },
    {
      "name": "Pattern",
      "description": "直積型のパターン",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "name",
            "description": "タグ名",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "description",
            "description": "パターンの説明",
            "type": {
              "typePartId": "666361c9ae68ab64f273c47f3feb8c73",
              "parameter": []
            }
          },
          {
            "name": "parameter",
            "description": "そのパターンにつけるデータの型",
            "type": {
              "typePartId": "304f21ae8208a21d08731aa6d183742d",
              "parameter": [
                {
                  "typePartId": "b3b36f39469d23321ed01b92f048ccc0",
                  "parameter": []
                }
              ]
            }
          }
        ]
      },
      "id": "e4ef8a0713aceb0eaa7606cd516ad847"
    },
    {
      "name": "ImageHash",
      "description": "画像から求められるトークン.キャッシュのキーとして使われる.1つのトークンに対して永久に1つの画像データしか表さない. キャッシュを更新する必要はない",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": { "_": "Kernel", "typePartBodyKernel": "Token" },
      "id": "e71e15a15b0883940a75e58367151d1a"
    },
    {
      "name": "Expr",
      "description": "definy の 式",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "Kernel",
            "description": "definyだけでは表現できない式",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "b6eef263a982482747a8ad0bc9f05e21",
                "parameter": []
              }
            }
          },
          {
            "name": "Int32Literal",
            "description": "32bit整数",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "16c2d8602e3e5e2d38b9215bd0c44d8d",
                "parameter": []
              }
            }
          },
          {
            "name": "PartReference",
            "description": "パーツの値を参照",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "5880cd7c0b6f0205c739a06181898d03",
                "parameter": []
              }
            }
          },
          {
            "name": "TagReference",
            "description": "タグを参照",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "edd59bd2ab4852c149f6ce5917767908",
                "parameter": []
              }
            }
          },
          {
            "name": "FunctionCall",
            "description": "関数呼び出し",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "2f9784d2c41d0974487a1ca2b0a51ec5",
                "parameter": []
              }
            }
          }
        ]
      },
      "id": "ed9a046b5f121f6e54ac7f3834cbc644"
    },
    {
      "name": "TagReference",
      "description": "タグの参照を表す",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "typePartId",
            "description": "型ID. タグIDがあれば, 型を導出できそうだが……",
            "type": {
              "typePartId": "6e3cff317f8bfbbd1391c0afb9ad6b72",
              "parameter": []
            }
          },
          {
            "name": "tagId",
            "description": "タグID",
            "type": {
              "typePartId": "5ec292c48424e5e9ee8cc2d672830ecd",
              "parameter": []
            }
          }
        ]
      },
      "id": "edd59bd2ab4852c149f6ce5917767908"
    },
    {
      "name": "Mode",
      "description": "definy.app を開発する上での動作モード. デベロップモード(http://localhost:2520)か, リリースモード(https://definy.app)",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "Develop",
            "description": "ローカルで開発するときのモード. オリジンは http://localshot:2520",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "Release",
            "description": "リリースモード. オリジンは https://definy.app",
            "parameter": { "_": "Nothing" }
          }
        ]
      },
      "id": "ee0590e764618611ffa8e1a0a2e22f79"
    },
    {
      "name": "BinaryOperatorExpr",
      "description": "2項演算子と左右の式",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "operator",
            "description": "2項演算子",
            "type": {
              "typePartId": "4953938f040aefdaa5f2601e2a78d43b",
              "parameter": []
            }
          },
          {
            "name": "left",
            "description": "左の式",
            "type": {
              "typePartId": "8b0bdbeae05df3badac2ee69bf22011f",
              "parameter": []
            }
          },
          {
            "name": "right",
            "description": "右の式",
            "type": {
              "typePartId": "8b0bdbeae05df3badac2ee69bf22011f",
              "parameter": []
            }
          }
        ]
      },
      "id": "eec2dab74fbcd3237bfa1c773f9b9d21"
    },
    {
      "name": "CodeType",
      "description": "出力するコードの種類",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "JavaScript",
            "description": "JavaScript",
            "parameter": { "_": "Nothing" }
          },
          {
            "name": "TypeScript",
            "description": "TypeScript",
            "parameter": { "_": "Nothing" }
          }
        ]
      },
      "id": "eedf73c97f9dd61159572322f6d7e0a5"
    },
    {
      "name": "LambdaExpr",
      "description": "ラムダ式",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "parameterList",
            "description": "パラメーターのリスト",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "5433bade7738da21e7663ff043f588d5",
                  "parameter": []
                }
              ]
            }
          },
          {
            "name": "typeParameterList",
            "description": "型パラメーターのリスト",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "2a75ad7c7ccc58ba56f6c8545c8150d1",
                  "parameter": []
                }
              ]
            }
          },
          {
            "name": "returnType",
            "description": "戻り値の型",
            "type": {
              "typePartId": "1835ebdc909b0fa93d11ae0ed93d0606",
              "parameter": []
            }
          },
          {
            "name": "statementList",
            "description": "ラムダ式本体",
            "type": {
              "typePartId": "c3fc2a6cea61086db59e11dc2bef0eee",
              "parameter": [
                {
                  "typePartId": "7c957d411f448a03764f16d43e6e5008",
                  "parameter": []
                }
              ]
            }
          }
        ]
      },
      "id": "eeeef818144e5a42460c4efdaa221460"
    },
    {
      "name": "RequestLogInUrlRequestData",
      "description": "ログインのURLを発行するために必要なデータ",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "openIdConnectProvider",
            "description": "ログインに使用するプロバイダー",
            "type": {
              "typePartId": "84597034eb252267ce1a599ab7a0b543",
              "parameter": []
            }
          },
          {
            "name": "urlData",
            "description": "ログインした後に返ってくるURLに必要なデータ",
            "type": {
              "typePartId": "7210f04a85c5f0f58f7aa20826d67f05",
              "parameter": []
            }
          }
        ]
      },
      "id": "f03ea5331c1a3adcde80a04054d35e07"
    },
    {
      "name": "QAccountTokenAndProgramId",
      "description": "プロジェクトに属する質問や, クラスを取得するときに必要なパラメータ",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Product",
        "memberList": [
          {
            "name": "accountToken",
            "description": "アカウントトークン",
            "type": {
              "typePartId": "deb01f82879754c03aa4d244e136e59d",
              "parameter": []
            }
          },
          {
            "name": "programId",
            "description": "プログラムID",
            "type": {
              "typePartId": "4fe2f5da0a887c2a6b33c16c5d52058f",
              "parameter": []
            }
          }
        ]
      },
      "id": "f26bc98a33011dd4892a7cdcfb4ccade"
    },
    {
      "name": "ElmTypeDeclaration",
      "description": "Elmの型定義",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "TypeAlias",
            "description": "型エイリアス. レコード型に名前を付ける",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "57f429fd5c67eb2542447a2eaeb34497",
                "parameter": []
              }
            }
          },
          {
            "name": "CustomType",
            "description": "カスタム型. 代数的データ型",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "a0cee28e982f5fbcae6b2c7bd1e27e2a",
                "parameter": []
              }
            }
          }
        ]
      },
      "id": "f4bed793b657b39db5a579c9e158eba5"
    },
    {
      "name": "TsMember",
      "description": "JavaScriptのオブジェクトリテラルの要素",
      "projectId": "96deb95f697e66f12a55e4d3910ea509",
      "attribute": { "_": "Nothing" },
      "typeParameterList": [],
      "body": {
        "_": "Sum",
        "patternList": [
          {
            "name": "Spread",
            "description": "...a のようにする",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "8b0bdbeae05df3badac2ee69bf22011f",
                "parameter": []
              }
            }
          },
          {
            "name": "KeyValue",
            "description": "a: b のようにする",
            "parameter": {
              "_": "Just",
              "value": {
                "typePartId": "c2428cbcd62b33ce2c904a200b876863",
                "parameter": []
              }
            }
          }
        ]
      },
      "id": "fddd2a65994fae205dd636f3a6b9f1ea"
    }
  ]
}
