はじめに

本記事では、Pythonのアニメーションライブラリ「Manim」をGoogle Colabで実行する方法を紹介します。

Manimを使うと、数式やグラフのアニメーション化やプレゼンテーションの作成などにも活用できます。

Google Colabは、Webブラウザから無料でPythonを実行できるサービスです。環境構築が不要で、GPUも使用可能です。

この記事は、プログラミング初心者でもManimを使えるようにステップバイステップで解説します。サンプルコードの実行方法とコードの説明を通して、Manimの理解を深められます。また、言語モデルClaude3を使ってManimのコードを自動生成する方法も紹介します。

プログラミングが苦手な方も、ぜひManimを体験してみてください。まずは、Google Colabの環境設定から始めましょう。

環境設定

まずは、Google Colabの設定から始めていきます。

Google Colabのホームページ(https://colab.research.google.com/)にアクセスし、「ノートブックの新規作成」をクリックします。

次に、Manimを実行するために必要なライブラリをインストールします。以下の手順で、必要なパッケージをインストールしていきます。

次に、Manimを実行するために必要なライブラリをインストールします。以下の手順で、必要なパッケージをインストールしていきます。

新しいセルを作成し、以下のコードを入力して実行します。

!apt update
!apt install build-essential python3-dev libcairo2-dev libpango1.0-dev ffmpeg

続いて、新しいセルを作成し、以下のコードを入力して実行します。

!sudo apt-get install texlive texlive-latex-extra texlive-fonts-extra

次に、新しいセルを作成し、以下のコードを入力して実行します。

!pip install manim

最後に、インストールされたManimのバージョン情報を確認するために、新しいセルを作成し、以下のコードを入力して実行します。

!pip show manim

注意: Manimのインストール後、「WARNING: The following packages were previously imported in this runtime: [decorator]」というメッセージが表示され、セッションの再起動を促される場合があります。その場合は、メッセージ下部の「Restart Runtime」ボタンをクリックして、セッションを再起動してください。再起動後、新しいセルを作成し、残りの手順を続けます。

最後に、インストールされたManimのバージョン情報を確認するために、新しいセルを作成し、以下のコードを入力して実行します。

!pip show manim

上記を実行して、以下のように出力されたら成功です!

注意: インストール作業は、各コードを別々のセルで実行することをおすすめします。一度に全てのコードを実行すると、クラッシュが起こる可能性があります。

これで、Google Colab上でManimを使うための環境設定が完了しました。次のセクションでは、実際にManimのコードを書いて、シンプルなアニメーションを作成してみましょう。

シンプルなManimアニメーションの作成

最初は、簡単なアニメーションを作成して、Manimの基本的な使い方を学びましょう。

新しいセルを作成し、以下のコードを入力します。

%%capture
from manim import *

class SimpleAnimation(Scene):
    def construct(self):
        circle = Circle()
        self.play(Create(circle))

SimpleAnimation().render()

セルを実行すると、アニメーションのレンダリングが開始されます。レンダリングが完了すると、「Files」タブに mp4 ファイルが生成されます。

生成された mp4 ファイルをダウンロードするには、ファイルの右側の「:」マークからダウンロードを選択します。

ダウンロードしたファイルを再生して、アニメーションを確認しましょう。

コードの説明:

  • %%captureは、セル内の出力を抑制するマジックコマンドです。これにより、レンダリング中のログが表示されなくなります。

  • from manim import *で、Manimライブラリをインポートします。

  • SimpleAnimationは、アニメーションのクラス名です。constructメソッド内に、アニメーションの内容を記述します。

  • circle = Circle()は、円を作成します。self.play(Create(circle))は、円を描画するアニメーションを再生します。

  • SimpleAnimation().render()で、アニメーションをレンダリングします。

以上が、シンプルなアニメーションの作成手順です。次は、もう少し複雑なアニメーションに挑戦しましょう。

高度なManimアニメーションの作成

ここでは、「はじめに」で紹介した、少し高度なアニメーションコードを実際に実行してみましょう。

新しいセルを作成し、以下のコードを入力します。

%%capture
from manim import *

class EyeCatchingDemo(Scene):
    def construct(self):
        # Create a colorful title
        title = Text("Welcome to Manim!",
                     gradient=(RED, ORANGE, YELLOW, GREEN, BLUE, PURPLE),
                     font_size=90)
        self.play(Write(title), run_time=2)
        self.wait(1)

        # Transform the title into a spiral
        self.play(title.animate.scale(0.6).to_edge(UP))
        spiral = VGroup(*[Square(0.5) for _ in range(50)])
        spiral.arrange_in_grid(10,5)
        spiral.shift(2*DOWN)
        colors = color_gradient([RED, ORANGE, YELLOW, GREEN, BLUE, PURPLE], 50)
        for sq, color in zip(spiral, colors):
            sq.set_color(color)
        self.play(TransformFromCopy(title, spiral), run_time=3)
        self.wait(1)

        # Create some animated equations
        equations = VGroup(
            MathTex(r"\int_a^b f(x) dx = F(b) - F(a)"),
            MathTex(r"\frac{d}{dx} e^x = e^x"),
            MathTex(r"\lim_{n \to \infty} (1 + \frac{1}{n})^n = e")
        )
        equations.scale(1.5)
        equations.arrange(DOWN, buff=1)

        for eq in equations:
            self.play(FadeIn(eq, shift=RIGHT))
            self.wait(1)

        # Transform the equations into a 3D rotating sphere
        sphere = Sphere(radius=2, resolution=(20, 20),
                        checkerboard_colors=[BLUE_D, BLUE_E],
                        stroke_width=1)
        sphere.shift(2*DOWN)
        self.play(*[FadeOut(eq) for eq in equations], run_time=2)
        self.play(TransformFromCopy(spiral, sphere), run_time=3)
        self.play(Rotate(sphere, 2*PI, axis=UP), run_time=5)

        # Animate the final message
        final_message = Text("Manim brings math to life!", font_size=60, color=YELLOW)
        self.play(ReplacementTransform(sphere, final_message),
                  FadeOut(title), FadeOut(spiral), run_time=3)
        self.wait(2)

EyeCatchingDemo().render()

セルを実行し、レンダリングが完了したら、以下のコードを新しいセルに入力して実行し、mp4 ファイルをダウンロードします。

ダウンロードしたファイルを再生し、アニメーションを確認しましょう。

コードの解説は割愛しますが、このアニメーションでは、以下のような要素が使われています。

  • カラフルなテキスト

  • 図形の変形とアニメーション

  • テキストのアニメーション

  • 数式のアニメーション

  • 3Dオブジェクトの使用

これらの要素を組み合わせることで、より印象的なアニメーションを作成できます。

Claude3にManimコードを書いてもらう

最後に、先進的な言語モデルであるClaude3を使って、Manimのコードを自動生成する方法を紹介します。

Claude3に、以下のようなプロンプトを与えます。

次のような内容のManimアニメーションを作成するコードを書いてください。
- Google Colabで実行できるようにしてください
- 「Hello, Manim!」というタイトルが表示される
- タイトルの下に、回転する立方体が現れる
- 立方体が回転しながら、「Manim is awesome!」というテキストに変化する
- コードには以下を含めてください:
  %%capture
  from manim import *
  ...
  (アニメーションのクラス名).render()

Claude3が生成したコードを、新しいセルに貼り付けて実行します。

エラーが発生した場合は、エラーの文をコピーしてClaudeにエラーの解決策を聞いてみましょう。

レンダリングが完了したら、mp4ファイルをダウンロードし、アニメーションを確認します。

このように、Claude3を活用することで、プログラミングの知識が少ない人でも、簡単にManimのコードを生成できます。

Manimコード生成GPTsでManimコードを生成

本記事で紹介したManimコード生成のGPTs「Manim Professor」を作成しました。以下のリンクからアクセスできます。

https://chat.openai.com/g/g-jhfqL552a-manim-professor

「Manim Professor」は、ユーザーの要望に応じて高品質なManimコードを生成します。プログラミングが苦手な方も、このチャットボットを使えば簡単にアニメーションを作成できます。

ぜひ「Manim Professor」を使って、オリジナルのManimアニメーションを作成してみてください。

※「Manim Professor」を使用するには、ChatGPT Plusへの登録が必要です。

まとめ

本記事では、Google ColabでManimを実行する方法を紹介しました。主なポイントは以下の通りです。

  • Google Colabを使えば、簡単な環境構築でManimを実行できる

  • シンプルなアニメーションから、高度なアニメーションまで、様々な表現が可能

  • Claude3や、GPTsを活用すれば、プログラミングが苦手な人でもManimのコードを生成できる

Manimを使えば、数学の概念を視覚的に表現したり、プレゼンテーションを引き立てたりできます。ぜひ、本記事を参考に、Manimでオリジナルのアニメーションを作成してみてください。