「ImageJマクロを使う」シリーズでは、ImageJを使って生命科学系の画像解析をするにあたって必要な知識をまとめていきます。
今回は、マクロを使ってディレクトリの操作をできるようにしていきます。
「ディレクトリの操作」って言われても、プログラミングをよく知らない人にとっては「?」っという感じだと思います。
(私もプログラミングについて本格的に勉強しだしてからよくわからない操作の一つでした)
「ディレクトリの操作」がマクロを使ってできるようになると、プログラムを動かすだけで必要なファイルを確実に見つけ出すことができるようになります。
「細胞の核を数える」シリーズで描いたフローチャートの「ココ」の部分をやっていきます。
ディレクトリとは?
そもそも耳慣れない「ディレクトリ」とはなんでしょう?
英語では“directory”。辞書で引くと最初に、住所・氏名録と出てきます。
要はいろんな情報を一つにまとめておくものということです。
パソコン用語のディレクトリも考え方は一緒で、ファイルを入れておく箱のようなものです。
こちらのサイトがわかりやすかったので参考にしました。
パソコンを大きな机だと考えます。
その上には大きく分けて「紙」と「箱」を置く事ができます。
(もちろん「紙」と「箱」以外のものも置けるのですが、ざっくり分けました。)
「紙」に相当するのは、Wordで書いたものだったり、Excelで作った表だったり、PowePointで作ったプレゼンだったり、撮影した写真だったりです。
パソコン上では「ファイル」と呼ばれるものです
でも「紙」の量がどんどん多くなって、散乱していたら何がなんだかわからくなってしまいます。
そこで「紙」を分類して整理する「箱」が必要になってきます。
この「箱」が「ディレクトリ」です。
パソコン上では「フォルダ」とも呼びますね。
この「箱」には名前をつけることができるので、「箱」の中にはどういうものが入っているのか「箱」の名前を見ただけでわかるようになります。
ディレクトリについて少しはわかったような気がしますでしょうか?
プログラミングとディレクトリ操作
パソコン上で目的のファイルを開くときってどうしていますか?
目的のファイルは、「書類フォルダ」のなかにある「細胞計数フォルダ」の「dataフォルダ」の中にある「photoフォルダ」内の「controlフォルダ」の中にあります。
(文章で書くと長くなりますね…)
ディスクトップを開いているとしましょう。
そうすると、下の手順のようにフォルダをどんどん開いていって目的のファイルに辿り着くと思います。
私たちがいつも無意識でやっていることを、プログラミングを書くときに一つ一つ書いていかなければいけないのです。
ImageJマクロでディレクトリを選ぶ
ディレクトリとは?プログラミングで、ディレクトリを明記することの大切さがなんとなくわかったところで、ImageJのマクロを使って「ディレクトリを選ぶ」ということをしてみましょう。
想定した状況としては、「解析したい画像データが入っているディレクトリを選択する」です。
ImageJマクロの関数一覧でディレクトリ操作を調べていたら、“getDirectory”という関数があることがわかりました。
関数と変数についてはこちらの記事をご覧ください。
“getDirectory”の使い方は…
- getDirectory(文字列)もしくはgetDir(文字列)の形で使う
- getDir(“Choose a Directory”)ではディレクトリ選択のダイアログを表示して、選択されたディレクトリへのパスを返す
- “plugins”や“home”と指定すると指定されたディレクトリへのパスを返す
- getDir(“cwd”)で、現在の作業ディレクトリへのパスを返す
と書かれていました。
実際に使ってみましょう。
まずは、マクロを書く画面を開きます。
マクロを書く画面では、さまざま言語でプログラムを書けるようになっています。
今回はImageJマクロを組んでいくので、言語は「IJ1 Macro」を選びます。
次に、実際に打ち込んでマクロを作ってみます。
一応、ディレクトリを選ベルようになりました。
このままでは何にも使えないので、「変数」に入れて実践的に使える形にしていきます。
ここで、さりげなく“print()”関数が出てきています。
“print()”関数といえば、最初に習う関数で“Hello World!”を表示させるときに使うという印象が強いのではないでしょうか?
最初に“Hello World!”を画面に表示させる関数を教えられても何に使うのかさっぱりわからないですよね。
私は実際に自分でプログラムを書くようになってから、“print()”関数って大事なんだということがわかってきたんです...
“print()”関数を使えば、今自分が使っている変数に何が入っているのか?というのが即座にわかるので便利ですよ!
最後に、実際に使ってみることを想定してディレクトリを選ぶ前にメッセージボックスを表示されるようにしてみましょう。
という感じで、ディレクトリを選ぶマクロが組めました。
次は、画像フォルダが入っているフォルダの上層に結果を保存するフォルダを作るをやってみたいと思います。