• ベストアンサー

マルチプラットフォームで動き、データ保存を行うことができるGUIアプリを作るには、現在どのような選択肢がありますか?

いつもお世話になっています。 アウトラインエディタのようなものを作ってみようと思っています。 いろいろ考えたのですが、疑問点が多々あり、アドバイスをいただけたら幸いです。 また、プラットフォームに依存したくないので、VCやDelphiは避けたいです。 アプリ概要 左にディレクトリペインがあり、右にメモやTODOなどを書いて保存できるアウトラインプロセッサ。(既存のWindowsアプリですと、nami2000のようなものを作りたいです) [nami2000のHP] http://www.geocities.jp/my_ultraseven/mozart/_start.htm 案1 ・Webブラウザを画面としたアプリにする ネック ・Windows依存にはしたくないのでVBScriptやJScriptは使わない。JavaScriptで書くことになるかと思いますが、JavaScriptではファイル入出力はセキュリティ上サポートされていないので、別途Webサーバを立て、CGI経由でDBに保存するか、XMLテキストなどに保存する必要がある。Ajaxを使ったとしても、Webサーバが必要。単なるアイデア整理、日記、購入書籍整理、通院記録整理といった目的に使うアプリ程度にWebサーバを立てる必要が生じるのは大げさなのではないか。。いや、大げさだろう・・・。。 案2 ・C/C++を用いてGUIアプリ開発を行う。 ネック(&疑問点) ・C/C++でGUIアプリを作るには、(VC等を除くと)QtとOpenGLがあるようです。 Qtは非商用利用ではGPLなのですが、もしQtを使用してGUIアプリを開発しフリーソフトとして公開することになった場合、当然アプリのソースコードをすべて公開する必要があるのでしょうか?(wikipediaによるとGPLライセンス準拠なら公開するべきとされているようですがはっきりわかりませんでした) OpenGLはxDグラフィックスインターフェイスなので、いわゆるGUIアプリと聞いてイメージするような、メニューバーがあり、ウィンドウ領域があり・・・といったアプリ開発には向いていないのでしょうか? ・案3 Java - Swingを使って開発する。 いちばん現実的な選択肢のような気がします。。 ・案4 Firefoxなどのアドオンのように、コアはC++で記述し、XULを用いてユーザーインターフェイス部分の開発をする。 いろいろと調べたのですが、結局よくわからないままです。。難しい・・・。 その他、言語やライブラリ、フレームワークなどでアイデア・アドバイスがありましたらぜひお教えください。 個人的にはブラウザベースのアプリにしたい気持ちがあるのですが、Webサーバが必要になるのがネックです。ブラウザ画面で入力したデータをWebサーバを必要とせずにそのままローカルに保存・参照できるような機能を持つ言語はないみたいですね。XULならできるようですがよくわかりません。。 C/C++でマルチプラットフォームのGUIアプリ開発環境があればそれが一番いいと思っていますが、見つかりません。(ないなら作ればいい、というのがエンジニア魂なのでしょうが、そこまでのスキルがありません。。) また、フリーソフトとして公開するときにソースコードを公開するのは抵抗があります。 マルチプラットフォームで動き、データ保存を行うことができるGUIアプリを作るには、現在どのような選択肢があるのか、アドバイスいただけたら幸いです。 私自身も整理できていないので、わかりにくくてすみません。。 要はアウトラインプロセッサを作りたいのですが、画面をブラウザにするとWebサーバが必要になってしまい大げさ、C/C++で作るとQtなどが必要になり、ソースコード公開しなければならなくなる?(というよりも、GPLライセンスの下に他人による改変を認めてしまう)のでそれは避けたい。 XULで作る場合、Firefoxなどのアドオン化できるのは魅力だけれど、結局はjarファイルなのでソースコードそのままだしてるのと同じ、その前に概念が難しいのでよくわからない。。 JavaはGUI開発はまだまだ発展途上とのことなのでJavaにするのもどうなのか。。 混乱してます。。。

質問者が選んだベストアンサー

  • ベストアンサー
noname#208124
noname#208124
回答No.1

C/C++のライブラリでGTK+ ならLGPLです wxWidgets もLGPLに近いです

miraise
質問者

お礼

ご回答ありがとうございます。 長文・駄文をお読みいただき感謝です。 wikipediaで調べてきました。 GPLとLGPLの明確な違いがはっきりとはわかりませんでしたが、 いまの時流ではライセンスはコピーレフトなのですね。 何で作っても、所詮リバースコンパイルされてしまえば同じですし、販売までは考えていませんので、ソースコードに対するこだわりはやめようと思うようになりました。 アドバイス、ありがとうございます。 あとは、ブラウザベースにするか、C/C++で作るか、Javaで作るか、ですが・・・選択が難しいです。。 ブラウザベースにしたいのですが、マルチプラットフォーム対応でデータ保存をするには、Webサーバを立てないといけないのがネックですね。。 wxWidgetsのwikipediaを見てみたところ、「JavaのSwingを使ったときのように事前にインストールするソフトもなく高速に実行できる利点がある。」とありましたので、使うまでに手間がかかるならJavaは止めようかと思いました。 また、GTK+について見てみたところ、ソフト例にFirefoxとありましたので、GTK+を使ってもWindowsで動くのかとわかりました(無知ですね。。)。 一企業(トロールテック社)のライブラリ?であるQtではなく、GNUのGTK+を使ってみようと思います。 いろいろ考えていても仕方がない、まずは行動、ということでC/C++ - GTK+で作ってみようかと思っています。 もし、アドバイスがあればまたぜひお願いします。 余談ですが、 Qtのwikipediaのページに、Qtを使用しているアプリケーションとしてOperaがあったのですが、Operaってオープンソースではないですね。Qtを使用する=ソースコードを公開するという認識でしたので、何かGPLに対して(またはQtに対して)認識違いをしているのかもしれません。それにしても、どういうことなんだろうか・・・。

その他の回答 (1)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

>Qtを使用する=ソースコードを公開するという認識でしたので、何かGPLに対して(またはQtに対して)認識違いをしているのかもしれません。 QtはQt Softwareに金を払えばGPLに従わないという選択ができます。 Qt Softwareについて ― Qt Software - Code Less. Create More. Deploy Everywhere. http://trolltech.com/about-jp

miraise
質問者

お礼

ご回答ありがとうございます。 私が、サイト中の「標準的な商用ライセンス」の意味がうまくつかめていなかったようです。 >Qtの商用ライセンス契約では、オープンソースライセンスでプロプライエタリソフトウェアを開発することを認めていません。 なるほど、と納得しました。 ライセンスモデルは難しいですね。。 英文の中に、「3D Graphics with OpenGL」を見つけました。 OpenGLと連携できるのですね。 個人で使うだけなので私には関係ないですが、商用ライセンスはかなり高いようでびっくりしました。 Operaがオープンソースではない理由がわかりすっきりとしました。 ありがとうございました。

関連するQ&A

  • マルチプラットフォームのGUI

    今現在はWindows用のアプリとしてGUIを作成していますが、Windows だけでなくMacやiOSにも対応できるGUIを作成したいと思ったらどんな開発環境がありますかね。 こんな開発環境を使っていますって言う人がいたら教えてもらえますか? 例えばC++でC++builderを使ってます、とか

  • GUIアプリを作ってます

    現在、私は製品の操作を行うGUIアプリの作成を行っています。 そのGUI作成を行う上で、定期的によりよいGUIを作成できる環境、ビルダーなどを探しています。 何かおススメのGUIアプリ開発環境があったりしませんかね。 私が良いなと思っているのはC++ BuilderかQtです。 他に何かあれば知りたいです。 基本はWindowsアプリですが、ソースコードをそのままでMACやIOSアプリにも出来る環境がベストですね。

  • Webアプリでのデータ保存方法は?

    お世話になります。 HTMLを使ってWEBアプリの開発をしている初心者なのですが、 アプリ内でデータの保存や検索(データベースの様に)をする場合 どういった方法があるのでしょうか? localstorageだとアプリを終了してもデータが残るのでいい反面 ただデータベースの様に保存ができないのが検索の時に困るので、 Web SQL Database(SQLite?)を使おうかと思っているのですが、 調べるとゆくゆくは使えなくなる?W3Cでは推奨されていない?ということみたいなのですが、 通常のスマホアプリでは、みんなどうやってデータを保存しているんでしょうか?

  • GPLについて

    GPLについてよく分からないので、質問させてください。 QTというGUIフレームワークがありますが、このライブラリのオープンソース版のライセンスはGPLになっています。 このQTのオープンソース版をライブラリとして使用して作ったソフトウェアは、配布する際そのソフトウェアの全てのソースコードを公開しなければいけないのでしょうか?? どなたかご教示頂けると幸いです。

  • cでなぜguiアプリが作成出来るのか。

    cでなぜguiアプリが作成出来るのか。 現在cについて学習中です。 テキストエディタで書きターミナルで実行しています。 cではアプリが作れるようになるといいますが 現在のままではcuiのソフトしかできる気がしません。 一般的に言われるアプリケーションというものを 作成するにはまた別の手段が必要なのでしょうか。

  • Qtについて

    最近、Qtというクロスプラットフォームアプリケーションフレームワークが使いやすいという話を良く聞きます。 自分はGUIアプリを作っているのですが・・・ぶっちゃけ使いやすいですかね?

  • linuxでguiアプリケーションを作るには

    linuxでguiをもったアプリケーションを作るには、どんな環境が一般的なのでしょうか? プログラミング言語はc++で、guiはqtという組み合わせが多いように見えます。qtは有料だと思うんですが、無料で使える環境はあれば良いです。 できればクロスプラットフォームがいいですが、electronなどは重い印象です。 目的はblenderのような3d描写出来るソフトです。

  • Linuxでゲーム開発

    Linuxで(具体的にはLindows)ゲームを作りたいと考えています。 LinuxはツールがいろいろあってVBのようなGUIの統合開発環境がないようなのですが、何か良いツールはないものでしょうか? VBのようなツールが欲しいと思うのですが、なければそれに近いようなものでも構いません。 kylixを勉強しようかなあーとも思いましたが、どうも初心者向けの書籍がなく、インストールしたままです。WideStudio本も買いましたが、どうもrubyやC++などが必要のようで・・・。 Javaっていう話もありますが、それならWindowsでもいいじゃんっ!って思えてしまってどうも踏み込めません。 みなさん、どうやってゲーム開発などをされているんでしょうね??? QTを使うためにGLADE入れて、gtk+やGCC・・・・んーーいろいろと使えるのがLinuxの良いところですけども、GUIアプリの統合開発環境ともなると、ううううううううううむ、です。_| ̄|○ ちょっとゲーム開発したいだけなのに。。。 いろいろありすぎ!!(×_×)

  • Linux上でEclipseを使用するには

    Linux上でEclipseを使用するには 開発環境のライセンスの都合により、 あるマシン上でしか実行できないサーブレットをもつWEBアプリを開発しています。 WEBアプリはCUIモードのLinux上で動いていますが、現状複数の開発者が、端末よりサーバーに接続しサーバー上のJSPファイルを直接修正している状況です。 できればこの環境を以下のように変えたいのです。 ・LinuxはGUIモード ・LinuxにEclipseをインストール ・各端末(Windows)からLinuxにGUIモードで接続(必要なエミュレータは?) LinuxサーバーのWEBアプリケーションのディレクトリ構成は、WEB-INFの下にweb.xmlが存在しませんし(WEBアプリのディレクトリ構成を守らなくてもWEBアプリって動くの?)、Eclipseのダイナミックウェブプロジェクトのディレクトリ構成にリンクを張ったりしてごまかすのも大変そうですが、 まずは、上記の環境にするための方法がありましたら、 アイデアを教えていただきたいです。 どうぞよろしくお願いいたします。

  • Web上にデータを保存するアプリケーション作成

    通常のWindowsアプリケーションがローカルHDDにデータを保存するところを、 Webサーバ上に保存する仕様にしたいと思っています。 複数のPCで同じデータにアクセスするのが目的です。 これを実現する一般的な手法は何でしょうか? 開発環境はMicrosoft Visual Basic 2008なので、 何らかの.NETライブラリかAPI等を使えばできるとは思っているのですが。 なおWebサーバはHTTPとFTPで利用していますが、他の手法でアクセスできるかは未確認です。 サーバに必要な要件もあれば合わせてご教授お願いします。

専門家に質問してみよう