「BUI」は、3DソフトのBlender(ブレンダー)の操作画面をそのまま取り出し、ほかのアプリでも使える「部品」にしたオープンソースの道具です。Blenderの画面は軽くて速いと評判です。その画面を自分のアプリに持ち込めるとして、開発者の間で名前を見かけるようになりました。
BUIをひとことで言うと?
BUIは、Blenderの操作画面を、いろいろなアプリで使い回せるようにするための部品集です。
たとえるなら、有名レストランの看板ソースを瓶詰めにして、ほかの料理人が自分の料理にかけられるようにしたものです。ただし、瓶に入っているのはBlender本体ではありません。入っているのは、ボタンやスライダーを描いて、マウスやキーボードの操作に応える部分です。
公式のREADMEは、BUIを「ライブラリ(部品集)として使えるBlenderのユーザーインターフェース」と紹介しています。ユーザーインターフェース(UI)とは、画面の見た目と操作の仕組みのことです。
これまでと何が変わるのか
- Blenderのような操作感のアプリが作りやすくなります。 READMEによると、数値の欄をドラッグすると値がなめらかに動きます。欄に「2*pi」と打つと計算してくれます。メニューに「ad cu」と打つと「Add Cube」が見つかります。こうした癖を、BUI製のアプリにも持ち込めるとされています。
- 軽さをうたっています。 変わった所だけを描き直し、何も起きていない間は休み、起動も「ミリ秒」単位だと説明されています。ミリ秒は1000分の1秒です。ただし、具体的な数字は私が読めた範囲では確認できませんでした。
- 作る側は好きな言語を選べます。 Python、Rust、JavaScriptなど、複数の言語から同じ部品を使えます。
BUIとは? 誰が作った何なのか
BUIは、GitHubの「ppmpreetham」というアカウントで公開されているオープンソースのプロジェクトです。オープンソースとは、設計図にあたるプログラムの中身が公開されていて、誰でも読めるソフトのことです。個人の開発か、チームでの開発かは、読めた範囲の資料からは分かりません。
資料は、BUIが「何ではないか」もはっきり述べています。
- Blender本体ではありません。 必要な部分のコードを取り込んで、単独でビルド(プログラムの組み立て)されます。Blenderをインストールする必要はなく、Blenderを知らなくても使えるとされています。
- ブラウザでもありません。 RustやJavaScriptの側では、HTMLとCSSを「画面を書くための言葉」として使います。ただし、ブラウザの心臓部にあたる仕組みも、ウェブ表示用の部品も、ネット通信も使わないと書かれています。
- Blenderの画面を作り直したものでもありません。 ボタンなどの描画部分は、Blenderのソースコード(
interface_widgets.cc)から移したものだと説明されています。
ChatGPTのようなAIサービスと比べると、役割がまったく違います。ChatGPTは質問に答えてくれる「サービス」です。BUIは、アプリの画面を組み立てるための「材料」です。AIに関する機能は、読めた範囲の資料には出てきません。
なお、BUIがBlenderの公式プロジェクトなのかどうかは、読めた範囲の資料には書かれていません。
なぜいま話題になっているのか
話題の様子は、投稿のタイトルから分かる範囲で次のとおりです。
- 技術者向けの投稿サイト「Hacker News」に、「Blender's UI and Runtime: Much Faster Than GPUI」という題で投稿され、687ポイントを集めています。
- 日本のはてなブックマークにも登録されています。題は「Twice as good as GPUI」と、GPUIの「2倍よい」という言い回しです。登録数は7件でした。
ここで比べられているGPUIは、別のUI部品集の名前と思われますが、読めた範囲の資料には説明がありません。
速さの主張は、READMEの題名では「much faster(ずっと速い)」です。はてなの題名は「twice as good(2倍よい)」です。言い方が違います。「2倍」が何の数字なのかは、私が確認できた範囲では分かりません。
READMEには、起動時間とバッテリー、画面の描き換え時間、JavaScript/Reactの起動とアニメーション、自分で測る手順といった性能の章があります。ただし、その中身(数値)は読めた範囲に含まれていません。これらは開発側が示す数字です。第三者が検証した結果は、資料の範囲では確認できませんでした。
話題になった理由は、資料から次の3つと考えられます。
- 見慣れたBlenderの操作感を、部品として切り出したこと
- 多くの言語から使えること
- 軽さ・速さを強くうたっていること
BUIの仕組みと主な特徴は?
1. いろいろな言語から同じ部品を使える
何ができるか:自分の得意なプログラミング言語で、Blender風の画面を作れます。
どう実現しているか:中心に小さな実行部分があり、各言語はそこへつなぐ薄い橋渡し役(バインディング)として用意されています。資料に出てくる対象は次のとおりです。
| 言語・環境 | 資料での扱い |
|---|---|
| Python | 使える言語として記載(PyPIに「blenderui」) |
| Rust | 使える言語として記載(crates.ioに「blenderui」) |
| JavaScript(React、Svelte) | 使える言語として記載(npmに「@blender-ui/react」) |
| C、C++ | 使える言語として記載 |
| Dear ImGui | 使える環境として記載 |
※Python、Rust、JavaScriptとは:どれもプログラムを書くための言語の名前です。
※Reactとは:ウェブの画面を作る人がよく使う道具の名前です。
※Dear ImGuiとは:開発用の道具などでよく使われる、画面部品の既存ライブラリの名前です。
2. 核になるのは小さなC言語の実行部分
何ができるか:画面の部品の並べ方、マウスやキーボードへの反応、描画を、まとめて高速に処理します。
どう実現しているか:資料はこの中心部を「kit(キット)」と呼びます。すべての部品を1本の木のような構造で持っています。そこで配置を決め、入力を受け、Blenderと同じやり方で描きます。描く部分はBlenderのコードのC言語版で、操作のルールもBlenderに合わせてあるとされています。
3. 画面の書き方を選べる
何ができるか:慣れた書き方でアプリを作れます。
どう実現しているか:READMEの目次には、tkinter(Python付属の画面作成用部品)の書き方、Qtという有名な部品集に似た書き方、Rust向け、React向けなど、入口が複数あります。「tkinterのアプリをそのままBUIで動かせる」とも書かれています。見た目も、HTML風、独自の装飾付き、Blender風部品の3種類があるとされています。詳しい書き方は、読めた範囲には含まれていません。
4. 軽さの工夫
何ができるか:電池やメモリの消費を抑え、動作を軽くすることをねらっています。
どう実現しているか:READMEによると、変化した部分だけを描き直し、何も起きない間は休みます。目次には「Damage rendering(変更部分の描き直し)」の章があり、描画はCPU(パソコンの頭脳)でもGPU(画像処理が得意な部品)でも行えると書かれています。
5. Dear ImGuiをBlender風にできる
何ができるか:すでにDear ImGuiで作ったものを、Blender風の見た目と操作感にできます。
どう実現しているか:資料は、本物のDear ImGuiを動かすと述べています。ビルド時の設定ひとつで切り替えられるとのことですが、設定名は読めた範囲にありません。
自分に関係ある? 向いている人・向いていない人
非エンジニアの方が、BUIを直接使う場面はほとんどありません。BUIは、アプリを作る人向けの部品です。普段使うアプリの裏側に組み込まれ、見た目や操作感として届く可能性がある、という位置づけです。BUIを使った具体的な製品の例は、読めた範囲の資料には出ていません。
向いている人
資料が挙げている想定は次のとおりです。
- Pythonのtkinterで作った古い見た目のアプリを、そのまま新しい見た目にしたい人
- Blenderに慣れたアーティスト向けのツールを作る人
- ブラウザを同梱せずに、RustやReactでデスクトップアプリを作りたい人
- Dear ImGuiをBlender風にしたい人
- UI部品集の仕組みを、読みやすいソースで学びたい人
向いていない可能性がある人
資料は、公開前に確認すべき制限として次の点を挙げています。
- アクセシビリティ(目や手が不自由な人向けの支援機能)には、まだ対応していません。
- 入力方式(変換を伴う文字入力など)にも対応していません。日本語については個別の記述がなく、使えるかどうかは確認できません。
- 見た目はBlender風になるため、パソコンのOS標準の見た目にはなりません。
使い方・始め方は?
ここからは実際に触ってみたい人向けです。読み飛ばしても全体像は分かります。
私が読めた範囲の資料には、インストールの具体的な手順やコマンドが含まれていませんでした。そのため、ここでは入手先と前提条件だけを示します。
- ソースコードとREADME:GitHubのBUIリポジトリ
- 公式サイトとドキュメント:bui.preetham.top
- パッケージ:PythonはPyPIの「blenderui」、Rustはcrates.ioの「blenderui」、React向けはnpmの「@blender-ui/react」
- 質問や交流:Discord
前提として、Blenderのインストールは不要です。ほかに必要な環境や対応OSは、READMEの「Platforms」の章に書かれているようですが、中身は確認できていません。実際に使う前に、公式サイトで最新の手順を確かめてください。
注意点と、現時点で分かっていないこと
- 制限があります。 アクセシビリティ非対応、入力方式非対応、見た目はBlender風、の3点は資料に明記されています。
- ライセンスは確認できていません。 READMEにはライセンスと謝辞の章があります。しかし、その内容は読めた範囲に含まれていません。商用利用の可否などは、リポジトリで確認してください。
- 料金は確認できません。 料金に関する記述は、読めた範囲にありません。
- 性能の数字は開発側の主張です。 「ずっと速い」「2倍」といった言い方の根拠は、手元の資料では確かめられませんでした。READMEには自分で測る手順の章があるので、気になる人は自分の環境で試すのが確実です。
- 成熟度や今後の計画は不明です。 「Status and roadmap」の章がありますが、内容は確認できていません。対応OSや安定度も同様です。
まとめ
- BUIは、Blenderの操作画面を、ほかのアプリでも使えるようにした部品集です。
- Python、Rust、JavaScriptなど、いろいろな言語から使えます。
- 軽さと速さをうたっていますが、数字の根拠は開発側の主張で、今回の資料の範囲では確かめられていません。
- 一般の人が直接使うものではなく、アプリを作る人向けです。
- アクセシビリティや文字入力の方式にはまだ対応しておらず、ライセンスや料金は公式の情報を確認する必要があります。
よくある質問
プログラミングができなくても BUI を使えますか?
BUIはアプリを作る人向けの部品集で、一般の人が直接使うソフトではありません。資料も、Python、Rust、JavaScriptなどでコードを書く開発者を想定しています。ただし、BUIで作られたアプリが出てくれば、利用者として触れる可能性はあります。
BUI を使うのにBlenderのインストールは必要ですか?
必要ありません。資料によると、BUIは必要な部分のコードを取り込んで単独でビルドされます。Blenderを入れていなくても、Blenderを知らなくても使えると説明されています。
BUI は無料で使えますか?
料金については、読めた範囲の資料に記載がありません。PyPI、crates.io、npmで公開されている形跡はありますが、ライセンスの中身は確認できませんでした。利用前にリポジトリのライセンス欄を確認してください。
BUI はAIツールですか? ChatGPTとは何が違いますか?
BUIはAIではなく、ボタンやスライダーなどの画面を作るための部品集です。ChatGPTのように質問に答えるサービスではありません。AIに関する機能も、読めた範囲の資料には書かれていません。
BUI で作ったアプリは日本語入力に対応していますか?
資料は、入力方式(インプットメソッド)への対応がまだ無いと書いています。日本語入力が使えるかどうかは、日本語に触れた記述がないため確認できません。日本語での文字入力が欠かせないアプリでは、事前に確かめてください。