データベースとの通信や外部システムとの連携での使用が想定されるサーバーサイドの処理は、システム全体の安定性やパフォーマンスに影響する可能性があるため実装には注意が必要です。
複数人で開発するアプリケーションの保守性を高めるためには、実装した内容の可読性が重要になります。可読性の高さはシステム改修などのメンテナンス時に影響するため、下記のような開発ルールを定義することを推奨します。
オブジェクトのフォルダー構成
ナビゲーションウィンドウで管理される各オブジェクト(サーバーサイドコマンド、スケジュールタスクなど)は、処理ごとにフォルダーを分けて管理します。下図のように、「予算」と「実績」のフォルダーを作成し、処理ごとに整理します。適切にフォルダーを分けることで、管理や保守の効率を向上させることができます。
複雑なコマンドやデータベースの更新処理を行うコマンドなど、アプリケーションにおいて重要な役割を担うコマンドには下図のように説明を入れます。
サーバーサイドコマンドで実装した処理を運用時に安全に安定して実行するには、データ処理に対する適切な管理とセキュリティの考慮が必要です。
権限設定
アプリケーションの利用における統制や安全性には適切な権限設定が不可欠です。データベースのデータに対するデータアクセス権限を適切に設定します。
エラーハンドリング
コマンドの処理で発生するロジック上のエラーを適切に処理するエラーハンドリングを行うは、例外処理コマンドが利用できます。また発生したエラー内容をユーザーにわかりやすく通知することも必要です。わかりやすい通知により問題発生時の迅速な対応が可能になります。戻り値はリターン(コマンドの終了)コマンドを使用して設定します。
戻り値の標準化
コマンドを実行した結果の戻り値には、任意のリターンコードとリターンメッセージが設定できます。戻り値に設定する値を標準化することを推奨します。標準化されていない戻り値は調査に時間を要す原因となります。
外部連携
サーバーサイドコマンドやOData関数は、外部から呼び出すことが可能です。これらが不正にアクセスされることを防ぐため、外部からの呼び出しを想定し、適切な認証設定を行ってください。セキュリティに関する詳細はセキュリティを参照してください。
公開/非公開の設定
サーバーサイドコマンドが外部システムやクライアントからのリクエストではなく、同一サーバー上にある サーバーサイドコマンドやスケジュールタスクからのみ呼び出される場合は、[非公開]オプションを有効にします。
テーブルデータの一貫性や完全性を保つことは業務システムの適切な運用において非常に重要であり、テーブルデータを操作する処理を実装する場合は常に意識しておく必要があります。
データの一貫性
トランザクション
データベースにおいて矛盾のない一貫したデータ処理を行う基本的な手法にトランザクション処理があります。Forguncyでは、サーバーサイドコマンド実行時における一連のデータ操作に対してトランザクションコマンドを使用することで、業務データの整合性が保証されます。
トランザクションの分離レベル
トランザクション分離レベルは、複数のトランザクションが同時に実行される環境において、各トランザクションが他のトランザクションからどの程度影響を受けるかを定義します。適切な分離レベルを選択するには、アプリケーションの特定のシナリオや要件を考慮する必要があります。分離レベルが低いほど並行処理の性能は向上しますが、データの一貫性が損なわれる可能性があります。一方で、分離レベルを高く設定するとデータの一貫性は確保されますが、並行処理の性能が低下する可能性があります。
データ処理内容に応じた適切なコマンドの選択
テーブルデータの更新処理を行う方法として下記のコマンドが用意されています。
テーブルデータの更新コマンド
ストアドプロシージャーの呼び出しコマンド
SQLクエリーの実行コマンド
テーブルデータの更新コマンドは、基本的なデータの更新処理に適しており、ユーザーが入力した値の更新や少ない件数のレコード更新で使用します。
一方、時間がかかる複雑なロジックや大量のデータ更新を伴う処理では「ストアドプロシージャーの呼び出し」コマンドや「SQLクエリーの実行」コマンドを使用します。これら2つのコマンドはデータベース側の処理として実行されるため、高いパフォーマンスが期待できます。ただし、これらの実装はデータベースに関する経験が豊富な方が行うようにしてください。