お絵描きソフトInkscape(インクスケープ)の使い方を初級レベルから上級レベルまで広く紹介しています。
情報追加のリクエストや分かりにくい点があれば下のCONTACTフォームからどうぞ。

Inkscapeのエクステンションを自作する

 このページでは、Inkscapeのエクステンションを自分で作るにはどうすればいいのかをまとめていきたいと思います。

(2025.04.15更新)

エクステンションを自作するとは?

 エクステンションを自作すると、Inkscapeを使って手動で行っていた様々な手順を自動化(プログラミング)して、メニューから簡単に実行させることができるようになります。

 エクステンションを自作するには、自動化したい操作手順に対応したプログラムコードを書きます。どんなコードを書くのかにはいくつかのルールのようなものがあって、「Inkscapeのエクステンション用のプログラムに求められる形式」に沿ったものにします。

 できあがったプログラムファイルは「エクステンション用のプログラムファイルの置き場所」として決まっているフォルダに保存します。ただし、プログラムファイルを置くだけではInkscapeのメニューから実行できるようになりません。追加したエクステンション用プログラムファイルの存在をInkscapeに認識させるための「Extension Definition ファイル」というXML形式のファイルも併せて作成してプログラムファイルとペアで保存します。すると、Inkscapeを起動したときにそのフォルダの中にある「Extension Definition ファイル」を自動的に読み込んで、エクステンションのメニューに追加してくれます。

 なお、ネット上のInkscapeに関する解説コンテンツには、エクステンションを自作する方法についてのノウハウも充実しているようなので、ちょっと調べるだけでいろんなエクステンションを自作していくことができそうです。例えばInkscapeのポータルサイトにも「How to Write Extensions」というページがあります。

いろいろ試してみた

 ここからは、いろいろサンプルを作って試しながら、エクステンションを自作するためのノウハウを蓄積していこうと思います。

 ところで、エクステンションを自作するには、どのプログラミング言語を使ってエクステンションをプログラミングするかをまず決めないといけません。エクステンションは「C#」や「Perl」といったプログラミング言語で作ることもできるそうですが、「Python」で作るのが主流のようなので「Python」の勉強も兼ねてこれで作ってみることにしました。 

エクステンションを自作してみて思ったこと

 「Python」を使ってエクステンションを作る方法がいろんな解説コンテンツに書かれていますが、Pythonプログラムに登場するいろんな変数の「型」がすぐ分からない(Pythonが変数の型を宣言しない言語だから?)ので、サンプルプログラムを見てもどんな処理が書かれているのかを理解するのが大変です。

 例えばエクステンションの中に記述することになっている「effect( )」というメソッドのパラメータ(引数)に「self」という名前のものがありますが、これがオブジェクトそれ自身を指すことを知らなかったり、「self」という変数名もこれに決まっているわけではないことを知らなかったりすると、「self」という引数の型が分からないので、「self」を使ったその後の処理も何をやっているのやら読み取れないことになります。

 Pythonについて初心者だからなのかもしれませんが、同じような感想もよく見かけます。

 対策として「この変数の型は××です」とコメントを記載するようにすればよいという意見もありますが、現実にはそういう分かりやすい注釈は手間がかかるためかあまり書かれていないみたいです。Pythonのプログラミングに精通している人の間では暗黙のルールになっていて、コメントが省略されることも多いと感じます。

 Inkscapeのエクステンションの作り方が良く分からない理由の多くが、実は解説コンテンツに登場するPythonを使ったエクステンションのコードを理解しにくいからであるように思います。