Node サービスで再計算
サーバー側の Node サービスで、アップロードされたワークブックや社内生成したワークブックを再計算し、値・診断結果・保存済みファイルを返すパターンです。ソースツリーからプラットフォーム別バイナリをビルド / stage できるなら Native Node、移植性を優先するなら WASM を選びます。
実行入口はデプロイ条件で選ぶ
Native Node は WASM ヒープコピーのコストやブラウザ隔離要件を避けられますが、packages/npm-native から作った対応 .node バイナリが必要です。WASM は Node 環境間で揃えやすい選択です。数式の意味論は同じであるべきなので、結果が違う場合は不具合または文書化された互換性差分として扱います。
流れ
- HTTP アップロード / 社内ジョブ
- サイズと形式を検証
- ワークブックのバイト列を読み込む
- 入力値 / プロファイルを設定
- 再計算
- 検査値と結果を読む
- 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 件です(CELL・INFO もローカルで動きますが状態依存です)。COPILOT、PY、IMAGE、WEBSERVICE、STOCKHISTORY、RTD、CUBE 関数のように外部サービスやライブ接続を必要とする関数は、名前を認識しますが、決定的な利用不可エラーを返します。
ユーザーアップロードでは、これはアップロード失敗ではなくワークブック互換性の問題として表示します。社内テンプレートでは、明示的な例外がない限り、これらの関数が数式スナップショットに現れた時点で CI を失敗させるのが安全です。
運用チェック
- 再計算処理にはリクエストタイムアウトとキュー上限を設ける。
- Formulon バージョン、プロファイル、ワークブックのフィンガープリント、失敗分類をログに残す。
- Formulon をアップグレードする前に、代表的なテンプレートを CI でスナップショットする。
- パッチリリースで数式やファイル形式の挙動変更がある場合、重要テンプレートを Excel 由来の検証データと比較する。
次に読むもの
- Native Node 連携 ─ ネイティブサービス配置
- WASM 連携 ─ 移植性の高い Node / ブラウザ互換配置
- 数式カバレッジ ─ 505 / 522 のローカル実装と外部サービススタブ
- CI でワークブックの回帰を検出 ─ デプロイ前にアップグレード差分を捕える