Vala
表示
Valaは、GNOMEプロジェクト向けに開発された、C言語へのコンパイルを特徴とする高水準プログラミング言語です。本ハンドブックでは、Valaの基本文法から、GObjectの利用方法、GNOMEアプリケーション開発の基礎までを解説します。
対象読者
[編集]- プログラミング経験のある初学者
- GNOMEアプリケーション開発に興味があるプログラマー
- GObjectやGLibを活用した効率的なプログラム開発に関心がある方
目次
[編集]Valaとは
[編集]Valaは、以下の特徴を持つプログラミング言語です:
- 高水準な文法: C#やJavaに似たシンプルな文法
- GObjectを基盤: オブジェクト指向プログラミングを完全サポート
- C言語へのコンパイル: 高速かつ軽量なバイナリを生成
- GTKサポート: GUIアプリケーション開発に適したツール
Valaの環境構築
[編集]Valaを使用するには、以下のツールをインストールする必要があります:
必要なソフトウェア
[編集]- Valaコンパイラ (
valac
) - GLibおよびGTKライブラリ
インストール手順
[編集]Ubuntuの場合
[編集]# apt update # apt install valac libglib2.0-dev libgtk-3-dev
FreeBSDの場合
[編集]# pkg install vala glib gtk3
基本文法
[編集]Hello, World
[編集]以下は、Valaで「Hello, World」を表示する最小限のプログラムです:
void main() { print("Hello, World\n"); }
コンパイルと実行:
$ valac hello.vala $ ./hello
データ型
[編集]Valaには以下の主要なデータ型があります:
int
(整数)double
(浮動小数点)string
(文字列)bool
(真偽値)
例:
int number = 42; double pi = 3.14; string message = "Valaは楽しい!"; bool is_valid = true;
条件分岐とループ
[編集]条件分岐とループ構文は以下のように記述します:
// 条件分岐 if (number > 10) { print("10より大きい\n"); } else { print("10以下\n"); } // ループ for (int i = 0; i < 5; i++) { print("i = %d\n", i); }
GObjectとクラスの作成
[編集]クラスの定義
[編集]以下はGObjectを利用したクラスの定義例です:
class MyClass : Object { public string name { get; set; } public MyClass(string name) { this.name = name; } public void greet() { print("こんにちは、%sさん!\n", name); } } void main() { var obj = new MyClass("Vala"); obj.greet(); }
GTKを用いたGUI開発
[編集]最小限のGTKアプリ
[編集]以下は、GTKを使用した最小限のGUIアプリケーションです:
using Gtk; void main(string[] args) { Gtk.init(ref args); var window = new Window(); window.title = "Vala GTKアプリ"; window.border_width = 10; window.set_default_size(400, 300); window.destroy.connect(Gtk.main_quit); window.show_all(); Gtk.main(); }
コンパイル:
$ valac --pkg gtk+-3.0 gtk_app.vala $ ./gtk_app
非同期プログラミング
[編集]Valaでは、非同期処理を簡単に記述できます。以下は非同期関数の例です:
async void do_task() { print("タスク開始\n"); yield GLib.Timeout.add_seconds(2, () => { print("タスク完了\n"); return false; }); } void main() { do_task.begin(); print("メイン関数内の処理\n"); Gtk.main(); }
演習問題
[編集]問題1: クラスを作成
[編集]「名前」と「年齢」を保持するクラスを作成し、自己紹介を出力するメソッドを追加してください。
問題2: GTKでボタンを追加
[編集]GTKアプリケーションにボタンを追加し、クリック時に「ボタンがクリックされました」と出力してください。