Google製の新しいコンパイル型言語Go上で動くGTK GUIライブラリ、go-gtkが今日、windowsで動いた。
Xming上で動いている様にも見えますが、ちゃんとwin32 nativeなGTKで動いてます。
まずは一般的なGUIのサンプル。
そしてgoroutineで非同期にtwitter public timeline(非streaming API)を読み込むサンプル。
だいたい動きました。ここ数日、cgoのwin32対応に関するsubmitが多くなってたので、そろそろ動くかなと思って着手しました。win32向けに対応した部分としては実はそんなに多くないです。go-gtkはイベントポーリングを自前でやっていて、その排他制御にpthreadを使っているんですが、win32だとpthread_mutex_lock/pthread_mutex_unlockでうまく排他制御出来なかった(gdkのスレッドと相性が良くないのか落ちる)ので、win32ではクリティカルセクションを使う様に
gtksourceviewの一部で落ちるのを1件確認してますが、その他はほぼ動きました。
GUIが扱えるスクリプト言語は数ありますが、nativeにコンパイル出来てオブジェクト思考で、非同期(goroutine)が使えるGoでGUIライブラリがwindows上で動いたのは、正直大きいと個人的には思っています。
Goの高速なコンパイルと、Duck Typingによる自由度の高い型変換により脳内で設計した物が思考停止する事なくアウトプット出来るのです。
同じコードで比べないと比較になりませんが、C言語でcurlとgtkを使ってtwitterのpublic timelineをGUI表示(アイコン表示あり)というコードがあったとして、僕のノートPC(Intel Core i5)ではコンパイル/リンクがだいたい5秒程度くらいかかりますが、go-gtkの同等サンプルexample/twitterだと2秒くらいでビルド出来ます。
これからGoでGUIを使ったアプリケーションを作りたいという方にはぜひ試して欲しいと思います。
Goがwindowsで動き出してまだホヤホヤですが、これから普及していく事を望んでます。