スキーマ推論ツール
新しい連携はいつも同じように始まります。API が JSON のかたまりを返し、それを保持するためのモデルが必要になるのです。20 個のフィールドを手で打ち込むのは退屈でミスも起きやすい作業です。このツールはサンプルの JSON オブジェクトを解析し、各キーの列の型を推論し、お好みの形式で貼り付けてすぐ使えるスキーマを出力します。SQL CREATE TABLE、Mongoose スキーマ、または Sequelize のモデル定義です。
JSON からスキーマを推論する方法
-
1
サンプルのオブジェクトを貼り付ける
1 つの JSON オブジェクト、またはオブジェクトの配列を入力します(配列の最初のオブジェクトが読み取られます)。各列に型が付くよう、すべてのフィールドが埋まった完全なレコードを使ってください。
-
2
出力形式を選ぶ
SQL CREATE TABLE(Postgres / MySQL / SQLite 風)、MongoDB を使う Node.js アプリ向けの Mongoose、またはリレーショナルな Node.js アプリ向けの Sequelize。
-
3
テーブルまたはモデルに名前を付ける
SQL 出力ではテーブル名を、Mongoose と Sequelize の出力ではスキーマ名またはモデル名を設定します。
-
4
生成されたスキーマをコピーする
出発点として、マイグレーションやモデルファイルにそのまま貼り付けます。
型はどのように推論されるか
推論はあくまで最善の推測です。ツールは 1 つのサンプルオブジェクトの値を読み取り、目にした値に基づいて各キーの列の型を選びます。レコード同士を比較したり、どのフィールドが任意かを推測したりはしないので、完全で代表的なオブジェクトを渡してください。
型の対応表
| JSON の値 | SQL の型 | Mongoose の型 | Sequelize の型 |
|---|---|---|---|
42(整数) |
INTEGER | Number | DataTypes.INTEGER |
3.14(小数) |
DECIMAL(10,2) | Number | DataTypes.FLOAT |
"こんにちは"(短い文字列) |
VARCHAR(255) | String | DataTypes.STRING |
| 255 文字を超える文字列 | TEXT | String | DataTypes.STRING |
"2026-04-18T10:00:00Z" |
TIMESTAMP | Date | DataTypes.DATE |
"2026-04-18" |
DATE | Date | DataTypes.DATEONLY |
true / false |
BOOLEAN | Boolean | DataTypes.BOOLEAN |
null |
TEXT | String | DataTypes.STRING |
[1, 2, 3](配列) |
JSON | Object | DataTypes.JSON |
{ "nested": ... }(オブジェクト) |
JSON | Object | DataTypes.JSON |
SQL 出力が追加するもの
SQL CREATE TABLE は必ず自動採番の主キーで始まります。
id INTEGER PRIMARY KEY AUTOINCREMENT,
Mongoose と Sequelize の出力は id フィールドを追加しません。どちらのライブラリも自動で 1 つ作成するためです。
覚えておきたい既定値と制限
- 読み取られるのは 1 つのオブジェクトです。 配列を貼り付けても最初の要素だけが調べられるため、そのフィールドがスキーマ全体を決めます。
- 存在しないキーは存在しない列です。 サンプルオブジェクトにないフィールドは、出力にまったく現れません。
- 入れ子のオブジェクトや配列は 1 つの JSON 列になります。 ツールはそれらをサブテーブル、サブスキーマ、外部キーへ展開しません。
- 制約は一切生成されません。 列は
NOT NULL、一意性、インデックスなしで出力されるため、あなたが締め付けるまではすべて null を許容します。
より整った結果のためのヒント
- 完全に埋まったレコードを使ってください。 サンプルで
nullになっているフィールドはテキスト/文字列型と推論されますが、それは望みどおりでないことが多いです。 - 生成後は予約語を改名してください。
type、order、userのようなフィールドは SQL で引用符が必要になります。 - 出力は足場だと考えてください。 VARCHAR の長さや DECIMAL の精度を調整し、インデックスを追加し、列を
NOT NULLに設定し、本番前に本当の主キーを選んでください。
よくある質問
入れ子のオブジェクトや配列は 1 つの JSON 列に対応づけられます(SQL と Sequelize では JSON、Mongoose では Object フィールド)。ツールは入れ子の構造をサブテーブルやサブスキーマへ展開しないため、必要であればあなた自身で平坦化または正規化してください。
いいえ。オブジェクトの配列を貼り付けても、調べられるのは最初のオブジェクトだけで、そのキーがスキーマを決めます。その最初のレコードに、気にするフィールドがすべて、それぞれ実際の値を伴って含まれているようにしてください。
いいえ。各列は型だけで出力されるため、出力には外部キー、一意性制約、インデックス、NOT NULL 句がありません。これらは手で追加してください。ツールがサンプルからは復元できない意図を表すものだからです。
リレーショナルデータベースのマイグレーションには SQL CREATE TABLE、MongoDB 上の Node.js アプリには Mongoose Schema、Sequelize ORM 経由でリレーショナルデータベース上に動く Node.js アプリには Sequelize Model を選んでください。
関連ツール
ASCII表リファレンス
0から127までの完全なASCII表です。NUL、LF、DELなどの制御コードを含め、各文字の10進数、16進数、8進数、2進数、HTML数値文字参照を表示します。
HTML文字参照
HTMLエンティティの検索可能なリスト、その名称コードおよび数値コード、および特殊文字や記号のワンクリックコピー機能を提供します。
キーボードショートカット一覧
macOS、Windows、Linux向けに、VS Code、Chrome、GNU Readlineを使うBashの公式資料に基づく既定ショートカットを検索できます。
JavaScript圧縮ツール
変数名のリネーム、空白の削除、デッドコードの除去、定数畳み込みでJavaScriptを圧縮し、より小さなバンドルを作成します。
EditorConfig ジェネレーター
インデント、改行コード、文字コードのルールから .editorconfig を作成し、リポジトリで使っている言語ごとに正しいセクションを追加します。Python、Go、YAML、Makefile などに対応。
メールアドレス検証ツール
メールアドレスを検証します。RFC 5322構文チェック、MXレコードのライブ確認に加え、ローカル部、ドメイン、長さの詳細を表示します。メールは送信されません。
このツールは他の言語でも利用できます
- Herramienta de Inferencia de Esquema [ES]
- Outil d'inférence de schéma [FR]
- Alat Inferensi Skema [ID]
- Schemainferensverktyg [SV]
- أداة استنتاج المخطط [AR]
- 스키마 추론 도구 [KO]
- Narzędzie do wnioskowania schematu [PL]
- Schema-inferentie-tool [NL]
- Công cụ suy luận lược đồ [VI]
- เครื่องมืออนุมาน Schema [TH]
- Ferramenta de Inferência de Esquema [PT]
- Schema-Inferenz-Tool [DE]
- Инструмент вывода схемы [RU]
- Şema Çıkarım Aracı [TR]
- 模式推断工具 [ZH]
- Schema Inference Tool [EN]
- Strumento di Inferenza Schema [IT]