軽量でモダンな C++20 ベースの
クリエイティブコーディング・フレームワーク
tettou771 | TrussC Workshop 2026
📦 最初に Visual Studio Community または Xcode、それと CMake をインストールしておいてください
— 説明の間にインストールしましょう!(次のページに手順)
# macOS (Homebrew) # Windows
$ brew install cmake $ winget install Kitware.CMake
tdk.com/ja/featured_stories/tdkwithin/entry-01-javelinthrow.html
Motivation
💡 ここを解決したい
| 🎨 Processing | 🔧 openFrameworks | ⚡ TrussC | |
|---|---|---|---|
| 言語 | Java | C++17 | C++20 |
| ライフサイクル | setup / draw | setup / update / draw | setup / update / draw |
| バックエンド | OpenGL | OpenGL | Metal / D3D11 / WebGPU |
| ライセンス | GPL / LGPL | MIT(依存に GPL 混在) | MIT(GPL フリー) |
| 業務利用 | ⚠ 要注意 | ⚠ 要注意 | ◎ 問題なし |
| ライブラリ | 用途 | ライセンス |
|---|---|---|
| sokol (app/gfx/glue) | ウィンドウ・入力・グラフィックスバックエンド | zlib |
| stb_image / stb_truetype 系 | 画像・フォント | PD / MIT |
| Dear ImGui | イミディエイトモード GUI | MIT |
| miniaudio / dr_wav / dr_mp3 / stb_vorbis | オーディオ | PD / MIT-0 |
| cpp-httplib / nlohmann json / pugixml | HTTP / JSON / XML | MIT |
すべてヘッダーオンリー or 単一ファイルの軽量ライブラリ → ビルドが速く、ライセンスもクリーン
github.com/floooh/sokol — Simple STB-style cross-platform libraries
GLSL → HLSL / MSL
シェーダー変換
macOS / iOS
Windows
Web / WASM
Immediate mode API
TrussC の draw 系関数のベース
GPU 抽象レイヤー
バッファ / シェーダー / パイプライン
映像などの OS 固有機能は AVFoundation / Media Foundation / FFmpeg を直接使用 — GPL 依存なし

projectGenerator の中身は trusscli — 引数なしで起動すると GUI、コマンドで叩けば CLI。AI エージェントもこれを使ってビルド・実行する
$ trusscli new myApp -a tcxOsc # create a project (addons included)
$ trusscli run # build & launch
$ trusscli addon add tcxIME # add an addon later
$ trusscli update # regenerate build files
$ trusscli doctor # check the dev environment
Live Demo
ブラウザ上で WASM で動く公式サンプル集
距離画像センサ、MIDI、物理シミュレーションなどのアドオンで機能を拡張できる
色は 255 ではなく 0.0〜1.0 の正規化値 — シェーダーと自然に統合。知覚均一な OKLCH も標準搭載で、美しいグラデーションが簡単
ビルトインの Tween — createTween()->from(0)->to(100)->ease(Elastic)->start()。Elastic / Bounce / Cubic など、完了判定も簡単
GLSL で書けば sokol-shdc が Metal / D3D11 / WebGPU 用に自動変換 — 同じコードが全プラットフォームで動く
禁則・ぶら下げ・縦中横(桁数で Combine / Rotate 切替)まで入った縦書き組版。getStringPath も縦書きレイアウトを透過的に通る
コア組み込みの 8bit シンセ — アセットファイルなしで SE が鳴る。{ .wave = Wave::Square, .hz = 440 } で 1 音、ADSR・ノイズ・タイムライン合成も
oF だと自作しがちな階層構造・クリック判定が標準搭載。親子で transform が自動伝播、機能は Mod(LayoutMod, TweenMod ...)で後付け
Unity 風の Hierarchy + Inspector + ギズモを 1 行で。TC_REFLECT したメンバーは実行中に編集でき、キャンバス上のクリックで選択・ドラッグで移動/回転。GUI で配置した値は MCP(tc_get_node_tree)で読み取ってコードに焼き込める
runHeadlessApp() — ウィンドウも GPU コンテキストもなしで update() だけ回るEVENT_DRIVEN にすればネットワークコールバック駆動のサーバーにもなるreturn tc::runHeadlessApp<tcApp>(
tc::HeadlessSettings().setFps(tc::EVENT_DRIVEN));
docs/FOR_AI_ASSISTANT.md を agent が読めば、AI に必要な情報はほぼ揃っているtrusscli を叩くだけmcp::registerControlTools() でマウス・キー入力の注入も解禁mcp::tool() で自作ツールも生やせる$ TRUSSC_MCP=1 ./myApp
「キューブの照明をいい感じにして」→ AI が編集・ビルド・実行して確認
startRecording("out.mp4") / stopRecording() — 画面をそのまま動画にstartRecording(fbo, "clean.mp4") — GUI 抜きのクリーンな絵を Fbo から録画VideoWriter — 任意フレームをタイムスタンプ付きで書き出しvoid tcApp::keyPressed(int key) {
if (key == 'R') {
if (isRecording()) stopRecording();
else startRecording("out.mp4");
}
}
Ops
kiosk 端末・展示機などで、置きっぱなしのアプリを安定稼働させるコマンドラインツール
TrussC アプリは MCP に対応しているので、アプリの追加変更なしで実現している
anchorbolt.tettou771.cloud を新しいタブで開く ↗
Workshop
ここから 1 時間、実際に手を動かします
$ brew install cmake # Windows: winget install Kitware.CMake
$ git clone https://github.com/TrussC-org/TrussC
$ TrussC/tools/build_mac.command # Windows: build_win.bat / Linux: build_linux.sh
# プロンプト例
TrussC/docs/FOR_AI_ASSISTANT.md を読んでから作業して
$ git clone https://github.com/tettou771/TrussC-Workshop
0-graphics — 基本図形、fill / stroke、パス1-mouseKey — マウス & キー入力でお絵かき2-mathGenerative — sin / cos / noise でジェネ絵3-tween — Tween アニメーション4-nodeSystem — Node システム…他、基本 API のレクチャー多数!

0-graphics をドラッグ&ドロップ
# create a new project
$ trusscli new myApp
# build & launch
$ cd myApp
$ trusscli run
# regenerate build files
$ cd 0-graphics
$ trusscli update
# build & launch
$ trusscli run
AI エージェントに任せる場合も、AI がこのコマンドを叩く
Discord: TrussC — discord.gg/7MRRny56VQ