ページ 1 / 1
ゲームではなくソフトを作りたい
Posted: 2016年3月17日(木) 16:49
by baby2478nishi
こんにちは。抽象的な質問となりますが自分はMinecraftというゲームのサーバーをより使いやすくするために管理用のソフトを作りたいと思っています。
そこで質問なのですが、一般的なソフトは何で作られているのでしょうか?
とりあえず、
にあるソフトの感じで作ってみたいです。(できればwinの機能のリボンも使ってみたいです)
以前、こちらでdxLibを使ったボタンの作り方を質問をDixqさんには大変お世話になりましたが、何かあれとこういったソフトとは違う気がします。
どういった言語・ライブラリを使えば作れますか?
Re: ゲームではなくソフトを作りたい
Posted: 2016年3月17日(木) 17:42
by YuO
WinやリボンとあるのでWindows環境を想定しますが,
- C/C++ Windows APIのみでゴリゴリ書く
- C++ + MFC
- C/C++ + MFC以外のUIフレームワーク
- C# (WinForms) or Visual Basic (WinForms)
- C# (WPF) or Visual Basic (WPF)
といったあたりでしょうか。
オフトピック
JavaFXとかAdobe AIRとかSilverlight OOBとかは除外
開発効率等を考えるとC# or Visual Basicのような.NET Framework系の方が効率がよいのですが,
機能的にWindows APIの呼び出しが必要になったり,逆コンパイル精度の問題から,C++を使う選択肢も採られています。
ちなみに,最近業務にて納品した or 開発中のWindows Applicationは3つ全て私の好みでC# + WPFにて行いました。
オフトピック
社内に,そもそもWindows Desktop Applicationの開発者がいないのに受けた結果,私しか開発できる人がいないような状態になった……。
ので,WPFをためらいなく使いました。
WPF使える開発者は多くないので,レガシー技術であるWinFormsの方が業務では無難だったりします。
リボンとなると,C#/VBのWinForms系が対象から外れます。
C/C++のWindows APIのみの場合は
Ribbon Frameworkを使うことになるかと思います。
が,COM相手,つまりCreateWindowのような関数型APIではないため,C++やCOMに慣れていないと難しいかもしれません。
C++のMFC以外のリボンサポートのあるUIフレームワークはよく知らないので,知っている方にお任せするとして,
MFCでは,
チュートリアル: MFC によるリボン アプリケーションの作成(MSDN)あたりを,
WPFでは,
WPF:リボンUIを実装するには?[XAML、C#、VB](@IT)あたりを参照して,作ることになります。
ゲームとは作り方が全く異なってくるため,考え方の変更が必要になります (イベントドリブン,求められての描画など)。
そういう意味では,一度Windows APIのみでウィンドウを表示し,ボタンを押すとメッセージボックスを表示する程度のプログラムは書いておいた方がよいかもしれません。
Re: ゲームではなくソフトを作りたい
Posted: 2016年3月17日(木) 20:05
by baby2478nishi
YuOさん、ありがとうございます。
・リボンは開発環境に追加して使う、という認識で良いのでしょうか?
・また、特にC++などは初期状態ではGUIでできないと思うのですがどうするのでしょうか?
ご教授願います。
Re: ゲームではなくソフトを作りたい
Posted: 2016年3月17日(木) 20:40
by YuO
baby2478nishi さんが書きました:・リボンは開発環境に追加して使う、という認識で良いのでしょうか?
開発環境に追加して,というのが合っているのかわかりませんが,
リボンを使うのに必用なコードを書かないといけない,ということになります。
baby2478nishi さんが書きました:・また、特にC++などは初期状態ではGUIでできないと思うのですがどうするのでしょうか?
そのために,WindowsではWindows APIにUI用のAPIを用意していますし,それらを使ったライブラリ (UI Framework) も存在します。
C++のMFC,.NET FrameworkのWinFormsやWPFは,UI Frameworkの一種です。
# MFCはUI Frameworkだけではないですが。
通常のGUIソフトを作るのであれば,C#で書いた方がC++よりも数段楽に書けます。
リボンを諦めれば,WinFormsが使えますので,小さなツールであれば本当に楽に書けるでしょう。
# 大きくなると,WPFの強力なデータバインディングやGUIのカスタマイズ機能が効いてきますが。
Re: ゲームではなくソフトを作りたい
Posted: 2016年3月17日(木) 22:14
by baby2478nishi
ありがとうございます。
C#ではリボンは使えないのですね・・。ただ、自分用ですのでそこまで拘る必要もないのでC#でやってみます。
Re: ゲームではなくソフトを作りたい
Posted: 2016年3月18日(金) 00:04
by YuO
baby2478nishi さんが書きました:C#ではリボンは使えないのですね・・。
いえ,UI FrameworkとしてWPFを使うのであれば,.NET Framework 4.5からは標準でサポートしていますし (
System.Windows.Controls.Ribbon名前空間),
.NET Framework 4においてもMSがRibbonを使うためのライブラリを用意しています (
Microsoft Ribbon for WPF October 2010,
リボン (WPF))。
最初にbaby2478nishiさんが挙げられたページのソフトウェアも,.NET Framework 4.5が使われていますし,使っているライブラリを見るとWPFで作られているようです。
オフトピック
Microsoft.Expression.Interactions.dllやSystem.Windows.Interactivity.dllが含まれるので。
これらはWPFでBehaviorなどを使う場合によく使われるライブラリです。
ちなみに,実行ファイルのアセンブリのクラス一覧があれば,Visual Basicを使ったか (=ほぼC#で書いたかVBで書いたか) もだいたいわかります。
ただし,WinFormsという.NET Framework 1.0時代からあるUI Frameworkを使うのであれば,こちらは標準ではサポートされていません。
ただ,WinFormsはWindows APIのHWND等が見え隠れするような実装なので,Ribbon Frameworkを頑張ってP/Invokeすれば使えると思います……がお薦めはしません。
Re: ゲームではなくソフトを作りたい
Posted: 2016年3月18日(金) 15:37
by baby2478nishi
YuOさん、ありがとうございます。
すみません、あなたの回答をよく読めていませんでした。
ただ、調べてもよくわからないので何店か質問させてください。
・WPFで調べるとXAMLというのが目につきます。これは、言語としてHTMlと違う点はあるのでしょうか?
・また、XMlを使わないと作れないものなのでしょうか?
・WIndowsフォームアプリケーションというのがありますがあれで実際にボタンを作ってプログラミング、というのがあると思いますがVSのデザインで同じことが出来るのでしょうか?
よろしくお願いします
Re: ゲームではなくソフトを作りたい
Posted: 2016年3月18日(金) 16:47
by YuO
baby2478nishi さんが書きました:・WPFで調べるとXAMLというのが目につきます。これは、言語としてHTMlと違う点はあるのでしょうか?
別物です。
XML的な表現をするならば,XAMLとXHTMLでは利用するスキーマが異なります。
WPF Applicationを作成して,MainWindow.xamlの中身を見てみればよいでしょう。
baby2478nishi さんが書きました:・また、XMlを使わないと作れないものなのでしょうか?
現実的に無理です。
UI作成のための相当量のコードを書いて,それに見合うだけの結果は得られないと思います。
また,WPFはバインドが強力ですが,コードで書くとなるとバインドする意義が薄れます。
baby2478nishi さんが書きました:・WIndowsフォームアプリケーションというのがありますがあれで実際にボタンを作ってプログラミング、というのがあると思いますがVSのデザインで同じことが出来るのでしょうか?
Windowsフォームアプリケーションというのが,今までの回答中に書いた「WinForms」です。
当然,WinFormsもWPFも,デザインをVSで行うことが可能です。
オフトピック
昔(VS 2010頃まで)のVSのWPFデザイナはできることが相当限られていて,Expression Blendという別製品を使わないとやっていられなかったのですが,
現在のVSはほぼBlend (Community/Professional以上に付属) と同等のことができます。
ほぼ,というのは,VisualStateGroupやトリガーなどをVSのGUIから設定することができない等,あまり使われない機能に関して削られている,というものです。
WinFormsの場合,Form上のコントロールを生成するためのコードをデザイナが作成します。
VS 2005のタイミングでpartial classが追加されていますが,これはこのような,デザイナ作成コードとユーザー作成コードを分離するための試みです。
オフトピック
VS.NET/VS.NET 2003では,InitializeComponentというメソッドがForm中に直接書かれ,コメントで「触るな」と書かれていました。
が,当然ユーザーによって壊されてしまうことも多く,壊されることを防ぐためにクラスを複数に分離して記述する方法が用意されました。
ちなみに,リボンインターフェースを諦めるのであれば,WinFormsは依然として有力な選択肢です。
通常のDesktop Applicationの作成に慣れていないのであれば,WinFormsで書いてみるとよいかと思います。
最初のうちはFormのコードビハインドに全て書いて収まると思いますし。
Re: ゲームではなくソフトを作りたい
Posted: 2016年3月18日(金) 19:21
by baby2478nishi
早速のご返信、ありがとうございます。
DesktopApplicationはCUIで作ったこと、DxLibを使ってGUIのものを使ったくらいです。
確かに、僕の友達がWinFormsを使ってUSBでマイコンを制御できるものを作っていて聞けるというメリットは有るのですが、MSが今後推奨しないとあったと言ってました。
その点で非推奨だったのでしょうか?