キンコミ kintone user community

みんなの投稿

2020/11/05 11:14

はじめまして。
KINTONE超初心者の鈴木と申します。

初歩的なことなのですが、知恵を貸していただけましたら幸いです。

Aアプリにたくさんのレコードがあり、Bアプリには様々な検索条件のみを登録します。その検索条件に基づいてCアプリにデータを出力し、Bアプリの関連連コードとして表示するというプログラムを考えています。

プログラムはJavaScriptを用いてGET、POSTで処理すればよいだろうと想定したのですが、大量のデータを一日に何度も読み書きすると、APIの呼出し制限10000件にひっかかる恐れがあることがわかりました。

具体的には十万件以上あるレコードの中から、毎回異なる条件でデータを抽出してリストを生成するのが目的です。

実際にこのような大量のデータを検索して処理するというのは、KINTONEでは難しものでしょうか。

3件のコメント (新着順)
キンスキ松井
2020/11/06 22:57

鈴木さん

初めまして、運営事務局のキンスキ松井です。
キンコミを活用いただきありがとうございます!
今後ともどうぞ宜しくお願いします^^

超初心者と書かれつつも、開発にトライされていてスゴイですね!
システムには慣れていて、kintoneには初めて触れられているのかなと想像しました。

今回の内容ですが、サイボウズのパートナーにご相談いただくのも良いと思いました。
投稿を拝見すると、背景を確認しつつアプリ構造から考える必要がある内容に感じました。
開発者向けコミュニティの「cybozu developer network」もありますが、コミュニティでは限界もある内容かもしれません。

サイボウズのパートナーには、お客様自身の構築をサポートする企業もいます。
こちらのフォームからご相談いただくと、ご要望にあったパートナーも紹介できますので是非ご活用ください。
https://cybozu.co.jp/products/partner/consulting/

また、キンコミですが、開発を主としない内容を扱っております。
「大量データを扱うアプリの運用はどうしていますか?」のような、運用ノウハウを他ユーザーさんに聞いてみたい。
このような場合には是非キンコミを活用いただき、皆さんと交流を深めてもらえればと思います^^


鈴木拓
2020/11/10 09:04

ありがとうございます。
現在、KINTONEでどこまで可能かという検討をしていますが、最終的な開発は外部への委託を検討したいと思っています。
まだまだ手探り状態で、皆様のご意見はとても参考になります。
今後ともよろしくお願い致します。

鈴木さん

拝見した仕様は、

・データ量が多い(十万件以上)
・アプリの間の連携(標準機能外)

という点で、kintoneには、難しいといいますか、正直ちょっと向いてないかなと感じます。
仮に件数や連携をクリアしてもkintone内で処理をすると希望のレスポンスが得られないかもしれません。

ただ、「社内のデータ一元化をkintoneで」という事なのですね。
わかります。
散在した色々な情報をひとつに、kintoneに集約したいとの要求なのかなと思います。

ローテクですが、例えば社内イントラの各URLをkintoneアプリのラベルフィールドに入れたり、リンクフィールドに入力するという方法で、一元化と言い張る方法もあります。^^;

リンクフィールドについては、JavaScriptでURLクエリパラメータを加工するなど工夫したら、結構連携っぽくなりますし、それで十分なケースもあります。

たしかに、kintoneをあらゆるシステムのHubとして使う、フロントエンドとして使うという考え方もありますので、そういう意味では、Oracleなどのデーターベースをエンジンに、JSPなどでイントラWebページを作成、Webの検索結果のみを、随時または定期的にkintoneへcsv取り込みする方法もあるかもしれません。

CSV入出力には「cli-kintone」というコマンドラインツールがあります。
https://developer.cybozu.io/hc/ja/articles/202708214-kintone-%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3%E3%83%84%E3%83%BC%E3%83%AB

真正面から取り組むなら、連携サービスの利用が適当かと。
私自身が触ってないサービスもありますので恐縮ですが、関連すると思われるリンクをご紹介します。

鈴木さんの仰る通り、「CData Sync」はいいかもしれませんね。
鈴木さんなら、使い慣れたSQLで作業できるので魅力的な選択肢かも。

Kintone Data Sync
https://www.cdata.com/jp/drivers/kintone/sync/
CData Drivers for kintone
https://kintone-sol.cybozu.co.jp/integrate/cdata001.html

あと、他システムとの連携アダプタとして、「ASTERIA WARP」というのがあります。
ASTERIA WARP Core
https://kintone-sol.cybozu.co.jp/integrate/asteria001.html

また、データ連携としては「DataSpider」というのもあります。
DataSpider Servista kintoneアダプタ
https://kintone-sol.cybozu.co.jp/integrate/appresso001.html

複数アプリ間のデータ集計・計算という観点なら
トヨクモさんの「データコレクト」が利用できるかもしれません。
https://dc.kintoneapp.com/

kintoneアプリのデータ連携なら「krewData」は定番です。
https://krew.grapecity.com/products/krewdata.htm
2020年11月5日発売のリアルタイム実行プランは魅力的
https://krew.grapecity.com/news/newsrelease/20201028.htm
でも、レコード数の上限には気を付けて
https://docs.krew.grapecity.com/krewdata/krewdata_limitations.html

連係サービスでも、APIで大量のデータ更新をすると10,000件の壁に引っかかる場合がありますので注意が必要です。

ただ、上限値(10,000)になった背景は、「安定したサービスを継続的に提供していくため」との事ですので、そこのご理解もあれば嬉しいかと。

みんなで使ってるサービスなので大事にしていきましょう。^^

安定したサービスの継続的な提供に必要な仕様変更を実施
https://kintone.cybozu.co.jp/update/main/2020-07.html#point8

参考になれば幸いです。


鈴木拓
2020/11/06 09:12

西村さん、ご丁寧にありがとうございます。
ご助言を拝見して、やはりKINTONE単体というよりは、連携サービスを検討するのがベターのように思いました。
連携アダプタもいろいろとあるんですね。
連携でも仰る通りAPIリクエストの制限にかかってしまうケースもあるということで、焦らずしっかり確認して進めて参ります。
まずはご紹介いただいたサービスを確認してみます。
本当にありがとうございます。

鈴木さん
NSAS平野と申します。

API呼び出し制限1万件の制限ですね。GETでSQL文の条件で絞り込みができれば
対応は可能だと思います。何回もSQL文を1レコードずつ発行するとだめですね。
(案1)
  1回のGETで条件設定で500件レコード抽出ができますので、単純計算で
  1万回SQL発行したら、500万件レコードの抽出が可能ですね。

  弊社お客様で4年間のデータで150万件以上のデータ/1アプリから
  期間と拠点名で抽出して5万程度のレコード抽出し、7拠点+本部レポートを出力する処理を
  毎月実施しています。
(案2)
  レコードが余りに大きくSQlも10000件超えそうな処理が発生しそうな場合は
  アプリを分ける方法もあるかと思います。
  ある条件のデータをAアプリ、条件以外のデータをBアプリにデータを分けて
  アクセスするアプリを分け、SQl1万件/1アプリを回避する。
(案3)
  最悪はAPIでなく、kintoneアプリの標準機能でCSV抽出してローカルで処理。

(案3)は前記(案1)の年間レポート作成時に50~60万件のレコード処理してレポート出力しますので
   ローカルにCSVをダウンロードして、CSVファイルを読み込んで処理しています。
   この方が処理が速いですね。
ご参考になるかどうか。ご検討ください。


鈴木拓
2020/11/05 17:01

平野さん、ありがとうございます。
現在想定している内容だと、SQLでも1万回を超えてしまいそうです。
複数条件で取り出したものを、またマージして重複を除外して、別の出力用アプリに入れるということを想定していました。
CSVを毎回出して処理すると、その出力実績を最新に更新してまた抽出するという作業がとても煩雑になりそうな気がしています。
あとは、CDataSyncを経由して外部のDBにデータをコピーし、そこで別のアプリを作成するという方法も検討すべきかもしれないと思っています。
現在、社内のデータ一元化へ向けて調査を始めた段階で、まだまだ手探りですが、KINTONEを中心に据えてよい仕組みを構築できればと考えています。
お忙しい中、ご丁寧に助言をいただき、本当にありがとうございます。