Script-Fu 青空教室
放課後 | Script-Fu 青空教室 | ニ限目


一限目 教室の説明会

1.1 前置き

1.1.1 Script-Fu とは?

道具箱/Script-Fu/ロゴ/超新星爆発... のダイアログ

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 について

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

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

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

1.3 このページについて

1.3.1 対象とする読者層

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

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

1.3.2 ライセンス

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

1.3.3 ChangeLog

まだ作りかけ…

1.4 参考文献/リンク

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

海外

国内

2001/07/12

放課後 | Script-Fu 青空教室 | ニ限目