Vala は GObject を利用した C 言語のソースコードを生成する、セルフホスティングコンパイラを持つオブジェクト指向言語です。C# に似た構文を持ち、無名関数やシグナル、プロパティ、ジェネリクス、メモリ管理、例外処理、型推論、および、for-each など、C 言語にはない言語仕様を持っています。
参考サイト [1] で Linux (Fedora) で Vala を試した例を紹介しましたが、Windows の MSYS2 上でも Vala を利用できたので忘備録としてまとめました。
本ブログ記事では下記の OS 環境で動作確認をしています。
Windows 10 / MSYS2 (msys2-runtime 3.1.5-3) | x86_64 |
Hello World!
最初の Hello World! のプログラムは、参考サイト [1] と同じく、Wikipedia の Vala の説明で紹介されている、GTK+ を使って GUI を作成するサンプルプログラムを、メッセージだけ日本語 (UTF-8) にしたものにしました。
using Gtk; int main (string[] args) { Gtk.init (ref args); var window = new Window (); window.title = "Hello, World!"; window.border_width = 10; window.window_position = WindowPosition.CENTER; window.set_default_size(350, 70); window.destroy.connect (Gtk.main_quit); var label = new Label ("こんにちは、世界!"); window.add (label); window.show_all (); Gtk.main (); return 0; }
まず、PyGObject を利用するための環境を整えます。これは Python でも GObject を利用した GUI プログラミング環境を使うので、Python のために用意する環境が、そのまま Vala の環境になると考えているからです。
$ pacman -S mingw-w64-x86_64-gtk3 mingw-w64-x86_64-python3 mingw-w64-x86_64-python3-gobject
Vala をインストールします。
$ pacman -S mingw-w64-x86_64-vala
C でコンパイルするため、GCC のツールチェーンをインストールします。
$ pacman -S mingw-w64-x86_64-toolchain
準備が整ったので valac でサンプルをコンパイルして実行します。
$ valac -v --pkg gtk+-3.0 hellogtk.vala Loaded package `D:\msys64\mingw64\share/vala-0.48/vapi/glib-2.0.vapi' Loaded package `D:\msys64\mingw64\share/vala-0.48/vapi/gobject-2.0.vapi' Loaded package `D:\msys64\mingw64\share/vala-0.48/vapi/gtk+-3.0.vapi' Loaded package `D:\msys64\mingw64\share/vala-0.48/vapi/gio-2.0.vapi' Loaded package `D:\msys64\mingw64\share/vala-0.48/vapi/atk.vapi' Loaded package `D:\msys64\mingw64\share/vala-0.48/vapi/cairo-gobject.vapi' Loaded package `D:\msys64\mingw64\share/vala-0.48/vapi/cairo.vapi' Loaded package `D:\msys64\mingw64\share/vala-0.48/vapi/gdk-pixbuf-2.0.vapi' Loaded package `D:\msys64\mingw64\share/vala-0.48/vapi/gdk-3.0.vapi' Loaded package `D:\msys64\mingw64\share/vala-0.48/vapi/pango.vapi' Loaded package `D:\msys64\mingw64\share/vala-0.48/vapi/harfbuzz-gobject.vapi' Loaded package `D:\msys64\mingw64\share/vala-0.48/vapi/pangocairo.vapi' Loaded package `D:\msys64\mingw64\share/vala-0.48/vapi/x11.vapi' cc -o 'D:/msys64/home/KTAKAHAS/vala-samples\hellogtk' 'D:/msys64/home/KTAKAHAS/viro -ID:/msys64/mingw64/include -ID:/msys64/mingw64/include/gdk-pixbuf-2.0 -ID:/lude -ID:/msys64/mingw64/include/cairo -ID:/msys64/mingw64/include/pixman-1 -ID:b-2.0/include -ID:/msys64/mingw64/include -ID:/msys64/mingw64/include/cairo -ID:-luuid -lwinmm -ldwmapi -lsetupapi -lcfgmgr32 -lpangowin32-1.0 -lgdk_pixbuf-2.0 $ ./hellogtk.exe
わざわざ Vala を使わなくとも、PyGObject を利用した Python スクリプトのままで自分の環境では運用できますが、配布する場合にはバイナリの方が都合のよい場合があります。状況に応じて使い分けられるように、使いこなせるようになりたいです。
参考サイト
- bitWalk's: Vala を試してみた [2020-06-06]
- Projects/Vala - GNOME Wiki!
- Tutorial for beginners (Vala)
- Groups - MSYS2 Packages
にほんブログ村
0 件のコメント:
コメントを投稿