STAGE 01 — 1-1 / SPFxを知る

道具立て — gulpからHeftへ

考えてみよう

SPFxの環境構築で、いちばん多い「つまずき」は何だと思いますか? 難しいプログラミング……ではありません。

答えは バージョンの不一致 です。Node.jsが新しすぎる、古すぎる。それだけで、原因の分かりにくいエラーが出て止まります。この記事で「なぜ一致がそこまで大事なのか」を腹落ちさせておきましょう。

SPFxは「バージョンの噛み合わせ」で動いている

SPFxは単体で動いているのではなく、たくさんの部品(ライブラリ)を組み合わせて動いています。主な登場人物はこの4つです。

やっかいなのは、この4つが「決められた組み合わせ」でしか正しく動かないことです。たとえるなら、精密機械の歯車。1つでもサイズの違う歯車を入れると、全体が噛み合わずに止まってしまう。SPFxのバージョンごとに「この歯車にはこのNode.js」という対応が決まっているのです。

ゆみちゃん
ゆみ

ここ、すごく大事なところ。「新しいほど良い」がSPFxでは通用しないの。最新のNode.jsを入れたら逆に動かなかった……は"あるある"。だから次の記事で、まず"正しい歯車のサイズ"を調べる練習をするんだよ。

なぜ新しすぎるとダメなのか

Node.jsは年に数回、新しいバージョンが出ます。でもSPFxは、「動作確認が取れた特定のNode.js」でしか公式サポートされません。しかもサポート対象は、Node.jsの中でも安定版である LTS(Long Term Support) に限られます。

たとえば、この講座で対象とする SPFx 1.23 系 に対応するNode.jsは v22(LTS。コードネーム "Jod")です。ここに最新の v24 などを入れてしまうと、ビルド時に予期せぬエラーが出る可能性がある——これが「新しすぎるとダメ」の正体です。

v1.22の大きな転換:gulp から Heft へ

もう1つ、知っておくべき歴史があります。SPFxの「ビルドの道具(ツールチェーン)」は、途中で大きく作り替えられました。

世代SPFxバージョンビルドの道具代表的なコマンド
従来(レガシー)v1.0 〜 v1.21.1gulpgulp serve / gulp bundle
現行(モダン)v1.22 以降Heftheft start / heft package-solution

ネット上のSPFx解説記事は、まだ古い gulp 前提のものが大量に残っています。この講座が対象とする 1.23 は Heft 世代。もし「gulp serve を実行」と書かれた記事を見つけても、それは一世代前の手順だと見抜けるようになってください。この講座は、すべて Heft 世代の手順で書いていきます。

だから、最初にやるのは「調べる」こと

ここまでをまとめると、SPFxの環境構築は次の順番になります。

  1. 対象のSPFxバージョンを決める / 調べる(既存プロジェクトなら、そのバージョンに合わせる)
  2. そのバージョンに対応するNode.jsのバージョンを調べる
  3. 一致するNode.jsを入れ、ツールを入れる

いきなりインストールを始めないこと。まず「何を入れるべきか」を調べる——次の記事で、その具体的な調べ方をやっていきます。

用語メモ
LTS
Long Term Support。長期サポート版のNode.js。SPFxはLTS版のみサポート対象
ツールチェーン
ビルドに使う道具一式。SPFxはv1.22でgulpからHeftへ刷新された
Heft
v1.22以降のSPFxが使うビルド基盤。内部でTypeScriptやWebpackを呼び出す
gulp
v1.21.1までの旧ビルド基盤。古い解説記事はこちら前提のことが多い