公開日:2024-12-15
この記事は Customine Advent Calendar 2024 15日目の記事です。
こんにちは!
gusukuのサポートの中の人のひとり、にらです。
今年もサポートにたくさんのご質問をいただきましてありがとうございました。
日々ご質問にお答えしていると「確かにこれは悩むところ」や「面倒だと思われてないかな…」など、いただいたお問い合わせに共感したり、心配したり。毎日わちゃわちゃしながら回答しています。
そんなサポートで今年多く回答したな~というご質問と、もしかすると思われている「なんでなん?」の真相についてご紹介します🎄
🎄🌟⛺🎄🌟⛺🎄🌟⛺🎄🌟⛺🎄
「Job Runnerの処理でAPIリクエスト数がめっちゃ増えたんだけどどうすればいい?」
今年に入ってご質問をいただいたり、別のお問い合わせをいただいた際に気になってお伝えした、Job Runnerのお悩みを紹介します。
定期実行タスクやkintoneアプリのWebhookのカスタマイズ(いわゆるJob Runnerのカスタマイズ)は、kintoneのAPIリクエストを少なくするための仕組みを持っています。
ですが、使用する「やること」「条件」によって、その仕組みの恩恵を受けられない場合があります。
カスタマイズの内容や処理対象のレコード数によってはその方法を選択できない場合もありますが、Job Runnerの処理でAPIリクエスト数をできるだけ少なく抑えたい…と思っている方は、ぜひ知っておいていただければと思います。
Job Runnerの処理でAPIリクエストを少なくするコツ
✨レコード更新は可能な限り「フィールドに値をセットする」などを使う✨
おすすめの やること は、「フィールドに値をセットする」や「フィールド値をまとめてセットする」です。
これらの やること は「使い方」に下記のように記載がある通り、アクションが実行されたタイミングですぐに kintone に値が反映されるのではなく、ジョブ内の全アクションが終了した時にまとめて反映されます。
そのため、APIリクエスト数が抑えられます。
https://docs-customine.gusuku.io/ja/job/actions/field/set_field_value/#使い方
この「やること」をセットしたアクションを実行すると、指定されたレコードに指定したフィールド値をセットします。フィールド値が元の値から変更される場合、レコードの保存が予約されます。変更されたレコードはすぐには保存されず、ジョブ内の全アクションが終了した後に自動的に保存されます
。
さらにこれらの やること は、更新先のレコードの値とセットする値が同じであれば更新を行わないため、無駄な更新を行いません。
このような仕組みを持っているため、APIリクエスト数を抑えたい時はこれらの やること を使っていただくのがおすすめなのです…!
✨「値が変更されているレコードを保存する」は必要な時だけ!✨
セットした値を続きのアクションで使用する必要がないならば「値が変更されているレコードを保存する」は不要です。
お問い合わせでお送りいただいたカスタマイズでよくあった間違いとして、
「フィールドに値をセットする」で値をセットするたびに「値が変更されているレコードを保存する」のアクションを設定されている事がありますが、これはほとんどの場合不要です。
「フィールドに値をセットする」は、前述のとおりジョブ内の全アクションが終了した後に自動的に保存されます。
そのため、「値が変更されているレコードを保存する」がなくても、セットした値は kintone に反映されます。
従って、kintone へセットした値の反映が全アクションの終了後のタイミングで問題なければ、「値が変更されているレコードを保存する」を使用する必要はありません。
逆に、このアクションが実行されたタイミングで保存が行われるため、APIリクエストが増えてしまいます。
セットした値を続きのアクションで使用する必要がある場合のみ、「値が変更されているレコードを保存する」を使用するようにしてください。
具体的に「値が変更されているレコードを保存する」が必要なケースとして、フィールドに値をセットして、セット後の値で集計を行いたい…のような場合が考えられます。
他にもポイントはありますが、まずは上記にご注意いただければと思います。
🎄🌟⛺🎄🌟⛺🎄🌟⛺🎄🌟⛺🎄
めっちゃ逆に質問してくるけどなんでそんな答えないとだめなん?
「〇〇をやりたいんですができますか?」とチャットにご質問いただいた時に、サポートから「これです!」と回答が返ってくることもあれば、「操作する画面はどれですか?」「テーブルの中のフィールドですか?」「ルックアップの他のフィールドのコピーに指定しているフィールドですか?」のように質問が返ってきて、
「質問してるのは自分のはずなのに、サポートの人がめっちゃ質問してくるのなんでなん…?」
と思ったこと、ありませんか?
私はそんな時「なんでそんないっぱい聞いてくるん?」とか、「答えるの面倒だな~」って思われてるんじゃないかな…大丈夫かな…と心配になりながら聞いています。
ただ、この質問攻めは正確な回答のために必要なことなのです…!
なぜならば、お問合せいただいた事を実現するために、どの「やること」「条件」をどのように組み合わせれば良いかは、様々な要素によって異なってくるからです。
たとえば…
- kintoneアプリの構成
- フィールドタイプは何?
- 計算フィールド?
- ルックアップ?
- ルックアップの「他のフィールドのコピー」に設定されている?
- テーブルの構成
- そのフィールドはテーブル内のフィールド?テーブル外?
- テーブル内にルックアップはある?
- テーブル内に添付ファイルはある?
- フィールドタイプは何?
- どの画面(詳細、追加、編集、一覧)で操作するのか
- どのタイミングでカスタマイズを実行するのか
- フィールドに値が入力されて値が変わった時?
- 画面を表示した時?
- ボタンを押した時?
- フォームブリッジなど外部サービスからレコードが追加・編集された時?
- 毎日、毎時 など決まった時間?
- どのレコード(テーブル)を対象に操作するのか
- 画面に表示されているレコード
- カスタマイズ対象アプリの他のレコード
- 他のアプリのレコード
- 画面に表示されているレコードのテーブル
- カスタマイズ対象アプリの別のレコードのテーブル
- 他のアプリのテーブル
- アクセス権の設定
- ログインユーザーの閲覧・編集権限はある?
- 編集権限がなくても更新したい?
- プロセス管理の設定
- 作業者は指定されている?
- 「アクションが実行できる条件」は指定されている?
- そのアクションの「アクション実行前のステータス」は何?
- 同じ名前のアクションが複数ある?
…などなど、たくさん並んでいますが、これはまだ一部です。
このように様々な要因で、使用できる(または向いている)やることや条件、またはその組み合わせが変わってきます。
例えばどのように回答が変わるかの例ですが…
ご質問の例:「テーブルの既存行に値をセットしたい」
パターン1:
- どの画面で操作しますか?
- 追加画面と編集画面
- セットするタイミングはいつですか?
- テーブル内のフィールドAの値が変わったときに、同じ行のフィールドBにセットしたい
- こんなカスタマイズになります
やること「フィールドに値をセットする」、
条件「フィールドの値を編集して値が変わった時」
パターン2:
- どの画面で操作しますか?
- 一覧画面
- セットするタイミングはいつですか?
- 一覧画面にボタンを表示して、そのボタンが押された時
- テーブル行に値をセットする対象となるレコードはどのレコードですか?
- 一覧画面にチェックボックスを表示して、選ばれたレコード
- 選択したレコードの、テーブル全行に同じ値をセットしたいのですか?
- いいえ、テーブルの中でフィールドAの値が「キャンプ」の行にだけフィールドBに「⛺」とセットしたい
- こんなカスタマイズになります
- やること「一覧で選択されたレコードを取得する」、
条件「ボタンを押した時」 - やること「テーブル付きでレコードを書き出す」で、1で取得したレコードを書き出す。その際に「書き出し対象テーブル行の条件になるフィールド(1)」にフィールドA、「比較値(1)」にキャンプと指定し、「テーブルに対するマッピング」でフィールドBに「⛺」を指定ください
条件は「他のアクションの実行が完了した時」です
このように、使用する「やること」「条件」がガラッと変わります。
このように、「〇〇できますか?」というシンプルなお問合せでも、正確な回答のためにユーザー様にはたくさんの質問への回答をお願いする場合があります。
面倒だなーと思われるかもしれませんが、お答えいただけると助かります!
🎄🌟⛺🎄🌟⛺🎄🌟⛺🎄🌟⛺🎄
ということで、サポートの中の人による、2024年サポートのお話でした🛸
来年も、皆様からのお問い合わせをお待ちしています!🌟🎄✨🎄
投稿者プロフィール
最新の投稿
- gusuku2024年12月15日サポートは今年(2024年)も楽しい
- gusuku2023年12月10日カスタマインで遊んでみた!神経衰弱
- kintone2023年7月27日例のあの本の新作を作るため、 RECAMP おだわらで合宿してきました
- gusuku2022年5月25日星野リゾートさま×アールスリー 勉強会 2022年春