以下の条件に合う、お薦めの言語を教えて下さい。
・ユーザのWindows環境がバラバラだけど、共通して使えるソフトにしたい。
(XP/Vista/2000が混在。日本語/英語/中国語版が混在)
・Active Perlのような、特定の言語をインストールさせるのはなるべく避けたい。
Windowsの標準環境とも言えるので、.NET FrameworkのインストールはOKと思っています。
・フォルダを選択するダイアログボックスを出せる。(パスの直打ち入力は不可)
・CSV形式のデータを簡単に扱える。
「カンマ区切りのCSVから5番目の項目を取り出す」というのが1~2行で書ける。
・ビット計算ができる。
・1万数千行のCSVデータを扱うので、ある程度の処理速度が求められる。
・できれば正規表現が使える。(必須ではありません)
・プログラミングが比較的簡単(Cレベル不可。Perl、VBSレベルOK)
質問文の字数制限のため、書ききれない部分をコメント欄に書きます。
Visual Studioを使った開発は、すごく興味があるのですが、まだよくわかっていません。
Visual Studioで作ったセットアッププログラムを配布すれば、ユーザのWindows環境が(質問文のように)バラバラでも、共通して使えるツールになるのでしょうか?
Visual Studio 2008 で作成したプログラムは、.Net Frameworkで実行されます。
Windowsのバージョンは関係なく、.Net Frameworkのバージョンに依存します。
また、Visual Studio 2008 は、使用する.Net Frameworkのバージョンを指定できます。
Express Edition で作成したセットアッププログラムをインストールする際、インストール先のパソコンの.Net Frameworkのバージョンの確認が行われます。
必要なバージョンの.Net Frameworkがインストールされていない場合は、インターネットからダウンロードを試みます。
前述のように、事前にWindows Updateでインストールしておくことも出来ます。
マイクロソフトのホームページから、.Net Frameworkの再頒布パッケージをダウンロードして配布することも出来ます。
サポートされるバージョンは以下で確認できます。
http://www.microsoft.com/japan/msdn/netframework/support/ws08.as...
Perlほど簡単にはプログラムを記述できませんが、ダイアログなどを作成することはとても簡単にできます。
また、リンクしてもらったMicrosoftのホームページには、Visual Basic 2008 Express Editionや Visual C# 2008 Express Editionなどのインストーラーがダウンロードできるようになっていましたが、これらは無料で使えるのでしょうか?
それとも後でライセンス料を払わなければいけないのでしょうか?(たぶんいるとは思うのですが、念のため)
無料です。
ただし、無料のユーザー登録が必要です。
登録にはメールアドレスか WindowsLive ID が必要です。
Visual Studio の作業環境は、ある程度”慣れ”が必要に気がします。
ExcelのVBAなどを扱いなれていれば、違和感は無いと思いますが。
ダイアログ表示でCSVファイルを読み込み、テキストの編集処理などを行うだけならば、VBSで作成した方が簡単かもしれません。
C#とかどうでしょうか?
・ユーザのWindows環境がバラバラだけど、共通して使えるソフトにしたい。
(XP/Vista/2000が混在。日本語/英語/中国語版が混在)
可能
・Active Perlのような、特定の言語をインストールさせるのはなるべく避けたい。Windowsの標準環境とも言えるので、.NET FrameworkのインストールはOKと思っています。
.NET環境下で動きます。
・フォルダを選択するダイアログボックスを出せる。(パスの直打ち入力は不可)
System.Windows.Forms.FolderBrowserDialog
・CSV形式のデータを簡単に扱える。
「カンマ区切りのCSVから5番目の項目を取り出す」というのが1~2行で書ける。
string data = csv[i].Split(',')[j].TrimStart('"',' ').TrimEnd('"',' ');
・ビット計算ができる。
可能
・1万数千行のCSVデータを扱うので、ある程度の処理速度が求められる。
少なくともVBSよりは高速
・できれば正規表現が使える。(必須ではありません)
System.Text.RegularExpression.Regex
・プログラミングが比較的簡単(Cレベル不可。Perl、VBSレベルOK)
CとはついていますがVB.NETと同じくらい簡単で中括弧タイプなので比較的とっつきやすい。
ありがとうございます。
恥ずかしながら、C#の存在を知りませんでした。
私のニーズをかなり満たしているので、有力候補です。
とても助かります。
揚げ足取りをするようで申し訳ないのですが、
となると、VBSが第一選択肢になってしまうような気がするのですが‥‥。
とはいえ、ご要望の処理でしたら、VBSは悪くない選択肢だと思います。
VBS
→ 実行環境をどうやってそろえたらいいかわからない。
.NET Frameworkもバージョンが複数あるので。
VBS(VB Script)は Windows95 以降で導入されたスクリプトです。外部アプリ(Officeなど)やActiveX、.NET Frameworkを呼び出すこともできますが、ダイアログを表示したりテキストファイル処理を行う程度でしたら、これらを使うまでもなく、標準機能で実装できるはずです。つまり、Windowsがあれば、とくに他の環境を揃える必要はありません。
ただ、テキストファイルの量が多いので、もし処理が重いようでしたら、ファイル処理のみ単独のEXEファイルに任せるといいと思います。C言語で専用のEXEファイルを作るのが良いのですが、「Cレベル不可」ということであれば、似たような処理をしてくれるコマンドライン動作可能なツールを捜してきてはいかがでしょうか。
VBSを実行する環境を WSH と呼ぶこともあります。詳細は下記を参考にしてください。
ありがとうございます。
VBSの存在を聞きかじってはいるのですが、実際に使ったことはなく、どういうメリット・デメリットがあるのか、わかっていませんでした。
なので、pahooさんの回答はたいへん参考になります。
> VBS(VB Script)は(中略).NET Frameworkを呼び出すこともできますが、
> ダイアログを表示したりテキストファイル処理を行う程度でしたら、これらを
> 使うまでもなく、標準機能で実装できるはずです。つまり、Windowsがあれば、
> とくに他の環境を揃える必要はありません。
VBSは.NET Frameworkもいらないんですね。
まさにこういう情報を知りたかったのです。ありがとうございます。
お二人に回答頂いた現在では、一度 VBSで作ってみて、処理速度が期待よりも遅かったら、hirotowさんから回答してもらった C#で作り直してみようかな?と思っています。
ありがとうございました。
Perlの場合、Perl/Tkで作成してPerl2Exeでコンパイルしたらダイアログ表示出来ますが、かなり複雑ですのであまりお勧めとは言えません。
http://www.geocities.jp/m_hiroi/perl_tk/perltk03.html#chapter8
http://www.indigostar.com/perl2exe.htm
VBSでやる場合は、Windows XP 以上なら問題なく動くはずです。
.NET Frameworkもバージョンを合わせたい場合は、Windows Updateでインストールできます。
http://www.whitire.com/vbs/tips0127.html
http://www.happy2-island.com/vbs/cafe02/capter00803.shtml
もし、私がやるとしたら、Visual Studio 2008 Express Edition で作成し、セットアッププログラムを配布すると思います。
http://www.microsoft.com/japan/msdn/vstudio/express/
http://www.atmarkit.co.jp/fdotnet/dotnettips/487csvparser/csvpar...
ありがとうございます。
実は私も最初Perl/Tkを使おうと思っていたのですが、Windowsライクなフォルダ選択ボックスが出せなさそうなので、いまいちのように思ってしまいました。
Visual Studioを使った開発は、すごく興味があるのですが、まだよくわかっていません。
Visual Studioで作ったセットアッププログラムを配布すれば、ユーザのWindows環境が(質問文のように)バラバラでも、共通して使えるツールになるのでしょうか?
また、リンクしてもらったMicrosoftのホームページには、Visual Basic 2008 Express Editionや Visual C# 2008 Express Editionなどのインストーラーがダウンロードできるようになっていましたが、これらは無料で使えるのでしょうか?
それとも後でライセンス料を払わなければいけないのでしょうか?(たぶんいるとは思うのですが、念のため)
Visual Studioを使った開発は、すごく興味があるのですが、まだよくわかっていません。
Visual Studioで作ったセットアッププログラムを配布すれば、ユーザのWindows環境が(質問文のように)バラバラでも、共通して使えるツールになるのでしょうか?
Visual Studio 2008 で作成したプログラムは、.Net Frameworkで実行されます。
Windowsのバージョンは関係なく、.Net Frameworkのバージョンに依存します。
また、Visual Studio 2008 は、使用する.Net Frameworkのバージョンを指定できます。
Express Edition で作成したセットアッププログラムをインストールする際、インストール先のパソコンの.Net Frameworkのバージョンの確認が行われます。
必要なバージョンの.Net Frameworkがインストールされていない場合は、インターネットからダウンロードを試みます。
前述のように、事前にWindows Updateでインストールしておくことも出来ます。
マイクロソフトのホームページから、.Net Frameworkの再頒布パッケージをダウンロードして配布することも出来ます。
サポートされるバージョンは以下で確認できます。
http://www.microsoft.com/japan/msdn/netframework/support/ws08.as...
Perlほど簡単にはプログラムを記述できませんが、ダイアログなどを作成することはとても簡単にできます。
また、リンクしてもらったMicrosoftのホームページには、Visual Basic 2008 Express Editionや Visual C# 2008 Express Editionなどのインストーラーがダウンロードできるようになっていましたが、これらは無料で使えるのでしょうか?
それとも後でライセンス料を払わなければいけないのでしょうか?(たぶんいるとは思うのですが、念のため)
無料です。
ただし、無料のユーザー登録が必要です。
登録にはメールアドレスか WindowsLive ID が必要です。
Visual Studio の作業環境は、ある程度”慣れ”が必要に気がします。
ExcelのVBAなどを扱いなれていれば、違和感は無いと思いますが。
ダイアログ表示でCSVファイルを読み込み、テキストの編集処理などを行うだけならば、VBSで作成した方が簡単かもしれません。
Catfishさん、詳しい情報をありがとうございます。
本当に助かります。
回答を頂いてから、.Net FrameworkのバージョンがVisual Studio Express Editionで作成したセットアッププログラムで、どのように扱われるのか調べていたのですが、今回の回答でよくわかりました。
もう一つ、低レベルな疑問で申し訳ないのですが、.Net Frameworkの上位互換性の扱いはどうなっているのでしょう?
例えばセットアッププログラムで.Net Framework 2.0が指定されていて、インストールするパソコンには既に3.5が入っていた場合は、2.0より上位バージョンが入っているから3.5でOKとなるのでしょうか?
私の個人的な印象ですが、.Net Frameworkは 3.5より2.0を使っているユーザの方が多いような気がして。。。
一般的に、開発に使用する.Net Frameworkのバージョンを選ぶ場合、最新のバージョンを選べばよいのでしょうか?それともある程度、普及しているバージョンを選ぶべきなのでしょうか?
Javaで実装してGCJでEXEにコンパイルする方法もあります。
フォルダ選択ダイアログ・ビット演算・正規表現はどれも使用可能です。
> カンマ区切りのCSVから5番目の項目を取り出す
Javaで書くなら以下の様になります。
String line; // ファイルから読み込んだ一行分の文字列。 String column = line.split( "," )[ 4 ]; // カンマ区切りの5番目を取り出す。
ありがとうございます。
JAVAをコンパイルする手もありましたね。
PERLのEXE化の場合、コンパイルとは名ばかりで、PERLプログラムのソースにPERL実行環境を無理やり引っ付けただけのちゃっちいやり方なので、かえって実行するユーザPCの環境に左右されない利点があったと記憶しています。
http://ja.wikipedia.org/wiki/GCJ
Wikipediaを見ると、JAVAのコンパイルはちゃんとしたコンパイルで、
「Javaソースコードをコンパイルし、Java仮想マシンのバイトコードまたはマシン語を出力する」とあります。
JAVAのコンパイルされたEXEファイルは、Windowsの多様な環境に左右されずに実行できるのでしょうか?
VBSを使ったhtaはどうでしょうか。
第3回 HTAでコマンドライン・プログラムをビジュアルにする
http://itpro.nikkeibp.co.jp/article/COLUMN/20060116/227312/
コードをVBSで書いてユーザーインターフェースはブラウザを使用します。
Windows環境であれば特にユーザーは何もインストールする必要がありません。
http://tuka.s12.xrea.com/index.xcg?p=HTA
http://scripting.cocolog-nifty.com/blog/2007/02/windows2000wsh5_...
ファイル選択ダイアログを出す方法はいろいろあるので試してみてください。
私は良く
ActiveScriptRuby
http://www.geocities.co.jp/SiliconValley-PaloAlto/9251/ruby/
をインストールして
Formdesigner for VisualuRuby でGUIを組んで
http://homepage3.nifty.com/Yukimi_Sake/ruby.html
Exerbでexe化して配布しています。
http://exerb.sourceforge.jp/index.html
Windowsであればexeにすればrubyをインストールしなくても使えて、GUIも使えるので便利です。
ありがとうございます。
HTAという技術があるのですね。知りませんでした。
昨夜、VBSの本を買ってきて、VBSのShellオブジェクトでフォルダ選択ダイアログボックスが出せることを知って喜んでいました。
しかし、VB並みに多様なインターフェースを作れると思っていたVBSが、案外ダイアログボックスなどのデザインに自由度がなさそうに思えたので、どうしたらいいだろうと思っていました。
HTAはその解決策になりそうです。
ありがとうございます。
Rubyをexe化して配布する方法も参考になりました。
私は元々ActivePerlをexe化して配布しようかと思っていましたが、貧弱なインターフェースしかできないことを知って断念し、この質問をしました。
ActiveRubyは、ActivePerlの欠点を補ってくれそうですね。
私の周りではPerlに比べて、Rubyはそれほど普及していないので、Rubyで組むと後々誰も面倒を見てくれなくなる事態が予想されるので、気持ちはVBSに傾きつつありますが、魅力的な案でした。
■追記
よく考えたら Rubyを採用する確率はけっこう高いかもしれません。
一旦は VBSで組んでみようと思いますが、速度があまりにも遅い場合は他の言語で作り直そうかと思っています。
そのとき、.Net Frameworkのバージョンに依存するC#よりも、Ruby本体を実行ファイルに埋め込んでくれる Rubyのexe化の方がいいかもしれません。
あー、でもRubyは面倒見てくれる人少なそうだなー。
コンパイルしたJAVAがいろんなWindowsで動いてくれるなら、その方がいいのかもしれないのですが。。。
C#は、.Net Frameworkのバージョンが上がって、C#に互換性がなくなっても、ソースは使い回しできそうだし、うーん、むむむ・・・迷いどころです。
WSHはVBSとほぼ同義ですよね?
リンク先も既出でした。
回答履歴を拝見すると、失礼ながら誠意をもって回答されているユーザさんには見えませんでした。
Catfishさん、詳しい情報をありがとうございます。
本当に助かります。
回答を頂いてから、.Net FrameworkのバージョンがVisual Studio Express Editionで作成したセットアッププログラムで、どのように扱われるのか調べていたのですが、今回の回答でよくわかりました。
もう一つ、低レベルな疑問で申し訳ないのですが、.Net Frameworkの上位互換性の扱いはどうなっているのでしょう?
例えばセットアッププログラムで.Net Framework 2.0が指定されていて、インストールするパソコンには既に3.5が入っていた場合は、2.0より上位バージョンが入っているから3.5でOKとなるのでしょうか?
私の個人的な印象ですが、.Net Frameworkは 3.5より2.0を使っているユーザの方が多いような気がして。。。
一般的に、開発に使用する.Net Frameworkのバージョンを選ぶ場合、最新のバージョンを選べばよいのでしょうか?それともある程度、普及しているバージョンを選ぶべきなのでしょうか?