• ベストアンサー

Accessで作ったアプリをC言語でつくり直し?

現状、Access2003で業務用のアプリケーションを 作成しています。 しかし、上司から、C言語で作りかえるよう指示が ありました。 理由は、パソコン環境に依存しないから で、私もそれほどC言語に詳しくのないので 調べて見ましたが、 テキストベースのプログラムの書き方や変数の宣言 などの情報はあるのですが、 じゃあ、Accessで作った入力用のフォームとか 入力した内容を印刷するための帳票(レポート)などは どのようにしてC言語で実現するのかが、わかりません。 C言語でGUI環境を作り出し、なおかつデータベース機能を 持たせることはできるのでしょうか

質問者が選んだベストアンサー

  • ベストアンサー
  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.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倍以上(当社比)も巨大な言語体系ですからね。

stressman
質問者

お礼

lv4uさん、ありがとうございます。 やはり「真の狙い」をはっきりさせることですよね。 ただ膨大な工数がかかってしまうことが目に見えているので 外注に出した方がいいのではないか、と思っています。 lv4uさんのように会社でAccessを使えるのが 私だけですので、同じ悩みを抱えています(^^;)

その他の回答 (8)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.8

結局のところ何に主眼を置くかで選択肢は変わってきます。 単に、Windows以外でも動くようにしたいのであれば、大きな工数を掛けて一から作り直すより、OpenOffice.orgのBaseに移植した方が手っ取り早いと思います。 「C言語」で作り替えること自体が目的であれば、Windows決め打ちならWin32 APIを直接呼び出してもよいでしょうし、そうでないならGTK+かTcl/Tkだと思います(ちなみに、WxWidgetはC++用であり、Cでは直接使えません。WideStudioもQtもそうです)。 使い勝手や性能の向上が目的なら、Webアプリにしても解決するとはとても思えません。それに、Windows決め打ちの場合は、デスクトップアプリなら環境依存のことで考えることはまだ少ないですが、Webアプリにすれば、複数種のブラウザ(そして将来のものも含めた各バージョン)間の互換性に配慮しなければならなくなります。 真の狙いがどこにあるのかを再確認した方がよいと思います。

stressman
質問者

お礼

jactaさん、ありがとうございます。 目的は安定性ではないかと考えています。 現状のAccessのシステムがエラー等が多いため、 違う言語開発を視野に入れているのだと思います。 エラー等が多いのは、開発者(私)の責任でも あるのですが… 会社自体は、建設会社なので ソフト開発チームみたいなものはありません。 ただAccessで業務支援のアプリケーションを 私はちょこちょこと作っている状況です。 それを他言語で作りなおし、パッケージソフトとして 世に送り出す考えもあるようです。 いつのことになるか…

noname#39970
noname#39970
回答No.7

クロスプラットフォームGUIライブラリ http://www.wxwidgets.org/ どうしてもCで非環境依存というならこんなライブラリも存在する

stressman
質問者

お礼

SAYKAさん、ありがとうございます。 英語のページだったので、 あまり理解はできませんでしたが、こういう ライブラリも存在するということが分かりました。

noname#44015
noname#44015
回答No.6

No.5です。 >GUIは環境に依存する部分が大きいとは >どういう意味でしょうか? >Windows環境への依存が大きいということでしょうか Windows環境というよりOSの環境に依存します。 Windows用にCで組まれたGUIプログラムは、通常、他のOSではコンパイルできません。

stressman
質問者

お礼

Windows用に組んでしまうと MacやLinuxではコンパイルできないのですね おそらくWindows環境のみだろうと思いますので 大丈夫だと思います

noname#44015
noname#44015
回答No.5

CでGUIは環境に依存する部分が大きいので大変だと思います。 他の方々がおっしゃっているようにWebかJavaがおススメです。

stressman
質問者

お礼

yu0821さん、ありがとうございます。 GUIは環境に依存する部分が大きいとは どういう意味でしょうか? Windows環境への依存が大きいということでしょうか

回答No.4

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 で作れば必ず使い勝手が良いものができる、というわけでもありませんので・・・。

stressman
質問者

お礼

tsukasa-12rさん、ありがとうございます。 参考書を紹介していただきありがとうございます。 お手軽感はVisual Basicかな、と私も思いますが上司はどうなんでしょうか… 言語を上位に上げれば、必ずいいものができるとは 限らないということを報告の中に追加しておこうと思います♪

noname#39970
noname#39970
回答No.3

他でも書かれているけどwebベースが良いと思われる。 細かい操作を行う予定ならばjavaが最適では? javaならば殆どの環境で存在する。 サーバ側にはSQLサーバ稼働でも構わないがMySQLなどのフリーで手に入る物をDBの核として利用している企業も多数ある。

stressman
質問者

お礼

SAYKAさん、ありがとうございます。 javaですか。 だいぶ前からプラットフォームに依存しないという開発言語で 話題ですね サーバ側は、SQLサーバを検討していましたが、 なかなか稟議がおりそうにないので、MSDEを検討中です

  • bardfish
  • ベストアンサー率28% (5029/17765)
回答No.2

パソコン環境に依存しないアプリケーションとなると、Webアプリケーションが最有力です。 コンパイラ・インタープリタを使用する限り実行環境はPCに依存します。 WebアプリといってもActiveXなど特定のアーキテクチャに依存した場合PC環境に左右されます。 純粋にマルチプラットフォームを実現したいならHTMLベースのWebアプリでサーバーをたてることです。 サーバーは特定環境で動かすとしてもクライアントはMacでもWindowsでもブラウザが動くコンピュータであれば問題なく目的を達成することが可能です。 前提部分をもう少しに詰める必要があると思いますが?

stressman
質問者

お礼

bardfishさん、ありがとうございます。 そうですね、もう少し内容を詰める必要がありそうです。 でも、Webアプリケーションというのは思いつきませんでした。 HTMLは多少理解できますが、それ以上となるとキツイです

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

ポイントはここだと思います。 > 理由は、パソコン環境に依存しないから ここでいう「パソコン環境」というのが、アクセスがインストールされているかどうかという程度なのか(その程度ならC言語に書き直さなくても比較的簡単に解決しますが)、LinuxやMacなどでも動作させたいのかどちらの意味なのでしょうか? 後者の場合、C言語で作ったとしても環境ごとに再コンパイルが必要になります。あるいはCINTのようなインタープリタ環境にするかです。 再コンパイルしてもよいのであれば、クロスプラットフォームのツールキットがいろいろ出回っていますので、どれか好きなものを使えばよいでしょう。C++ではなくCということなので、選択肢としてはGTK+かTcl/Tkあたりがよいのではないかと思います(個人的にはTcl/Tkが簡単なのでお勧めです)。

stressman
質問者

補足

jactaさん、ありがとうございます。 Accessのランタイムを各パソコンにはインストールして いるのでその点は問題ないです。 ただ現状のAccessの業務アプリが使い勝手が悪いとか、 他のソフトと相性が悪い?などの理由で他言語で再開発してみたい らしいのです。

関連するQ&A

  • C言語からデータベースにアクセス

    現在C言語で作成したシステムで MySQLで作成されたデータベースに格納されている画像のヒストグラム情報(すでに数値化して格納してあります)を取得 →プログラム内で処理→処理後の画像のファイル名、ヒストグラム情報をデータベースに格納 (C言語プログラム、データベースともに同じサーバー機に入っています) という処理を行いたいと思っているのですが、どのようにするのが良いでしょうか? データベースからのデータ取得はCから検索キーを指定して、データを検索、取得できればなおよいです。 PostgreSQLであればlibpqなどのライブラリがあるようですが、MySQLはどうにもわかりません。 C言語で作成したプログラムをCGIとして実装すればよいとは思うのですが、 解説サイトではフォームからの入力ばかりで、データベースから直接の受け渡しや、 画像情報のような大量のデータの受け渡しを解説しているサイトは見当たりませんでした。 なお、データベース操作はphpで行っています。 分かり辛い分で申し訳ありませんが、最悪Cプログラムからデータベースへのデータ格納だけでもかまいませんので、ご回答お願いします。

  • C言語インタプリタ

    フリーでGUIのC言語インタプリタはないでしょうか? 一行ごとにプログラムを停止させて変数の中が見れるようなのがほしいです。

  • ライブラリ作成時のグローバル変数の対応(C言語)

    C言語を用いてライブラリを作成しています。 ライブラリは機能ごとにファイルを分けています。 今、ライブラリの中でのみ使用するグローバル変数やグローバル関数が必要になりました。 このグローバル変数や関数は複数ファイルで参照するため、static宣言はできません。 しかし、このグローバル変数や関数は公開する必要はありません(ライブラリの中でのみ使用します)。 このようなことをC言語で実現するためにはどうしたらよいのでしょうか? 開発環境は Windows7 VisualC++2010 です。 VisualC++2010を使うなら C++で書けばいいのではないかといわれそうですが、 C言語でプログラミングしたいのです。 以下のようなサイトがあったのですが、これを使うしかないでしょうか? http://0xcc.net/blog/archives/000108.html

  • iPhoneアプリのobjective-CとC言語について

    プログラミング初心者です。 iPhoneアプリを開発したいと思っているんですが、 まだMacを持っていません。 なので、Windows環境でプログラミングになれておこうと思っているんですが、どのような言語がいいでしょうか? objective-CがC言語ベースだということで、最近C言語を初めて見たんですけど、どうでしょう?

  • C言語での四角形描写

    データベースの作成をする際、ユーザーインターフェースの 工夫として図形としての四角形を描き、そのなかに文字を入力するようなインターフェースを実現したいのですが、 1:四角形の描き方 2:描かれた四角形の中に標準入力を行う の二つの方法のやり方がわからず困ってます。 ちなみに エディタ:C言語を始めよう コンパイラ:Borland C++ 5.5 を使用しています。 お願いします。

  • C言語で変数の内容をINSERTする方法

    タイトルのように、C言語で変数の内容をINSERTする方法で悩んでいます。 今はmysql_query(mysql, "insert into [DBname] values ( , , , )");で変数ではなく普通のテキストや数字をデータベースに入力することは出来るのですが、プログラム中で計算した変数をデータベースに入力できないのです。 どなたか教えてください・・・。

    • ベストアンサー
    • MySQL
  • C言語とSQL

    SQLを使ってデータベースを作成し、C言語で処理ソフトを作成しました。このデータベースに処理ソフトがアクセス(通信)することはできるのでしょうか?? またできないならどのようにすればよいのでしょうか?(C言語以外ならいけるのでしょうか?)

  • C言語ソースのコンパイルについて

    C言語ソースファイルのコンパイルを実施しています。以前はコンパイルできていたのに、環境を変更したらコンパイルできなくなりました。原因や解決方法をお教え下さい。 旧環境 OS:WindowsNT VC:5.0 新環境 OS:Windows2000 VC:6.0 現象 HSTMTの宣言が出来ない? エラーメッセージ ・・・\TEST.c(683) : warning C4700: 値が割り当てられていないローカルな変数 'hstmt' に対して参照が行われました。 状況 変数 'hstmt'はHSTMTとして宣言しています。 よろしくお願いいたします。

  • C言語 変数型 (*)() の意味を教えて下さい

    C言語で書かれたプログラムを見ていると、変数宣言の部分に double (*f)(); のような形で書かれたものがよく出てきます。 これは、どういうことを意味しているのでしょうか? よろしくお願いいたします。

  • CとC++の変数宣言について

    なぜC言語では変数の宣言をブロックの先頭でする必要があるのかがわかりません。 またC++がどこででも宣言できるのもなぜか教えてください

専門家に質問してみよう