Skip to content

Node サービスで再計算 ​

サーバー側の Node サービスで、アップロードされたワークブックや社内で生成したワークブックを再計算し、値・診断結果・保存済みファイルを返すパターンです。ソースツリーからプラットフォーム別バイナリをビルドして配置できるなら Native Node、移植性を優先するなら WASM を選びます。

実行入口はデプロイ条件で選ぶ

Native Node はワークブックのバイト列を WASM ヒープへコピーせずに済みますが、対象プラットフォームごとに packages/npm-native からビルドした .node バイナリが必要です。WASM はどの Node 環境にも同じ方法で配置できます。数式の結果は一致するはずなので、違いがあれば不具合または文書化された互換性差分として扱います。

流れ ​

01HTTP アップロード / 社内ジョブアップロードか社内生成の入力02検証読み込み前にバイト数の上限を確認03バイト列を読み込む読み込み後にセル数の上限を確認04入力値とプロファイルを設定win-365-en_US などを指定05recalc()読む前にステータスを確認06検査値と結果を読む値と診断情報07応答を返すJSON、または保存したワークブック01HTTP アップロード / 社内ジョブアップロードか社内生成の入力02検証読み込み前にバイト数の上限を確認03バイト列を読み込む読み込み後にセル数の上限を確認04入力値とプロファイルを設定win-365-en_US などを指定05recalc()読む前にステータスを確認06検査値と結果を読む値と診断情報07応答を返すJSON、または保存したワークブック
サービスの入口でサイズとセル数の上限を確認し、プロファイルを固定するので、再計算を再現できます。

実行入口の選択 ​

条件推奨
大きなワークブックを高頻度で処理し、配布環境を管理できるNative Node
サーバーレスや移植性重視の Node 配置WASM
ブラウザアップロードと同じコード経路を使いたいWASM
プラットフォーム別ネイティブバイナリを今は用意したくないWASM
このデプロイで、.node バイナリを今ビルド・配置できるか@libraz/formulon-nativeできる。環境ごとにソースからビルド@libraz/formulonできない。どの Node 環境でも同じこのデプロイで、.node バイナリを今ビルド・配置できるか@libraz/formulon-nativeできる。環境ごとにソースからビルド@libraz/formulonできない。どの Node 環境でも同じ
Native Node を選ぶのはバイナリを用意できる環境だけで、数式の結果はどちらでも同じになるはずです。

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 由来の検証データと比較する。

次に読むもの ​