Skip to content

Node サービスで再計算

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

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

Native Node は WASM ヒープコピーのコストやブラウザ隔離要件を避けられますが、packages/npm-native から作った対応 .node バイナリが必要です。WASM は Node 環境間で揃えやすい選択です。数式の意味論は同じであるべきなので、結果が違う場合は不具合または文書化された互換性差分として扱います。

流れ

  1. HTTP アップロード / 社内ジョブ
  2. サイズと形式を検証
  3. ワークブックのバイト列を読み込む
  4. 入力値 / プロファイルを設定
  5. 再計算
  6. 検査値と結果を読む
  7. JSON または保存済みワークブックを返す

実行入口の選択

条件推奨
大規模ワークブック、高いリクエスト量、制御されたデプロイNative Node
サーバーレスや移植性重視の Node 配置WASM
ブラウザアップロードと同じコード経路を使いたいWASM
プラットフォーム別ネイティブバイナリを今は用意したくないWASM

Native Node と WASM は同じ Workbook API を公開しています。詳しくは パッケージと実行入口Native Node 連携 を参照してください。上の選択はあくまで運用上の違い(バイナリの stage、デプロイの移植性)であり、どちらの実行入口が計算できるかの違いではありません。

サービス境界

API 境界では、ワークブック再計算を決定論的な変換として扱います。

  • 読み込み前に、ファイルサイズやセル数のポリシーを超えるファイルを拒否する。
  • 互換性プロファイルを固定する。通常は win-365-ja_JP
  • ホスト失敗とセルの Excel エラーを分けて扱う。
  • save() が成功するまで元のバイト列を保持する。
  • 外部サービス依存関数の扱いを、本番投入前に決めておく。

互換性ゲート

Node サービス内で実行できるのは、Microsoft 365 関数のうちローカル計算として成立するものです。Formulon が無条件でローカル実装しているのは、認識対象の関数名 505 / 522 件です(CELLINFO もローカルで動きますが状態依存です)。COPILOTPYIMAGEWEBSERVICESTOCKHISTORYRTD、CUBE 関数のように外部サービスやライブ接続を必要とする関数は、名前を認識しますが、決定的な利用不可エラーを返します。

ユーザーアップロードでは、これはアップロード失敗ではなくワークブック互換性の問題として表示します。社内テンプレートでは、明示的な例外がない限り、これらの関数が数式スナップショットに現れた時点で CI を失敗させるのが安全です。

運用チェック

  • 再計算処理にはリクエストタイムアウトとキュー上限を設ける。
  • Formulon バージョン、プロファイル、ワークブックのフィンガープリント、失敗分類をログに残す。
  • Formulon をアップグレードする前に、代表的なテンプレートを CI でスナップショットする。
  • パッチリリースで数式やファイル形式の挙動変更がある場合、重要テンプレートを Excel 由来の検証データと比較する。

次に読むもの