業務の隙間を埋める技術メモ。

「それ、作れるか?」より 「それ、作って大丈夫か?」を考えたい。 業務で“ちゃんと使える”かどうかを、 実際に手を動かして確かめたログを残しています。

効率的なSuiteScript生成:NetSuiteカスタムレコード

 

この記事で分かること

  • NetSuiteでのカスタムレコードの作り方(基本手順)

  • DB設計を踏まえた正しいデータ構造の考え方

  • トランザクションを親にした子レコード設計の方法

  • パフォーマンスを意識した実装(同期・非同期の使い分け)

  • SuiteScriptをAIで効率的に生成する方法


NetSuiteのカスタムレコードとは

NetSuiteのカスタムレコードとは、標準機能では管理できない業務データを扱うための拡張機能です。

例えば以下のようなケースで利用されます。

  • 入金予定管理

  • 承認フロー管理

  • 独自マスタ管理

ただし、
👉 設計を誤ると後から修正が難しくなるため、最初の設計が非常に重要です。


カスタムレコード設計で最も重要なポイント(DB設計)

■ 結論:設計せずに作り始めない

NetSuiteでカスタムレコードを作る際に最も重要なのは、

👉 UI操作の前にデータ構造(DB設計)を決めることです。

設計をせずに進めると、以下の問題が発生します。

  • フィールドが増え続ける

  • データ構造が複雑になる

  • パフォーマンスが低下する


■ 入金予定管理の設計例

請求書に対して複数の入金予定を持たせる場合、以下のような構造になります。

請求書(トランザクション)
  └ 入金予定(カスタムレコード)
        ├ 入金予定日
        ├ 入金予定額
        ├ 入金実績額
        ├ 消込フラグ

👉 これは一般的なリレーショナルデータベースと同じ「親子構造」です。


■ よくある設計ミス

  • カスタムフィールドで無理やり管理する

  • サブリスト的な構造を再現しようとする

👉 複数データを扱う場合は必ず子レコードに分離するのが基本です。


NetSuite カスタムレコードの作り方(手順)

① カスタムレコードの作成

  • レコードID:customrecord_ar_receipt_plan

  • 名前フィールド:不要(OFF推奨)

👉 ID設計は後から変更しづらいため、命名ルールを決めておきます。


② フィールド定義

以下の項目を作成します。

  • 親トランザクション(List/Record:Transaction)

  • 入金予定日(Date)

  • 入金予定額(Currency)

  • 入金実績額(Currency)

  • 消込フラグ(Checkbox)


③ 親子関係の設定(重要)

  • 親レコード:トランザクション

  • サブリスト表示:有効

👉 これにより請求書に紐づいたデータとして管理できます。


④ フォームにサブリストを追加

  • 請求書フォームにカスタムレコードを表示

👉 設定漏れが多いポイントなので注意が必要です。


トランザクションを親にするメリット

■ 請求書だけでなく注文書にも対応可能

トランザクションを親にすると、

  • 請求書(Invoice)

  • 注文書(Sales Order)

の両方に紐づけることができます。


■ 前受け金・売掛金を同一構造で管理

注文書(トランザクション)
  └ 入金予定(前受け金)
請求書(トランザクション)
  └ 入金予定(売掛回収)

👉 キャッシュフロー管理を統一できるのが大きなメリットです。


■ 設計上のメリット

  • データ構造を統一できる

  • SuiteScriptを共通化できる

  • レポート設計がシンプルになる

👉 拡張性の高い設計になります。


パフォーマンス対策(同期・非同期の使い分け)

■ よくある問題

  • 保存時に大量の子レコード更新

  • 同期処理で実装

👉 保存処理が遅くなる原因になります。


■ 同期処理(UserEvent)

  • 即時反映される

  • 処理が重くなりやすい


■ 非同期処理(Map/Reduce / Scheduled)

  • 大量データ処理に強い

  • リアルタイム性は低い


■ 推奨パターン

👉 保存時は軽く、重い処理は非同期に分離する

例:

  • 保存時:フラグ更新のみ

  • バックグラウンドで再計算


■ 実務構成

  • UserEvent:トリガー

  • Map/Reduce:データ更新

👉 パフォーマンスと安定性のバランスが取れます。


SuiteScriptをAIで自動生成する方法

■ 実際に試した結果

👉 適切なプロンプトで高精度なコード生成が可能です。

  • CRUD処理はほぼ自動化可能

  • 開発効率が向上


■ 注意点

  • NetSuite特有仕様の抜け

  • ガバナ制限未考慮

👉 必ずレビューが必要です。


■ 精度を上げるプロンプトの書き方

  • レコード構造を明記

  • 処理フローを具体化

  • 制約条件を記載


■ 有償版の必要性

👉 無料版では精度が不足するケースがあります。

  • 長文仕様に弱い

  • コンテキスト不足

👉 実務では有償版が現実的です。


まとめ:NetSuiteカスタムレコード設計のポイント

  • カスタムレコードはDB設計が最重要

  • 親子構造で設計する

  • トランザクションを親にすると汎用性が高い

  • パフォーマンスは非同期前提

  • AIは効率化に有効だがレビュー必須


関連記事(内部リンク用)

  • NetSuite 入金消込の設計方法

  • SuiteScript 実装パターン集

  • Suitelet UIの作り方