GASのV8ランタイムとRhinoランタイムのログと実行のUIの違いについて比較&解説


log

photo credit: PeterThoeny The act of a stable genius via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

**GASのアップデートで「V8ランタイム」がサポートされたことで、何が変わる?についてシリーズでお伝えしています。

前回の記事はこちら。

新構文をさっそく試そう!GASのプロジェクトをV8ランタイムに切り替える方法
GASでV8ランタイムがサポートされたことにより、ECMAScriptの構文が使用できるようになりました。今回は、GASのプロジェクトについてV8ランタイムに切り替える方法についてお伝えしていきます。

V8ランタイムへの切り替え方法についてお伝えしました。

さて、前回実行してみてログの表示について「おや?」というところがありましたよね…

今回は、その疑問について解消していきます。

GASのV8ランタイムとRhinoランタイムのログと実行のUIの違いについて比較&解説をしていきます。

では、行ってみましょう!

スポンサーリンク

ログのUIを比較する

まず、ログのUIについて比較をしていきましょう。

以下のコードを用意しました。

function myFunction() {
  Logger.log('Loggerクラスによるログ');
  console.log('consoleクラスによるログ');
}

ご存知の方も多いと思いますが、GASには以下2つのログの出力のしかたがありました。

  • Loggerクラスのlogメソッドによるログ
  • consoleクラスの各メソッドによるログ

それぞれ、以下の記事で紹介しておりました。

【初心者向けGAS】ログを表示するconsole.logの使い方とテンプレート文字列
Google Apps Scriptの超入門シリーズ、GASプログラミングの基礎を学んでいっております。今回はログを表示するconsole.logの使い方とテンプレート文字列についてお伝えします。
Apps Scriptダッシュボードでconsoleクラスのログ出力を確認する方法とメリット
GASの動作確認で「ログ」使いますよね?実はApps Scriptダッシュボードで確認することができます。今回は、consoleクラスによるそのログ出力の方法とメリットについてお伝えします。

これらをRhinoランタイムでの環境と、V8ランタイムでの環境でそれぞれ実行して、ログの出力を比較、確認していきます。

Rhinoランタイムでのログ

まず、Rhinoランタイム環境でのログを見ていきます。

上記コードを実行して、メニューの 「表示」 > 「ログ」で確認します。

これは、多くの方はすばやくログを確認するために Ctrl + Enter のショートカットも活用されていましたよね。

すると、ログのダイアログが開き、以下のように表示されます。

Rhinoランタイム環境でのログ画面へのログ

こちらには、以下のログしか出ていません。

Loggerクラスによるログ

つまり、Logger.logメソッドによるログしか表示されず、console.logメソッドによるログは表示されません。

では、console.logメソッドによるログはどこに表示されるか?というと、ログのダイアログの下部にある

Apps Script ダッシュボードで、実行された他のスクリプトの Stackdriver ログを確認できます。

の「Apps Scriptダッシュボード」の部分をクリックして、Apps Scriptダッシュボードで実行パネルを展開して確認することができます。

Rhinoランタイム環境でのApps Scriptダッシュボードへのログ

consoleクラスによるログ

とありますね。

こちらは、console.logメソッドによるログのみ出力されました。

V8ランタイムでのログ

では、続いてV8ランタイムでのログを確認してみましょう。

お題のコードを実行して、メニューの「表示」 > 「ログ」 でダイアログを開きます。

すると…以下のようなメッセージが。

V8ランタイム環境でのログの待ち時間

ログを待機しています。お待ちください…

数秒くらい待つと、画面が切り替わり以下の表示に切り替わります。

V8ランタイム環境でのログ画面へのログ

以下のように両方のログが出力されます。

Loggerクラスによるログ
consoleクラスによるログ

つまり、V8ランタイム環境では、ログ画面への表示に時間がかかり、Loggerクラスとconsoleクラスの両方のログが表示されるということです。

一方で、Apps Scriptダッシュボードで実行パネルを展開してログを確認してみます。

V8ランタイム環境でのApps Scriptダッシュボードへのログ

こちらも、以下のように両方が出力されますね。

Loggerクラスによるログ
consoleクラスによるログ

しかも、こちらは数秒の待ち時間はなくログが表示されます。

Apps Scriptダッシュボードの実行パネルを開きながら作業をするのが良さそうですね。

実行トランスクリプトのUIを比較する

では、続いて実行トランスクリプトのUIについて見ていきましょう。

実行トランスクリプトとは、スクリプトを実行した際に、スクリプトから呼び出した命令のタイムスタンプや、スクリプトの実行時間などを確認できる機能です。

以下の記事で紹介しています。

GASのconsoleクラスのメソッドで実行時間をログ出力する方法
GASでconsoleクラスを使ってApps Scriptダッシュボードにログを出力する方法を伝えしています。今回はGASのconsoleクラスのメソッドで実行時間をログ出力する方法を紹介します。

前述のログの比較と同じコードを使って比較していきます。

Rhinoランタイムでの実行トランスクリプト

まず、Rhinoランタイムで実行トランスクリプトを確認してみましょう。

コードを実行して、メニューから「表示」 > 「実行トランスクリプト」を選択します。

Rhinoランタイム環境で実行トランスクリプトを選択

すると、以下のように実行トランスクリプトのダイアログが開き、各命令のタイムスタンプと合計実行時間が確認できます。

Rhinoランタイム環境で実行トランスクリプトを表示

V8ランタイムでの実行トランスクリプト

続いて、V8ランタイムで実行トランスクリプトを確認していきます。

ただ、メニューの「表示」を開くと…

V8ランタイム環境では実行トランスクリプトがない

「実行トランスクリプト」がありません。

そうなんです、V8では実行トランスクリプトを使うことができません。

では、Apps Scriptのダッシュボードで見られるのか…というとそうではなく、公式ドキュメントには以下のように説明されています。

Since the Executions panel doesn’t provide timestamped logs of the individual Apps Script service calls, it’s recommended that you use the console service to create appropriate log messages.

Apps Scriptダッシュボードの実行パネルでは、Apps Scriptサービスの呼び出しについて個々のタイムスタンプ付きログが出ない、と。

なので、consoleクラスのメソッドを使って、適切なログメッセージを出力しておくれ、とのことです。

まとめ

以上、GASのV8ランタイムとRhinoランタイムのログと実行のUIの違いについて比較&解説をお伝えしました。

V8ランタイムのサポート開始ではECMAScript構文に注目が集まりがちですが、個人的にはこのログ関係の変更もけっこう重要かなと思っています。

つまり、V8ランタイムに移行していくことを考えると、以下のような流れにあるかなと推測しています。

つまり、ログや実行に関する情報の出力

  • Loggerクラスではなく、consoleクラスを使う方向になっていく
  • スクリプトエディタではなく、Apps Scriptダッシュボードの実行パネルを使う方向になっていく

のではないかと。

今後も変更があるかも知れないので、注意深くキャッチしていければと思います。

さて、次回からはV8ランタイムで使えるようになったECMAScriptの新構文についてお伝えしていきます。

どうぞお楽しみに!

連載目次:GASの「V8ランタイム」サポートで変わることとは

Google Apps Scriptに待ちに待ったアップデートがやってきました。「V8ランタイム」のサポート開始です。これにより、ECMAScript構文が使えるようになり、その他いくつかの改善が加わりました。このシリーズでは、V8ランタイムに切り替えることでできるようになったことについてシリーズでお伝えしていきます。
  1. 祝!Google Apps Scriptが「V8ランタイム」をサポート!モダンなECMAScript構文が使えるようになった
  2. 新構文をさっそく試そう!GASのプロジェクトをV8ランタイムに切り替える方法
  3. GASのV8ランタイムとRhinoランタイムのログと実行のUIの違いについて比較&解説
  4. GASの「V8ランタイム」アップデートを受けて私がやるべきことリスト

タイトルとURLをコピーしました