45
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

現場主導で業務改善を進められるツールとして、サイボウズ社が提供するkintone は高い人気を誇っています。
紙やExcelで管理していた情報をクラウド化して共有し、組織のコラボレーションを活性化できることが魅力です。

一方、実際の運用ではこんな課題がよく出てきます。
「商品マスタや顧客マスタは基幹システムで管理しているので、その最新情報をkintoneにも反映したい」
例えば、営業チームがkintoneで案件管理や見積作成をしている場合、商品情報や顧客情報が古いままだと、誤った情報で提案してしまうリスクがあります。
そのため、外部システムで管理しているデータを、常に最新の状態でkintoneに取り込む仕組みが必要になります。

InformaticaIDMCは、データベースやアプリケーションなどに接続するための豊富なコネクタを持っています。
汎用コネクタであるREST V2コネクタを使えば、それらのデータをkintoneに連携することが可能になります。
この記事では、REST V2コネクタを使って、kintoneへのデータ登録を実装していきます。

kintoneへのデータ連携を検討されている方はもちろん、REST V2コネクタの使い方を知りたい方も是非ご覧ください。

kintoneからのデータ出力は以下の記事から。

kintone環境について

登録先のアプリは、「出力編」で作った支出管理のアプリを使います。

一覧画面
image.png

レコード表示画面
image.png

フィールド定義

フィールド名 フィールドコード タイプ 備考
レコード番号 Number 数値 重複禁止
店舗名 StoreName 文字列(1行)
日付 Date 日付
明細 Detail テーブル
明細-項目 Item 文字列(1行)
明細-金額 Price 数値
合計金額 TotalAmount 計算 計算式:SUM(Price)

実装

実装の流れ

REST V2コネクタを使ったデータ連携は、以下の流れで実装していきます。
(出力編と同様です。)

  • API仕様の調査(重要!)
  • Swaggerファイル作成
  • 接続定義作成
  • マッピング実装

kintoneのAPI仕様の調査

「出力編」でも書いた通り、APIを用いたデータ連携では、API仕様の理解がとても重要です。
登録を行うAPIではBodyにJSON構造でデータを記述するため、出力の場合よりもレコード構造の理解が求められます。

今回は、「複数のレコードを更新する」APIを用いて、新規レコードの登録(INSERT)と既存レコードの更新(UPDATE)を同時に行うUPSERTの処理を作ります。

いくつかのポイントを押さえます。

UPSERT

UPSERT(レコードが存在しない場合に、レコードを新規登録する)をするには、以下のパラメータを追加します。

{"upsert": true}

また、レコードのUPDATEキーの指定が必要です。

{
    "records": [
        {
            "updateKey": {
                "field":<UPDATEキーのフィールドコード>,
                "value":<UPDATEキーの値>
            }
        }
    ]
}

UPDATEキーに指定できるフィールドは、重複禁止を設定した「文字列(1行)」または「数値」フィールドのみです。

Body

今回の山場です。
PUTはRequestのBodyをJSON形式で書く必要があります。
フィールドタイプごとに記述方法が異なるので、ドキュメント必須です。
特にテーブルフィールドは構造が複雑になるので、簡単に試すならテーブルなしがおすすめです。

初めのうちは、POSTMANなどを使いながらトライアンドエラーで作成します。

以下は、支出アプリを更新するためのボディです。

request.json
{
    "app":10,
    "upsert":true,
    "records":[
        {
            "updateKey":{
                "field":"Number",
                "value":8
            },
            "record":{
                "StoreName":{
                    "value":"ライフライン"
                },
                "Date":{
                    "value":"2025-12-08"
                },
                "Detail":{
                    "value":[
                        {
                            "value":{
                                "Item":{
                                    "value":"水道"
                                },
                                "Price":{
                                    "value":3000
                                }
                            }
                        },
                        {
                            "value":{
                                "Item":{
                                    "value":"電気"
                                },
                                "Price":{
                                    "value":10000
                                }
                            }
                        }
                    ]
                }
            }

        },
        {
            "updateKey":{
                "field":"Number",
                "value":9
            },
            "record":{
                "StoreName":{
                    "value":"交通費"
                },
                "Date":{
                    "value":"2025-12-09"
                },
                "Detail":{
                    "value":[
                        {
                            "value":{
                                "Item":{
                                    "value":"定期"
                                },
                                "Price":{
                                    "value":30000
                                }
                            }
                        },
                        {
                            "value":{
                                "Item":{
                                    "value":"チャージ"
                                },
                                "Price":{
                                    "value":10000
                                }
                            }
                        }
                    ]
                }
            }
        }
    ]
}

では、POSTMANで実行してみます。

ヘッダーにAPIトークン(X-Cybozu-API-Token)を指定します。
image.png

GETと異なり、アプリIDはBodyに含めます。
image.png

無事、更新成功しました。(テーブルの書き方のミスで、数回エラーを吐きました...)
image.png

Swagger ファイル作成

IDMCを使ってSwaggerファイルを作成していきます。

IDMCにログインし、「管理者(Administrator)」を開きます。
image.png

「Swaggerファイル」メニューから「新規」を選択します。
image.png

API接続の情報を入力します。
先ほど、POSTMANで実行した際の情報をそのまま活用できます。
image.png

設定を保存すると、Secure AgentがkintoneのAPIを実行し、リクエスト/レスポンスをもとにSwaggerファイルを自動生成します。
追加・更新系のSwaggerファイルを作成する際は、kintoneのレコードが追加・更新されることに注意してください。

Swaggerファイルの配置

Swaggerファイルをダウンロードし、Secure Agentに配置します。

REST V2コネクタの作成

「接続」メニューから「接続の追加」を選択します。
image.png

REST V2コネクタを選択し、接続情報を設定します。
image.png

  • 主な設定値
    • Authentication:API Key
    • Swagger File Path:Secure Agent上のSwaggerファイルのパス
    • Key:X-Cybozu-API-Token(そのまま)
    • Value:(kintoneのアプリ設定で取得したAPIトークン)
    • Add API Key to:Request Header

「テスト」し、成功したら「保存」します。

マッピング作成

ここからは通常のマッピング実装と同様です。
kintone連携特有のポイントに絞って解説していきます。

ソースファイル

ヘッダーと明細で、ファイルを分けて配置しています。

in_header.csv
"KEY","RecordNumber","店舗名","日付"
"1",10,"アパレル店","2025/12/10"
"2",21,"ガソリンスタンド","2025/12/15"
"3",22,"高速道路料金","2025/12/15"
in_detail.csv
"FKEY","項目","金額"
"1","コート",50000
"1","鞄",30000
"1","スニーカー",20000
"2","ガソリン",5000
"3","往路",2000
"3","復路",2000

アパレル店は更新、ガソリンスタンドと高速道路料金は追加です。

1つのファイルにヘッダーと明細を含めた場合も、データ登録処理は可能です。
また、アプリケーションやデータベースなど、様々なデータソースからkintoneに登録できます。

接続情報

式トランスフォーメーションで、接続に必要な項目を定義します。
image.png

  • 追加フィールド
     - app:アプリID
     - XCybozuAPIToken:APIトークン
     - upsert:"true"
     - updateKey:UPDATEキーのフィールドコード

今回は簡易的な実装のため接続情報をコード内に直接記載しています。しかし、本来はセキュリティや保守性の観点から、入出力フィールドを使ってパラメータ化することが望ましいです。

日付フォーマット変換(おまけ)

kintoneの日付フォーマットは「yyyy-MM-dd」です。
ファイルの日付は「yyyy/MM/dd」なので、これを変換する式を作ります。
通常、変換のための式は組み込み関数を使って記述しますが、今のIDMCではAIに任せられます。

式トランスフォーメーションの式を記述する画面です。
「Generate Expression」というボタンがあります。
image.png

変換したい内容を自然言語で記述します。
image.png

すると、組み込み関数を使った変換式が生成されます。
image.png

ターゲット

フィールドマッピングでCSVの項目とAPIの項目をマッピングします。
(Dateの値は、先ほど作成したフォーマット変換後のフィールドをマッピングします)
image.png

作成したマッピング

image.png

実行

マッピングを保存し実行します。

結果確認

無事、レコードの更新と新規登録がされました。

実行前

レコード一覧
image.png

レコード詳細
image.png

実行後

レコード一覧
image.png

レコード詳細
image.png

おわりに

以上、kintoneにデータを登録する流れの説明でした。
kintoneはエンタープライズ企業でも導入されるケースが増えており、Informaticaの接続先として名前があがることも多くなっています。

Informaticaを活用することで、複雑なシステム間連携をノーコードで実現し、最新データを常にkintoneに反映させることが可能です。

Informaticaと組み合わせることで、kintoneを最新データを活用できる業務プラットフォームへと進化させましょう!

参考

45
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
45
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?