Open22

Go(Ebitengine)製のGUIライブラリGuiguiを試す

yulogyulog

そのほかのGo製GUIライブラリで知っているもの

  • Fyne
  • Gio UI

Fyne

  • 試用経験:なし

Pros

  • ウィジェットは豊富そうな印象

Cons

  • Cコンパイラが必要

Gio UI

  • 試用経験:あり

Pros

  • Goだけで使える(Cコンパイラ不要)
  • Windowsでも使えた
  • キレイに表示される

Cons

  • 日本語フォントは自分で追加しないといけない
  • IMEが使用できない
yulogyulog

それらと比較してのGuiguiの印象

Guigui

Pros

  • 日本語フォント(CKJ)が標準ライブラリで使える
  • IMEも使えた
  • Windowsでも動いた

Cons

  • experimentalである
yulogyulog

基本的なウィジェットはあるので、簡単なツールなら手軽に作れそう。
何か作りたい。

yulogyulog

メモリが増えるのは実装が悪かったのかも…?
今は特に問題なさそう。

yulogyulog

使用量は200~300MBほどあるのでちょっと多いかも。

yulogyulog

サンプルをコピペしながら、動かすところまではスムーズにいけた(当社比)

yulogyulog

CLI Password Generator(mattn/genpw)のGUIを作ってみる。

https://github.com/mattn/genpw

見た目の部分はgalleryとtodoのサンプルを参考にこんな感じに↓

コードもスッキリしていて、サンプルを見ればどういう使い方をするのか何となく分かる。

既存の簡単なCLIにGUIを付けたいときにも手軽に使えて良さそう。

yulogyulog

mattn/genpwをライブラリとして使おうと思ったけど、そういう想定のものではなかった…。コピペして使用する。ライセンス表記しておけば良いはず。

yulogyulog

パスワードの生成のロジックはmattn/genpwから流用するんだけど、io.Writerが分かっていない。
パスワードが空白区切りで入ってくるので、go 1.24で追加されたbytes.FieldsSeqで分割して、sliceに詰めてみた。

bytes.Bufferrange bytes.FieldsSeq(buf.Bytes())の使い方はこれで良いのか…?

リリースパーティか何かでFieldsSeqなどを使うと効率的という話があったけど、どういうケースでどういう使い方をすると、どういうものと比較して良いんだろうか…。

var buf bytes.Buffer
err := run(&buf, o, n, nc, sc) // mattn/genpw由来の関数
if err != nil {
    return
}
r.passwords = []Password{}
for v := range bytes.FieldsSeq(buf.Bytes()) {
    r.passwords = slices.Insert(r.passwords, 0, NewPassword(string(v)))
}
yulogyulog

v0.1.0に向けて開発が進んでいるみたい。

yulogyulog

NumberInputが使えるようになった。

数値の範囲の下限、上限やステップ数も設定できる。
上下ボタンクリックのほか、上下キー入力や直接入力も可能。
無効な値は設定できない。

yulogyulog

Password GeneratorをWASMにしてPagesに置いた。
oEmbedも付けておくと、埋め込み表示に対応しているところでは、直接表示してパスワード生成&クリップボードへコピーができる。

https://yulog.github.io/genpw-gui/

ブラウザでも、デスクトップでも同等の内容が表示できる。