- ベストアンサー
Accessで作ったアプリをC言語でつくり直し?
現状、Access2003で業務用のアプリケーションを 作成しています。 しかし、上司から、C言語で作りかえるよう指示が ありました。 理由は、パソコン環境に依存しないから で、私もそれほどC言語に詳しくのないので 調べて見ましたが、 テキストベースのプログラムの書き方や変数の宣言 などの情報はあるのですが、 じゃあ、Accessで作った入力用のフォームとか 入力した内容を印刷するための帳票(レポート)などは どのようにしてC言語で実現するのかが、わかりません。 C言語でGUI環境を作り出し、なおかつデータベース機能を 持たせることはできるのでしょうか
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
「パソコン環境に依存しないから」と言う理由でAccess2003を作りかえるという理由は納得できます。実際にランタイムの問題がありますからね。 以前、本で読んだのですが、そういう視点でパソコンを10~20台用意して、「どのマシンでも動作して、動作の速い言語を開発言語として選択する」という受け入れ条件で評価プログラムを比べたら、いきなりDelphiに決まってしまったとありました。スピード比較以前に、ライバルのVBはインストールさえできなかったから・・・。 Accessも同様な問題が発生する可能性があると思えます。 でも、だからといって「C言語で開発」はいきなりすぎますね。たとえば、仕事で、自家用車を使って荷物をちょこちょこ運んでいたが、「ちょっと荷物が増えてきたから、明日からは、大型トラックの運転をお願いします」っていうような感じがします。 Accessは現場のエンドユーザさんが、手軽にデータ加工するためのツール。C言語はプロが時間をかけて製品レベルのソフトを作るツールって感じです。 No.8さんの回答にあるように、「真の狙い」をはっきりさせたほうがいいと思います。 「(経費節減のためインストール工数がかかるのいやなので)パソコン環境に依存しないソフトにしたい」と思ったが、C言語にすることで、「開発工数が5倍、追加のミドルウエアや帳票ツールなどで500万必要です。」となったとしたらどうでしょう?変更は、取りやめになるかもしれませんね。 >>C言語でGUI環境を作り出し、なおかつデータベース機能を 持たせることはできるのでしょうか 市販の多くのソフトは、当然ながら、それを実現していますよ。当然、膨大な開発工数を使っていると思います。 おまけ C++Builderで作ったソフトの改修作業が入った。介護関係って法改正が頻繁でいやですね。ちなみに、このソフトがVBとかACCESSなら、修正工数は1/3~1/4くらいになると思われています。でも開発言語がC++Builderなのは、質問者さんの上司と同様に、「どのPCにも環境依存せずインストールしたい」という理由からです。あと、コンポーネントライブラリが豊富で、あたかもAccessのように手軽にアプリが作れてしまいます。 え?じゃあなんで今回の工数見積もりが多いのかって?それは、ウイザードでおきまりのアプリは10分で作れても、それを少しでもカスタマイズしようとすると、C++とC++Builderの膨大な知識がないと不可能だからです。社内には、私以外にまともにC++がわかる人がいないんですね。C++はCよりも10倍以上(当社比)も巨大な言語体系ですからね。
その他の回答 (8)
- jacta
- ベストアンサー率26% (845/3158)
結局のところ何に主眼を置くかで選択肢は変わってきます。 単に、Windows以外でも動くようにしたいのであれば、大きな工数を掛けて一から作り直すより、OpenOffice.orgのBaseに移植した方が手っ取り早いと思います。 「C言語」で作り替えること自体が目的であれば、Windows決め打ちならWin32 APIを直接呼び出してもよいでしょうし、そうでないならGTK+かTcl/Tkだと思います(ちなみに、WxWidgetはC++用であり、Cでは直接使えません。WideStudioもQtもそうです)。 使い勝手や性能の向上が目的なら、Webアプリにしても解決するとはとても思えません。それに、Windows決め打ちの場合は、デスクトップアプリなら環境依存のことで考えることはまだ少ないですが、Webアプリにすれば、複数種のブラウザ(そして将来のものも含めた各バージョン)間の互換性に配慮しなければならなくなります。 真の狙いがどこにあるのかを再確認した方がよいと思います。
お礼
jactaさん、ありがとうございます。 目的は安定性ではないかと考えています。 現状のAccessのシステムがエラー等が多いため、 違う言語開発を視野に入れているのだと思います。 エラー等が多いのは、開発者(私)の責任でも あるのですが… 会社自体は、建設会社なので ソフト開発チームみたいなものはありません。 ただAccessで業務支援のアプリケーションを 私はちょこちょこと作っている状況です。 それを他言語で作りなおし、パッケージソフトとして 世に送り出す考えもあるようです。 いつのことになるか…
クロスプラットフォームGUIライブラリ http://www.wxwidgets.org/ どうしてもCで非環境依存というならこんなライブラリも存在する
お礼
SAYKAさん、ありがとうございます。 英語のページだったので、 あまり理解はできませんでしたが、こういう ライブラリも存在するということが分かりました。
No.5です。 >GUIは環境に依存する部分が大きいとは >どういう意味でしょうか? >Windows環境への依存が大きいということでしょうか Windows環境というよりOSの環境に依存します。 Windows用にCで組まれたGUIプログラムは、通常、他のOSではコンパイルできません。
お礼
Windows用に組んでしまうと MacやLinuxではコンパイルできないのですね おそらくWindows環境のみだろうと思いますので 大丈夫だと思います
CでGUIは環境に依存する部分が大きいので大変だと思います。 他の方々がおっしゃっているようにWebかJavaがおススメです。
お礼
yu0821さん、ありがとうございます。 GUIは環境に依存する部分が大きいとは どういう意味でしょうか? Windows環境への依存が大きいということでしょうか
- tsukasa-12r
- ベストアンサー率65% (358/549)
C でも GUI アプリケーションの作成は可能です。 http://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0Windows%E7%AC%AC5%E7%89%88%E3%80%88%E4%B8%8A%E3%80%89Win32-API%E3%82%92%E6%89%B1%E3%81%86%E9%96%8B%E7%99%BA%E8%80%85%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E6%B1%BA%E5%AE%9A%E7%89%88-%E3%83%81%E3%83%A3%E3%83%BC%E3%83%AB%E3%82%BA-%E3%83%9A%E3%82%BE%E3%83%AB%E3%83%89/dp/4756136001 などで勉強されるとよいかも。 C でやろうとすると Windows の仕組みが勉強できて、それはそれで楽しい(?)かもしれませんが、C++ でクラスライブラリを使用する方が楽だと思います。(クラスライブラリの勉強が大変だったりしますが。) 帳票に関しては市販の帳票ツールがいろいろあると思いますので、いろいろ調べてみられるとよいと思います。 が、私的には、Visual Basic の方がお手軽でいいような気がします。 Access は遅いとか、小回りが利かないと言った点があるとは思いますが、C/C++ や VB で作れば必ず使い勝手が良いものができる、というわけでもありませんので・・・。
お礼
tsukasa-12rさん、ありがとうございます。 参考書を紹介していただきありがとうございます。 お手軽感はVisual Basicかな、と私も思いますが上司はどうなんでしょうか… 言語を上位に上げれば、必ずいいものができるとは 限らないということを報告の中に追加しておこうと思います♪
他でも書かれているけどwebベースが良いと思われる。 細かい操作を行う予定ならばjavaが最適では? javaならば殆どの環境で存在する。 サーバ側にはSQLサーバ稼働でも構わないがMySQLなどのフリーで手に入る物をDBの核として利用している企業も多数ある。
お礼
SAYKAさん、ありがとうございます。 javaですか。 だいぶ前からプラットフォームに依存しないという開発言語で 話題ですね サーバ側は、SQLサーバを検討していましたが、 なかなか稟議がおりそうにないので、MSDEを検討中です
- bardfish
- ベストアンサー率28% (5029/17766)
パソコン環境に依存しないアプリケーションとなると、Webアプリケーションが最有力です。 コンパイラ・インタープリタを使用する限り実行環境はPCに依存します。 WebアプリといってもActiveXなど特定のアーキテクチャに依存した場合PC環境に左右されます。 純粋にマルチプラットフォームを実現したいならHTMLベースのWebアプリでサーバーをたてることです。 サーバーは特定環境で動かすとしてもクライアントはMacでもWindowsでもブラウザが動くコンピュータであれば問題なく目的を達成することが可能です。 前提部分をもう少しに詰める必要があると思いますが?
お礼
bardfishさん、ありがとうございます。 そうですね、もう少し内容を詰める必要がありそうです。 でも、Webアプリケーションというのは思いつきませんでした。 HTMLは多少理解できますが、それ以上となるとキツイです
- jacta
- ベストアンサー率26% (845/3158)
ポイントはここだと思います。 > 理由は、パソコン環境に依存しないから ここでいう「パソコン環境」というのが、アクセスがインストールされているかどうかという程度なのか(その程度ならC言語に書き直さなくても比較的簡単に解決しますが)、LinuxやMacなどでも動作させたいのかどちらの意味なのでしょうか? 後者の場合、C言語で作ったとしても環境ごとに再コンパイルが必要になります。あるいはCINTのようなインタープリタ環境にするかです。 再コンパイルしてもよいのであれば、クロスプラットフォームのツールキットがいろいろ出回っていますので、どれか好きなものを使えばよいでしょう。C++ではなくCということなので、選択肢としてはGTK+かTcl/Tkあたりがよいのではないかと思います(個人的にはTcl/Tkが簡単なのでお勧めです)。
補足
jactaさん、ありがとうございます。 Accessのランタイムを各パソコンにはインストールして いるのでその点は問題ないです。 ただ現状のAccessの業務アプリが使い勝手が悪いとか、 他のソフトと相性が悪い?などの理由で他言語で再開発してみたい らしいのです。
お礼
lv4uさん、ありがとうございます。 やはり「真の狙い」をはっきりさせることですよね。 ただ膨大な工数がかかってしまうことが目に見えているので 外注に出した方がいいのではないか、と思っています。 lv4uさんのように会社でAccessを使えるのが 私だけですので、同じ悩みを抱えています(^^;)