10
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

RubyAdvent Calendar 2021

Day 12

glimmer-dsl-libui の話

Last updated at Posted at 2021-12-12

GUIへのあこがれ

こんにちは。

今日は glimmer-dsl-libui というGUIを操作するライブラリの紹介をします。

GUIっていうのは、パソコンの画面に「ウィンドウ」とか「ボタン」とか出すやつです。

はじめてコンピュータを触れたころ、コンピュータにウィンドウやボタンを表示してオリジナルなソフトを作りたいって思ってませんでしたか? 

でも現実はきびしくて、猫でもわかるプログラミングのサイトを見て、猫にはわかっても自分にはわからん、と思って諦めていました。

それからずっとプログラミングと縁のない生活を送ってましたが、なぜかRubyに触れたりして Ruby/Tk を使ってウィンドウを出せるようになりました。

けれどもTkには問題がありました。一つは、Ruby本体からTkが切り離されてしまったことです。これで、RubyをインストールすればTkが動くという前提がなくなりました。もう一つは、Tkの表示があまり美しくないことです。特にUbuntuでは20年前のアプリか?と思うほど表示が古臭いです。

Glimmer-dsl-libui

そしたら、最近 glimmer-dsl-libui というのがでてきました。

Glimmerは、 Andy Maleh さんという方が制作しているGUIライブラリーのシリーズです。

glimmer-dsl-libui の3つのレイヤー

glimmer-dsl-libuiは3つのレイヤーで構築されています。

libuiは、 andlabs さんという方が作っている小型のC言語のGUIライブラリです。WindowsであればWINAPI、macOSであればCocoa、LinuxであればGTKのAPIを呼び出します。

LibUIは、kojix2っていうやつが作っている簡素なlibuiのRubyバインディングです。Fiddleを利用してC言語の関数を呼び出しています。

glimmer-dsl-libuiは、Andy Maleh さんという方が作っているLibUIのラッパーで、Ruby言語らしい記述を可能にします。

つまり Rubyのコードglimmer-dsl-libuiglimmerLibUIfiddlelibui各OSのAPI みたいな順番で動作します。(たぶん)

動かし方

普通にインストールできます。gem install glimmer-dsl-libui
Exampleを動かしてみます。

https://github.com/AndyObtiva/glimmer-dsl-libui/
cd example

ruby meta_example.rb

ジャーン!!!

image.png

ウィンドウが表示されたではないか!!

以下スクショがひたすら貼り付けられていきます。(そういう記事なのです)

Basic編

Launchボタンを押します。

image.png

なんにもないすみれ色の画面!!

ボタン!

image.png

ネバーエンディングストーリー!!

image.png

ポンタヌティウス!!

image.pngimage.png

画像表示!!

image.png

(注:画像はlibuiの弱点です。libuiには画像を表示する機能はなくて、glimmer-dsl-libui側で無理して画像を"描画"しています。なので遅いです。リアルタイムでの描画が必要な場合はRuby/TkやGTKを使う方が幸せになれるかも)

スクロール可能なエリア!!

image.pngimage.png

テーブル!!

image.png

ボタン付きテーブル!!

image.png

チェックボックス付きテーブル!!

image.pngimage.png

カラフルなテーブル!!

image.png

レッドタートル!!

image.png

image.png

(注:さっき画像の表示が苦手だといいましたが、例外があって、Linux環境でのみ、大きな画像をテーブル上に表示することができます。これはUbuntuでスクリーンショットをとっているのでこんな感じですが、WindowsやmacOSだとすごく小さなアイコンになってしまうので注意してね)

テーブルプログレスバー!!

image.pngimage.png

南国の植物を想起させる模様!!

image.png

カラー選択ボタン!!

image.png
image.png

日時と時間の選択ダイアログ!!

image.pngimage.png

フォント選択ダイアログ!!

image.pngimage.png

入力フォーム的なの!!

image.png

メモ帳!!

image.png

(注:改行するようにもできたはずです。)

Advanced編

なんか綺麗な模様の出てくるエリアギャラリー!!

image.png

ボタンカウンター!!

image.pngimage.png

丸をひたすらクリックしていくゲーム!!

image.png

コントロールギャラリー!!

image.png

CPU利用率を表示するやつ!!

image.png

フォントを色々変えられるやつ!!

image.png

エリアをいろいろ変えるやつ!!

image.pngimage.png

編集できるテーブル!!

image.pngimage.pngimage.pngimage.png

アドレス帳アプリ!!

image.png

グリッド!!

image.png

(注:グリッドはOSによっては不具合が出るみたいなので、使うならちゃんと動作確認する必要があるようです)

ヒストグラム!!

image.png

(ヒストグラムっていう名前がついてるけど、ヒストグラムっぽい図を表示するやつであって、ヒストグラムではない)

ログイン画面!!

image.png

カスタムキーワード!!

image.png

(カスタムキーワードが何かはわかっていない)

midi player!!

image.png

(このdeadmau5 2448という曲が超おすすめ)
https://youtu.be/heOYxME3p8Y

スネークゲーム!!

image.png

テトリスと○✕ゲーム!!

image.pngimage.png

タイマー!!

image.pngimage.pngimage.png

そんなわけでglimmer-dsl-libui、よかったらつかってみてね。
Windowsで小さなツールを作って配布したい人には、最小限の構成のLibUIもおすすめです。

スクリーンショットは全部Ubuntuですが、WindowsとかmacOSでも動くはずです。

Githubをながめていると、いろんな人が自分の知らないところで便利なツールを作ってくれいたりしす。自分の書いたちっちゃなコードも、地球のいろんな国で配布されて、改造してくれる人もいます。それはとても不思議なきもちです。ウィンドウを出したい、ボタンを出したいと思ってた子供の頃にはまったく想像できなかったことが現実になっていると感じますね。

この記事は以上です。

ではまた!! Happy coding!! 

10
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?