CRI ADX2(AtomCraft)
ロボット編05 Hello Worldをスクリプトログに表示する

このチュートリアルでは、次の2つの方法で「Hello, World」の文字を「スクリプトログ」ウィンドウに表示する処理をスクリプトで書いていきます。

  • Python標準の文字列出力によるログの出力
  • CRI Atom Craft APIのDebugモジュールによるログの出力
スクリプトの実行状況の視覚確認には、ログ出力機能を使用すると便利です。 2つのログ出力の方法と違いを習得しましょう。

スクリプトファイルの準備

はじめに、処理を記述するためのスクリプトファイル( Pythonファイル) を準備します。
CRI Atom Craft を起動して、「スクリプト」メニューから「スクリプトリスト...」を選択して「スクリプトリストからのスクリプト実行」ウィンドウを表示します。
スクリプトリストから「tutorials [CRI]」を選択し、スクリプトファイルの [新規作成] ボタンをクリックします。

「新規作成」ボタンをクリックすると、ファイル作成ダイアログが表示されます。
ファイル名に「tutorial01-1_helloworld.py」と入力して保存ボタンをクリックしてファイルを保存します。
保存したスクリプトファイル「tutorial01-1_helloworld」がスクリプトリストに表示されます。

スクリプトの説明

スクリプトファイルを作成することができました。
スクリプトリストの「samples [CRI]」を見てみると、いくつかのサンプルスクリプトがあります。
作成した「tutorial01-1_helloworld」以外のスクリプトファイルには、スクリプトリストに説明の表があることに気づくと思います。

スクリプトリストには、スクリプト内の次の書式で書かれたコメントを読み取り、スクリプトリストの「説明」欄に表示する機能があります。

# --Description: 説明文
スクリプトリストの「tutorial01-1_helloworld」をダブルクリックして、スクリプトエディターからのスクリプト実行でスクリプトファイルを開き、次のように説明用のコメントを入力してみましょう。
# --Description:[チュートリアル] Hello Worldをスクリプトログに表示

コメントを入力後、スクリプトエディターのツールバーにある [保存] ボタンをクリックしてスクリプトを保存します。
スクリプトリストに戻ると「tutorial01-1_helloworld」スクリプトの説明が表示されていることが確認できます。

Python標準の文字列出力を使って「Hello, World」を表示

スクリプト説明文の記述ができましたので、Python標準の文字列出力関数であるprint関数を使ってスクリプトログに「Hello, World」を表示してみましょう。
スクリプトエディターからのスクリプト実行に戻り、次のように入力します。

print("Hello, World")

スクリプトエディターのツールバーから、[保存] ボタンをクリックしてスクリプトを保存します。

スクリプトの実行はファイルを読み込んで行われます。
このため、スクリプトを編集した場合、実行前にファイルへの保存が必要になります。
保存を行わずに実行を行うと、実行前に保存ダイアログが表示されます。

スクリプトの実行

作成したスクリプトを実行して、スクリプトログウィンドウに「Hello, World」を表示してみましょう。
スクリプトリストのウィンドウに戻り[ログを表示] ボタンを押して、スクリプトログウィンドウを表示します。
ツールバーにある [実行] ボタンを押してスクリプトを実行すると、スクリプトログウィンドウに「Hello, World」の文字が表示されることが確認できます。

cri.atomcraft.debugモジュールを使って「Hello, World」を表示

Pythonのprint関数を使って、スクリプトログに "Hello, World" の文字を表示することができました。
続いて、CRI Atom Craft APIのDebugモジュールを使って、スクリプトログに「Hello, World」を表示してみましょう。

CRI Atom CraftのDebugモジュールをインポート

CRI Atom Craftには、CRI Atom Craftを操作するためのPythonモジュールが含まれています。
Pythonで外部のPythonモジュールを使用するには、スクリプトにimportという文を使って「モジュールを使用する」宣言をします。
CRI Atom Craft API のDebugモジュールを使用する場合は、次のように記述します。

import cri.atomcraft.debug
「import モジュール名」と記述すると、スクリプト内でモジュールが使用できるようになります。
「import モジュール名 as 置き換えの名前」のように記述すると、インポートするモジュールを指定の名前に置き換えでき、短いコードでモジュールにアクセスできるようになります。
import cri.atomcraft.debug as acdebug

Debugモジュールの「Log」を使って「Hello, World」を表示

import宣言をして、CRI Atom Craft APIのDebugモジュールを使用する準備ができました。

早速、Debugモジュールを使って、「Hello, World」の表示を行なってみます。
Debugモジュールには、いくつかの文字列出力関数が用意されていますが、ここではlog関数を使って「Hello, World」の表示を行ないます。

import cri.atomcraft.debugの宣言の後に、次のようにスクリプトを書いてみましょう。

cri.atomcraft.debug.log("Hello, World")

スクリプトを保存後、スクリプトの実行前にスクリプトログウィンドウの「クリア」ボタンを押してログ表示をクリアしてください。
スクリプトを実行するとprint関数による出力と合わせて、"Hello, World"の文字が2行表示されていることが確認できます。

Python標準出力print関数とDebugモジュールlog関数の違い
スクリプトエディターからのスクリプトのローカル実行でprint関数、log関数を使用した場合、どちらもスクリプトログにログが出力され実質の違いはありません。
しかし、Pythonスクリプトのリモート実行でprint関数を使用すると、CRI Atom Craftのスクリプトログにはメッセージが出力されず、実行アプリケーション側にメッセージ出力が行われます。
この違いはprint関数がスクリプト実行アプリケーションにて処理されているために発生します。 逆にlog関数はリモート実行時もスクリプトログにしか出力しません。

外部アプリケーションからスクリプトのリモート実行にて CRI Atom Craft を操作する場合、外部アプリケーション側にログ出力を行いたい場合もあるかと思います。
print関数、log関数の使い分けで、出力先を分けるとよいでしょう。

[リモート実行例:ターミナルからリモート実行で CRI Atom Craft に接続後、print 関数を実行]
このチュートリアルでは"Hello World" の文字を表示するという目的で、log関数を使用したログの出力を行いました。
実際に CRI Atom Craft を操作するスクリプト処理を書いていく場合、ログの出力は主に実行中の処理を確認するためのデバッグ目的として使われることが多くなります。
Debugモジュール にはlog関数以外に、警告出力用のwarning関数も用意してあります。
関数名 説明
log 標準のログを出力します
warning 警告のログを出力します
強調したログが出力されます
warning関数にて出力した文字列は、CRI Atom Craftのログビューに色付き文字で表示されます。(スクリプトログでの色付き出力は未対応です)
用途別に使用する関数を使い分けることで、効率のよいスクリプト実行確認が行えます。