世界を動かす技術を、日本語で。

Manim: 説明用数学動画のためのアニメーションエンジン

概要

  • Manim は数学動画向けの プログラマブルアニメーションエンジン
  • 公式版(ManimGL)コミュニティ版 の2種類が存在
  • 本リポジトリは 3Blue1Brown によるオリジナル版
  • インストールや使い方は バージョンごとに注意 が必要
  • FFmpeg, OpenGL, LaTeX などの依存関係と Python3.7以上 が必要

ManimGLの概要とバージョンの違い

  • Manim は、 数学解説動画 のために設計された 精密なアニメーションエンジン
  • 3Blue1Brown が自身の動画用に開発した オリジナルリポジトリ
  • 2020年 より開発者コミュニティが コミュニティ版(Community Edition) を分岐
    • 安定性向上
    • テスト充実
    • コミュニティの貢献促進
    • 初心者にも始めやすい設計
  • どちらのバージョンを使うか 事前に選択 が必要

インストール時の注意点

  • 本リポジトリはManimGL(3b1b版)
    • pip install manimgl でインストール
    • manimmanimlib ではなく manimgl を指定
  • Python3.7以上 が必須
  • FFmpeg, OpenGL, LaTeX (LaTeXは任意)のインストールが必要
  • Linux では Pango とその開発ヘッダーも必要

インストール手順

  • 共通手順
    • pip install manimgl で直接インストール
    • 動作確認: manimgl
  • ソースからのインストール
    • リポジトリをクローン: git clone https://github.com/3b1b/manim.git
    • ディレクトリ移動: cd manim
    • 開発モードでインストール: pip install -e .
    • サンプル実行: manimgl example_scenes.py OpeningManimExample または manim-render example_scenes.py OpeningManimExample
  • Windows
    • FFmpeg インストール
    • LaTeX (MiKTeX推奨)インストール
    • 上記Python手順を実行
  • Mac OSX
    • HomebrewFFmpeg, LaTeX をインストール: brew install ffmpeg mactex
    • ARMプロセッサの場合は Cairo もインストール: arch -arm64 brew install pkg-config cairo
    • Python手順を実行
  • Anaconda
    • LaTeX インストール後、 conda create -n manim python=3.8
    • conda activate manim で環境有効化
    • pip install -e . でmanimglインストール

ManimGLの基本的な使い方

  • サンプル実行: manimgl example_scenes.py OpeningManimExample
    • シンプルなシーンが再生されるウィンドウ表示
  • example_scenes.py 内のサンプルで 構文やアニメーション例 を確認可能
  • 3b1b/videos リポジトリで 3Blue1Brown動画のコード を参照
    • 古い動画コードは最新版と互換性がない場合あり
    • README でインタラクティブなワークフローの詳細解説

コマンドラインオプション

  • -w: シーンをファイルに書き出し
  • -o: ファイルに書き出し結果を自動で開く
  • -s: 最終フレームのみ表示
  • -so: 最終フレームを画像保存し表示
  • -n <number>: シーン内のn番目のアニメーションにスキップ
  • -f: 再生ウィンドウをフルスクリーン表示

設定ファイルとカスタマイズ

  • custom_config.yml で詳細設定
    • 出力先ディレクトリ
    • 画像・音声ファイルの参照先
    • スタイルや動画品質のデフォルト
  • custom_config.yml を任意のディレクトリに追加することで個別カスタマイズ

ドキュメント・参考情報

コントリビュート・ライセンス

  • コントリビュート は常時歓迎
    • コミュニティ版 が最も活発
    • テスト・CI も整備
    • プルリクエストには 変更理由と効果例 の説明を推奨
  • ライセンス: MIT License

Hackerたちの意見

これを探してたんだよね。リンクをシェアしてくれてありがとう!

これいいね!数年前の「Animation vs Math」っていうすごい動画を思い出して、すぐにクリックしちゃった。数学は好きだけど、誰かに巨大なグラフを見せるのはあんまり良いアプローチじゃないよね。 :)

数学は好きだけど、誰かに巨大なグラフを見せるのはあんまり良いアプローチじゃないよね。 :) そうだね。3Blue1Brownは、動画を作ったり、Manimを公開したり、そして何よりも、視聴者を独占しようとせずに数学YouTuberのコミュニティを広げることで、数学教育を大きく進めたよね。(サル・カーンもここで評価されるべきだね。)彼は、数学を暗記や記号の操作のプロセスじゃなくて、ワクワクするようなアプローチしやすい旅に感じさせるジャンルを作り出したんだ。

これ、HNに結構定期的に投稿されてて、いい議論がたくさんあるから、議論を投稿する代わりに検索リンクだけ貼っとくね。 https://hn.algolia.com/?q=manim

HNってリンクの重複を避けるはずじゃなかったっけ?重複URLの投稿はダメだと思ってたんだけど…。

manimというソフトウェアの素晴らしいリストはある? Manim: Math Animation Src: ManimCommunity/manim: https://github.com/ManimCommunity/manim Docs: https://docs.manim.community/en/stable/ GHトピック: manim: https://github.com/topics/manim manimML、manim-physics、chanim、manim-web(dart)、JAnim(java)、ranim(rust)、manim-voiceover、git-sim、TheoremExplainAgent、reactive-manim、jupyter-manim、manim-sideview(vscode)、manim-studio(Qt、Cairo) ManimCommunity/awesome-manimにはmanimで作成するクリエイターのリストがあるよ: https://github.com/ManimCommunity/awesome-manim /?youtube manim: https://www.youtube.com/results?sp=mAEA&search_query=Manim+

コミュニティフォークの方が大多数の人には良いリンクみたいだね。 https://github.com/ManimCommunity/manim/

良い理由からなのか、ドラマ的な理由からなのか?フォークについての説明を読んだけど、Grantが元のものを維持し続けてる理由がよくわからない。

Grantが作ったプロジェクトは素晴らしいね。OSSライブラリのメンテナが作ったものじゃなくて、アプリケーションに興味がある専門家が作ったものなんだ。適切なツールがなかったから、自分の実世界のアプリケーションに合うツールを作って維持してる。俺のパターンマッチング脳は、フォークは自分の目的に合ったインフラを作りたい人たちによるものだと思ってるけど、その代償として元のアプリケーションをサポートする目的から外れていくんだ。意図されたアプリケーションからどんどん切り離されていく。委員会によるデザインで、使い方が広がりすぎて、UXが一般的に失われてると思う。これは「やるべきことをやりたい専門家」と「ライブラリを維持・推進したいライブラリメンテナ」を比較する明確なケースだと思う。

Grantの3blue1brownとManimの仕事は本当に素晴らしいよ。動画のクオリティがめちゃくちゃ高いし、視覚化のおかげでもあるよね。このトピックの抽象的な性質を考えると、簡単なことじゃない。READMEにリンクされてるけど、GrantがManimを使ってどうやって作業してるかを説明してるデモ動画[0]を特に紹介したいな。 [0] https://www.youtube.com/watch?v=rbu7Zu5X1zI

別のYouTuberの数学動画ライブラリだね: https://github.com/2swap/swaptube 彼らは、全ての動画を最初から最後までこれを使ってレンダリングしてるみたいだよ?

3b1bは本当にインターネットの世界の驚異だよね。美しいアニメーションに、考え抜かれた説明。だけど、どうして一つのライブラリがこんなに多様な概念をアニメーション化できるのか、ちょっと理解できない。全部カスタムで作る必要があると思うんだけど、彼は数学の高次元で働いてるのかもね。

どうして一つのライブラリがこんなに多様な概念をアニメーション化できるのか、ちょっと理解できない。たくさんのコミュニティオブジェクトがコアプリミティブから作られていて、それが良いスタート地点になってるからだよ。

自分のクラスプレゼンテーションでManimを使ったんだけど、使ってて本当に楽しかったし、みんなもそのスタイルを認識してくれて、全体的に好評だったよ。信じられないことに、数年前にGrantに会う機会もあったんだ。Manimを使ったって言ったら、彼は本当に嬉しそうだった。人類の知識と理解に多大な貢献をしている、すごくクールな人だよね。

ちなみに、これが現代のコーディングアシスタントとめちゃくちゃ相性がいいんだ。「方程式XがYに変形する図が欲しい」とか言うと、いつも一発で成功する。シンプルな構文とオープンソースのmanimの例がたくさんあるからなんだけど、AIコーディングエージェントの時間節約の素晴らしいデモだと思う。特に、出力された動画が正しく見えることが重要だからね。つまり、説明動画がどうやって作られたかの具体的なことは気にしないで、シンプルなプロンプトで作られて、自分が欲しかったものが得られればそれでいいんだ。

ドキュメントでRAGとどう組み合わせるのか、ちょっと楽しみだね。

グラント・サンダーソンが逆のことを言ってたポッドキャストを聞いたのを覚えてる。彼はLLMを使ってmanimコードを生成しようとしたけど、結果はあまり良くなかったみたい。やっぱり、manimのスキルって素人の私たちとグラントでは全然違うってことだね、ハハ。

TypeScriptの代替はある?

https://motioncanvas.io/