Top > ScriptFuClass > Step1

一限目 教室の説明会 Edit

1.1 前置き Edit

1.1.1 Script-Fu とは? Edit

Gimp が持つ特徴に一つに、Script-Fu を備えていることが挙げられます。Gimp で Script-Fu が使われている場所としては、ロゴ作成のスクリプトがおなじみでしょう。あのテキストロゴはダイアログにテキストを入力してフォントを選んでパラメータを適当に変えて作っていますが、ボタンを押しただけでテキストロゴを作成している裏では Gimp がスクリプトに書かれた手順にしたがって順番に色を塗ったりフィルタ処理を行ったりしてテキストロゴができているのです。

ロゴ/ネオン... のダイアログ

ネオンのロゴ

つまり、あのテキストロゴはダイアログに色々と入力して作られているようですが、実際には手作業で (ほとんど) 同じようなロゴを再現することができるのです。手作業でやることをスクリプト化して一括処理しているわけですね。

ここで、Script-Fu の利点と欠点についてちょっとまとめてみます。

利点

1. 処理の自動化
例えば、レイヤーを複製してぼかしをかけてレイヤーモードをオーバーレイに変えてレイヤーを結合する、という一連の作業を毎回行っている場合、この作業をボタン一つで実行できるようにできます。いつも行っている定型的な処理を自動化することで楽をすることができます。
2. 作業を覚えておかなくて済む
上の例で挙げた処理の場合、作業行程は四つです。これくらいだったらスクリプトにしなくても手作業でやった方が早いかもしれませんが、実際には工程がもっと複雑になるのが普通です。しかもその作業をときどきしか使わないような場合、時間が経つと忘れてしまうかもしれません。Script-Fu に書いた場合、どんなに複雑で長い処理でも、ボタン一つで再び利用できるようになります。
3. プログラム的なことが可能
Script-Fu のベースである Scheme はプログラミング言語ですから、スクリプトにプログラム的な要素を加えることができます。つまり、上で挙げたような "Gimpで作業を順番にこなす" ような使い方に加えて、制御構造を持たせるなどしてスクリプトを発展させることができます。これには作業手順をまとめたもの以上のことができる可能性があります。

欠点

1. 新しい言語を習得しなければならない
このページは Script-Fu を知らない人を対象に書いてあり、Scheme を知らない人がほとんどだと思います。Scheme を知らなければプログラムを作れませんが、何も知らない人に Script-Fu を書けるようになってもらおうというのがこのページの趣旨です。このページを読み終えて、さらに Script-Fu について深く追求したいという人は Scheme について勉強する必要があるでしょう。
2. スクリプトに書く方が早いのか?
簡単なスクリプトの場合、スクリプトを書いた方が時間がかかるという場合があります。どちらの方が時間を節約できるのか、見極める必要があるでしょう。これから Script-Fu を学ぼうという人は、このページを読んで理解するまでの時間もコストに入れなければいけません。
3. Scheme は括弧が多すぎ
Scheme では前後を括弧で括ることになっているので、どうしても括弧が増えます。括弧の閉じ忘れなどはエラーとなるので、大量の括弧には頭を悩ますかもしれません。でも逆にいえば、Scheme が非常に単純な規則に則ってできているということの裏返しでもあります。

と、まぁ要は時間とやる気の問題になってしまいます。スクリプトを書くことができるようになれば、自分が発見した Gimp でいくつかのフィルタを組み合わせて行う特殊効果を他の人にも手軽に利用してもらうことができます。Script-Fu を覚えておくことも Gimp を使う上で何かと便利だと思いますよ。聞いた話によると、Script-Fu (スクリプトフー) の語源は Kung-Fu (カンフー) だったとか何とやら。。。

1.2 Script-Fu について Edit

Gimp の Script-Fu は処理系に TinyScheme を採用しています。TinyScheme は Scheme の実装の一つです。Scheme は LISP をベースとしており、Script-Fu は TinyScheme をベースとしています。

TinyScheme は R5SR*1 をきちんと遵守しているわけではありません。しかしほとんどの関数は Gimp で使えるようになっているので、Script-Fu をさらに学ぶ時には TinyScheme を読むようにしましょう。Scheme をそのまま全て使えるわけではないことに注意しましょう。

ウェブサイトにある Script-Fu を利用するとき、そのスクリプトが古くて動作しないときがあるかもしれません。これは特に GIMP-2.4 の時に大きな変化があったからです。それまでの Script-Fu の処理系では SIOD*2 (Scheme In One Defun) を採用していましたが処理系を TinyScheme に変更したことにより、古いスクリプトは修正しないとエラーになるケースが増えたからです。

通常のプログラムはプログラムをコンパイル、リンクして実行プログラムにして実行します。しかし TinyScheme といったインタープリタ言語は、一行ずつ解釈しながらプログラムを実行していきます。そのため動作速度が遅くなるという欠点を持っていますが、プログラムであるテキストファイルを書きかえるだけですぐに変更したものを (全体をコンパイルせずに) 実行できるという手軽さを持っています。

1.3 このページについて Edit

1.3.1 対象とする読者層 Edit

このページはこれから Script-Fu に挑戦してみようとする人を対象にしています。Script-Fu は Scheme というプログラミング言語がベースですが、ここではまだプログラミングの経験の無い人も対象としています。そのためプログラムとしてはかなり易しく、入門的な文書となっています。

全くの初心者をターゲットとしたものですが、Script-Fu は Gimp 上で動くものなので、Gimp についてはある程度慣れ親しんでいることが必要です。つまり、どういう機能があって、それを使うとどういう風に変化するのか、等をそれなりに把握している必要があります。

1.3.2 オリジナルサイト Edit

この Script-Fu 青空教室はいっちーが作成した同名のサイト*3のコンテンツを、サイト閉鎖にあたり移転したものです。

1.3.3 ライセンス Edit

このページは Open Publication License に基づいて配布されます。

1.3.4 ChangeLog Edit

Rev. 1.02009/05/05Vector からページを移転iccii
Rev. 2.02009/06/21Gimp-2.6 の仕様に書き直しiccii
Rev. 2.12009/06/22古い画像を入れ替えiccii
Rev. 2.22009/08/05Script-Fu のデバッグ・トレース方法を加筆iccii
Rev. 3.02009/08/05GimpWiki に移転後の正式公開iccii
Rev. 3.12012/10/27校外活動リンクを追加iccii
Rev. 4.02015/03/30過去verスクリプトの再生方法を追加iccii

1.4 参考文献/リンク Edit

このページを書くにあたって参考にしたところ。

海外

おすすめ



*1 R5SR とは Scheme の仕様規格の一つ
*2 SIOD は Scheme の実装の一つで、全てではないが R5SR に準拠している
*3 オリジナルの Script-Fu 青空教室: http://hp.vector.co.jp/authors/VA025935/script-fu/script-fu.html

Diff Freeze Rename Backup   RSS of recent changes
Last-modified: (1603d)