**Mousefood – マイクロコントローラ向け組み込みターミナルUIを構築**

- マイクロコントローラ上で直接リッチかつインタラクティブなターミナルインターフェースを作成できる軽量フレームワーク
- 最小限のメモリ占有で、ボタン・スライダー・フォームなどテキストベースのウィジェットに対応
- 一般的なRTOSやベアメタル環境と連携でき、重要な処理をブロックせずリアルタイムにUIを更新可能です

2026/01/29 2:20

**Mousefood – マイクロコントローラ向け組み込みターミナルUIを構築** - マイクロコントローラ上で直接リッチかつインタラクティブなターミナルインターフェースを作成できる軽量フレームワーク - 最小限のメモリ占有で、ボタン・スライダー・フォームなどテキストベースのウィジェットに対応 - 一般的なRTOSやベアメタル環境と連携でき、重要な処理をブロックせずリアルタイムにUIを更新可能です

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

改善された概要
mousefood は、Ratatui ターミナル UI ライブラリ向けの軽量で no‑std バックエンドを提供し、ESP32、STM32、RP2040/2350 などのマイクロコントローラや同様のボード上でリッチテキストインターフェースを描画できるようにします。

EmbeddedBackend
embedded-graphics-unicodefonts
を使用してデフォルトフォントサポート(小さなバイナリ用には無効化可能)を行い、
EmbeddedBackendConfig
によりボールド/イタリック修飾子をサポートし、色テーマのマッピング (
ColorTheme::ansi()
tokyo_night()
) を許可します。オプション機能として e‑ink ディスプレイドライバが公開されており、
epd-weact
driver.full_update
を呼び出すフラッシュコールバックを必要とし、
epd-waveshare
epd.update_and_display_frame
を使用します。
embedded-graphics-simulator
クレートによりシミュレーターが利用可能で、
cargo run --example simulator
で実行できます。サンプルコードでは、モックディスプレイ (
MockDisplay<Rgb888>
) の初期化、
EmbeddedBackend
の作成、および Ratatui の
Frame
を介したウィジェット描画を示しています。パフォーマンス指針としては、フォント使用時に高フレームレートを実現するために
opt-level = 3
でコンパイルすることが推奨され、フラッシュ制約のあるデバイスではバイナリサイズ増加に注意します。mousefood は Apache 2.0 / MIT の二重ライセンスで提供され、docs.rs に完全なドキュメントがあり、コミュニティからの貢献を歓迎しています。Tuitar、Mnyaoo32、Phone‑OS などのプロジェクトが採用しており、実際の組み込み UI に対する実用性を示しています。

本文

Mousefood – Ratatui 用の no‑std エンベデッド・グラフィックスバックエンド!


速やかな始め方

mousefood
を依存関係に追加します:

[dependencies]
mousefood = "..."

実装例

use mousefood::embedded_graphics::{mock_display::MockDisplay, pixelcolor::Rgb888};
use mousefood::prelude::*;
use ratatui::widgets::{Block, Paragraph};
use ratatui::{Frame, Terminal};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // ILI9341・ST7735・SSD1306 など、ご自身のディスプレイドライバに置き換えてください
    let mut display = MockDisplay::<Rgb888>::new();

    let backend = EmbeddedBackend::new(&mut display, EmbeddedBackendConfig::default());
    let mut terminal = Terminal::new(backend)?;

    terminal.draw(draw)?;
    Ok(())
}

fn draw(frame: &mut Frame) {
    let block = Block::bordered().title("Mousefood");
    let paragraph = Paragraph::new("Hello from Mousefood!").block(block);
    frame.render_widget(paragraph, frame.area());
}

特殊文字

embedded-graphics
は ASCII/ISO 8859/JIS X0201 の限られたグリフしか持ちません。
Ratatui のウィジェットはボックス描画記号やブレイル、その他特殊文字を多用するため、デフォルトのフォントだけでは足りません。

Mousefood は

embedded-graphics-unicodefonts
をデフォルトで使用し、より大きなグリフセットを提供します。

代替案

容量を節約したい、または描画速度を上げたい場合は、デフォルトのクレート機能をオフにしてフォント機能を無効化してください。

ibm437
クレートはより小型で、一部描画文字のみを含む代替です。


太字・斜体フォント

太字/斜体の修飾子はサポートされていますが、対応するフォントを

EmbeddedBackendConfig
で指定する必要があります。
通常フォントだけを提供した場合、それがフォールバックとして機能します。
すべてのフォントは同じサイズである必要があります。

use mousefood::embedded_graphics::{mock_display::MockDisplay, pixelcolor::Rgb888};
use mousefood::{EmbeddedBackend, EmbeddedBackendConfig, fonts};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut display = MockDisplay::<Rgb888>::new();

    let config = EmbeddedBackendConfig {
        font_regular: fonts::MONO_6X13,
        font_bold: Some(fonts::MONO_6X13_BOLD),
        font_italic: Some(fonts::MONO_6X13_ITALIC),
        ..Default::default()
    };

    let backend = EmbeddedBackend::new(&mut display, config);
    let _terminal = Terminal::new(backend)?;
    Ok(())
}

カラーテーマ

EmbeddedBackendConfig
color_theme
で色を再マップできます。
デフォルトでは ANSI パレットが使用されます。

use mousefood::{ColorTheme, EmbeddedBackend, EmbeddedBackendConfig};
use mousefood::embedded_graphics::{mock_display::MockDisplay, pixelcolor::Rgb888};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut display = MockDisplay::<Rgb888>::new();

    let theme = ColorTheme {
        background: Rgb888::new(5, 5, 5),
        foreground: Rgb888::new(240, 240, 240),
        yellow:     Rgb888::new(255, 200, 0),
        ..ColorTheme::ansi()
    };

    let config = EmbeddedBackendConfig {
        color_theme: theme,
        ..Default::default()
    };
    let backend = EmbeddedBackend::new(&mut display, config);
    Ok(())
}

内蔵テーマ

  • ColorTheme::ansi()
    – 標準 ANSI 色(デフォルト)
  • ColorTheme::tokyo_night()
    – 青/紫調の Tokyo Night ダークテーマ

シミュレータ

embedded-graphics-simulator
クレートを使えば、Mousefood をシミュレータ上で動かせます。

git clone https://github.com/ratatui/mousefood.git
cd mousefood/examples/simulator
cargo run

詳細はシミュレータ例をご覧ください。


EPD(電子ペーパー)サポート

WeAct Studio

WeAct Studio 製 e‑ink ディスプレイ(

weact-studio-epd
ドライバ)のサポートは
epd-weact
フィーチャーで有効化できます。
Waveshare の例と同じ
flush_callback
パターンを適用してください。

use mousefood::prelude::*;
use weact_studio_epd::{graphics::Display290BlackWhite, WeActStudio290BlackWhiteDriver};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // お使いのボードに合わせて SPI + GPIO + ディレイプロバイダを設定してください
    // let (spi_interface, busy, rst, delay) = ...;

    let mut driver = WeActStudio290BlackWhiteDriver::new(spi_interface, busy, rst, delay);
    let mut display = Display290BlackWhite::new();

    driver.init()?;

    let config = EmbeddedBackendConfig {
        flush_callback: Box::new(move |d| {
            driver.full_update(d).expect("epd update failed");
        }),
        ..Default::default()
    };

    let backend = EmbeddedBackend::new(&mut display, config);
    let _terminal = Terminal::new(backend)?;
    Ok(())
}

Waveshare

Waveshare Electronics 製 e‑ink ディスプレイ(

epd-waveshare
ドライバ)のサポートは
epd-waveshare
フィーチャーで有効化できます。

use mousefood::prelude::*;
use epd_waveshare::{epd2in9_v2::*, prelude::*};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // お使いのボードに合わせて SPI + GPIO + ディレイプロバイダを設定してください
    // let (mut spi_device, busy, dc, rst, mut delay) = ...;

    let mut epd = Epd2in9::new(&mut spi_device, busy, dc, rst, &mut delay, None)?;
    let mut display = Display2in9::default();

    let config = EmbeddedBackendConfig {
        flush_callback: Box::new(move |d| {
            epd.update_and_display_frame(&mut spi_device, d.buffer(), &mut delay)
                .expect("epd update failed");
        }),
        ..Default::default()
    };

    let backend = EmbeddedBackend::new(&mut display, config);
    let _terminal = Terminal::new(backend)?;
    Ok(())
}

examples/epd-waveshare-demo
に完全な組み込み例があります。


パフォーマンスとハードウェアサポート

ほとんどの組み込みデバイスではフラッシュメモリが非常に限られています。
フォント機能を使用しながら高いフレームレートを実現するには、

opt-level = 3
を推奨します(これでバイナリサイズが増加する場合があります)。

Mousefood はハードウェア非依存であり、以下のプラットフォームで成功裏にテスト済みです:

  • ESP32 (Xtensa)
  • ESP32-C6 (RISC‑V)
  • STM32
  • RP2040
  • RP2350

ドキュメント & コントリビューション

完全な API ドキュメントは docs.rs で確認できます。
すべての貢献を歓迎します! プルリクエストを作成する前に、コントリビュートガイドラインをご覧ください。


Mousefood を使っているプロジェクト

  • Tuitar – ポータブルギタートレーニングツール
  • Mnyaoo32 – ESP32 で IRC メッセージを消費する風変わりな方法
  • Phone‑OS – ESP32 CYD 用のモダン電話 OS

ご自身のプロジェクトも追加したい場合は、プルリクエストを送ってください!


ライセンス

Mousefood は Apache 2.0 と MIT の二重ライセンスで提供されます。

同じ日のほかのニュース

一覧に戻る →

2026/01/28 9:57

**トリニティ・ラージ** オープンな400 B スパースMoEモデル

## Japanese Translation: ``` (combining all key points with clarity):** --- ### Trinity‑Large: A Fast, Open, State‑of‑the‑Art Sparse MoE Language Model Trinity‑Large は、1 つのトークンで約 13 B パラメータ(256 エキスパート、1.56 % ルーティング分率)しか活性化しない 400 B パラメータを持つ sparse mixture‑of‑experts モデルです。10 T、4 T、3 T の三段階で **17 T** のキュレーション済みトークンを使用して訓練されました。プログラミング・STEM・推論・多言語コンテンツをカバーする合成データが用いられ、Momentum‑based エキスパートロードバランシング、1 シーケンスあたりのバランスロス、z‑loss 正則化で LM‑head ロジットを抑制し、効率的な注意機構(HSDP)と 8‑expert 並列処理が採用されました。 **リリースされたバリアント** | バリアント | 説明 | |---------|-------------| | **Trinity‑Large‑Preview** | 軽くポストトレーニングし、チャット対応。創造的執筆・物語作成・ロールプレイ・リアルタイム音声支援・エージェントタスク(OpenCode, Cline, Kilo Code)で優れた性能を発揮します。まだ推論モデルではありません。 | | **Trinity‑Large‑Base** | 完全な 17 T 事前訓練チェックポイント。ベンチマークと研究資源として使用されます。 | | **TrueBase** | 初期の 10 T チェックポイントで、指示データや LR アニーリングが含まれていません。大規模な高品質事前訓練効果を研究するのに最適です。 | 全体の作業―6か月間にわたる4つのモデル―は約 **2,000 万ドル** の費用で、**2048 台の Nvidia B300 GPU** を使用し、**33 日間** にわたって訓練されました。 **性能** - 数学・コーディング・科学的推論・原知識ベンチマークにおいて同等またはそれ以上の性能を示します。 - 推論速度は、同じハードウェア上で比較可能な重みクラスモデルより約 2–3 倍速です。 - ベンチマーク比較(Preview vs. Llama 4 Maverick): - MMLU: 87.2 vs. 85.5 - MMLU‑Pro: 75.2 vs. 80.5 - GPQA‑Diamond: 63.3 vs. 69.8 - AIME 2025: 24.0 vs. 19.3 **技術的詳細** - ネイティブコンテキスト長:**512k トークン**。Preview API はインフラ調整中に 128k と 8‑bit 量子化で動作します。 - モデルと API は Hugging Face、OpenRouter、および Arcee.ai を通じて公開されており、Kilo Code、Cline、OpenCode 用の統合がすぐに利用可能です。 **コミュニティへの関与** チームは Trinity‑Large が最先端レベルでありながら所有権と実際の使用を念頭に置いて設計されていることを強調し、ユーザーに失敗例を報告してもらうことでオープンモデルが継続的に改善できるよう奨励しています。 ```

2026/01/28 9:18

「有名な研究者が、赤ちゃんの中毒事件を隠したのでしょうか?」

2026/01/28 23:32

エアフォイル(2024)

**Mousefood – マイクロコントローラ向け組み込みターミナルUIを構築** - マイクロコントローラ上で直接リッチかつインタラクティブなターミナルインターフェースを作成できる軽量フレームワーク - 最小限のメモリ占有で、ボタン・スライダー・フォームなどテキストベースのウィジェットに対応 - 一般的なRTOSやベアメタル環境と連携でき、重要な処理をブロックせずリアルタイムにUIを更新可能です | そっか~ニュース