CRUD Lab. Tech Blog

ギークス株式会社の沖縄開発拠点CRUDLab. (クラッドラボ)のIT技術(テック)ブログ。kintoneやAngularJSによる開発を行っています。

【kintone】kintoneへのデータ移行に関するケーススタディ

0. 目次


1. 概要

ギークス株式会社CRUD Lab.のATSUSHIです。

今回は、kintone環境へのデータ移行について考えてみたいと思います。 kintoneは直感的にGUI上にフィールドを配置してアプリを簡単に構築できますが、 既存システムからの移行においては、事前に検討しておきたいポイントがあります。 では、例を元に説明していきます。


2. ケーススタディ

非常にシンプルですが、企業情報を管理しているデータベースをkintone環境に 移行する場合です。

下図に示すシステムは、「クライアント情報」テーブルに、「業界マスタ」、「取引ステータス」テーブルを紐付けて、企業の業界種別/自社との取引状況を管理しています。 企業情報を表示する場合は、それぞれのテーブルから文字情報を紐付け表示を行います。

f:id:crud_lab_editor:20160524185010p:plain

業界マスタとの関連付け

それでは、kintoneアプリで作成した「クライアント情報」にどうやって「業界マスタ」を関連づけるかを考えてみます。以下の3パターンが挙げられます。

  • 文字列フィールドで文字入力をしてもらう
  • ドロップダウンフィールドで選択式にする
  • ルックアップフィールドで検索させる

マスター系のデータをkitnoneで扱う場合は、具体的にどういった使われ方/管理の仕方をするかによって 紐付け方を検討する必要がありますが、「文字列フィールド」は今後のクライアント情報へのレコード追加や 集計を考えた場合にはあまりお勧めできません。データの件数やマスタが管理している情報量によってドロップダウンフィールドかルックアップフィールドを使い分ければよいかと思います。

※ JavaScript API を活用して上記とは別のデータの紐付け方も考えられますが、方法については割愛します。

ドロップダウンフィールドの場合

この場合、もともと持っていた"id"の情報が移行できません。 移行の際は、kintoneアプリ上にドロップダウンを作成して、業界マスタのすべてのレコードの"name"を登録します。 その後、SQLやexcel/スプレッドシートなどで、2つのテーブル(クライアント情報/業界マスタ)を関連づけた情報を作成してcsvアップロードをします。

f:id:crud_lab_editor:20160524185031p:plain

ルックアップフィールドの場合

業界マスタのアプリを作成しておき、ルックアップフィールドで関連付けを行います。 移行前のクライアント情報では、"id"をキーとして関連づけを行っていたので、ルックアップフィールドに"id"を紐付けるのも手かを思いますが、"name"を紐付けることで、新しいデータを登録する際は業界マスタからの検索が容易になります。(idを覚えていることは難しいかと...)

※ この設定を行うには、"name"フィールドの値が他のデータと重複していないことが前提です。csvで移行データを一括登録する際に、システムがどのデータと紐付けを行うか判断できないため登録ができなくなります。

f:id:crud_lab_editor:20160524185045p:plain

取引ステータスとの関連付け

「取引ステータス」が保持している内容が段階を示していたり、誰かの承認によって変更される場合はkintoneのプロセス管理を利用することも考えられるかと思います。もしくは、ラジオボタンフィールドを利用して表現することも可能です。こちらもまた、具体的な使われ方によっていずれかを選択する必要があります。

ラジオボタンフィールドの場合

前項で説明したドロップダウンフィールドのケースと同じく、kintoneアプリ上にラジオボタンフィールドを作成して取引ステータステーブルの"name"をすべて登録し、クライアント情報にステータス名が追加された情報を作成してcsvアップロードします。

f:id:crud_lab_editor:20160524185103p:plain

プロセス管理を利用する場合

いままで説明した手法とは別の手順を踏みます。 まずは、アプリのプロセス管理でプロセスをワークフローに沿って作成します。その後、一旦csvで移行対象のデータをアプリに登録し、ステータスを手動 / restful apiを使用して各レコードに反映していきます。 大量のレコードを移行する場合には、移行スクリプトを作成してrestful apiで一括更新させるのがよいと思います。

f:id:crud_lab_editor:20160524185200p:plain f:id:crud_lab_editor:20160524185120p:plain


3. まとめ

kintone環境にデータを移行する場合は、綿密な移行計画を立てることをお勧めします。 本稿では、関連付けられたデータ構造に着目して検討するべきポイントの一部を紹介しました。

マスターデータをどうやってkintone上にコンバートしていくかは、
紐付けられたデータがどのように使われていくかを再度検討する必要がありますし、kintoneの主なデータ移行方法であるcsvアップロードだけでは賄えないデータがあるかないか事前に調査をしておく必要があります。

5月のkintoneアップデートでは、rest apiに新しい機能が追加されました。

  • レコード番号以外のキー項目でレコードの(一括)更新
  • ステータスと作業者の更新

こういったリリースはデータ移行を考える際にありがたい機能です。