LinuxでGUIアプリを作る場合のお勧めの方法は何でしょう?


C GTK+
C++ Qt
Java Java
LL Tcl/Tk
どれが良く使われているのでしょうか?それともこれ以外の方法が良く使われていますか?

回答の条件
  • URL必須
  • 1人5回まで
  • 登録:
  • 終了:2008/09/03 01:05:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:jeg No.1

回答回数1ベストアンサー獲得回数0

ポイント23pt

本当に世間でよく使われているかは自信がありませんが、私でしたらJava + SwingまたはJava + SWTをお勧めします。

と、言いますのも普段メインで使用しているマシンがWindowsという方でしたら、Windows上で開発してLinux環境へ持って行き、実際の表示を見ながら微調整をすると言った開発スタイルがとれ、Windowsで使い慣れたツール類も活かせる点があります。もっとも、普段からLinuxをメインという方でしたら、一概にはそうとは言えませんが。

また、Javaでしたらフリーで秀逸なRADツールと称した、画面イメージにコンポーネントをマウス操作で貼り付けるイメージでアプリの画面をサクサク構成できるツール(eclipseのVisualEditor(http://www.eclipse.org/vep/WebContent/main.php)やNetBeans(http://www.netbeans.org/features/java/swing_ja.html)など)があり、かなり開発の助けになるかと思われます。デバッグツールとしても、C/C++でgdbやそれらのフロント(dddなど)を使うより簡単かもしれません。

この他、C/C++での開発と違いメモリアクセス周りのバグに悩まされにくいかな、と。

ただ、デメリットもあり、Javaで開発するとメモリ管理、メモリ使用量に無頓着になりがちで大量消費するアプリにしてしまったり、JavaのJREやJDKがプリインストールされていない環境であれば自分でインストールする必要もあります。これらに気を配ったり、許容できるのでしたらJavaがお勧めかな、と思います。

私が仕事で関わったり、見聞きした範囲ではJavaが多かったと記憶しています。

ただし、開発したいGUIアプリの種類によっては話が変わってしまいます。例えば画像処理で画素をゴリゴリ計算処理するアプリや、GCによる処理速度の揺らぎがあまり許容できない(広帯域なUDP受信クライアントなど)、大量配布予定があり開発したアプリの導入の敷居を下げたい、など。

このような回答でお役に立ちますか?

id:garyo

ありがとうございます。仕事でちょっとQtを使うことになったので、LinuxのGUIアプリは何で作られていることが多いのか気になって質問しました。

(仕事の方は組み込みlinuxなのでQt以外には変えられないです)

2008/08/27 09:03:45
id:hujikojp No.2

回答回数101ベストアンサー獲得回数7

ポイント23pt

どういう意図の質問か (実際に自分が組むコードに使いたいのか、単なる好奇心かなど) 把握しかねますが、とりあえず一般論を。

例から見ると言語と ToolKitの関係をわけて考えるといいのかもしれません。例えば C,C++,Java, Tclは言語です。それに対して Gtk+, Qt, Swing, SWT, Tkなどは Toolkitです。

そしてこれらの間にはある程度直交関係があります。例えばGtk+などなどはC以外にも、C++, Ruby, Perl, 各種Scheme(Gaucheなど), Haskellなどなどから使えます。ちなみに直交性を実現する、各言語(処理系)と Toolkitをつなげる部分を Bindingといいます。

もちろん完全な直交性ではなく、SwingなどはほぼJavaからしか使えません。まあ、Bindingを書けば理論的には使えるはずですが。

これらは、其々の Toolkitがどの程度直交性を考えて作られたか(言語機能に依存しないようになってるか)などによります。Gtk+はそういうことに配慮して作られている Toolkitだということです。

あと、上記の考慮で抜けてる層に描画システムがあります。まあ、ここの層は X11が一番人気なのであまり他の候補を考える必要はありませんが、用途によって DirectFB, SDL, OpenGLなどありえます。

ということでどれが最もよく使われてるか、というのも難しい(なにを持って測るか?)し、どれがお薦めかも用途、技術などによります。

そこをあえてお薦めするとなるとFudgetsなど、Haskellの機能をばりばりつかっていて惹かれます。使ったことありませんが。

まあ、素人は Ruby/Gtkぐらいにしときな、ってことです。

id:garyo

ありがとうございます。

Ruby/Tkは動かしてみたことがあります。

2008/08/27 09:05:04
id:dev_zer0 No.3

回答回数332ベストアンサー獲得回数25

ポイント22pt

Linuxのデスクトップ環境で一般的な環境はGNOMEとKDEだと思います

GNOMEはGTK+で作成されていて、KDEはQtで作成されています


あとGUIのtoolkitで有名どころはTkとMotifでしょうが

MotifはLinuxではあまり使われてないような気がします


さて、Qtで作成されることが前提ならば言語はC++が第一候補でしょう

# Qt自身もC++で作成されている為

QtをJavaから使えるようにしたニュースが下記のURLにありますが、

一般的とは言えないでしょう

http://journal.mycom.co.jp/news/2007/06/07/017/index.html


Java用のQtJava、Ruby用のQtRuby、Perl用のPerlQt、Python用のPyQt

とかもあるみたいですが、使ってみたことがないのでよく分かりませんね

id:garyo

ありがとうございます。

私はQtをちょっと覚えてみようかと思っているのですが、

それとは別に、「LinuxでGUIアプリを作る時はどの方法が普通なんだろう?」と思って質問しました。

2008/08/27 11:45:45
id:nake No.4

回答回数87ベストアンサー獲得回数0

id:garyo

LinuxでGUIアプリを作るときにどの方法がメジャーなのか質問しているのですが・・・

Ruby/Qtがメジャーですか?

2008/08/27 23:26:33
  • id:jeg
    なるほど組み込みLinuxでしたか。
    以前、私が経験した組み込みLinuxでの開発では、ハード仕様的な制限から対象機器のVRAMのアドレスが直接アプリにさらされていて、VRAMに対する描画ライブラリから開発し、その上にGUI層を新規に構築してあるものでした。
    そのため組み込みLinuxという枠でGUIを考えると、対象機器の種類やハード的な仕様により千差万別なのかと思われますね。一般的にどうなのかは私の経験だけでは推し量りかねるかな、と。
  • id:garyo
    いえいえ。組み込みでQtをやるので、練習を兼ねてLinuxでGUIアプリを作ってみようかと思った時に、どの作り方がメジャーなのか疑問に思ったのでした。
  • id:dev_zer0
    メジャーかどうかは分かりませんが
    個人的にはプロトタイプはTcl/Tkで組むのが楽ですね
     
    例えば、LinuxでWebサーバ構築では
    LAMP, Ruby on Rails, Strutsが混在していて
    どれがメジャーなのか良くわかりません
     
    GUIもGTK+, Qt, Tkが凌ぎを削っていて
    どれがメジャーなのか良くわかりません
     
    # WindowsのGUIでもWin32APIとMFCと.Netが削っていて
    # 将来どれがデファクトスタンダードになるのか分かりません
    # もしかしたらまた別の技術が出るかもしれないし...
     
    ある意味賭けですね。
    # なお、私は昔OpenWindowsに賭けて思いっきり外しましたので
    # 私の意見に同意するのは自己責任でお願いします
  • id:garyo
    dev_zer0さん、こんにちは

    >個人的にはプロトタイプはTcl/Tkで組むのが楽ですね
    なるほど。私はRuby使いなので、Ruby/Tkも覚えたほうがよさそうですね。

    >GUIもGTK+, Qt, Tkが凌ぎを削っていて
    >どれがメジャーなのか良くわかりません
    そうなんですよね。Javaならユーザーも多そうな気がしますね。

    ># なお、私は昔OpenWindowsに賭けて思いっきり外しましたので
    10年くらい前にJavaで同じような目にあった気がします。出始めの頃色々面白がってやってたんですけどね。
  • id:jeg
    少し私も興味で出たので調べてみました。
    調べた方の指針としては、sourcefoge.netで登録されているオープンソースプロジェクトをキーワード検索して件数を見てみたというレベルです。よく使われていれば登録プロジェクト数も多かろうという漠然とした判断ですが、ご参考になれば。

    キーワード:件数(キーワードからLinuxを外した件数)
     Linux GTK+ : 130(859)
     Linux Qt : 122(558)
     Linux Tcl : 15(299)
     Linux Swing : 5(460)
     Linux SWT : 5(108)

    オープンソースという範囲ではありますが、GTK+がやはり多そうですね。

    ただ、個人と企業などでどれを採用するケースが多いのか? と考えると、個人は様々な理由からでしょうが、企業となるとやはり移植性が高いものを選ぶ傾向があるのかな、と思います。
    商用ミドルウェアなどの製品群の付属GUIツール類は、私が触ったことのある今まではJava製のアプリが多かったですね。これはSolaris、Linux、WindowsServerとメジャーなサーバ向けOSごとの移植が容易だからでしょうか。

    そう考えると移植性もメジャーになるための必要要素だと考えられますので、オープンソースの世界で採用率の高いGTK+とQtと考えると、どちらが移植性が高いのでしょうか? どちらもそれぞれの環境用のものが存在はしますが、個人的にはQtの方が優れているのかな? と。

    結果として私的にはLinuxでGUIについQtを練習するというのは良い選択ではないかなと思います。
  • id:garyo
    jegさん、こんにちは
    情報ありがとうございます。
    こうしてみるとGTK+ と Qtは同じくらい使われているみたいですね。
    googleで検索してみても同じような傾向ですね。

    GTK+ の検索結果 約 5,070,000 件中 1 - 10 件目 (0.12 秒)
    qt4 の検索結果 約 2,510,000 件中 1 - 10 件目 (0.20 秒)

    関連検索: gtk+ windows gtk+ インストール gtk+ プログラミング gtk+ runtime GTK+ ダウンロード
    関連検索: qt4 windows qt4 インストール qt4 designer qt4 プログラミング Qt4 入門

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません