Files
lvgl/docs/README_ja.md
Gabor Kiss-VamosiandGitHub 237d06943a
Arduino Lint / lint (push) Canceled after 0s
Build Examples with C++ Compiler / build-examples (push) Canceled after 0s
MicroPython CI / Build esp32 port (push) Canceled after 0s
MicroPython CI / Build rp2 port (push) Canceled after 0s
MicroPython CI / Build stm32 port (push) Canceled after 0s
MicroPython CI / Build unix port (push) Canceled after 0s
C/C++ CI / Build OPTIONS_16BIT - Ubuntu (push) Canceled after 0s
C/C++ CI / Build OPTIONS_24BIT - Ubuntu (push) Canceled after 0s
C/C++ CI / Build OPTIONS_FULL_32BIT - Ubuntu (push) Canceled after 0s
C/C++ CI / Build OPTIONS_NORMAL_8BIT - Ubuntu (push) Canceled after 0s
C/C++ CI / Build OPTIONS_SDL - Ubuntu (push) Canceled after 0s
C/C++ CI / Build OPTIONS_16BIT - cl - Windows (push) Canceled after 0s
C/C++ CI / Build OPTIONS_16BIT - gcc - Windows (push) Canceled after 0s
C/C++ CI / Build OPTIONS_24BIT - cl - Windows (push) Canceled after 0s
C/C++ CI / Build OPTIONS_24BIT - gcc - Windows (push) Canceled after 0s
C/C++ CI / Build OPTIONS_FULL_32BIT - cl - Windows (push) Canceled after 0s
C/C++ CI / Build OPTIONS_FULL_32BIT - gcc - Windows (push) Canceled after 0s
C/C++ CI / Build ESP IDF ESP32S3 (push) Canceled after 0s
C/C++ CI / Run tests with 32bit build (push) Canceled after 0s
C/C++ CI / Run tests with 64bit build (push) Canceled after 0s
BOM Check / bom-check (push) Canceled after 0s
Verify GDB constants are up-to-date / verify-gdb-consts (push) Canceled after 0s
Verify the widget property name / verify-property-name (push) Canceled after 0s
Verify code formatting / verify-formatting (push) Canceled after 0s
Compare file templates with file names / template-check (push) Canceled after 0s
Code Generation / Code Generation (push) Canceled after 0s
Build Docs / build-and-deploy (push) Canceled after 0s
Build .deb packages / build (push) Canceled after 0s
Validate pkg-config and CMake config / cmake (linux) (push) Canceled after 0s
Validate pkg-config and CMake config / pkgconfig (linux) (push) Canceled after 0s
Validate pkg-config and CMake config / cmake (linux-3d) (push) Canceled after 0s
Validate pkg-config and CMake config / pkgconfig (linux-3d) (push) Canceled after 0s
Test API JSON generator / Test API JSON (push) Canceled after 0s
Install LVGL using CMake / build-examples (private) (push) Canceled after 0s
Install LVGL using CMake / build-examples (public) (push) Canceled after 0s
Check Makefile / Build using Makefile (push) Canceled after 0s
Check Makefile for UEFI / Build using Makefile for UEFI (push) Canceled after 0s
Emulated Performance Test / ARM Emulated Benchmark - Script Check (scripts/perf/tests/benchmark_results_comment/test.sh) (push) Canceled after 0s
Emulated Performance Test / ARM Emulated Benchmark - Script Check (scripts/perf/tests/filter_docker_logs/test.sh) (push) Canceled after 0s
Emulated Performance Test / ARM Emulated Benchmark - Script Check (scripts/perf/tests/serialize_results/test.sh) (push) Canceled after 0s
Emulated Performance Test / ARM Emulated Benchmark 32b - lv_conf_perf32b (push) Canceled after 0s
Emulated Performance Test / ARM Emulated Benchmark 64b - lv_conf_perf64b (push) Canceled after 0s
Emulated Performance Test / ARM Emulated Benchmark - Save PR Number (push) Canceled after 0s
Performance Tests CI / Perf Tests OPTIONS_TEST_PERF_32B - Ubuntu (push) Canceled after 0s
Performance Tests CI / Perf Tests OPTIONS_TEST_PERF_64B - Ubuntu (push) Canceled after 0s
Port repo release update / run-release-branch-updater (push) Canceled after 0s
Static Checks / Static Checks (push) Canceled after 0s
Verify Font License / verify-font-license (push) Canceled after 0s
Verify Kconfig / verify-kconfig (push) Canceled after 0s
Hardware Performance Test / Hardware Performance Benchmark (push) Canceled after 0s
Hardware Performance Test / HW Benchmark - Save PR Number (push) Canceled after 0s
docs(readme): update the README (#10378)
2026-07-25 22:00:41 +02:00

18 KiB
Raw Permalink Blame History

ドキュメントフォーラムブログサービス spacer EN中文日本語한국어PTעברית

軽量で汎用性の高いグラフィックスライブラリ



ベクターグラフィックスを使ったEbikeデモ   アニメーション3Dモデルを使ったECGデモ



概要機能LVGL Proサンプル統合コントリビュートライセンス

概要

LVGL は、無料でオープンソースのUIライブラリであり、あらゆるベンダーのあらゆるMCUやMPU向けに、あらゆるプラットフォーム上でグラフィカルユーザーインターフェースを作成できます。

要件: LVGLには外部依存関係がないため、小規模なMCUから3D対応のマルチコアLinuxベースMPUまで、あらゆる最新のターゲット向けに簡単にコンパイルできます。一般的な UIであれば、必要なのはRAMが約100kB、フラッシュが約200〜300kB、そしてレンダリング用に画面の1/10のバッファサイズだけです。

幅広い採用: チップベンダー(NXP、Espressif、Renesasなど)、RTOSプロジェクト(Zephyr、NuttXなど)、ボードメーカー(Riverdi、Seeed Studio、VIEWE、Elecrowなど)はすべて、すでにLVGLを統合しています。開発ボードにディスプレイが搭載されているなら、そのベンダーがLVGLサポートも提供している可能性が非常に高いです。

プロフェッショナルツール: C言語のコードを書く代わりに、LVGL Pro を使うことでUI開発を大幅に高速化・簡素化できます。これはEditor、Figma統合、Online Viewer、CLIを備えた完全なツールキットです。追加のランタイムや隠れた仕掛けなしに、XMLから純粋なLVGLのCコードをエクスポートします。非商用利用および評価目的では無料です。

始めるにはサンプル を見たり、Simulatorプロジェクト を立ち上げたり、LVGL Proの Online Viewer を試したり、LVGL Pro でワンクリックでUIをウィンドウ内でコンパイル・実行したり、AI対応の ドキュメント に飛び込んだりしてみてください。Ask AI をクリックして、何でも質問してみましょう!

機能

無料、ポータブル、スケーラブル

  • 外部依存関係のない、完全にポータブルなC(C++互換)ライブラリ。
  • 任意の(RT)OSで、任意のMCUまたはMPU向けにコンパイル可能。Make、CMake、シンプルなグロビングのすべてに対応。
  • モノクロ、ePaper、OLED、TFTディスプレイ、さらにはモニターにも対応。ディスプレイ
  • MITライセンスの下で配布されているため、商用プロジェクトでも簡単に利用できます。
  • 最小構成では、RAM 32kBとフラッシュ128kB、フレームバッファ、そしてレンダリング用に少なくとも画面の1/10サイズのバッファだけで動作します。
  • OS、外部メモリ、GPUに対応していますが、必須ではありません。

ウィジェット、スタイル、レイアウト、その他

  • 30種類以上の組み込み ウィジェット: Button、Label、Slider、Chart、Keyboard、Meter、Arc、Tableなど多数。
  • 100以上のスタイルプロパティを備えた柔軟な スタイルシステム で、あらゆる状態のウィジェットのあらゆる部分をカスタマイズできます。
  • FlexboxGrid 風のレイアウトエンジンで、ウィジェットのサイズと位置をレスポンシブに自動調整します。
  • UIとアプリケーションを簡単に接続する データバインディング
  • Mouse、Touchpad、Keypad、Keyboard、外部ボタン、Encoderの 入力デバイス に対応。
  • マルチディスプレイ 対応。

レンダリング

  • 基本図形、グラデーション、アンチエイリアス、不透明度、スムーススクロール、ボックスシャドウやドロップシャドウ、画像変換などに対応した組み込み2Dレンダリングエンジン。
  • OpenGLで glTFモデル を表示する 強力な3Dレンダリングエンジン
  • ベクターグラフィックス、SVG、Lottie対応。
  • テキストはUTF-8エンコーディングでレンダリングされ、CJK、タイ語、ヒンディー語、アラビア語、ペルシャ語の書記体系に対応します。
  • VG-Lite、Dave2D、NeoChrome、OpenGLなどのGPUを組み込みでサポート。

LVGL Pro

C言語でのUI構築はうまく機能しますが、プロジェクトが成長するにつれて反復作業が遅くなり、一貫性を保つのが難しくなります。LVGL Pro を使えば、再利用可能なコンポーネントや画面をビジュアルに構築し、変更を即座にプレビューし、データバインディング、翻訳、アニメーション、テストを一箇所で管理できます。

Proは、追加のランタイムや依存関係のない、あなたがすでに使っているのと同じLVGLの、プレーンなLVGLのCコードをエクスポートします。ビルドや出荷の方法を変えることなく、既存のプロジェクトに組み込めます。

ライブプレビュー付きのLVGL Pro editorでUIを構築する様子

何もインストールせずに viewer.lvgl.io でブラウザ上で試すことも、Editorをダウンロード して無料のCommunityライセンスの下で使うこともできます。

LVGL Proは、密接に関連する4つのツールで構成されています。

  1. Editor: LVGL Proの中核。XMLでコンポーネントや画面を構築し、データバインディング、翻訳、アニメーション、テストなどを管理するデスクトップアプリです。XMLフォーマットウィジェット について詳しく学べます。
  2. Online Viewer: Editorをブラウザ上で実行し、GitHubプロジェクトを開き、開発環境をセットアップすることなく簡単に共有できます。https://viewer.lvgl.io にアクセスしてください。
  3. Figma Plugin: FigmaのデザインをワンクリックでLVGL Proに移行します。仕組みは こちら をご覧ください。
  4. CLI Tool: Cコードを生成し、CI/CDでテストを実行します。詳細は こちら をご覧ください。

CommunityとEvaluationのティアは無料で使えます。商用利用については ライセンス を参照してください。

サンプル

https://lvgl.io/docs/open/examples で100を超えるCおよびXMLのサンプルを確認できます。

LVGL Proの Online Viewer にも、多数のチュートリアルや、インタラクティブに操作できる同じサンプルが含まれています。

ちょっとした紹介として、同じシンプルなUIをCとXMLで書いたものを示します。

クリックすると出力する中央揃えのボタン

static void button_clicked_cb(lv_event_t * e)
{
    printf("Clicked\n");
}

/* ... */

lv_obj_t * button = lv_button_create(lv_screen_active());
lv_obj_center(button);
lv_obj_add_event_cb(button, button_clicked_cb,
                    LV_EVENT_CLICKED, NULL);

lv_obj_t * label = lv_label_create(button);
lv_label_set_text(label, "Hello from LVGL!");
<screen>
  <view>
    <lv_button align="center">
      <event_cb callback="button_clicked_cb" />
      <lv_label text="Hello from LVGL!" />
    </lv_button>
  </view>
</screen>

上記のXMLは、LVGL Pro が扱うものです。画面をビジュアルに構築すると、Proがそれに対応するCコードを生成してくれます。

統合

LVGLには外部依存関係がないため、あらゆるデバイス向けに簡単にコンパイルできます。組み込みドライバーが付属しており、多くのパッケージマネージャーやRTOSで利用でき、新しいデバイスへの移植も容易です。

事前統合済み

組み込みドライバー

LVGLにはすぐに使えるドライバーが付属しているため、一般的なプラットフォームではディスプレイや入力処理を自分で書く必要はありません。

  • Simulator / デスクトップ: SDL、X11、Wayland のウィンドウで、PC上でUIを開発・プレビューできます。
  • ディスプレイコントローラー: 汎用MIPI-DBI/SPI LCDILI9341、ST7789など)に加え、STの LTDC やNXPの eLCDIF といったベンダーコントローラー。
  • 組み込みLinux: framebufferfbdev)、DRM/KMS、Wayland、そしてタッチとポインタ入力用の libinput/evdev。詳細は こちら をご覧ください。
  • GPU / アクセラレーター: VG-Lite、NXP PXP、ThinkSilicon NemaGFX、Arm-2D、OpenGL ES

完全な一覧とセットアップガイドは 統合ドキュメント をご覧ください。

LVGL Proでの統合

LVGL Proでは、UIのみ、VSCode、Zephyr、Linuxのすぐに使えるプロジェクトをワンクリックで作成できます。 image

手動での移植

LVGLの統合はとても簡単です。任意のプロジェクトに配置し、他のファイルと同じようにコンパイルするだけです。LVGLを設定するには、lv_conf_template.hlv_conf.h としてコピーし、最初の #if 0 を有効にして、必要に応じて設定を調整します。(デフォルトの設定で通常は問題ありません。)利用可能であれば、LVGLはKconfigと併用することもできます。

プロジェクトに組み込んだら、次のようにLVGLを初期化し、ディスプレイと入力デバイスを作成できます。

#include "lvgl/lvgl.h" /*Define LV_LVGL_H_INCLUDE_SIMPLE to include as "lvgl.h"*/

#define TFT_HOR_RES 320
#define TFT_VER_RES 240

static uint32_t my_tick_cb(void)
{
    return my_get_millisec();
}

static void my_flush_cb(lv_display_t * disp, const lv_area_t * area, uint8_t * px_map)
{
    /*Write px_map to the area->x1, area->x2, area->y1, area->y2 area of the
     *frame buffer or external display controller. */

    /* signal LVGL that we're done */
    lv_display_flush_ready(disp);
}

static void my_touch_read_cb(lv_indev_t * indev, lv_indev_data_t * data)
{
   if(my_touch_is_pressed()) {
       data->point.x = touchpad_x;
       data->point.y = touchpad_y;
       data->state = LV_INDEV_STATE_PRESSED;
   } else {
       data->state = LV_INDEV_STATE_RELEASED;
   }
}

void main(void)
{
    my_hardware_init();

    /*Initialize LVGL*/
    lv_init();

    /*Set millisecond-based tick source for LVGL so that it can track time.*/
    lv_tick_set_cb(my_tick_cb);

    /*Create a display where screens and widgets can be added*/
    lv_display_t * display = lv_display_create(TFT_HOR_RES, TFT_VER_RES);

    /*Add rendering buffers to the screen.
     *Here adding a smaller partial buffer assuming 16-bit (RGB565 color format)*/
    static uint8_t buf[TFT_HOR_RES * TFT_VER_RES / 10 * 2]; /* x2 because of 16-bit color depth */
    lv_display_set_buffers(display, buf, NULL, sizeof(buf), LV_DISPLAY_RENDER_MODE_PARTIAL);

    /*Add a callback that can flush the content from `buf` when it has been rendered*/
    lv_display_set_flush_cb(display, my_flush_cb);

    /*Create an input device for touch handling*/
    lv_indev_t * indev = lv_indev_create();
    lv_indev_set_type(indev, LV_INDEV_TYPE_POINTER);
    lv_indev_set_read_cb(indev, my_touch_read_cb);

    /*The drivers are in place; now we can create the UI*/
    lv_obj_t * label = lv_label_create(lv_screen_active());
    lv_label_set_text(label, "Hello world");
    lv_obj_center(label);

    /*Execute the LVGL-related tasks in a loop*/
    while(1) {
        lv_timer_handler();
        my_sleep_ms(5);         /*Wait a little to let the system breathe*/
    }
}

コントリビュート

LVGLはオープンなプロジェクトであり、コントリビュートを大いに歓迎しています。あなたのプロジェクトについて話すこと、サンプルを書くこと、ドキュメントを改善すること、バグを修正すること、さらには自分のプロジェクトをLVGL組織の下でホストすることまで、貢献する方法はたくさんあります。

コントリビュートの機会についての詳しい説明は、ドキュメントの コントリビュート セクションをご覧ください。

すでに何百人もの人々がLVGLに足跡を残しています。あなたもその一人になりましょう!ここでお会いしましょう! 🙂

ライセンス

LVGLライブラリは MITライセンス の下で配布されているため、オープンソース製品でも商用製品でもロイヤリティなしで自由に使用できます。LICENCE.txt を参照してください。

LVGLにバンドルされているすべてのサードパーティライブラリもMIT互換ライセンスの下でリリースされているため、LVGLとその依存関係を安心して使用できます。

LVGL Pro には別途ライセンスがあります。

  • CommunityEvaluation のティアは 非商用利用では無料 であり、学習、趣味のプロジェクト、ツールの評価に最適です。
  • LVGL Proの商用利用には有料ライセンスが必要です。料金と詳細 を参照してください。