Linuxデスクトップの世界観に戻るGTK言語バインディングの世界観GTK言語バインディングの世界観です。言語バインディングCによるオブジェクト指向と言語バインディングGTK+/GNOMEはC言語で書かれながら、GLib/GObjectという仕組みを使うことでオブジェクト指向を実現しています。これにより、さまざまな言語のラッパーを作ることが可能です。それによって、言語バインディングが用意されています。ArchWikiにGTK+の各種言語バインディングのサンプル一覧があります。JavaScriptただ、これらのAPIの問題は、C言語のラッパーであるせいか、「init関数やrun関数をわざわざ記述する必要があって、意外と美しくない」ということがある。C++やPythonを最初から使うのであれば、KDEのQt/PyQtを試しても良いかもしれない。Qtの場合もapp.exec();を実行する必要はある。公式サポートの対応バインディングたくさんのバインディングに対応しているとは言っても、本当は「一部分だけしか対応していない」とか、「開発状況が遅れていてバグや動かない機能が多い」となりがちである。Bindingsに、公式のバインディングのサポート状況がある。Valaが公式でサポートされている。よって、できるだけこれらの言語で開発するように心がけよう。Demosから参照できる。(Ruby)以下はRuby/GTKの例。glade以下はGtk::Builderを使ってGladeのUIファイルを読み込む例。Qiitagladeを使う例。'myapp.glade')で読み込んでいる。myapp.gladeを別途用意する必要がある。Ruby/GTKでカスタムウィジェット標準のウィジェットを使うだけではなく、自分独自のウィジェットを作りたい場合は、GTK+では以下のようにカスタムウィジェットを開発できる。Ruby/GTK+の場合、以下のようにGLib::Object.type_registerを呼び出してGObjectシステムに型を登録してから、GLib::MetaInterface.signal_newでシグナルを登録する。plonk123の日記を参考に執筆・引用しました。(C++)以下はgtkmmの例。(Python)以下はPyGTKの例。後日注記:GTK3においてはPyGTKはPyGObjectへと置き換えられる。Introspectionというライブラリ)で、GTKなどGNOME系デスクトップライブラリをPythonやさまざまな言語から使えるようにする。これによりGTKとバインディング間での開発の遅延の解消や、開発者の手間やコストの解消に繋がる。(JavaScript)以下はgjsの例。(mono)C#/GTK#による.NETアプリケーション開発についてはMonoを参照のこと。ValaとGenieみんな、もっとValaとGenieを使おう。GLibを使ったC#やPythonライクな言語で、Cに変換して使うため高速である。美しいコードでGNOME/GTK+のプログラミングが出来る。以下は全部英語ですが参考になればと思います。ArchWikiからも参照できる。