2026/02/25(水) [n年前の日記]
#2 [nim] NiGuiを試用
Nim言語でGUIアプリを作成できるライブラリとして、NiGui というものがあるらしい。
wNim はWindows専用だったけど、この NiGui はクロスプラットフォーム対応 ―― Windows/Linux/Mac でも使えるのだとか。
_simonkrauter/NiGui: Cross-platform desktop GUI toolkit written in Nim
気になったので試用してみることにした。環境は Windows11 x64 25H2 + Nim 2.2.8 x64。
wNim はWindows専用だったけど、この NiGui はクロスプラットフォーム対応 ―― Windows/Linux/Mac でも使えるのだとか。
_simonkrauter/NiGui: Cross-platform desktop GUI toolkit written in Nim
気になったので試用してみることにした。環境は Windows11 x64 25H2 + Nim 2.2.8 x64。
◎ インストール :
nimble install nigui
◎ 使ってみた :
wNim は Nim のバージョンを 1.6.20、2.0.0、2.0.6、2.0.8 等に落とさないと使えなかったけれど、NiGui は Nim 2.2.8 でもあっさり使えてしまった。
サンプルは以下。
_hellonigui.nim
コンパイルは以下。
hellonigui.exe が生成された。実行もできた。

サンプルは以下。
_hellonigui.nim
import nigui
app.init()
let win = newWindow("Hello NiGui")
win.width = 400.scaleToDpi
win.height = 300.scaleToDpi
win.iconPath = "example_01_basic_app.png"
let con = newLayoutContainer(Layout_Vertical)
win.add(con)
let lbl = newLabel("Hello NiGui.")
lbl.fontSize = 28
lbl.fontFamily = "Consolas"
lbl.width = 350
lbl.height = 100
con.add(lbl)
let btn = newButton("Button 1")
con.add(btn)
let exitBtn = newButton("Quit")
con.add(exitBtn)
btn.onClick = proc(event: ClickEvent) =
win.alert("Hello. This is a simple message box.")
exitBtn.onClick = proc(event: ClickEvent) =
app.quit()
win.show()
app.run()
コンパイルは以下。
nim c -d:release -d:strip --opt:size --app:gui hellonigui.nim
hellonigui.exe が生成された。実行もできた。

◎ 雑感 :
wNim に比べると圧倒的に分かりやすい気がする…。しかも、現行版 Nim 2.2.8 でもコンパイルエラーを出さずに使えるし。さらにクロスプラットフォーム対応。もうこれでいいんじゃないか…?
ただ、シンプルな仕様にした分、制限もあるようで…。
「ボタンの背景色を変えることなどはできない」
「見た目を変えたいならカスタムコントロールを作れ。自前で描画処理を書くのが面倒だけど」
「そういう時は別のGUIライブラリを検討したほうがいい」
といった言及を公式サイト上で見かけた。
見た目にはこだわらず、質実剛健、シンプルイズベストで作るなら、このライブラリは実にイイ感じかもしれない。
というか、wNim を触って、やれコンパイルができないだの、レイアウト方法が分からないだので悩んでいたわけだけど、NiGui を触ったらどれもサクサクと動作確認ができて、wNim を試用していたことがちょっと馬鹿らしくなってきて…。ひとまず何かしら動いてくれないと話にならないわけで、動かせる状態にするだけでもスンナリ行かないライブラリはちょっとなあ…。
ただ、シンプルな仕様にした分、制限もあるようで…。
「ボタンの背景色を変えることなどはできない」
「見た目を変えたいならカスタムコントロールを作れ。自前で描画処理を書くのが面倒だけど」
「そういう時は別のGUIライブラリを検討したほうがいい」
といった言及を公式サイト上で見かけた。
見た目にはこだわらず、質実剛健、シンプルイズベストで作るなら、このライブラリは実にイイ感じかもしれない。
というか、wNim を触って、やれコンパイルができないだの、レイアウト方法が分からないだので悩んでいたわけだけど、NiGui を触ったらどれもサクサクと動作確認ができて、wNim を試用していたことがちょっと馬鹿らしくなってきて…。ひとまず何かしら動いてくれないと話にならないわけで、動かせる状態にするだけでもスンナリ行かないライブラリはちょっとなあ…。
◎ 気になる点 :
ラベルを表示してみたら、ウインドウが表示されてからラベルが表示されるまで、ワンテンポ遅れる感じが…。何か計算してるのだろうか…。それともリトライ処理でもしてるのだろうか…。
[ ツッコむ ]
以上です。