Node サービスで再計算
サーバー側の Node サービスで、アップロードされたワークブックや社内で生成したワークブックを再計算し、値・診断結果・保存済みファイルを返すパターンです。ソースツリーからプラットフォーム別バイナリをビルドして配置できるなら Native Node、移植性を優先するなら WASM を選びます。
実行入口はデプロイ条件で選ぶ
Native Node はワークブックのバイト列を WASM ヒープへコピーせずに済みますが、対象プラットフォームごとに packages/npm-native からビルドした .node バイナリが必要です。WASM はどの Node 環境にも同じ方法で配置できます。数式の結果は一致するはずなので、違いがあれば不具合または文書化された互換性差分として扱います。
流れ
実行入口の選択
| 条件 | 推奨 |
|---|---|
| 大きなワークブックを高頻度で処理し、配布環境を管理できる | Native Node |
| サーバーレスや移植性重視の Node 配置 | WASM |
| ブラウザアップロードと同じコード経路を使いたい | WASM |
| プラットフォーム別ネイティブバイナリを今は用意したくない | WASM |
Native Node と WASM は計算処理の流れを共有しますが、Workbook のメソッド構成は同一ではありません。テーブル作成、AutoFilter XML、addCellStyleXf が必要な場合は、選択前に パッケージと実行入口 を確認してください。型付き AutoFilter と setCellStyle は両方で使えます。状態確認と明示的な解放を含むサービス向けの例は Native Node 連携 にあります。
サービス境界
API 境界では、再計算の結果を再現するための条件を明示します。
- 読み込み前にファイルサイズのポリシーを確認し、読み込み後にセル数のポリシーを確認する。
- エンジンのバージョンと互換性プロファイルを固定する。たとえば既定の
win-365-en_US。 - 結果を再現する必要がある場合は、時計や乱数など変動する入力を制御する。
- ホスト失敗とセルの Excel エラーを分けて扱う。
save()が成功するまで元のバイト列を保持する。- 外部サービス依存関数の扱いを、本番投入前に決めておく。
互換性ゲート
Microsoft 365 の関数のうち、Node サービス内で実行できるのはローカルで計算できるものだけです。Formulon は認識対象 526 件のうち 511 件を実装しています(状態に依存する CELL・INFO を含む)。COPILOT、PY、IMAGE、WEBSERVICE、STOCKHISTORY、RTD、CUBE 関数のように外部サービスやライブ接続を必要とする関数は、名前を認識しますが、利用不可を示す固定の Excel エラーを返します。
ユーザーアップロードでは、これはアップロード失敗ではなくワークブック互換性の問題として表示します。社内テンプレートでは、明示的な例外がない限り、これらの関数が数式スナップショットに現れた時点で CI を失敗させるのが安全です。
運用チェック
- 再計算処理にはリクエストタイムアウトとキュー上限を設ける。
- Formulon バージョン、プロファイル、ワークブックを識別するハッシュ、失敗の種類をログに残す。
- Formulon をアップグレードする前に、代表的なテンプレートを CI でスナップショットする。
- パッチリリースで数式やファイル形式の挙動変更がある場合、重要テンプレートを Excel 由来の検証データと比較する。
次に読むもの
- Native Node 連携 ─ ネイティブサービス配置
- WASM 連携 ─ 移植性の高い Node / ブラウザ互換配置
- 数式カバレッジ ─ 511 / 526 の実装と外部サービススタブ
- CI でワークブックの回帰を検出 ─ デプロイ前にアップグレード差分を捕える