はじめに
高機能な無料ペイントツールとして有名な2DCGツールには「Krita(クリータ、図1)」「GIMP(ギンプ)」「Paint.NET(ペイントドットネット)」などがあります。KritaとGIMPはWindowsやmacOSやLinuxでクロスプラットフォームに動作しますが、Paint.NETは2024年6月現在、Windowsのみでしか動作しません。
KritaとGIMPを比較すると、GIMPの方が歴史があり利用者も多いかもしれませんが、Kritaは拡張機能として、Krita上で「Python(パイソン)」をプログラミングして絵を描いたり、アニメーションを作ったり、UIを利用したりすることもできます。そこがGIMPに対するKritaの決定的な優位性です。
本連載では、15回に渡ってKrita上でPythonをプログラミングしながらPythonの基礎知識を解説していきます。Pythonの文法を学びながら単純な図形を描くことから始め、画像ファイルを扱ったり、アニメーションを作ったり、UIで幾何学模様をカスタマイズしてオリジナルの絵を描いたり、Kritaプラグインを作ったりしていきます。
図1:Kritaの画面
Kritaについて
Kritaはオープンソースで無料のオンラインソフトです。Kritaの公式サイト(図2)から簡単にダウンロードできます。
KritaはMDIのウィンドウで複数の絵を並行して編集できたり、レイヤー機能があったり、ペンタブレットと連携できたり、筆を選択できたり、フォントの文字を描けたり、色を選びやすかったりと、基本的なことは全て網羅した2Dペイントツールです。もちろん日本語にも対応しています。さらにKritaを実行中にその中でPythonをスクリプティングしたり実行したりもできます。
無料のスマホアプリだと広告が付いたりして煩わしいこともありますが、パソコンのフリーソフトは広告も付かずに使えるため快適て良いですね。ただ、広告の代わりに寄付を募る表示は出てきますが…。
図2:Kritaの公式サイト
そんなKritaですが残念な点もあります。アプリが落ちやすいことです。やっと作業が一段落しそうだというときに限って強制終了されることがあります。今後のバージョンアップでさらに安定性を高めて欲しいところです。ところで、Kritaは落ちやすいので、筆者はWindowsで簡単なことをするときにはPaint.NETを使うことが多いです。
Kritaの使い方について
本連載ではPython入門がメインになりますが、Kritaを使えば気軽に開発環境を揃えられて、スクリプティングして実行できます。本来ならPython本体とコードエディタ、ターミナルが必要になるところ、Kritaならこれ1つで全てできてしまいます。こういうところも本連載を始めた理由です。
なお、Kritaでスクリプティングと実行をするには、「スクリプター」という簡易IDE(統合開発環境)がメニューの中にあります。ちょっと簡易過ぎて物足りなくもあるのですが。
Pythonについて
Pythonはインタプリタ型のプログラミング言語の一種で、最も人気があるプログラミング言語の1つです。多くのランキングサイトで人気プログラミング言語の1位になっています。その理由はシンプルでイージーなプログラミングの文法にあるのでしょう。
例えば、Pythonの作者グイド・ヴァンロッサム氏はMicrosoft社に在籍しており、2024年6月現在Microsoft社の時価総額は世界1~2位です。また今話題のAIはPythonでプログラミングされることが最も多く、それを高速に計算するのにも使われるGPUを開発するNVIDIA社の2024年6月現在の時価総額は世界3位です。どちらも日本の国家予算よりも多いのです。
Python本体は2024年6月現在Version 3.12.3が最新版です。Pythonも公式サイトから簡単にダウンロードできますが、Kritaには最初からPythonが組み込まれているため、追加でダウンロードする必要はありません。
Pythonの長所は、ユーザーがたくさんいるため「パッケージ」が豊富にある点です。パッケージとはPythonの追加機能のことで、これにより車輪の再開発をすることなく、既存のパッケージを使えば楽に欲しい機能が使えます。もう少し詳しく言うと、Pythonのスクリプトであるpyファイルから別のpyファイル(モジュール)を読み込めるのですが、そのモジュールを機能ごとに集めたものがパッケージです。
一方でPythonのプログラミングしていて短所だと思ったのは、パッケージのバージョン管理が面倒な点です。どちらかと言うと勝手にバージョン管理をしてくれるのですが、Python本体の最新版が出たときにパッケージのバージョンが違うとうまく動作しない場合がある点が問題でした。ただしKritaの場合はPythonが最新バージョンではないため、大抵の既存パッケージは動くはずですから、それほど気にはなりません。
先ほどAIの話が出てきましたが「PythonでAIがプログラミングできるならAIのパッケージで絵が描けないの?」と思われたかもしれません。筆者もAIを勉強中で、まだそこまで使いこなせていません。ただし既に「krita-ai-diffusion」というKrita向けAIを作っておられる猛者もいるようです。
Kritaのダウンロードとインストール
前置きはこれくらいにして、早速環境構築のためにKritaをダウンロードしてインストールして行きましょう。Kritaは、先にも紹介しましたが、公式サイトからダウンロードしてデフォルト設定でインストールしてください。WindowsでもmacOSでも、Linuxでも同様に動作します。
なお、2024年6月現在のKritaの最新版はVersion 5.2.2です。定期的にバージョンアップがありましたが、今年に入ってからまだ1度も最新バージョンが出ていないのが残念です。
スクリプターの使い方について
KritaでPythonをプログラミングするには「スクリプター」機能を使います。スクリプターは図3のように「ツール」→「スクリプト」→「スクリプター」メニューにあります。
前述しましたが、Kritaは落ちやすいため使い慣れたエディタで「スクリプティング」しても良いでしょう。Pythonなので敢えてコードを書く「コーディング」と言わず、スクリプトを書くので「スクリプティング」と言います。
既存のpyファイルを開くには、図4のように「スクリプター」にある「ファイル」→「開く」メニューで開きます(Kritaメインの「ファイル」→「開く」メニューではありません)。ここではまだ何も開く必要はありません。
Kritaで実際にPythonをプログラミングしてみる
Pythonプログラミングの文法で最大の特徴は、何と言っても必ず「インデント」で階層分けをするところでしょう。インデントとは半角空白文字やタブ文字で「字下げ」することです。同じpyファイルの中では半角空白文字だけかタブ文字だけか片方に統一します。
例えば、下記のサンプルスクリプト01は動きますが、インデントのないサンプルスクリプト02はエラーが出ます。その理由は「for」文で中身を必ず1文は書かなければいけないところ、インデントしていないため「print(str(i))」がfor文の外だと判断されてしまうからです。
for文は大抵のプログラミング言語にもある制御構文なので分かるでしょうし、print文もよくあるコンソールに文字を出力する関数です。またサンプルスクリプト02を敢えて書き換えるなら、サンプルスクリプト03のようにスクリプティングします。
・サンプルスクリプト01(成功)
1 |
for i in range(0,10): |
2 |
print(str(i)) # インデントする |
3 |
4 |
print("0~10未満の数字をコンソールに表示する") |
・サンプルスクリプト02(エラー)
1 |
for i in range(0,10): |
2 |
print(str(i)) # インデントしていない |
3 |
4 |
print("エラーになる") |
・サンプルスクリプト03(成功)
1 |
for i in range(0,10): |
2 |
pass # インデントする |
3 |
4 |
print(str(i)) |
5 |
6 |
print("for文で何もしない") |
先ほどのサンプルスクリプト01のようにスクリプティングし、図5のように右向き三角「▷」をクリックして実行するとコンソール画面に文字が表示されます。ここでは、まだ図形を描くなどのKritaの機能は使っていません。
Pythonのもう1つすごいところは、単体でも実行できるだけでなく様々なツールに組み込んで、そのツールの機能も扱える点です(これはツール開発者が行うことなので、本連載では解説しません)。今回で言えば、組み込まれたPythonからKritaの基本機能にアクセスして、レイヤーを追加したり画像を読み込んだりもできる、ということです。
おわりに
今回は連載第1回ということで、KritaとPythonの基礎知識や両者の関係について、Krita上でPythonをプログラミングしてスクリプトを書けることを紹介しました。
次回からは、Pythonの文法の解説に入っていきます。前連載の「『TAURI』+『Rust』ではじめるデスクトップアプリ開発」では序盤に文法の解説ばかりで前置きが長くなってしまったので、第3回からはすぐにKritaの基本機能にアクセスしていきたいと思います。
Enjoyed this article? Sign up for our newsletter to receive regular insights and stay connected.



