
最終更新日:2026年7月20日
Quireと他のアプリとの双方向同期には、両側からWebhookを受け取り、それぞれのAPIを呼び出して変更を反映させる中間層サーバーが必要です。構成はQuire ↔ あなたのアプリ ↔ 他のアプリというシンプルなものです。実装は4ステップ。まずWebhookサーバーを立ち上げ、Quireに登録し(プロジェクトのフォロワーとして追加)、他のアプリにも登録し、最後にQuire APIドキュメントのアクティビティタイプを使ってイベントを処理します。安全のためのルールは2つ。各変更の発生元にタグを付けて無限ループを防ぐこと、そしてQuireのタスクIDと他のアプリのアイテムIDの間でIDマッピングを保持することです。Googleカレンダー双方向同期アプリが実際の動作例です。
データが2つのアプリにまたがって存在すると、あらゆる操作が二重に行われるか、気づかぬうちに食い違ってしまいます。双方向同期は、QuireとほかのアプリがWebhookを通じて自動的に更新をやり取りすることで、この二重入力の問題を解消します。QuireのオープンなAPIは、まさにこのパターンのために作られています。
分断されたツールのコストはよく知られています。マッキンゼーの「ソーシャルエコノミー」に関する調査によると、知識労働者は本来の業務ではなく社内情報を探すことに、1週間のうちおよそ20%もの時間を費やしています。信頼できる同期の仕組みがあれば、この負荷の一部を自動的に取り除けます。
Googleカレンダー双方向同期アプリは、その代表的な例です。QuireのタスクとGoogleカレンダーのイベントは、手動で調整することなく常に一致し続けます。この記事では、同じ仕組みを他のアプリのAPIに対して構築する方法を順を追って説明します。
Googleカレンダー双方向同期はPremium以上のサブスクリプションティア向けの機能です。詳細は料金ページをご覧ください。
| コンポーネント | 役割 |
|---|---|
| Quireアプリ | API認証情報を提供する。Webhookのためにプロジェクトのフォロワーとして登録される |
| 中間層サーバー(あなたのアプリ) | 両側からWebhookを受け取り、変更を反映するために各APIを呼び出す |
| 他のアプリ(例:Googleカレンダー) | 自身の側でのイベントの発生源であり、API書き込みの対象でもある |
| Quireアプリ設定内のWebhook URL | QuireがアクティビティイベントをPOSTする送信先 |
| IDマッピングテーブル | QuireのタスクIDと他のアプリのアイテムIDを対応付ける |
| 各変更に付ける発生元タグ | 無限に更新が繰り返されるループを防ぐ |
双方向同期を、2つのアプリの間の会話だとイメージしてください。Quireでタスクを更新すると、その変更が他のアプリに伝わります。逆に、そのアプリ側で何かが更新されると、Quireにも伝わります。こうして、情報はどこでも一貫した状態に保たれます。

まず最初に必要なのは、Quireアプリのセットアップです。QuireのプロジェクトにAPI経由でアクセスするための認証情報を取得するため、アプリを1つ作成する必要があります。
Quire APIで独自のアプリを作成する手順については、こちらのブログ記事をご覧ください。
双方向同期を実装するには、QuireとGoogleカレンダーのような対象アプリの橋渡し役となる中間層アプリ(あなたのアプリ)を開発する必要があります。これは翻訳者のようなものだとイメージしてください。片方から情報を受け取り、それを処理し、もう片方に適切な指示を送ります。全体の流れはQuire ↔ あなたのアプリ ↔ 他のアプリとなります。
双方向同期を実現するには、まず中間層として機能する独自のサーバーアプリを用意する必要があります。このアプリは、QuireとほかのアプリのどちらからもWebhook POSTリクエストを受け取る役割を担います。 サーバーには次のことができる必要があります。
このサーバーアプリは、Node.js、Python、Rubyなど好きな技術で構築できます。以下のセクションでは、Node.jsを使ってWebhookイベントを受信・処理するシンプルな例を示します。 QuireとほかのアプリからWebhookイベントを送信できるよう、サーバーはインターネットからアクセス可能にしておいてください。
Expressを使ったシンプルなNode.jsの例を紹介します。
const express = require('express');
const app = express();
app.use(express.json());
app.listen(3000, () => {
console.log('Server is running on port 3000');
});次に、Quireからのwebhookイベントを受信するためのルートをサーバーに作成する必要があります。
app.post('/webhook', (req, res) => {
console.log('Received webhook event:', req.body);
// TODO: イベントを処理し、API経由でQuireまたは他のアプリを更新する
res.status(200).send('Event received');
});この例では、Webhookのルートは/webhookなので、完全なURLは${your-host}/webhookになります。
このWebhook URLをコピーし、Quireアプリの設定に貼り付けてください。これにより、Quireはあなたのアプリへイベント通知をどこへ送ればよいかを認識します。

さらに、同期したいプロジェクトのフォロワーとして、Quireアプリを登録する必要があります。これにより、あなたのアプリは関連する更新の通知を確実に受け取れるようになります。
Quire APIで通知を受け取る手順については、こちらのガイドをご覧ください。
他のアプリ側の更新をQuireと同期させるには、そのアプリからのWebhookイベントを受け取るルートもサーバーに作成する必要があります。登録の流れは、上記で示したQuireの例と似ています。他のアプリ側で、イベント通知が中間アプリのWebhookエンドポイントに送られるよう設定し、サーバー側でそれらの受信イベントを適切に処理できるようにしてください。
アプリがQuireと他のアプリの両方からWebhookイベントを受信できるようになったら、それらのイベントを処理し、2つのプラットフォーム間でデータを同期するロジックを実装する必要があります。これには通常、次の作業が含まれます。
受信したイベントを丁寧に処理し、API経由でデータを更新することで、両側の変更が正確に反映され、信頼性の高い双方向同期を維持できます。
Node.jsとaxiosを使った例を紹介します。
const axios = require('axios');
app.post('/webhook', (req, res) => {
const { type } = req.body.data;
// アクティビティタイプの参照:
// https://github.com/quire-api/quire-api/blob/master/docs/activity_types.md
switch (type) {
case 0: //Quireタスクが作成された
onQuireTaskCreate();
break;
case 1: //Quireタスクが削除された
onQuireTaskDelete();
break;
}
res.status(200).send('Event received');
});
// 他のアプリからQuireへのイベントを処理するルート
app.post('/anotherwebhook', async (req, res) => {
const { isCreate, id, name, projectId } = req.body;
if (isCreate) {
// Quireプロジェクト内にタスクを作成する
await axios.post(`https://quire.io/api/task/${projectId}`, { name });
// 必要に応じて、あなたのアプリのidとQuireのタスクidの対応関係を保存する
} else {
// マッピングロジックを使って対応するQuireのタスクidを取得する
const taskOid = getTaskIdByAppEventId(id, projectId);
// Quireプロジェクトからタスクを削除する
await axios.delete(`https://quire.io/api/task/${taskOid}`);
}
res.status(200).send('Event processed successfully');
});この例は、他のアプリからの作成・削除イベントを処理し、Quireと同期させる方法を示しています。適切なエラー処理を実装し、信頼できる同期のためにIDマッピングを維持するようにしてください。
安全のためのルールは2つあり、最初の実装で必ずつまずく失敗パターンをカバーしています。
オープンなAPIとWebhookを組み合わせることで、Quireとその他のツールは競合し合う2つの情報源ではなく、単一の信頼できる情報源になります。まずは最小限の同期(1つのイベントタイプ、1方向のみ)から始め、ループが端から端まで正しく機能することを確認してから範囲を広げていきましょう。
関連記事:Quire APIで外部ツールを連携する — n8nを例に — 独自サーバーを構築するより先に、ノーコードの自動化ツールから始めたい場合の実例です。
Quireでの変更が他のアプリに反映され、そのアプリでの変更もQuireに反映される、双方向の接続です。Googleカレンダー双方向同期アプリが実際の動作例です。
API認証情報を持つQuireアプリ、Webhookを受け取れるインターネットからアクセス可能な中間層サーバー、そして両方のAPI間でイベントを変換するロジックです。バックエンドの言語は何を使っても構いません。
Quireとほかのサービスをつなぐwebhookイベントを受け取り、どのAPI呼び出しを行うべきかを判断し、QuireのタスクIDと他のアプリのアイテムIDのマッピングを維持する、翻訳者のような役割を担います。
各変更の発生元を追跡し、自分自身の同期処理によって引き起こされた更新は無視するようにします。この対策がないと、あらゆる更新が2つのアプリの間を永遠に行き来し続けてしまいます。
Premium以上です。現在のティアごとの制限は料金ページで確認できます。