[Piet入門編]npietの使い方

どもです。

Piet入門編、続きです。

今回は、npietについて書きます。

npiet

毎度しれっと出てくる「npiet」さんですが、

一体何者なのか、解説します。

概要

npietはPietインタプリタのひとつです。

つまり、Pietのソースコードを読み込んで、実行してくれるソフトです。

 

Erik Schoenfelder氏によって製作され、ソースコードや実行ファイル(Windows用)が配布されています。

当然のように、コマンドラインベースのプログラムです。

 

npietは比較的手頃なインタプリタであり、筆者は愛用しています。

また、スタックの状態やPietインタプリタの経路を出力してくれるため、

デバッグの際にも重宝します。

npietを使おう!

以下では、npietのインストール方法と使い方について説明したいと思います。

なお、インストール方法は、お使いの環境によって大きく異なります。

お使いの環境は様々かと思うのですが、

windowsユーザーが圧倒的に多い気がするので、

ここではwindowsユーザー向けにnpietの使い方を解説したいと思います。

こればかりは全ての環境を網羅して記述することはできないので、

windows環境での説明のみとなりますが、ご勘弁ください。

 

まぁ、いまこのブログはMacで書いているんですがね。

ダウンロード

まずはダウンロードページに飛びます。npiet

中央付近に、「windows executable: npiet-1.3a-win32.zip 」とあるので、

このzipファイルをダウンロードします。

インストール

ダウンロードしたzipを解凍します。

解凍したフォルダの中にnpiet.exeがあります。

これが実行ファイルです。

使い方

コマンドプロンプトを立ち上げる

まず、npiet.exeのあるフォルダでコマンドプロンプトを立ち上げてください。

もし何を言っているかわからなければ、

解凍したフォルダの中の「npiet-start.bat」をダブルクリックしてください。

f:id:y-mos:20210908000501p:plain
npiet-start.batの実行結果

こんな感じの黒い画面(コマンドプロンプト)が立ち上がったらOKです。

ここにペチペチとコマンドを打ち込んでいきます。

サンプルを実行してみよう

解凍したフォルダの中にはサブフォルダ「examples」があります。

この中にサンプルプログラムが用意されています。

今回は、この中から「hi.png」を実行してみましょう。

f:id:y-mos:20210907231722p:plain
hi.png
http://www.bertnase.de/npiet/より引用

コマンドプロンプトに次のように入力します。

npiet examples/hi.png

その上でエンターキーを、ッターン!してください。

f:id:y-mos:20210907232248p:plain
hi.png実行結果

その結果、コマンドプロンプトに「Hi」と出力されて終了します。

無事実行できました。

トレース画像を出力する

さて、ただ「Hi」と出力されただけでは、Pietインタプリタの動きがわかりません。

実行中のPietインタプリタの挙動を知りたい場合は、-tpicオプションを使います。

npiet examples/hi.png -tpic

f:id:y-mos:20210907232551p:plain
-tpic実行結果

コマンドプロンプト上は変化がありませんが、

npiet.exeと同じフォルダに「npiet-trace.png」という画像が出力されています。

f:id:y-mos:20210907232714p:plain
npiet-trace.png

この画像こそが、これまで何度もお世話になってきた

「npietによるトレース画像」というものです。

黒線でPietインタプリタの軌跡が書き込まれており、

カラーブロックの境界付近には、そこで実行された命令が記載されています。

これをみて、自分が想定した通りに命令が実行されているかを確認しています。

 

そのほかにもいろいろ情報が書き込まれていますが、

筆者はあまり使ったことがありません。

(なので説明ができません。すみません。)

トレース画像を拡大する

トレース画像を拡大したい場合は-tpfオプションを使います。

このオプションは引数として出力画像における1コーデルのサイズを渡します。

たとえば、出力画像において1コーデルのサイズを100pixにしたい場合は、

次のように入力します。

npiet examples/hi.png -tpf 100

すると、出力されるnpiet-trace.pngは次のようになります。

f:id:y-mos:20210907233347p:plain
「-tpf 100」適用時のnpiet-trace.png

先ほどよりも大きなサイズの画像が出力されました。

画像中の文字も正確に読めるようになり、より正確なデバッグが可能となります。

トレース画像をシンプルにする。

場合によっては余計な情報を出力せずに、

単にPietインタプリタのトレースを知りたい、というときも

あるかもしれません。

その時は、-tpsオプションを使います。

npiet examples/hi.png -tps

f:id:y-mos:20210908000823p:plain
「-tps」適用時のnpiet-trace.png

これで必要最小限の情報のみとなるため、スッキリした出力となりました。

スタックの状態を出力する

スタックの状態変化を追跡したい場合は、-tオプションを使います。

npiet examples/hi.png -t

f:id:y-mos:20210907234048p:plain
「-t」適用時のコマンドプロンプトの出力

今までは「Hi」としか出力されなかったところに、

いろいろな情報が出てきます。

筆者が読み解いた限りでは、以下の情報が出力されています。

  • trace: step**の行:何ステップ目か。そのステップでPietインタプリタが、どの座標からどの座標へ移動したか。
    • nBやdCなどは、色情報でしょう(normal Blueやdark Cyanなど)
  • action:の行:何の命令が実行されたか。
  • trace: stackの行:スタックの状態(いくつ数値があるか、どんな値が格納されているか)。

これを追っていけばスタックの状態込みでデバッグすることができます。

その他のオプション

単にnpietとだけ打つと、使い方が表示されます。

f:id:y-mos:20210907234919p:plain
使い方

また、解凍したフォルダ内には使い方を解説したhtmlファイルも同梱されています。

わからなくなったらこれらも参考にしてください。

まぁ当然のように英語なのが難点ですが。。。

おわりに

今回はあっさりめです。

いつもこのくらいにしておけば読みやすくてモチベも保てるのになあ。。。

 

さて、次回以降はまたGridPietGeneratorを使って

Piet画像を作る方向に走りたいと思います。

そういえばPietEmbedderの方は、めっきり使ってないので、

次回以降そちらも使っていきたいと思います。

 

じゃ、今日はこの辺で。

では。