最近やはり記憶力が落ちたと思って、ふと思い立って キーボード図付きの IntelliJのショートカットの一覧を作りたいと思った。山ほどあるショートカットの図をいちいち作っていたのでは手間だし、今風の効率化ではないので半自動でプログラムで起こしたいと思った。
そこで昔少し案件でGIMPのスクリプト(Script-fu)で簡易画像ツールを作ったことがあるのだが最近のGIMPを調べたら、Pythonで操作できる時代になったと書いてあった(Python-fu)
ああ、確かにScript-fuはとんでもなく正体不明な言語(今見るとLisp似なのか?)だったのを思い出して、今風言語で書けるとはこれはいいやと思って触りはじめた。
実は私はPythonはあまりきちんと理解しておらず(AI寄り言語だというのに初心者本を斜め読みしたくらい)この際Pythonの勉強もかねて勉強してみようと思った。
http://gimpbook.com/scripting/
https://www.gimp.org/docs/python/
https://developer.gimp.org/api/2.0/
https://qiita.com/dhomma/items/f33ecd1c4d4c6ece7685
とりあえずHelloWorld的なPython-fuのコードをコピペして動かしながら検討していたら、これは IDEで編集支援して欲しいな、と思った。GIMP側のソースか何かでドキュメント付きDLLを作ればよいのではないかと思ったがそこまでPythonに明るくないし、だいたい最近欲しいと思った機能は誰かが作っている時代なので検索したら、やっぱり pgimp というライブラリがあった。
https://github.com/mabu-github/pgimp
が、これがWindowsに対応していない と出たのでどうにか使えるようにした話を以下に記します(前置きが長い)
まず windows上でpython2,python3環境を作った状態でpipでpgimpのインストールを試みたが確かにエラーが出て進まない。いろいろ考えた末に見つけた解決策は
- WindowsのWSL でUbuntu Linuxを内部実行してそこからpgimpを動かすというのが一番悩まずに済むと判断。
- Windows WSL のUbuntuを導入
- WSL Ubuntuにpython2,python3を設定
- Ubuntuにpgimpを導入
- IntelliJ IDEA からWSL Ubuntu経由でのpgimpを実行
Windows WSL Ubuntu の導入 https://www.atmarkit.co.jp/ait/articles/1903/18/news031.html
https://qiita.com/rubytomato@github/items/fdfc0a76e848442f374eUbuntuにPython2 , python3 ,pip2,pip3を導入
https://www.bioerrorlog.work/entry/install-pip-pip3-ubuntu
Ubuntuへの Python導入が意外に細かい。Ubuntuにpgimpを導入
https://pypi.org/project/pgimp/
取り込み前にsetuptools
とpsutil
が必要とのことでpython3側に
pip install setuptools
pip install psutil
を取り込み。
GIMPはWSLで走らせる必要がありWSL側にもGIMPをインストールする必要があるとのこと。
pip2 installnumpy
pip2 installtyping
sudo apt-get install gimp
sudo apt-get install xvfb
ここまできてやっとでエラーなしで
pip3 install pgimp
が通った。IntelliJ でWSL経由でpgimpの実行プロジェクトを起こす
WSL経由でのpgimp実行ってもっと手間取るかと思ったら、すでにWSL設定の機能が標準であり、全然単純であった。
このあたり https://pgimp.readthedocs.io/en/latest/tutorial.html#create-an-image-and-export-it のサンプルコードも問題なく実行/シンボリックデバッグできて解決。IDE側の文脈支援やヘルプも動作する。ここまで来るまでの試行錯誤が面倒だった。。。ただColor等の細かい定義まで取り込むことは出来ていないようで、残念なことにPythonから直にGIMPを操作する分には基本的な生データしか処理出来ないようだ。主な目的はIDEの補完入力を手伝うみたいな方向と思われるが当初の目標は満たせるか。
環境の構築に気力を使うのは今の時代のやり方ではない。WSLでシンプルに解決出来るならそれが何よりだ。