manim について
Python フレームワーク Manim Community で数学アニメーションを作るためのスキルです。教育動画の制作者や可視化作業向けに、シーン、図形、LaTeX の式、グラフ、レンダリングを扱います。
主な機能
- 01シーンベースのアニメーション手法
- 02図形オブジェクトと変換
- 03LaTeX 方程式の描画
- 04グラフと座標系
- 05動画レンダリングとノートブック連携
- 06VS Code のライブプレビュー
活用シーン
- 01授業用の数学アニメーション制作
- 02幾何変換の可視化
- 03数式のアニメーション化
- 04解説動画コンテンツの制作
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ davila7/ claude-code-templates --skill manimインストール後、Claude Code で/manimを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/animations.mdlatex.mdmobjects.mdscenes.md詳細
Manim Community - 数学アニメーションエンジン
Manim Community を使って数学アニメーションを作成するための包括的なスキルセットです。Manim Community は、3Blue1Brown によって広く知られるようになった、解説用の数学動画をプログラムで作成するための Python フレームワークです。
使用する場面
Manim のコードを扱う際には、次のようなドメイン固有の知識を得るために、このスキルを使用してください。
- 数学アニメーションや可視化の作成
- 教育用動画コンテンツのプログラムによる作成
- 幾何学図形と変換の扱い
- LaTeX の数式や数学的な式のアニメーション化
- グラフ、チャート、座標系の作成
- シーンベースのアニメーションシーケンスの実装
- 高品質な数学図の描画
- 教育向けの解説用ビジュアルコンテンツの構築
基本概念
Manim では、次のものを使ってアニメーションを作成できます。
- シーン: モブジェクトを構成してアニメーションを組み立てるキャンバス
- モブジェクト: 表示可能な数学的オブジェクト(図形、テキスト、数式)
- アニメーション: モブジェクトに適用される変換(Write、Create、Transform、FadeIn)
- 変換: モブジェクトの異なる状態間のモーフィング
- LaTeX 統合: 数学記法をネイティブにレンダリングするサポート
- Python の簡潔さ: Python を使ってアニメーションの動作をプログラムで指定
主な機能
- 数学オブジェクトの正確な配置と変換
- 数式や式のネイティブな LaTeX レンダリング
- 豊富な図形ライブラリ(円、長方形、矢印、多角形)
- 座標系と関数グラフの描画
- 幾何学図形に対するブール演算
- カメラ制御とシーン管理
- 高品質な動画レンダリング
- IPython/Jupyter Notebook との統合
- ライブプレビュー付きの VS Code 拡張機能
使い方
詳しい説明とコード例については、個別のルールファイルを参照してください。
基本概念
- references/scenes.md - シーンの作成とアニメーションの構成
- references/mobjects.md - 数学オブジェクトと図形の理解
- references/animations.md - 主要なアニメーションの種類と手法
- references/latex.md - LaTeX の数式や式のレンダリング
変換、タイミング、図形、座標系、3D アニメーション、カメラの動き、高度な機能などのその他のトピックについては、包括的な Manim Community ドキュメント を参照してください。
クイックスタートの例
from manim import *
class SquareToCircle(Scene):
def construct(self):
# Create a square
square = Square()
square.set_fill(BLUE, opacity=0.5)
# Create a circle
circle = Circle()
circle.set_fill(RED, opacity=0.5)
# Animate square creation
self.play(Create(square))
self.wait(1)
# Transform square into circle
self.play(Transform(square, circle))
self.wait(1)
# Fade out
self.play(FadeOut(square))
次のコマンドでレンダリングします: manim -pql script.py SquareToCircle
ベストプラクティス
- Scene を継承する - すべてのアニメーションは Scene を継承したクラスに記述してください
- construct() メソッドを使う - すべてのアニメーションコードは construct() メソッド内に配置してください
- レイヤーで考える - モブジェクトをアニメーションさせる前に、シーンに追加してください
- self.play() を使う - self.play(Animation(...)) を使ってモブジェクトをアニメーションさせてください
- 低品質でテストする - プレビューを速くするため、
-qlフラグを使用してください - LaTeX を活用する - 数学記法には Tex() と MathTex() を使用してください
- 関連するオブジェクトをグループ化する - 複数のモブジェクトをまとめて管理するには VGroup を使用してください
- 頻繁にプレビューする - レンダリングされた動画を自動的に開くには
-pフラグを使用してください
コマンドラインでの使い方
# Preview at low quality (fast)
manim -pql script.py SceneName
# Render at high quality
manim -pqh script.py SceneName
# Save last frame as image
manim -s script.py SceneName
# Render multiple scenes
manim script.py Scene1 Scene2
リソース
- ドキュメント: https://docs.manim.community/
- リポジトリ: https://github.com/ManimCommunity/manim
- サンプルギャラリー: https://docs.manim.community/en/stable/examples.html
- Discord コミュニティ: https://www.manim.community/discord/
- 3Blue1Brown チャンネル: https://www.youtube.com/c/3blue1brown
- ライセンス: MIT
コメント
Markdown 対応