作成済GASスクリプトをV8にバージョンアップすべきでない3つの理由

Google Apps Script(GAS)では2020年2月にV8という新しいバージョンが公開されました。

未対応だったECMAScriptに対応し、Javascriptに近い構文が使えるようになりました。

ただ、これまで作成したGASスクリプトをいきなりV8へバージョンアップするのは危険です。

 

2020年2月にGASがV8にバージョンアップ

2020年2月にGoogle Apps Script(GAS)のバージョンアップが行われました。

新しいGASのプロジェクトを作成し、スクリプトエディタを開くと、下図のようなメッセージが表示されています。

V8ランタイムが適用されている場合のGASスクリプトエディタ画面

“このプロジェクトは Chrome V8 を搭載した新しい Apps Script ランタイムで実行しています。"

これが新しいGoogle Apps ScriptのバージョンV8にスクリプトが対応していることを意味しています。

letやconstなどECMAScriptに対応

2020年2月にできた新バージョンV8では、ECMAScriptに対応し、Javascriptなどで標準的な構文となりつつあるES2015に対応しました。

これまでのGASでは変数の定義・宣言にはvarを使い、以下のような例文で変数を定義していました。

var test = "This is test."

varによる変数の定義は柔軟性が高いがゆえに、同じ変数名を再定義が可能で、さらに変数が利用できる範囲のスコープも厳密ではありません。

それゆえECMAScriptでは、定数で定義する場合は再代入禁止なconst、変数の再定義を禁止する場合はletを使用します。

const TEST ="constant";
let testValue = 10;

その他にもES2015に対応することで、モダンなJavascriptと同じコードの記述が可能になります。

これによって、JavascriptのコードをGoogle Apps Scriptで再利用できるなど、コードの保守性が高まります。

作成済みGASのV8移行をオススメしない3つの理由

ただし、すでにGoogle Apps Scriptのプロジェクトとして作成してしまっているスクリプトの場合、新しいV8に移行するのはおすすめできません。

既存のスクリプトでV8ランタイムを有効にすうことを推奨しない理由には以下の3つが挙げられます。

  1. V8に移行するとコード実行にエラー
  2. ライブラリがV8に対応していないケースも
  3. 実行時間が増加し、制限時間の6分をオーバーすることも

①V8に移行するとコード実行にエラー

V8に移行するとコード実行にエラーが生じるケースがあるといった報告がありました。

これまでは問題なく動作していたコードも新しいV8ランタイムではエラーが生じることがあります。

②ライブラリがV8に対応していないケースも

さらに、V8ランタイムは読み込んだライブラリでも適用されます。

もし、利用しているライブラリがV8に対応していない場合は、①の場合と同じく実行エラーが生じます。

③実行時間が増加し、制限時間の6分をオーバーすることも

これは私も経験した事象ですが、V8ランタイムに変更すると、実行時間が増加します。

元々実行処理に時間がかかっていたスクリプトの場合、さらに実行終了まで時間がかかるようになります。

その結果、Google Apps Scriptの制限事項である、6分をオーバーしてしまい、スクリプト実行が強制終了する事象も発生します。

以上の3つの理由が生じることから、既存スクリプトについては慌ててV8ランタイムに対応すると、V8対応に追われます。

そのため、すでに作成されたGASスクリプトについてはV8移行は非推奨です。

V8ランタイムに切り替えた場合は?

GASのランタイムをV8に切り替えた場合でも、無効化して元のRhinoランタイムに戻すことができます。

V8ランタイムから旧バージョンに戻す方法は以下の記事で解説しています。

Google Apps scirpt(GAS)ランタイムをV8から旧バージョンに戻す方法(無効化・ダウングレード)

簡単にV8から旧Rhinoランタイムに戻すことは可能なので、旧バージョンのGASスクリプトがV8で動作するか試してみるのも選択肢の1つです。

新しくGASスクリプト作成はV8に移行すべき

ただし、今後作成するGASスクリプトについては、V8ランタイムで作成すべきです。

なぜならば、今後のGoogle Apps ScriptのアップデートはV8ランタイムをベースに行われるからです。

Google Apps Script(GAS)の新しいV8ランタイムを既存のスクリプトに適用するのは避けるべき3つの理由

さらに一世代前のランタイムを使用していると、いつかサポート切れとなり、実行できなくなる恐れがあります。

OSのアップデートもそうですが、できるだけ最新バージョンを適用するのが基本です。

そのため、新しくGASプロジェクトを用意し、コードを書く場合にはV8に対応したコードを書くようにしましょう。

まとめ・終わりに

今回、2020年2月にサポートされたGoogle Apps Script(GAS)でV8ランタイムを、これまで作成したGASスクリプトに適用すべきではない理由を紹介しました。

ランタイムが大きく変わりモダンなJavascriptに近づきましたが、その分旧バージョンのランタイムで作成したコードの実行に失敗する恐れがあります。

SNSなどでもV8ランタイムにアップデートしたことで、上手くスクリプトが動かなくなったという声が上がっていました。

もちろんV8ランタイムに移行して問題なければ、移行して問題ありません。

ただ、すでに稼働しているツールをアップデートする際には保守が必要になるかもしれません。

メンテナンスコストを避けたい場合はアップデートを避けるも選択肢の1つです。