Files
twenty/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/import-data-via-api.mdx
T
Félix Malfait 882e9fd231 Docs: restructure Extend section with API, Webhooks, and Apps pages (#18517)
## Summary
- Restructures the developer Extend documentation: moves API and
Webhooks to top-level pages, creates dedicated Apps section with Getting
Started, Building, and Publishing pages
- Updates navigation structure (`docs.json`, `base-structure.json`,
`navigation.template.json`)
- Updates translated docs for all locales and LLMS.md references across
app packages

## Test plan
- [ ] Run `mintlify dev` locally and verify navigation structure
- [ ] Check that all links in the Extend section work correctly
- [ ] Verify translated pages render properly


Made with [Cursor](https://cursor.com)

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-03-10 10:00:20 +01:00

177 lines
8.5 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: API でデータをインポートする
description: 大規模なデータインポートに Twenty の API をいつ・どのように使用するか。
---
## 概要
Twenty は、プログラムによるデータインポートのために **GraphQL** と **REST API** の両方を提供しています。 CSV インポートがデータ量の観点で現実的でない場合、または自動化された定期的なインポートが必要な場合は、API を使用してください。
## API インポートを使うべきタイミング
| シナリオ | 推奨アプローチ |
| ------------- | ----------------- |
| 1 万件未満 | CSVインポート |
| 1 万〜5 万件 | CSVインポート(ファイルに分割) |
| **5 万件以上** | **API インポート** |
| 一度きりの移行 | どちらでも可(データ量に応じて) |
| **定期的なインポート** | **API インポート** |
| **リアルタイム同期** | **API インポート** |
| **他システムとの統合** | **API インポート** |
<Note>数十万件規模のデータセットでは、複数回の CSV インポートよりも API の方が大幅に高速で信頼性があります。</Note>
## API レートリミット
Twenty では、システムの安定性を確保するためにレート制限を設けています:
| 制限 | 値 |
| -------------------- | ------------- |
| **1 分あたりのリクエスト数** | 100 |
| **バッチ呼び出しあたりのレコード数** | 60 |
| **最大スループット** | ~6,000 レコード/分 |
<Warning>
**これらの制限を前提にインポート計画を立ててください。**
最大スループットで 100,000 レコードの場合、インポート時間は約 17 分になります。 エラー処理や再試行のための余裕時間を確保してください。
</Warning>
## 始めに
### ステップ 1: API キーを取得する
1. **設定 → 開発者** に移動
2. **+ API キーを作成** をクリック
3. キーにわかりやすい名前を付ける
4. API キーをすぐにコピーします(再表示されません)
5. 安全に保管する
<Warning>
**API キーは秘密にしてください。**
API キーを知っている人は誰でも、あなたのワークスペースのデータにアクセス・変更できます。 コードリポジトリにコミットしたり、公開で共有したりしないでください。
</Warning>
### ステップ 2: API を選択する
Twenty は 2 種類の API をサポートしています:
| API | 最適な用途 | ドキュメント |
| ----------- | ------------------------------ | -------------------------------------------------- |
| **GraphQL** | 柔軟なクエリ、関連データの取得、複雑な操作に最適 | [API ドキュメント](/l/ja/developers/api) |
| **REST** | シンプルな CRUD 操作、馴染みのある REST パターン | [API ドキュメント](/l/ja/developers/api) |
両方の API でサポートされる内容:
* レコードの作成、読み取り、更新、削除
* **バッチ操作** — 1 回の呼び出しで最大 60 レコードを作成または更新
**インポートではバッチ操作を使用**し、レート制限内でスループットを最大化してください。
### ステップ 3: インポート順序を計画する
CSV インポートと同様に、リレーションでは**順序が重要**です:
1. **会社**を最初に(依存関係なし)
2. 2 番目に **連絡先**(会社にリンク可能)
3. 3 番目に **商談**(会社および連絡先にリンク可能)
4. **タスク/メモ**(上記のいずれにもリンク可能)
5. **カスタムオブジェクト**(依存関係に従って)
## ベストプラクティス
### リクエストをバッチ化する
* レコードを 1 件ずつ送信しない
* 1 回の API 呼び出しにつき**最大 60 レコード**にまとめる
* これにより、レート制限内でスループットを最大化できます
### レート制限への対応
* リクエスト間に遅延を入れる(継続的なインポートでは最小 600ms)
* 制限に達したら指数バックオフを使用する
* 429Too Many Requests)応答を監視する
### まずデータを検証する
* インポート前にデータをクリーンアップし、検証する
* 必須フィールドが入力されていることを確認する
* 形式が Twenty の要件に合致していることを確認する([フィールドマッピング](/l/ja/user-guide/data-migration/capabilities/field-mapping) を参照)
### すべてをログに記録する
* インポートしたすべてのレコード(ID を含む)を記録する
* エラーをコンテキスト情報とともに記録する
* これにより、問題のデバッグと完了確認が容易になります
### まずテストする
* 少量のバッチ(10〜20 レコード)でテストする
* Twenty にデータが正しく表示されることを確認する
* その後、フルインポートを実行する
### 重複を避けるためにアップサートを使用する
GraphQL API は **バッチ アップサート**をサポートしています — レコードが存在する場合は更新、存在しない場合は作成します。 これにより、インポートを再実行しても重複を防止できます。
## オブジェクト名とフィールド名の確認方法
利用可能なオブジェクトとフィールドを確認するには:
1. **設定 → API と Webhook** に移動
2. **Metadata API** を参照
3. すべての標準およびカスタムオブジェクトとそのフィールドを表示
ドキュメントには、すべての標準およびカスタムオブジェクト、そのフィールド、および期待されるデータ型が示されています。
## プロフェッショナルサービス
複雑な API 移行については、パートナーがお手伝いします:
| サービス | 提供内容 |
| ------------ | ------------------- |
| **データモデル設計** | 最適なデータ構造を設計 |
| **移行スクリプト** | インポート用スクリプトの作成と実行 |
| **データ変換** | 複雑なマッピングとクリーンアップに対応 |
| **検証と QA** | 移行が完了していることを検証 |
**最適な用途:**
* 10 万件以上のレコードの移行
* 複雑なデータ変換
* 厳しいスケジュール
* 開発リソースのないチーム
[contact@twenty.com](mailto:contact@twenty.com) までお問い合わせいただくか、[導入支援サービス](/l/ja/user-guide/getting-started/capabilities/implementation-services)をご覧ください。
## FAQ
<AccordionGroup>
<Accordion title="GraphQL と REST の違いは何ですか?">
GraphQL は、1 回のクエリで必要なデータだけを正確に要求でき、複雑な操作に適しています。 REST は標準的な HTTP メソッド(GET、POST、PUT、DELETE)を使用しており、従来の API を扱ったことがある場合は馴染みやすいでしょう。
</Accordion>
<Accordion title="API で既存のレコードを更新できますか?">
はい! 更新用ミューテーション(GraphQL)またはレコードの `id` を用いた PUT/PATCH リクエスト(REST)を使用してください。
</Accordion>
<Accordion title="重複にはどう対処すればよいですか?">
一意の識別子(メール、ドメイン)を使用して、まず既存のレコードをクエリします。 存在すれば更新、なければ作成します。
</Accordion>
<Accordion title="API でレコードを削除できますか?">
はい、削除用ミューテーション(GraphQL)または DELETE リクエスト(REST)を使用します。
</Accordion>
<Accordion title="Python や Node.js の SDK はありますか?">
現時点ではありませんが、どちらの API もあらゆる言語の任意の HTTP クライアントで利用できます。
</Accordion>
</AccordionGroup>
## API ドキュメント
実装の詳細、コード例、スキーマリファレンスについては次を参照してください:
* [API ドキュメント](/l/ja/developers/api)