作成済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のプロジェクトを作成し、スクリプトエディタを開くと、下図のようなメッセージが表示されています。
“このプロジェクトは 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つが挙げられます。
- V8に移行するとコード実行にエラー
- ライブラリがV8に対応していないケースも
- 実行時間が増加し、制限時間の6分をオーバーすることも
①V8に移行するとコード実行にエラー
V8に移行するとコード実行にエラーが生じるケースがあるといった報告がありました。
これまでは問題なく動作していたコードも新しいV8ランタイムではエラーが生じることがあります。
②ライブラリがV8に対応していないケースも
さらに、V8ランタイムは読み込んだライブラリでも適用されます。
もし、利用しているライブラリがV8に対応していない場合は、①の場合と同じく実行エラーが生じます。
③実行時間が増加し、制限時間の6分をオーバーすることも
これは私も経験した事象ですが、V8ランタイムに変更すると、実行時間が増加します。
元々実行処理に時間がかかっていたスクリプトの場合、さらに実行終了まで時間がかかるようになります。
その結果、Google Apps Scriptの制限事項である、6分をオーバーしてしまい、スクリプト実行が強制終了する事象も発生します。
以上の3つの理由が生じることから、既存スクリプトについては慌ててV8ランタイムに対応すると、V8対応に追われます。
そのため、すでに作成されたGASスクリプトについてはV8移行は非推奨です。
V8ランタイムに切り替えた場合は?
GASのランタイムをV8に切り替えた場合でも、無効化して元のRhinoランタイムに戻すことができます。
V8ランタイムから旧バージョンに戻す方法は以下の記事で解説しています。
簡単にV8から旧Rhinoランタイムに戻すことは可能なので、旧バージョンのGASスクリプトがV8で動作するか試してみるのも選択肢の1つです。
新しくGASスクリプト作成はV8に移行すべき
ただし、今後作成するGASスクリプトについては、V8ランタイムで作成すべきです。
なぜならば、今後のGoogle Apps ScriptのアップデートはV8ランタイムをベースに行われるからです。
さらに一世代前のランタイムを使用していると、いつかサポート切れとなり、実行できなくなる恐れがあります。
OSのアップデートもそうですが、できるだけ最新バージョンを適用するのが基本です。
そのため、新しくGASプロジェクトを用意し、コードを書く場合にはV8に対応したコードを書くようにしましょう。
まとめ・終わりに
今回、2020年2月にサポートされたGoogle Apps Script(GAS)でV8ランタイムを、これまで作成したGASスクリプトに適用すべきではない理由を紹介しました。
ランタイムが大きく変わりモダンなJavascriptに近づきましたが、その分旧バージョンのランタイムで作成したコードの実行に失敗する恐れがあります。
SNSなどでもV8ランタイムにアップデートしたことで、上手くスクリプトが動かなくなったという声が上がっていました。
もちろんV8ランタイムに移行して問題なければ、移行して問題ありません。
ただ、すでに稼働しているツールをアップデートする際には保守が必要になるかもしれません。
メンテナンスコストを避けたい場合はアップデートを避けるも選択肢の1つです。
ディスカッション
コメント一覧
まだ、コメントがありません