Windows上で動くテキスト処理プログラムを作成しようとしていますが、プログラム言語を何にしていいか迷っています。

以下の条件に合う、お薦めの言語を教えて下さい。

・ユーザのWindows環境がバラバラだけど、共通して使えるソフトにしたい。
 (XP/Vista/2000が混在。日本語/英語/中国語版が混在)
・Active Perlのような、特定の言語をインストールさせるのはなるべく避けたい。
 Windowsの標準環境とも言えるので、.NET FrameworkのインストールはOKと思っています。
・フォルダを選択するダイアログボックスを出せる。(パスの直打ち入力は不可)
・CSV形式のデータを簡単に扱える。
 「カンマ区切りのCSVから5番目の項目を取り出す」というのが1~2行で書ける。
・ビット計算ができる。
・1万数千行のCSVデータを扱うので、ある程度の処理速度が求められる。
・できれば正規表現が使える。(必須ではありません)
・プログラミングが比較的簡単(Cレベル不可。Perl、VBSレベルOK)

質問文の字数制限のため、書ききれない部分をコメント欄に書きます。

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

ベストアンサー

id:Catfish No.4

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

ポイント220pt

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で作成した方が簡単かもしれません。

id:uta_at_home

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のバージョンを選ぶ場合、最新のバージョンを選べばよいのでしょうか?それともある程度、普及しているバージョンを選ぶべきなのでしょうか?

2008/05/14 19:55:36

その他の回答6件)

id:hirotow No.1

回答回数131ベストアンサー獲得回数10

ポイント100pt

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と同じくらい簡単で中括弧タイプなので比較的とっつきやすい。

id:uta_at_home

ありがとうございます。

恥ずかしながら、C#の存在を知りませんでした。

私のニーズをかなり満たしているので、有力候補です。

とても助かります。

2008/05/14 18:06:03
id:pahoo No.2

回答回数5960ベストアンサー獲得回数633

ポイント100pt

揚げ足取りをするようで申し訳ないのですが、

  • Cレベル不可。Perl、VBSレベルOK
  • Active Perlのような、特定の言語をインストールさせるのはなるべく避けたい

となると、VBSが第一選択肢になってしまうような気がするのですが‥‥。


とはいえ、ご要望の処理でしたら、VBSは悪くない選択肢だと思います。

VBS

 → 実行環境をどうやってそろえたらいいかわからない。

   .NET Frameworkもバージョンが複数あるので。

VBS(VB Script)は Windows95 以降で導入されたスクリプトです。外部アプリ(Officeなど)やActiveX、.NET Frameworkを呼び出すこともできますが、ダイアログを表示したりテキストファイル処理を行う程度でしたら、これらを使うまでもなく、標準機能で実装できるはずです。つまり、Windowsがあれば、とくに他の環境を揃える必要はありません。


ただ、テキストファイルの量が多いので、もし処理が重いようでしたら、ファイル処理のみ単独のEXEファイルに任せるといいと思います。C言語で専用のEXEファイルを作るのが良いのですが、「Cレベル不可」ということであれば、似たような処理をしてくれるコマンドライン動作可能なツールを捜してきてはいかがでしょうか。


VBSを実行する環境を WSH と呼ぶこともあります。詳細は下記を参考にしてください。

id:uta_at_home

ありがとうございます。

VBSの存在を聞きかじってはいるのですが、実際に使ったことはなく、どういうメリット・デメリットがあるのか、わかっていませんでした。

なので、pahooさんの回答はたいへん参考になります。


> VBS(VB Script)は(中略).NET Frameworkを呼び出すこともできますが、

> ダイアログを表示したりテキストファイル処理を行う程度でしたら、これらを

> 使うまでもなく、標準機能で実装できるはずです。つまり、Windowsがあれば、

> とくに他の環境を揃える必要はありません。


VBSは.NET Frameworkもいらないんですね。

まさにこういう情報を知りたかったのです。ありがとうございます。


お二人に回答頂いた現在では、一度 VBSで作ってみて、処理速度が期待よりも遅かったら、hirotowさんから回答してもらった C#で作り直してみようかな?と思っています。


ありがとうございました。

2008/05/14 18:13:28
id:Catfish No.3

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

ポイント100pt

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...

id:uta_at_home

ありがとうございます。

実は私も最初Perl/Tkを使おうと思っていたのですが、Windowsライクなフォルダ選択ボックスが出せなさそうなので、いまいちのように思ってしまいました。


Visual Studioを使った開発は、すごく興味があるのですが、まだよくわかっていません。

Visual Studioで作ったセットアッププログラムを配布すれば、ユーザのWindows環境が(質問文のように)バラバラでも、共通して使えるツールになるのでしょうか?

また、リンクしてもらったMicrosoftのホームページには、Visual Basic 2008 Express Editionや Visual C# 2008 Express Editionなどのインストーラーがダウンロードできるようになっていましたが、これらは無料で使えるのでしょうか?

それとも後でライセンス料を払わなければいけないのでしょうか?(たぶんいるとは思うのですが、念のため)

2008/05/14 19:06:15
id:Catfish No.4

回答回数25ベストアンサー獲得回数4ここでベストアンサー

ポイント220pt

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で作成した方が簡単かもしれません。

id:uta_at_home

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のバージョンを選ぶ場合、最新のバージョンを選べばよいのでしょうか?それともある程度、普及しているバージョンを選ぶべきなのでしょうか?

2008/05/14 19:55:36
id:streakeagle No.5

回答回数37ベストアンサー獲得回数2

ポイント80pt

Javaで実装してGCJでEXEにコンパイルする方法もあります。

フォルダ選択ダイアログ・ビット演算・正規表現はどれも使用可能です。

> カンマ区切りのCSVから5番目の項目を取り出す

Javaで書くなら以下の様になります。

String line; // ファイルから読み込んだ一行分の文字列。
String column = line.split( "," )[ 4 ]; // カンマ区切りの5番目を取り出す。
id:uta_at_home

ありがとうございます。

JAVAをコンパイルする手もありましたね。


PERLのEXE化の場合、コンパイルとは名ばかりで、PERLプログラムのソースにPERL実行環境を無理やり引っ付けただけのちゃっちいやり方なので、かえって実行するユーザPCの環境に左右されない利点があったと記憶しています。


http://ja.wikipedia.org/wiki/GCJ


Wikipediaを見ると、JAVAのコンパイルはちゃんとしたコンパイルで、

「Javaソースコードをコンパイルし、Java仮想マシンのバイトコードまたはマシン語を出力する」とあります。


JAVAのコンパイルされたEXEファイルは、Windowsの多様な環境に左右されずに実行できるのでしょうか?

2008/05/15 01:07:17
id:garyo No.6

回答回数1782ベストアンサー獲得回数96

ポイント100pt

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も使えるので便利です。

id:uta_at_home

ありがとうございます。

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#に互換性がなくなっても、ソースは使い回しできそうだし、うーん、むむむ・・・迷いどころです。

2008/05/15 15:44:26
id:ken33jp No.7

回答回数928ベストアンサー獲得回数13

id:uta_at_home

WSHはVBSとほぼ同義ですよね?

リンク先も既出でした。

回答履歴を拝見すると、失礼ながら誠意をもって回答されているユーザさんには見えませんでした。

2008/05/15 15:30:55
  • id:uta_at_home
    質問者による補足です。
    今考えている方法と、困っている点です。
    いいアドバイスをお願いします。


    ・Active Perlを(実行環境こみで)コンパイルして配布。
     → フォルダ選択ダイアログボックスの出し方がわからない。
    ・VBS
     → 実行環境をどうやってそろえたらいいかわからない。
       .NET Frameworkもバージョンが複数あるので。
    ・Excelマクロ
     → Excelのバージョンによって動作に差異がありそう。&重いので却下。
  • id:freemann
    ExpressEditionは無料です。ただし、多少の制限はあります。
    それと、uta_at_homeさんが学生ならば、たしかProfessionalEditionが無料で使えるように最近なったはずです。
    http://enterprise.watch.impress.co.jp/cda/topic/2008/05/13/12897.html
    http://www.microsoft.com/japan/presspass/detail.aspx?newsid=3437
  • id:uta_at_home
    freemannさん、コメントでの情報提供、ありがとうございます。
    残念ながら私は、学生時代をとっくに終えてしまいました。(笑)

    しかし、私のやりたいことくらいはExpress Editionでも十分できそうな気がします。

    VBSとどちらでやるか迷ってしまいますね。
    ありがとうございました。
  • id:Catfish
    互換情報リンク先を間違いました。
    http://www.microsoft.com/japan/msdn/vstudio/support/tools.aspx

    バージョン依存は以下が分かり易いようです。
    http://ja.wikipedia.org/wiki/.NET_Framework

    Windows2000向けにも使用するなら、.Net Framework 2.0 を明示的に指定してプログラムする必要がありそうです。

    最初から Windows 2000 に対応している、VisualStudio 2005 Express Edition (前のバージョン)のほうが良いかもしれません。
    http://www.microsoft.com/japan/msdn/vstudio/express/past/2005/
  • id:uta_at_home
    Catfishさん、重ね重ねありがとうございます。
    .Net Frameworkのバージョン互換性もよくわかりました。

    Windows 2000を使っているユーザは、たぶんわずかしかないと思うので、今回は切り捨ててしまってもいいかなと思っています。

    ただ、Vista以降に発売されるWindowsでも使えるのが理想なので(将来私がいなくなっても困らないようにしておきたいので)、.Net Frameworkに依存するのはやはり危険かもしれませんね。

    今回のツールに関しては、一旦VBSで作ってみる方向に気持ちが傾いてきました。

    しかし、今後別のツールを作成する際に、Visual Studio Express Editionは有力な候補になりそうです。

    Catfishさんに詳しく教えて頂いたおかげで、どういう場合にどの開発環境を選ぶべきか、だいぶわかってきました。
    本当にありがとうございます。
  • id:Catfish
    互換情報リンク先を間違いました。
    http://www.microsoft.com/japan/msdn/vstudio/support/tools.aspx

    バージョン依存は以下が分かり易いようです。
    http://ja.wikipedia.org/wiki/.NET_Framework

    Windows2000向けにも使用するなら、.Net Framework 2.0 を明示的に指定してプログラムする必要がありそうです。

    最初から Windows 2000 に対応している、VisualStudio 2005 Express Edition (前のバージョン)のほうが良いかもしれません。
    http://www.microsoft.com/japan/msdn/vstudio/express/past/2005/


    > もう一つ、低レベルな疑問で申し訳ないのですが、.Net Frameworkの上位互換性の扱いはどうなっているのでしょう?

    > 例えばセットアッププログラムで.Net Framework 2.0が指定されていて、インストールするパソコンには既に3.5が入っていた場合は、2.0より上位バージョンが入っているから3.5でOKとなるのでしょうか?

    .NET 2.0 向けに作成したプログラムには、.NET 2.0 が必要です。
    .NET 3.X 向けに作成したプログラムには、.NET 3.X が必要です。

    プログラムのソース自体は上位互換があります(記憶では)。
    .NET 2.0 向けに作成したソースは、.NET 3.X でビルド出来るはずです。

    追記:
    作成したプログラムを Windows 2000 で動作させたいなら、VisualStudio 2008 はやめた方がよいみたいです。
    いくつかのプログラムは、当方の環境でうまく動きませんでした。
    VisualStudio 2005 Express Edition を使用してみてください。
  • id:streakeagle
    回答5の補足です。
    私が使った限りでは、Windows XPとVistaの違いは意識する必要がありませんでした。
    ただ、日本語版のOSしか触っていないので、英語版・中国語版に関しては不明です。申し訳ありません。
    (Javaでは内部的にはUnicodeで文字を処理するので、文字コードに関しては多分適当に処理してくれるはずですが…)
  • id:uta_at_home
    streakeagleさん、コメントでの補足情報をありがとうございます。
    日・英・中で共通して使えるツールにしたいので、文字は英数字しか使わない予定です。
    なので、OSの言語(人間が使う方の)は、気にしなくても大丈夫かと思います。

    考えてみれば、exe化したActivePerl(や、たぶんActiveRubyも)ちゃんとしたコンパイルをされているプログラムなわけで、これらの心配をしてないんだったら、コンパイルされたJavaの心配もする必要はないんですね。

    ただ、恥ずかしながら回答を開いたときには、JavaとJava Scriptを混同してました。
    Java Scriptなら何とかなると思いますが、Javaの方はプログラミングの難易度が今の私には高すぎて手が出せそうにありません。
    すごく頑張ったら何とかなるかもしれませんが、そこまで時間もかけていられないので。

    というわけで、Javaをコンパイルしたexeを使うという案は、見送ることにしましたが、参考になりました。
    ありがとうございました。
  • id:uta_at_home
    質問者です。
    皆さん、ありがとうございました。

    予想以上に詳しく教えていただき、とても助かりました。

    とりあえず、一旦 VBSで作成してみます。
    それで処理速度が遅いようだったら、インターフェースはVBS(+HTA)のままで、データ処理部分だけは C#もしくは、exe化したActivePerlで作り直すことにします。
    C#かActivePerlかは、一長一短なのでまだ迷っています・・・

    ともかく、ありがとうございました。

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

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

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

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