Manimを導入しましょう. Manimは数学などの理論的・抽象的な内容に特化したアニメーションを作成するためのPythonライブラリです.
Manim = Math + animation
環境構築
ManimはPythonのライブラリなので, システムのPythonに直接インストールできます. ですが, Manim はC拡張入りの重量級依存(ManimPango, Cairo, Numpy, Pillow…)が多いので仮想環境で隔離するのが理想的です.
(PythonはC言語で実装されています. 多くのPythonライブラリはPythonで書かれているのですが, 下部構造のC言語まで下りて独自のC言語ソースコードを持つライブラリをC拡張と言います. C拡張入りのライブラリをインストールするとき, ビルドのタイミングによって依存している外部ツールとバージョンが食い違ったり, 低レイヤに干渉できるために既存のPython環境を汚染したりするリスクがあるため, 仮想環境で隔離するのが理想とされています)
Pythonの仮想環境とは, プロジェクトフォルダの中にPython環境を構築するということです. 当然データ量は多くなりますが, 当該プロジェクトが使用するPythonやライブラリのバージョンを固定できるため, 様々なメリットがあります. Pythonには標準ライブラリにvenvというライブラリがあるので, 今回はこれを使います.
Manimを入れる前に, PCに以下を入れておきます:
- Python3.10 ~ 3.12 (2025年5月時点)
(Pythonのバージョンが新しすぎるとManimが対応していない場合があります.) - FFmpeg
- LaTeX
venvを作成し, Manimを入れます. PowerShellで以下を順に実行してください.
# 今プロジェクトフォルダの中にいるとします.
# 仮想環境を作成 & 有効化
python -m venv .venv
.venv\Scripts\Activate.ps1
# cmd の場合は
.venv\Scripts\activate.bat
# pip を更新
python -m pip install -U pip
# Manim 本体をインストール
pip install manim
動作確認
例えば次のようなコード書きます.
# hello.py
from manim import *
class Hello(Scene):
def construct(self):
text = Text("Hello, Manim!")
self.play(Write(text))
self.wait()
レンダリングには以下を実行します:
manim -pqh hello.py Hello
-p
: レンダリング後に動画を自動再生
-q
: 品質 (l
=低, h
=高, k
=4K)
hello.py
: ファイル名
Hello
: シーン名
出力先は media/videos/...
高度なレンダリング
コード内でデフォルトのレンダリング設定を上書きできます. また, コード内でシーンの.render()を呼び出すことで, pythonとして実行してレンダリングできます.
# hello2.py
from manim import *
# レンダリング設定
config.pixel_width = 1920
config.pixel_height = 1080
config.frame_rate = 60
config.background_color = WHITE
config.format = "mp4"
config.quality = "high_quality"
class Hello(Scene):
def construct(self):
text = Text("Hello, Manim!", color=PINK)
self.play(Write(text))
self.wait()
if __name__ == "__main__":
scene = Hello()
scene.render()
python hello2.py
configは他にも色々変えられますが, デフォルトの設定が理想的なので特に変える理由はないです.
Visual Studio Code拡張機能
-p
を付けてレンダリングすると, 拡張子に対応したデフォルトのアプリでプレビューされます. Windowsの場合はメディアプレイヤーが起動すると思います. ですが, これはちょっと不便なのでもっと手軽に, 例えばLaTeXのサイドビューのように, プレビューされてほしいです. これを実現するためにVS Codeの拡張機能であるManim Sideviewを入れるのがオススメです. Manim Sideviewを入れると, 保存のたびにレンダリングされ, 最新の動画がサイドビューで再生されます(上の方にある赤いボタンを押して再生したいシーンを選択).