人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Windows上で動くテキスト処理プログラムを作成しようとしていますが、プログラム言語を何にしていいか迷っています。
以下の条件に合う、お薦めの言語を教えて下さい。

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

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

●質問者: uta_at_home
●カテゴリ:コンピュータ
✍キーワード:.NET Framework Active CSV Perl VBS
○ 状態 :終了
└ 回答数 : 7/7件

▽最新の回答へ

1 ● hirotow
●100ポイント

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#の存在を知りませんでした。

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

とても助かります。


2 ● pahoo
●100ポイント

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

となると、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#で作り直してみようかな?と思っています。


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


3 ● Catfish
●100ポイント

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などのインストーラーがダウンロードできるようになっていましたが、これらは無料で使えるのでしょうか?

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


4 ● Catfish
●220ポイント ベストアンサー

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


5 ● streakeagle
●80ポイント

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の多様な環境に左右されずに実行できるのでしょうか?


1-5件表示/7件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ