日経ソフトウエア2008年8月号にて掲載した「マクロで始める実用プログラミング」をお届けします。Partごとにアプリケーションを定め,プログラミング言語を用いて操作したり,機能を追加したりします。また,2009年4月号においても,Excel/VBAの徹底活用法を紹介しています。
※ 記事は執筆時の情報に基づいており,現在では異なる場合があります。

 GIMP(The GNU Image Manipulation Program,ギンプ)はオープンソースのフォトレタッチ・ソフトです。もともと,UNIXやLinux用のアプリケーションであり,多くのLinuxディストリビューションで収録されています。今ではGIMPは,WindowsやMac OS Xでも動作します。

 GIMPは無料で使えるソフトとしては驚くほど多くの機能を備えています。画像の切り取り,拡大/縮小といった簡単な操作から,ホワイト・バランスの自動調整,赤目の自動補正,レイヤーを使った画像編集,画像中の色成分の分布を表したヒストグラムの操作まで対応します。個人で使うレベルなら必要十分な機能を持っていると言えるでしょう。

 そして,この特集で紹介しているほかのソフトと同じように,GIMPも「Script-Fu」というマクロの実行環境を備えています。Script-Fuのマクロ記述言語はScheme(スキーム)という言語です。SchemeはLISP(リスプ)から派生した関数型言語で,LISPと同様にカッコ「( )」を多く使った記法が特徴です。

 しかし,LISPやSchemeの独特な書き方や考え方のために,とっつきにくさを感じている人は多いのではないでしょうか。そこで,本稿ではGIMPがオプション機能として用意している「Python-Fu(GIMP Pythonと呼ぶこともある)」を利用したマクロ・プログラミングを解説します。

 Python-Fuは,動的型付け言語の一種であるPython(パイソン)で記述したマクロをGIMPで実行する環境です。日本では動的型付け言語といえばRubyが有名ですが,Pythonもなかなか使いやすい言語です。

 Pythonは文法として覚えなければならないことが少ない言語です。一方で,ライブラリが充実していて,ほんの小さなプログラムで複雑な処理を簡単に実現できます。

 Pythonの有名な特徴の一つに「インデント(字下げ)」があります。多くの言語では,インデントにはコードの見通しを良くする程度の意味しかありませんが,Pythonでは,インデントがプログラムのブロック構造を表しています。正しくインデントしないと,プログラムが動かないのです。美しく書くことが正しいプログラムにもつながるという点では,プログラミングの学習に向いた言語の一つと言えるでしょう。

Python-Fuを使うための準備

 本稿では,Windows版GIMPを使って,Python-Fuのマクロを作ります。Python-Fuのスクリプトは,OSが異なっても動作することが多いので,Mac OS XやLinuxを使われている方にも参考になると思います。

 Windows版GIMPでPython-Fuを使うには,ちょっと準備が必要です*1。もちろん,GIMP本体をインストールしなければ始まらないのですが,その前に四つほどソフトをインストールする必要があります。

 一つ目は,Windows用のPython実行環境です。これは,Pythonの公式Webサイトで入手できます。本稿では,2008年6月中旬の時点で最新版となるバージョン2.5.2を使います。ダウンロード・サイトを開いたら,「Python 2.5.2 Windows Installer」のリンクをクリックして,インストーラをダウンロードします。Python実行環境のインストールには特別難しい部分はありません。

 次に,PythonからGIMPの構成要素を操作するライブラリを三つインストールします。グラフィックス描画機能を提供するフリーのライブラリ「cairo」をPythonから操作する「PyCairo」と,様々な環境で動作するGUI(Graphical User Interface)部品を提供するライブラリ「GTK+(The GIMP Toolkit)」をPythonから操作する「PyGObject」「PyGTK」です。三つとも,PyGTKのダウンロード・サイトでインストーラをダウンロードできます。

この先は会員の登録が必要です。今なら有料会員(月額プラン)が4月末まで無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら