roundrect-electro  roundrect-electro を 128 回使うための処方せん
これは roundrect-electro という UNIX コマンドを UNIX ビギナーの方がつかうための取扱説明書です。
Terminal をいっさい立ち上げない、手をふれない、気にしない、そんなの知らん。これを原則として記述します。
インストールからはじまって、Terminal にいっさい手をふれることなく、UNIX コマンド "roundrect-electro" でイメージを角丸化してみようという、なんだか本末転倒な連載企画です。RoundRect-X を購入したほうが「大人なかいもん」な気もしますが、ま・いいか、と。
いきなりいっぺんには書けません。まず計画性はないし、特に最終章はわたしにも未知の領域だし。
まあのんびりかまえて、たまに見にきてください。どのくらいのんびりかというと「更新されていなくても気にしない」くらいです。

もくじ
  1. roundrect-electro をインストールする
  2. JPEG ファイルを扱えるようにする
  3. AppleScript でがんばってみる
  4. AppleScript でもうちょっとがんばってみる
  5. AppleScript Studio でココアな GUI をつけられるのかな?

1. roundrect-electro をインストールする

次の2つのソフトを用意してください。
  1. roundrect-electro
  2. a match in her pocket
("a match in her pocket" は UNIX コマンドのプチ・インストーラで、「プチ」はインストールしたときの擬音です。)

あとは、"a match in her pocket" に実行ファイル "roundrect-electro" をドロップするだけです。

管理者のパスワードは聞かれます。入力してください。(注意:このときパスワードはまるみえです)
完了時の「プチ」という音が聞こえなかった場合、じぶんで「プチ」と言ってください。

これで、roundrect-electro は /usr/local/bin にコピーされ、パスが通った状態になっているはずです。
たしかめたいところですが、ここでは Terminal に手を触れない約束なので、どうしても気になる人は、 Finder の "移動" メニューから "フォルダへ移動..." を選んで "/usr/local/bin" と入力してください。

さてここまでで、Terminal 上では以下のように roundrect-electro が使えるようになります。
% roundrect-electro 1600 1200 100 16 hard 255 255 255 true true true true < original.raw > changed.raw
でもここでは、Terminal にはいっさい触らないかくごです。次にいきましょう。

2. JPEG ファイルを扱えるようにする

かんたんに言うと、
  1. cjpeg、djpeg を用意してください。
  2. cjpeg、djpeg をさきほどの "a match in her pocket" にドロップしてください。
これだけです。
roundrect-electro は、そのままでは raw ファイル(Photoshop で言う「汎用フォーマット」)しか相手にしません。
これは「なんだかめんどうだから」に他なりませんが、それが UNIX 的自由のよさでもあるのでそうなっています。
ではどうやって JPEG を扱うのか。cjpeg、djpeg を使います。
cjpeg は JPEG に圧縮するプログラムで、djpeg はその逆です。
まず知ってほしいのは、Independent JPEG GroupJPEG 関連のソースコードを公開しているということです。
謝々。あなたが「ソースコードなど見ん」という向きでもここの "README" は見るのが礼儀です。
ここでは Terminal にはいっさい手をふれない約束なので、上記をコンパイルすると出来上がるサンプルプログラム djpeg、cjpeg をここに置いときます。(バージョンで言うと v6b を Mac OS X 10.2.4 でコンパイルしたものです。)
これらは動作を保証するものではありません。でも私のところではちゃんと動いてくれています。謝々。

さてここまでで、Terminal 上では以下のように roundrect-electro が使えるようになります。
% echo "P6 120 90 255" > tmpFile ; djpeg -ppm < original.jpg | sed '1,3d' | roundrect-electro 1600 1200 120 16 hard 0 0 0 true false true false | cat tmpFile - | cjpeg -quality 95 > changed.jpg
djpeg、cjpeg と roundrect-electro の橋わたしをするために、ここでは ppm フォーマットを使っています。
djpeg が吐き出した ppm イメージを raw イメージに変換して roundrect-electro に渡し、
生成された raw イメージを ppm イメージに変換して cjpeg に渡しているのです。
(ppm フォーマットは UNIX でよく使われるイメージフォーマットで、raw フォーマットの前にテキストで解像度や色深度等のヘッダをつけたシンプルなフォーマットです。)

でもここでは、Terminal にはいっさい触らないしょぞんです。次にいきましょう。

3. AppleScript でがんばってみる

上記の暗号のような長いコマンドを AppleScript から実行できるようにしてみます。
AppleScript を使ってがんばるには、スクリプトエディタを使います。
スクリプトエディタは Mac OS X に標準でついてくる、AppleScript のエディタです。
アプリケーションフォルダの中の AppleScript フォルダの中にあります。
こんなアイコンです。
ScriptEditor Icon
ダブルクリックして起動してください。
Mac OS X の AppleScript では、do shell script という関数で UNIX シェルを実行できます。
スクリプトエディタに、
do shell script ("echo 'P6 100 75 255' > tmpFile")
do shell script ("/usr/local/bin/djpeg -ppm < original.jpg | sed '1,3d' | /usr/local/bin/roundrect-electro 1600 1200 100 16 hard 0 0 0 true false true false | cat tmpFile - | /usr/local/bin/cjpeg -quality 95 > changed.jpg")
とタイプしてください。 そして、システムディスクの最上位(ルートディレクトリ)にまるめたい画像 "original.jpg" (1600x1200px) を置いて、 実行ボタンを押します。
おっ!同じ場所にまるめられた画像 "changed.jpg" ができたはずです。

ね?Terminal なしで roundrect-electro が使えました。
でも、これでは Terminal を使っているのとたいしてかわらんですね。
画像のサイズをじぶんで指定せんならんの?
画像ごとにリサイズ後のサイズをじぶんで計算して書き換えるの?
ルートディレクトリでしか使えないの?
そもそもドラッグアンドドロップはできないの?
どこをどう書き換えればよいの?
こんなもんなん?もーやんなっちゃうな。
そう思いますね。わたしでもこんなの使う気しません。
では、もう少しがんばってみます。

4. AppleScript でもうちょっとがんばってみる

画像サイズは自動検出、リサイズ後のサイズも自動計算、任意の場所からドラッグアンドドロップに対応してみました。
これです。(rrcte-woterminal.dmg.hqx)
これをスクリプトエディタで開くと中身が見えます。
書き換えやすいように roundrect-electro の引数は最初のほうにまとめてみました。
-- < roundrect-electro arguments > --
property pDistSizeMax : 120
property pRoundRadius : 12
property pSoftOrHard : "hard"
property pBGColorR : 255
property pBGColorG : 255
property pBGColorB : 255
property pBeRoundTL : "true"
property pBeRoundTR : "true"
property pBeRoundBR : "true"
property pBeRoundBL : "true"
":" の右側の値を書き換えればよいわけです。
こいつに JPEG ファイルをドロップすれば、rimg というフォルダにまるまったファイルができます。(複数可)
(上記のように roundrect-electro、cjpeg、djpeg が /usr/local/bin にインストールしてある必要があります)

ここまでで、かなり使えるものになったと思います。
コピーして好きなように書き換えて、複数の設定のドロップレットを作っていけば、
これはこれで便利かも。

* 3/3/2003 上記 rrcte-woterminal.dmg.hqx に入っている AppleScript に甘いところがあったので、
手直ししました。(リサイズ後のサイズ計算のところ)

5. AppleScript Studio でココアな GUI をつけられるのかな?

上記 4. AppleScript でもうちょっとがんばってみる で作った AppleScript に GUI をつけられるようにしてみようとしたところ、 できました。Mac OS X についてくるデベロッパツールについてくる AppleScript Studio を使いました。
これは AppleScript を Project Builder と Interface Builder で使うことを意味します。
OS にこういう開発ツールが付属するのはとても嬉しい。
気に入りました。Preference データの扱いが簡単で快適です。
内容は XML で記録され、ファイルアクセス、構文解析は自動でやってくれるのです。楽。
Interface Builder で GUI 部品を配置していき、上記 4. AppleScript でもうちょっとがんばってみる で作った AppleScript をそれに合わせて組み込んでいきました。

できあがりはこんな感じになります。

AppleScript Studioについて参考にさせていただいた資料をあげておきます。
気付いたのですが、AppleScript Studio でつくったということは、これはスクリタブルだということでは?
つまり AppleScript で操作できるアプリだということになるのでは?
RoundRect-X から GUI を剥がして roundrect-electro にして、それを GUI で操作するために AppleScript Studio で roundrect x homme を作ると、それは今度はスクリプタブルだから AppleScript から GUI なしで処理を自動化できそうだ。なんだかややこしいけど楽しいことになってきました。

× もどる