
今回の目的
kintoneの各アプリに分散された情報。 例えば決済フォームを外部に持ち、その決済フォームがkintoneと連動していないケースに関する解決事例です。
今回ご紹介するのは、kintoneの一覧画面から直接起動できる「名寄調整」ボタンを実装し、モーダルUIを使って複数アプリに対する一括レコード更新を可能にした開発事例です。
単に名寄せにとどまらず、これは「キーに基づいてkintone全体の該当レコードを取得し、一括更新する仕組み」の汎用テンプレート。名寄せはその活用事例のひとつにすぎません。背景と目指す形
今回のご依頼元はNPOの支援団体さん。
NPOという特性上、寄付の管理が非常に重要です。このデータを持って寄付者様にお礼をしたり、領収書を発行したり、イベントのご案内をしたり、、、と、とても重要な情報管理。
必然的に寄付情報を様々なkintoneアプリで活用する構成になるわけです。

しかし、外部のデータベースで発行されたそれぞれのユニークキーをkintone内でもキーとして活用している場合、
外部データベースのキー変更に弱い
という問題が出てきます。今回はよくある事例として
・外部データベース側でユニークキーの変更が生じ、kintone内のユニークキーが破綻する |
という事象の改善です。今回、NPPさんが利用している決済システムの管理画面には「名寄せ」という機能があります。「マージ」などとも呼ばれているもので、決済データベースを運用されている方々にとっては割と馴染みのある響きかとおも割と馴染みのある響きかと思います。
ですが、外部データベースでマージしたものの、マージ後のデータをそのままいつも通りkintoneに放り込んでしまうと
・kintone内でユニークIDが存在しない
・同一人物なのに別IDで存在するため、kintone内では別人として扱われる
そんな不整合が発生します。当然と言えば当然で、外部システムはkintoneと連動しているわkと連動しているわけではなと連動しているわけではないので、当然マージ結果はkintoneに反映されません。つまり
kintone内でも同様の名寄せ処理をしてやる必要がある
というわけです。でもでも、ユニークIDはいろんなアプリで使われていて一つづつ確認しながらCSVでインポートエクスポートを繰り返して生合成を担保する、、、やってられませんよね?繰り返しの処理は人為ミスも発生します。
さらに名寄せを行う担当者はあまりITに親しみがなく、なるべく簡単に処理したい。というわけで、ボタンおポチポチでkintone内のデータベースをさくっと綺麗にしましょう、という運びです。
考え方は超簡単!
要は外部データベースでのユニークIDの変更を適用させてあげればOK。
kintone内で変更前のユニークIDを持つレコードのIDを新しいものに上書きしてやれば良い。
となると、kintone側でマージをするときに欲しい情報は「以前のID」と「新しいID」だけ。となると、やることはこれだけ。

あとは更新の対象となるアプリを事前に組み込んでおくだけですね。
実際の組み込みについて
先ほどの基本設計のレコード取得対象と上書き対象のアプリをプログラム内でマッピングしてあげれば、実行者は「以前のID」と「新しいID」を入力するだけで、ポチポチっとkintone全体の上書きができるという算段です。

これを具体化してみると

という非常にシンプルな構成に。元になるIDと新しいID(書き換えたいID)を指定して実行するだけ。
今回はたまたま名寄せだっただけ
この仕組みは何も「名寄せ」専用ではありません。
本質的には、以下のような処理を支える汎用フレームワーク。
- 特定のキー(文字列、IDなど)を軸に
- 複数アプリを横断して
- レコードを一括取得し
- 任意のフィールドを一括更新する
- 担当者異動の際の担当者名更新
→ 顧客管理、問い合わせ対応履歴、案件進行中の記録などに紐づいた「担当者名」を、旧担当者から新担当者へ一括で更新。- 支部や部署名の統一
→ 同じ支部であっても「大阪支社」「大阪営業所」「関西ブロック」など表記がバラバラになっているケースで、統一表記に変換。- 入力ミスによる不正コードの訂正
→ 例:「A001」ではなく「AO01」と誤って登録されていたコード値を、正しいコードへ一括修正。人的ミスのリカバリに活用。- 統計分析やBI連携前の前処理
→ データを集計・分析する前に、表記ゆれやカテゴリ分けの誤差を調整し、整ったデータとして統一するための下処理。