その漫画自炊オタクはImageJマクロに恋をする

プログラミングを用いた、自炊漫画の画像処理

【ImageJマクロ超入門】#1 変数ってなんぞや?

 

f:id:yu3xx:20210428062613j:plain

 


皆さまこんにちは。

疲れた時には「バンド・オブ・ブラザース」を観て元気を出します、yu3xx(ゆーさんちょめちょめ)です。

 

 

これまでの『その漫画自炊オタクはImageJマクロに恋をする』


これまで1年ちょっとかけて漫画自炊で役に立つマクロを紹介してきましたが、久々にマクロ作りをしてみると結構忘れてしまっている基本事項も多くて、またイチから調べるのも面倒だったので、備忘録がてらまとめました。

 

ということで今回から、

「これさえ読めば、ImageJマクロの作り方がわかる!」

なシリーズです!

 

 

 

必要な道具は

① PC(WindowsでもMacでもOK)

② ImageJ (インストール方法はこちらのリンク記事を参照)

これだけです!

 

 

 もくじ

 

 

マクロってどこに書くの?

 

f:id:yu3xx:20210423094348p:plain

 上部タブ[Plugins]→[New]→[Macro]をクリックすると、入力用txtウィンドウが現れます。

f:id:yu3xx:20210423094757p:plain

ここにさまざまな命令を打ち込んでいきます。

すでに保存されているマクロを編集する場合は、[Plugins]→[Macros]→[Edit]です。

f:id:yu3xx:20210425234258j:plain

 

変数を定義してみる

 

変数とはプログラミング用語で、プログラムを動かす途中で使う「数字や文字の入れ物」のことです。

//Teigi
unchi = 3; oshikko = 5;

この例では、「unchi」という入れ物に3を入れ、「oshikko」という入れ物には5を入れました。つまり、「unchiの中身は3で、oshikkoの中身は5なんだよね!」と定義しています。

 

変数の名前は自由に設定できますが、変数名で使える文字には決まりごとがあります。

変数名で使える文字のルール

 ・aからzまでの小文字, A〜Zまでの大文字の英字

 ・0〜9までの数字(先頭には使えない)

 ・アンダースコア(_) 

小文字と大文字は完全に区別されるので、「unchi」と「Unchi」は別物になるので注意です。

 

「oshikko」を「oshiko」と書いてしまうなど、スペルミスしてしまうと別の変数として扱われるのでこれも注意です。さっきまで「oshikko」だったものが急に「oshiko」になると、マクロを動かした時に「Undefined variable」というエラーメッセージで教えてくれます

 

命令文の最後のセミコロン(;)は必ず付けてください。「ここで1つの命令が終わりですよ」という意味で、もし無い場合エラーが出たり計算が狂ったりします。

 

ちなみに命令の一番上に「スラッシュを2つ」書いています。

これはコメントアウトと言って、「この行に書いてある内容はぜんぶ無視するから、何書いてもOKだよ!」という命令になります。後でコードを見た時に「何のためのマクロなのか、ここで何をしているのか」がわかりやすくなるので、こまめにコメントを入れた方がラクです。

 

まずは数字の足し算と表示

 

//suuji no tashizan

unchi = 3;
oshikko = 5;


Donburi = unchi + oshikko;

print(Donburi);

 「unchi」と「oshikko」を足したものを「Donburi」という入れ物に入れています。

最後に

  print(Donburi);

と命令しています。これは「変数Donburiの中身を見せてください」という命令です。

 

ここで試しにみなさんもコードを打ち込んで実行してみてください。プログラミングに長けている諸先輩方は「コピペじゃなく直接打ち込んだほうが習得が早い」とみんな言います。「嫌がらせかな?」と思うかもしれませんが、自分で打った方が「プログラム書いてるぅ〜!!」って気持ちになって楽しいです。

 

マクロ実行は入力用txtウィンドウが表示された状態で[Macros]→[Run Macro]です。

f:id:yu3xx:20210423101555p:plain

すると、

f:id:yu3xx:20210423101653p:plain

「Log」ウィンドウに足し算の結果が正しく表示されましたか?

 

ImageJマクロでは計算結果を目で確認したいときや、プログラムの進捗状況を知りたいときに、「print」を使うことになります。

エラーが出た時など上手くプログラムが動かない時のデバッグにも使えるので、最初のうちはなにか作業をするごとにこまめに入れて確認すると良いです。

 

文字列はどうやって扱う?

 

文字列を扱うときには、変数定義のときに文字列をダブルクオーテーション(")で括ります。

//moji no tashizan

str1 = "HENT";
str2 = "AI";

str3 = str1 + str2;

print(str3); 

 「str」はString(文字列)の略でよくつかわれます。

「str1」は「HENT」、「str2」は「AI」と定義し、「str3」は2つの文字列の足し算結果の入れ物となります。

マクロを実行してみてください。文字列の足し算がどのような処理か理解できましたか?

マクロの保存方法とその場所は?

マクロ保存はtxtウィンドウをアクティブにした状態で、[File]→[Save As]です。

f:id:yu3xx:20210424054813p:plain

自由に名前をつけて保存できます。拡張子はデフォルトだと「.txt」ですが、ImageJマクロは「.txt」「.ijm」の2種類の拡張子を扱うことができます。

 

 ① txt

  ・テキストファイル

  ・ImageJを通さなくても開くことが出来る

  ・名前にアンダースコア(_)を含める必要がある

 ② ijm

  ・imageJ専用のMacroファイル

  ・imageJを通さないと開けない

  ・名前にアンダースコア(_)を含めなくても普通に使える

 

「.txt 」と「.ijm」にはこのような特徴があります。アンダースコア(_)の話は下の「マクロの呼び出し方」で解説しますが、基本的には「.ijm」をオススメします。

 

保存場所についてです。

マクロファイルは最初にImageJをダウンロードしたときの「ImageJ」フォルダの中にある「plugins」に保存してください。「plugins」内に適当なフォルダを作ってからそこにしまうと便利なので、「pppppp」というフォルダの中に「mojiTashizan.ijm」というファイルを保存してみました。

 

マクロの呼び出し方

 

保存したマクロは一度ImageJを閉じてから、もう一度ImageJを開くと使用準備完了となります。

ImageJを開き直したあと、上部タブ[Plugins]→[pppppp]を選択すると「mojiTashizan」というマクロが確認出来ると思います。これをクリックするとマクロが動きます

f:id:yu3xx:20210424062223p:plain

ここにマクロが表示される条件は以下の2つです。

 ① マクロ保存後、ImageJ再起動済み

 ② マクロファイルが「.ijm」 もしくは アンダースコア(_)をファイル名に含んだ「.txt」

 

ここでさきほどのアンダースコア(_)が絡んできます。このように「.txt」はファイル名の制約が地味にめんどうなので、素直に「.ijm」を使うことをオススメします。

※ 本ブログの各種自炊用マクロ紹介記事では説明を省くために「.txt」で扱うように書いてありますが、これを読んだ方は普通に「.ijm」でOKです!

 

 

 

以上、今回は「変数の定義」から「マクロの保存、呼び出し」までの基礎編でした。

 

要点はこのあたり。 

 ① 変数はデータの「入れ物」。命名ルールとスペルミスに注意。

 ② 新規マクロ作成は [Plugins]→[New]→[Macro]

 ③ 既存マクロ編集は [Plugins]→[Macros]→[Edit]

 ④ マクロ実行はtxtウィンドウを開いた状態で [Macros]→[Run Macro]するか、保存後だったら[Plugins]→[マクロを保存したフォルダ]→[使いたいマクロ]

 ⑤ マクロ保存は [File]→[Save As]で拡張子「.ijm」がおすすめ。フォルダは[plugins]

 

 

次回は「フォルダ内の全画像一括処理」をいきなり飛び級で扱います。

ここがImageJマクロのキモの一つです。マクロを始めた当初、コードの書き方を検索してもなかなかひっかからなくて苦労した部分でした。


 

こちらもぜひご覧ください!

 

 

おしまい