NetSuiteの処理パフォーマンス調査　Application Performance Management (APM)について

NetSuiteを活用してシステムを構築・運用していると、カスタマイズや多様なスクリプト、ワークフローを組み合わせる機会が増えてきます。その中で、システムパフォーマンスの問題は避けて通れません。  
本記事では、**NetSuiteの APM (Application Performance Management)** 機能を中心に、パフォーマンス調査や改善につながる活用ポイントを紹介します。

---

## APM概要

1. **Performance Health Dashboard (パフォーマンスの健全性ダッシュボード)**
   - スクリプトやワークフローなどの実行統計を一目で把握できる。
   - 過去のパフォーマンス履歴（トレンド）と現在の状況を比較可能。

2. **Suite Script Analysis (SuiteScript分析)**
   - User Event、Scheduled、RESTletなどSuiteScriptの実行状況を詳細表示。
   - CPU時間、メモリ使用量、実行回数、エラー発生状況をグラフやテーブルで確認。

3. **Search Performance Analysis (検索パフォーマンスの分析)**
   - 保存検索のパフォーマンス状況を可視化する機能
   - 遅い検索や実行回数の多い検索を特定し、システム全体のパフォーマンス向上を図る
   - ID、実行回数、平均処理時間、最大処理時間をグラフやテーブルで確認。

4. **Record Pages Monitor (レコードページモニター)/**
**Page Time Summary (検索パフォーマンスの分析)**
   - レコードページの表示速度を分析し、User Event Scripts やサブリストが読み込み遅延の原因になっていないか確認。
   - ページのカスタマイズやフォーム構成がパフォーマンスに与える影響を把握。

5. **Data Visualizations (データ可視化)**
   - 時間帯やユーザロールなどでフィルタリングし、より具体的なボトルネックを発見可能。

6. **アクセス権限の設定**
   - Administratorロール、もしくはAPM機能を利用できる権限が必要。
   - ロールごとにAPMの表示可否や編集可能範囲を調整。

---

## APM (Application Performance Management)とは

NetSuiteのAPM機能は、以下のような目的で利用されます。

1. **スクリプトのパフォーマンス分析**  
   - SuiteScript（User Event、Scheduled、RESTlet など）の実行時間やメモリ使用量・実行回数を可視化。

2. **ワークフローのパフォーマンス分析**  
   - ワークフローがどのように動作しているかを分析し、遅延やボトルネックを特定。

3. **ページ表示速度やシステム全体のパフォーマンス測定**  
   - 特定のレコードページやフォーム、保存検索の読み込みに時間がかかっていないかを可視化し、問題の切り分けをサポート。

これらの機能はそれぞれ専用の画面（Suite Script Analysis / Page Time Summery / Record Pages Monitor / ）で統合的に管理することができます。

---

## APM機能へのアクセス方法

APM機能はNetSuiteの特定メニューからアクセス可能です。ロールやUIによって多少異なりますが、一般的な手順をまとめます。

1. **メインメニュー** → **カスタマイゼーション** →  **Performance**
2. APMのダッシュボードが開くと、以下のセクションに切り替えられます。  
   - **Performance Health Dashiboard**: システム全体のトレンド・概要  
   - **Script Analysis**: スクリプトパフォーマンス状況  
   - **Page Time Summary**: ページ読み込み速度の分析 
   - **Search Performance Analysis**: 保存検索の読み込み速度の分析

※ 権限設定によってはAPMのメニューが表示されない場合があります。必要に応じて**Administrator**ロール、もしくはAPM利用が許可されたロールでログインしてください。

---

## APMで得られる主な指標

APMでは、以下の指標がグラフィカルに表示され、トラブルシューティングに役立ちます。

1. **Execution Time (実行時間)**
   - スクリプトやワークフローが完了するまでの時間  
   - ページ表示にかかる時間など

2. **Throughput (スループット)**
   - 単位時間あたりの実行回数や処理件数

3. **CPU Time / Memory Usage**
   - CPU時間やメモリ使用量の観点から、スクリプトロジックの効率性を分析

4. **Error Count / Error Rate (エラー数・エラー率)**
   - 特定のスクリプトやワークフローで頻繁に起きているエラーの把握

---

## 具体的な活用シナリオ

### 1. スクリプトのパフォーマンス問題を特定

- **Scenario**  
  大量のレコードを取り扱うスケジュールドスクリプトがタイムアウトやスロットリングを頻発。

- **APMでの分析**  
  - 「Script Analysis」で対象スクリプトの実行時間、CPU時間、メモリ使用量をチェック  
  - 検索回数が多い、ループが過剰などのボトルネック部分を特定  

- **対処例**  
  - `search.create()`を一度にまとめる、検索条件を見直す  
  - 高負荷処理を複数のスクリプトに分割  
  - バッチ処理のタイミングを調整し、競合を避ける  

### 2. ワークフローが思ったより遅い/多重実行している

- **Scenario**  
  複雑なワークフローを構築していたところ、処理が遅くユーザーからクレームが発生。

- **APMでの分析**  
  - 「Page Time Summary」で該当ワークフローの各ステップの実行時間やトランジション回数を可視化  
  - イベント（Create/Edit時など）の実施タイミングが重複していないか確認  

- **対処例**  
  - ワークフローをシンプルに統合・分割してみる  
  - 必要なステップだけ残し、条件分岐を厳密化  
  - 重複トリガーを排除  

### 3. ページ表示が重い

- **Scenario**  
  特定のカスタマイズレコードページが表示に数秒以上かかり、業務効率が低下。

- **APMでの分析**  
  - 「Page Time Analysis」でページ読み込みプロセスを確認  
  - 呼び出されるUser Event Scriptやサブリスト読み込みに時間がかかっていないか確認  

- **対処例**  
  - 画面ロード時に動くスクリプトを見直し、処理を最小化  
  - 初期表示のサブタブやサブリストを絞り、オンデマンドで展開する  
  - フィールド数やサブレコード数を適度に減らす  

---

## APM活用時のベストプラクティス

1. **定期的なモニタリング**  
   - リリース直後だけでなく、週1回・月1回など定期的にAPMダッシュボードを確認し、パフォーマンスの傾向を追う。

2. **チームでの可視化共有**  
   - APMのグラフやレポート結果をチームで共有することで、問題箇所を迅速に把握し、対策を協議しやすくなる。

3. **Sandbox環境との比較**  
   - SandboxでもAPMを利用できる場合は、本番とのパフォーマンス差や再現性を検証しやすい。

4. **Scriptログ / Workflowログとの併用**  
   - APMの統計情報だけでなく、各スクリプトのログやワークフローの実行ログを併用することで、原因特定をさらに絞り込む。

5. **最新ドキュメントの参照**  
   - APMはNetSuiteのアップグレードで強化されることがあるため、[公式ドキュメント](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/chapter_4283522055.html)を定期的にチェックし、追加・変更された機能を把握することが重要。

---

## まとめ

NetSuiteはERPからCRMまで幅広い機能を提供しているため、カスタマイズが複雑化すると、パフォーマンス課題が顕在化しやすくなります。そこで**APM (Application Performance Management)** 機能を活用することで、以下を実現できます。

- ボトルネックを可視化し、問題箇所を素早く特定できる  
- エラーの原因やCPU/メモリ過多を早期に把握・対処できる  
- チーム全体で同じデータを参照してスピーディに改善策を検討できる  

**ポイントは、APMの結果を定期的に確認して早期に対処することです。** ぜひ、[公式ドキュメント](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/chapter_4283522055.html)を活用しつつ、日々の運用や開発にお役立てください。

---

## 参考リンク

- [Application Performance Management (APM) - Oracle NetSuite Help Center (英語)](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/chapter_4283522055.html)  
- [SuiteAnswers (英語)](https://suiteanswers.custhelp.com/)  

本記事が、NetSuiteでのパフォーマンス管理に役立てば幸いです。
また、より具体的なお悩みがあるなどありましたら、コメント頂けますと更なる記事の改善を進めてまいります。必要に応じて機能毎のより深い解説をできたらとおもっています。よろしくお願い致します。:ear: