- ベストアンサー
ソフトウェアの作成
突然な質問ですみません。 これから真剣にフリーソフトを作成したいと考えています。 例えばZIPなどに対応する圧縮ソフトなど・・・・・ 現在C言語をテキスト形式で作成し実行することはできるのですが、 例えばexeファイルを作成するなどの場合、何から手をつけていいのか分かりません。 一通りC言語は覚え、これからのフリーソフトもできればC言語で作成できればと考えていますが、もちろん他のプログラミング言語も使用しなくてはならない状況も考えます。 フリーソフトを自分で作成するに当たり、C言語をメインにどんなものが必要で、どんな書籍が参考になるかなどご教授よろしくお願いします。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
★どうやら『Windowsアプリケーション』を作りたいのですね。 ・他の回答者とその回答への補足などからすると、コンソール・アプリケーションは 作成して 3年になるが、GUI のウインドウがでるアプリケーションはまだ。って事だね。 ・Win32 API のプログラミングは、まずウインドウを作成するところから始まります。 ・コンソール・アプリケーション(CUI) では main 関数から始めますが、Win32 では WinMain 関数から始めます。これが基本です。 ・本は、もう C 言語の本ではなく、Win32 API の本を用意します。また、サイトも API 関数の資料や使い方、またはサンプルをたくさん見てなれることです。もちろん 実際にビルド(コンパイル)もして動作の確認をします。 ・また、最初はウインドウを作成するよりも『ダイアログ・アプリケーション』から スタートすれば以外に早くに GUI のプログラミングに慣れると思います。 ・理由は、ボタンやコンボボックスなどを CreateWindow 関数で作るよりもリソースで 定義しておくだけで簡単に作成できるため。Win32 API の入門かな。この方法が…。 ・ZIPなどに対応する圧縮ソフトを作成したいようですが、ゼロから圧縮・解凍を作成 するのは大変ですので、まずは ZIP32.DLL の関数を使って圧縮ソフトを作成しましょう。 ・まずは、Win32 API による簡単なアプリケーションを作るところからスタートすると 良いでしょう。→『猫でもわかるプログラミング』や『Win32 API入門』でお勉強です。 ・下に『総合アーカイバ』を紹介しますので、ここでフリーの解凍・圧縮 DLL をダウンロード して、自分のソフトでZIPなどに対応する圧縮ソフトを作成しましょう。ヘッダなども用意。 ・以上。おわり。→まずは Win32 API のプログラミングですよ。 お勧めサイト: ・http://www.kumei.ne.jp/c_lang/→『猫でもわかるプログラミング』 ・http://wisdom.sakura.ne.jp/system/winapi/→『Win32 API入門』 ・http://www.winapi-database.com/category.html→『Windows APIをカテゴリから探す』 関連リンク: ・http://www.csdinc.co.jp/archiver/index.html→『総合アーカイバ』 ・http://www7.ocn.ne.jp/~otoku/free-s-assyuku-kaitou.htm→『圧縮・解凍フリーソフト総合サイト』 ・http://oshiete1.goo.ne.jp/qa2643801.html→『C言語等での画像処理の勉強方法』回答者 No.3
その他の回答 (7)
- ape5
- ベストアンサー率57% (85/148)
VC6.0++で開発されるということですが、Vistaでサポートされないって聞いたような気がするのですが・・・ もし間違ってたらすみません(_ _(--;(_ _(--;
お礼
回答ありがとうございました。 Vistaでサポートされなくとも、まず自分のPCで真剣にソフトウェアを作成し自己満足で喜びを得たいと思っていますw その後サポート関係も考慮に入れていきたいと思います。 意見ありがとうございました^^
- pooami
- ベストアンサー率47% (9/19)
ANo.2です > きちんとしたフリーソフト(exeファイルなど)という物 > を作ってみたく質問させていただきました。 私が勘違いしていました、てっきり未経験の初心者の方かと思っていましたので・・・ では、一通り必要な知識は既に習得済みと考えて、今後不特定多数のユーザーに利用して貰えるようなツールを開発するのに何が必要かということになると思いますが・・・もちろんプログラミングのスキルを磨くことは常に忘れてはいけませんが、それとは別に、いかに効率的にプログラムを作るか、ということを考えるようにしないと、実際に誰かの役に立つプログラムは作れません。 Zipアーカイバを例に挙げておられましたが、実際にユーザーがついて、バージョンアップを進めるうちに、どんどんとプログラムは肥大化します。 例えば、最初はZip形式に圧縮するだけのプログラムが、次には解凍もできるようになり、さらにはLzh形式にも対応して、次はRarにも・・・などと機能を拡張していった場合、必ずついて回るのがバージョン管理の猥雑さです。 新しいバージョンのプログラムをリリースしたら、これまで普通に使えていた機能にバグが生じた、とか、既存のバグを修正したら別のバグが2つも発生した、なんて事態は珍しくありませんし、いつかは必ず遭遇する事態です。 そんな時,古いバージョンのソースと、最新のソースを比較して、どこに原因があるか調査をする必要があるのですが、その「古いバージョンのソース」をきちんと管理するのは結構大変です。 VC6を使われているということですから、これらのサポートツールとしてVisual Source Safe 6.0を導入されるといいかも知れません。 http://www.amazon.co.jp/Microsoft-Visual-Source-Safe-6-0/dp/B00005OI0A 「なんだこんな地味なもの」 と思われるかも知れませんが、プログラムの品質の維持と言うのは、プログラマーとして絶対に必要とされるスキルです。 先ほども書きましたが、新しい機能をどんどん追加する以上に、これまでのプログラムの品質を維持するのは、実はとても大変な作業ですし目に見えない努力が必要になります、そうした作業を効率化する点で、こうしたツールは役に立つと思います。 開発のノウハウについては、やはりコーディング規約の徹底、ドキュメントや仕様書の整備、オブジェクト指向でのプログラミングなど、巷のIT雑誌の表紙に踊る文言が大切ですが、こうしたノウハウも、才能や知識よりも経験から自分なりのスタイルを見つけてゆくものですから、場数を踏むしかありませんが、広く一般的に言われているような考え方については、以下のような書籍が参考になるかも知れません。 http://www.amazon.co.jp/Code-Complete%E7%AC%AC2%E7%89%88%E3%80%88%E4%B8%8A%E3%80%89%E2%80%95%E5%AE%8C%E5%85%A8%E3%81%AA%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%82%92%E7%9B%AE%E6%8C%87%E3%81%97%E3%81%A6-%E3%82%B9%E3%83%86%E3%82%A3%E3%83%BC%E3%83%96-%E3%83%9E%E3%82%B3%E3%83%8D%E3%83%AB/dp/489100455X/ref=pd_sxp_grid_pt_1_0/250-3216305-7770648 http://www.amazon.co.jp/Code-Complete%E7%AC%AC2%E7%89%88%E3%80%88%E4%B8%8B%E3%80%89%E2%80%95%E5%AE%8C%E5%85%A8%E3%81%AA%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%82%92%E7%9B%AE%E6%8C%87%E3%81%97%E3%81%A6-%E3%82%B9%E3%83%86%E3%82%A3%E3%83%BC%E3%83%96-%E3%83%9E%E3%82%B3%E3%83%8D%E3%83%AB/dp/4891004568/ref=pd_bxgy_b_text_b/250-3216305-7770648 一般に公開するプログラムを作る時には、ユーザー受けすることを考え過ぎることが多いのですが、忘れてはいけないのは、自分は何を作っているのか、これは何に使うプログラムなのか、そうした目的意識に沿った効率的な作業が必要とされます。 プログラムを公開するようになると、多くの人に色々な意見を言われることになると思いますが、それを全部真に受けていては何もできなくなってしまいますし、仮にそんなことをすれば、多くの人の意見を取り入れたけれど、誰にも使って貰えない無駄に大きなプログラムができておしまいです。 プログラムの技術を既に身についておられるのであれば、後はその「スキルを有効に使うスキル」を磨いてください。
お礼
回答ありがとうございました。 質問文が雑で説明不足で申し訳ありませんでした。 と、同時にソフトウェア開発に必要な書籍の紹介ありがとうございました。 そしてプログラムに対しての個人の意見を聞けてとても参考になりました。 ありがとうございました^^
- don_go
- ベストアンサー率31% (336/1059)
>確かにDebugフォルダが作成されexeファイルが作られていますが、 >ダブルクリックしても黒い画面が一瞬表示されすぐに消えてしまいます。 単に、DOSプロンプト上で出力した後、DOSプロンプトが終了している だけのようですが? プログラムの最後に、scanf()文等を追加して入力待ちにすれば結果が 確認できるはずです。
- neKo_deux
- ベストアンサー率44% (5541/12319)
> 現在C++6.0を使用 MicrosoftのVisualC++6.0でしょうか? > 現在C言語をテキスト形式で作成し実行することはできるのですが、 > 例えばexeファイルを作成するなどの場合、何から手をつけていいのか分かりません。 でしたら、その△△.cのファイルの場所に、ReleaseとかDebugとかのフォルダが出来ていて、その中に△△.exeが作られているはずです。 △△.exeをダブルクリックで実行して見てください。 VC++6.0の環境ですと、参考書どおりにプログラム書いて[F5]で実行できるので、インタープリタ環境などと勘違いしますが、コンパイラの仕組み、統合開発環境とは、とかの理解から始めるのが吉です。
お礼
回答ありがとうございました。 説明不足ですみません。 Visual C++6.0です。 確かにDebugフォルダが作成されexeファイルが作られていますが、ダブルクリックしても黒い画面が一瞬表示されすぐに消えてしまいます。 C++6.0での”実行”では、正常に実行されるのですが・・・・・ コンパイラの仕組み、統合開発環境からですか・・・ その辺のことが書かれている書籍を探してみます^^
まだいまいちわからないですね ビルドすればexeが生成されますけど。。。
補足
回答ありがとうございました。 今使用しているソフトはVisual C++6.0です。 プログラム作成後ビルドすると確かにexeファイルが生成されますが、 ダブルクリックしても実行できなんですが・・・・ 実際目的は・・・・例えば”窓の杜”などに紹介されるようなフリーのソフトウェアを作成したいと思い、必要なもののアドバイスをお願いしたく質問させていただきました。 簡単なZIPに圧縮するソフトなどができればと思っているのですが・・・
- pooami
- ベストアンサー率47% (9/19)
開発プラットホームが判らないので、一般的なお話になってしまいますが。 > 現在C言語をテキスト形式で作成し実行することはできるのですが、 > 例えばexeファイルを作成するなどの場合、何から手をつけていいのか分かりません これはつまり、ソースは書いたことがあるけれどまだコンパイルしたことがない、という意味でしょうか? だとすればまず必要なのはCコンパイラです、コンパイラはご自身で書いたソース(プログラム文)を実行可能形式のファイルにしてくれるもので、お金を出して買うこともできますし、オンラインで無料で公開されているものもあります、いくつか併用して試してみるのも良いかも知れませんね。 http://homepage3.nifty.com/mmgames/c_guide/p_compiler.html ただ、詳しい事情は分かりませんが、noconanさんが過去にプログラミングの経験が全くないのであれば「どうしても今すぐC言語を習得しないとダメ」な事情がない限り、いきなりC言語から始めるのはお勧めしません。 私は昔プログラマーだったのですが、最初に触れた言語はVisualBasicでした。 途中何度か「やっぱりCができるとカッコイイよね」みたいなことを考えてCに手を出したのですが、何度も挫折して、結局C言語をマスターするまでに、他に2つの言語をマスターしていました。 誰にとってもそうとは言い切れませんが、C言語はクセが多く、「方言」のようなものもあって最初に始めるにはちょっと難しい点が多いので、比較的習得の楽なBasicやPerlなどで一通りプログラムの知識を身につけた上で、C言語にチャレンジした方が、覚えも速いし挫折するリスクも少なくなるのではないかな、と私は思います。 プログラム言語と言うのは、名前が違っても一般の人が思っている以上によく似ています,誤解を恐れずに言えば、最初に1つの言語をマスターすれば、次に他の言語をマスターするのはずっと楽になります。 ならば最初はとっつきやすい言語から始めたほうがいいと思いませんか? 外国語を習う時に、いきなり(難解と言われる)中国語から始めるよりは、比較的楽な英語をマスターしてからの方が効率がいい。みたいな話もあります。 一番最初に触るのであれば、個人的にはJavaScriptかVBScriptをお勧めします。 http://www.geocities.co.jp/SiliconValley-SanJose/2596/index.html この2つなら、メモ帳でプログラムを書いたらそのままIEで動かせますから、何の投資もいりませんし、ネット上に非常に多くの情報があって習得は比較的容易です(書籍もたくさんあります) いずれにしてもプログラムを身につけるのに最も効果的なのは、できるだけ沢山のプログラムを書くことです。 本を読むのも大切ですが、何よりもプログラミングに慣れることが第一ですから、どんな内容でもいいので「1日1ソース」みたいに、プログラムを書いてみて下さい。 習うより慣れです。
お礼
早速の回答ありがとうございました。 ちょっと補足になってしまうのですが、質問の仕方が悪かったのかもしれません。 実際C言語はもう3年作り続けていますので、ポインタから構造体まで一通りなんでもできます。 しかしその3年は全てコンパイルしてただ単に実行して終了するようなプログラムしか作ってきませんでした。 なので、きちんとしたフリーソフト(exeファイルなど)という物を作ってみたく質問させていただきました。
>現在C言語をテキスト形式で作成し実行することはできるのですが、 >例えばexeファイルを作成するなどの場合、何から手をつけていいのか分かりません。 C言語はテキストのまま実行できません 根本的に間違えているのでは? いい本は紹介できませんが、かなり根本的な部分から勉強な気がします。コンパイル環境を整えることから書かれた本を買ってみてください。
補足
すいません。 テキスト形式というのは.txtという意味ではなく、 単に”ファイル名.c”での作成という意味です。 詳しく書くと、現在C++6.0を使用していますが、 新規作成からファイルタブ内にある”テキストファイル”指定から”ファイル名.c”というファイルのみを使用しているということです。
お礼
回答ありがとうございました。 大変参考になりました。 書籍ならびに参考サイトまで教えていただきとても助かります。 長い戦いになりそうですががんばってみます。 ありがとうございました。