• ベストアンサー

どのプログラミング言語を使う?(基幹システム)

社内の基幹システムを構築しようとしています。 やりたいことは出退勤など一般的なものから特殊なものまで多岐にわたるのですが、1年程度以内で完成を目指しています。 今後10年以上使うシステムだという想定でJavaかC#か(あるいはその他)を使うとすれば、どちらがおすすめですか?生産性、メンテナンスのしやすさ、今後の動向など含め、皆さんの意見をお聞かせください。

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

  • ベストアンサー
  • catpow
  • ベストアンサー率24% (620/2527)
回答No.2

ネットのC#講座や書店で売られているC#の専門書を読むと、その著者たちは、Java、Ruby、C++など、さまざまな言語による開発経験をされています。 それらの経験に基づいて、JavaやC++ではなくて、C#を選ばれています。 私もJavaとC++やC#の開発経験がありますけど、生産性、メンテナンスのしやすさを考えるとC#がお勧めです。 以前の派遣先で、C#経験が豊富な技術者がちょっと次のような愚痴を言っていました。 「C#は、生産性が良い。だから開発期間の見積もりが短くなりがちである。私はC#は好きだし、開発作業は楽になったけど、全体の開発期間が短くなれば、やっぱり仕事は楽にならない・・・」 ちなみに、先日まで働いていた職場では、C++が開発言語のメインだったようですが、開発しやすさを考えて、開発言語をC#メインに変更していました。 ただ、C#を使って生産性をアップするには、それなりの勉強が必要になります。 自転車よりも、自動車のほうが目的地につく時間は短くなりますが、自動車の運転には免許証が必要になります。 そして、免許証を取得するには、勉強と運転の練習が必要になります。 飛行機は、自動車よりも、もっと速いスピードが出ますが、パイロットの免許証は、自動車よりも、ずっと取得が困難で、多大な勉強と時間が必要となります。 上記に書いたこととは反しますけど、あるプログラマさんは、「C#は難しい・・。今までC#のプロジェクトをいくつか見たけど、すべて失敗していた。」なんて話されていました。

mars_kreuz
質問者

補足

ご回答有り難うございます。やはり生産性を考えると、C#のほうがいいかなと思っていますが、例えば10年後もそのシステムを使い続けていることを想定した場合、果たしてC#の選択でいいのだろうかという不安があります。ごそっと仕様がかわって、システムを大きく作り変える必要が出てくるとか、あるいはC#自体が使われなくなってしまう可能性はないのかとか・・・。 その点、scalaなどJVM上で動く言語が新たにできていることを考えると、Java自体がなくなることはないと思うし、現状Javaで作っておいて将来的に必要があれば他の言語に移植ということもできるのではないかと思ったりもしています。 また最後のコメントのC#は難しいとのことですが、言語自体が難解なので、一定以上のスキルの技術者の確保が難しくて失敗したいうことでしょうか?

その他の回答 (2)

  • catpow
  • ベストアンサー率24% (620/2527)
回答No.3

ちょっと年末年始で忙しくて、追加の回答が遅くなりました。 >>最後のコメントのC#は難しいとのことですが、言語自体が難解なので、一定以上のスキルの技術者の確保が難しくて失敗したいうことでしょうか? 失敗の原因については、その方と話す時間が限られていて、十分に聞くことができませんでした。 自分が参加した失敗プロジェクトの経験では、そのときの言語はC#ではなくC++だったのですが ・オブジェクト指向言語だから、開発が楽になるはずである。 ・オブジェクト指向は、ひな型を作り、それを継承してバリエーション展開すれば、修正があっても、ひな型を直せば、継承したコードもすべて修正されるし、修正するコードが少なくてすむ。 という考え方でプロジェクトが進められていたんです。 ただ、現実の開発では、ひな型を継承して、目的の画面を作ろうとすると、当然ながらひな型コードの完全理解が必要になり、そのひな型が多重継承されていると、ひな型を含めて、いくつものクラスの理解が必要で、さらにそれらに渡すパラメータを修正しないと目的のものが作れないってことが多発しました。 そうなると、各クラス(モジュール)内部での各命令がお互いに深く関連しあうこととなり、複合設計でいう「モジュール強度」「情報隠匿の度合い」がどんどん低下していったわけです。 でも、そのプロジェクトが失敗した最大の原因は、システム開発が既存システムより、どんな部分を強化しようとしているのか、つまりは、「目玉機能は何か?」という要件定義を十分に検討しないままに、「オブジェクト指向言語を採用したから、開発工数が減り、修正も簡単になるし、使いやすいシステムになる」という安易な考え方でスタートしたからだったと思っています。 システムがほぼ完成した段階で、ユーザ部門にデモしたところ、ユーザ部門が一斉に「こんなのダメだ!、前のほうが使いやすい」って反発を食らい、数億を費やした、そのシステムはお蔵入りってことになりました。 本来は、もっと早い段階でユーザ部門にデモをすべきだったのでしょうけど、彼らに見せられるレベルのものになかなか仕上がらなかったことも、デモが遅れた原因だったようです。(できそこないでも、早めに見せておけば良かったはずなんですけどね) まあ、それなりにユーザ部門がデモをみて納得していたとしても、そこで出てくる追加・修正への対処は、とても困難なものになった気がしますから、プログラマとしては、「ボツになって、ほっとした・・」という気分ではありました。 もしかすると、その方が言うプロジェクトの失敗は、言語がC++でなくC#に代わっていても、同じように、変な「オブジェクト指向言語」への信仰を守っていたからかもしれませんね。

  • weavaest
  • ベストアンサー率15% (157/1020)
回答No.1

一般的な業務であれば、その手のパッケージソフトを導入して、使えない、使いづらい部分はカスタマイズで対応するのが一般的だと思います。その場合の開発言語はパッケージソフト依存になります。 全てを作るのであれば、開発者に相談して決めれば良いと思います。稀にですが、依頼元が、開発ツールや言語を予め決めてくる場合があります。それでも開発が出来なくはないですが、ベストな選択でない場合が多々あります。そうなると、開発にも運用にも無駄な予算を投資することにも成りかねないと思います。 質問は開発言語は何が良いかとのことですが、規模やメンテナーによりけりなので、部外者の意見はあまり参考にはならないと思いますよ。

mars_kreuz
質問者

補足

ご回答ありがとうございます。特殊な部分が多く、更に拡張していく可能性が高いため、パッケージをカスタマイズしていくのは無理があると思っています。C#とJavaの開発要員が既にいるため、そのどちからになるだろうと思っています。

関連するQ&A

  • 基幹システムの開発方法について教えてください

    システム開発について分からないので教えてください。 今、会社の基幹システムを作り直すという事で、外注業者に依頼をしています。 通常、現行のシステムを理解し、業務を理解し、足りない機能を聞き取りし、追加してくれるのが普通かと思っていましたが、使っている大切な機能が抜けていたり、表示項目が足りなかったりと、今の業務を満たせない内容になっています。外注業者に聞くと、「現行システムは見ていない」とのこと。しかしながらRFPには、現行システムの機能を有す、と記載されています。現行システムの問題点についてはヒアリングは行われたようで、一部表示項目が増えたりはしているようです。 機能の不足等指摘をすると「仕様変更」「仕様追加」と言われ、他の機能を減らすと言われてしまいます。 仕様書もなく、SEが色々な人に直接聞き取りをしているため、何が要件として伝わっているのか分からない状況です。フィードバックもありません。 今後、どのように進めたら良いのか分かりません。どなたか、本来システム開発はどのように進めるのか、今の状況だと今後どのように進めたら良いか教えて頂けませんでしょうか。 社内に常駐しての作業なので、現行システムも問題なく見れますし、聞く人も周囲に多くいます。 変な質問で申し訳ありませんが、どうかよろしくお願いします。

  • システムインテグレーター(Sier)のマーケティング情報について

    企業の基幹系システムの構築などのシステムインテグレーションにおける分野(業種)別の参入企業シェアやソリューション動向などの情報を収集できるHPを教えて頂けませんか。SIマーケット全体からe-japan計画に関連するSI動向をフォーカスしていきたいと思っているのですが・・

  • リンクテーブルによる基幹システムへの影響について

    OS:Windows XP Access Version:Access2003 某システム開発会社に開発を頼んでいる通販システムが社内にあります。 (400万程度の小規模なものです) 基幹のデータベースはOracle10.1になります。 システムの開発費用が予算より高くついてしまっている為、DBから分析用データを抽出するツールは 社内でAccessを使って行おうと思っています。 仕様は単純にOracleの参照用ユーザーを用意してリンクテーブルをAccessで作り データをローカルmdbファイルに落としこもうと思っています。 今後システム開発会社と協議することになりますが、システムへの影響を建前に システム開発会社にて開発するよう主張してくる可能性があります。 社内で上記の仕様でAccessでリンクテーブルを作成するに当り、現状のシステムに 何かしらの悪影響を与えることはあるのでしょうか。 分析用データの抽出であるため、深夜帯のアクセス時間が少ない時間にデータ抽出する 予定でおります。 また、データ量は最大のもので受注履歴データが10万件程度あります。 インフラ環境はサーバークライアント型で、クライアントにOracleが入っているのでそこでAccessの リンクテーブルを作成する予定でおります。 尚、AccessとOracleに関する知識は忘れているものもありますが、上記のテーブルを作成する ぐらいであれば可能と思います。手順はこんな感じで考えております。 http://www.venus.dti.ne.jp/~yoshi-o/RDB/Oracle-Access-NewTableMake.html 考えられるリスクや、アドバイスなどについてご教授頂ければと思います。 よろしくお願い致します。

  • エキスパートシステム(どこに質問していいかわからなかった為ここにさせていただきました)

    大学でエキスパートシステムの研究をしています。 エキスパートシステムの今現在の市場規模や動向、どの会社でどんなエキスパートシステムを作っているか知りたいのです。又、私は待ち行列モデルのシステムをモデリングし、改善提案するシステムを構築しています。そのようなソフトがどの会社でどのぐらいの需要があって生産されているか等も知りたいです。 知っている方がいらっしゃったら教えていただきたいです。又、調査の仕方もわかりません、何かいいサイトや書物など知っている方がいましたらお願いします。 よろしくお願いします。

  • システムは何年で覚えられるか

    よく生産管理システムとか銀行システム等の求人がありますが、半年あれば一人前、一年で部下のつくSE、と宣伝されますが、世の中そんなに甘くないような気がします。 純粋な5年程度のJAVAプログラマならどのくらいの期間で覚えられるでしょうか。レベル的には二次請けか三次請け、200人くらいの会社。 一般的に、大体でいいので、おおざっぱに教えてください。お願いします。

  • データベースを構築するに当たってのシステム選択

     私は中小企業で社内SEを兼任しています。20年以上前に社内の基幹システムをAS/400( RPG)で構築しました。今回新たなシステムを作るに当たり、ASを使うか否かで迷っていますのでご助言下さい。  社内のみの定形業務は5250PCやP comでキャラクターベースの入力画面での作業で問題なく行えています。今回構築することになったのは顧客に入力をしてもらうシステムです。そのため、インターネット経由でブラウザを使って作業が行えるようにしようと考えています。ASのHTTPサーバー機能を使えばブラウザ経由で5250PCの様な入出力インターフェースが実現できるようですが、PCサーバーを使用してGUIを実現しようかとも考えています。  そこでご教授頂きたいのは下記の3点です。 1)なれたRPGを使ってWeb経由のGUIを実現できるツールはありますか? 2)新たにPCで構築するなら習得しやすい言語とDB構築ツール等を紹介していただけますか? 3)ASでGUIが実現できるとしての話ですが、ASを使うかPCを使うかの判断はどのように付けるべきでしょうか?  今からObject指向の言語習得も大変だとは思いますが興味はあります。また社内SEとは言え兼務であり且つ一人で行っていますので、時代の流れから取り残されています。そのためあるべき姿を含め現実的な妥協点もご示唆いただければ幸です。

  • 社内システムの構築について

    社内システムに関してですが、弊社では基幹システムにERPを導入しています。 これらの周りに単独部所で利用するツールや、複数の部門で幅広く使用するシステムが存在します。現在これらの所管が不明瞭になってきて今後が懸念されています。 このあたりについてよいアドバイスを御願いします。漠然とした質問ですが、いまいちどういった切り口でわけ、それを資料化するかがよくわかりません。 最終的に弊社の長期システム投資計画にまで落としたいのですが、どこから手を付けていいものか頓挫しています。 恥ずかしながら、こういったことに関して知識が薄いまま、業務を任せられています。 どんなご意見でも結構ですので教えて下さい。

  • C/Sシステムやサーバ構築に関して質問

     紙ベースで管理されている業務を新たなサブシステムとして構築しようとしてます。  現在、基幹系でのサーバ1台と別のサーバーが1台ありますが、CobolやRPGで出来ているそうで、不具合も多い状態です。メールサーバやファイルサーバは別途存在します。  私の立場ですが、現在派遣で入っている為、詳しい現状のシステムを知る事が出来ません。  もともとホスト制御系のSEであり、C/Sの知識はほとんどありません。VB・VCでの開発経験はありますが、ホストの端末としてWSと混在でのシステムであり、複数者が使うような形態でもありませんでした。DBに関しても知識は乏しいです。Web系の開発はありません。  この新たなサブシステム化がうまくいけば、別のサブシステムのリプレースも実施して、数年計画で基幹系のリプレースも行う計画が某社には一応あるそうです。不具合が多いため、現在のベンダーとの取引をやめたいとも担当者は漏らしております。ちなみに、専属の社内SEはおりません。窓口業務となり、ベンダから教わった手順で運用保守をしているようです。    紙ベースで行われている業務の管理はExcelで実施しており、15名ほどがタッチしております。VBAではありません。ですので、一人がタッチしていると他の方は書き込みできないと言うことになります。  これの解消もするため、アプリ化したいわけです。  当然、DBも構築する事になります。 1.現在のサーバに追加構築は遠慮したいです。その為、新たにこのサブシステム用のマシンを構築しようとしてます。ここにDBを入れる事を考えております。  サーバの知識がなく、調べてみましたが、安上がりにWinXP機をDBサーバにしようと考えましたが、最大10名までしか使えないとか・・・。ならばWinServer2000・2003を買わないとやはりダメということでしょうか?。 2.XAMPPというフリーのサーバ統合パッケージがあることを知りましたが、やはりXP機にこれを入れてのシステム開発はBatでしょうか?。 3.1と2を踏まえて、仮にXAMPPを使うならばLinux機にした方が、今後のリプレースにおいてもWinServerのOSを使うよりは安上がりでしょうか?(予算があまりありません)。また、現行の基幹系のリプレースも視野にいれているならば、LinuxではなくUNIXの方が良い様にも思えてますがセキュリティや保守の面で、そんなに差が大きくあるものでしょうか?。 4.基幹系は不明ですが、もう一つあるサブシステム機にはOracleが入っているようです。今回新たに別のサブシステムを作ろうとしてますが、このマシンに入れ込むつもりは前述の理由からしない方向にしてます。となると、新たに構築するためにOracleを使うとするならば、別途新たなOracleを購入せなばなりませんか?→予算の都合もあるので、だったらフリーのDBのほうでいいのでは?ということからXAMPPの話を出してもいるわけです。新たに作るサブシステムはさして大きくなく、過去3年分のデータも5万件ないです。 5.現在の基幹系システムは、各部門から上がってくるデータをオペレータが基幹系に入力するというシステムです。ですので、システムと言ってもデータの格納場所のような使い方になってます。各部門担当者は、Excelなどで個人でデータをもち、それを基に取引作業をしているような状態です。せっかくのシステムを活かしていないという印象もあり、今後のリプレースを視野にいれているのであれば、照会できるようにもした方が良いとも私は考えております。社員数は100名以上です。VBAやVBのような各マシンにインストールするアプリよりも昨今の時流のようにWeb系言語での開発のほうが、やはり良いのでしょうか?。    なにぶん、開発現場から離れていたこともあり技術に疎くもなってます。よろしくお願い致します。

  • 開発言語について

    開発言語について、現在vb6にて開発された基幹業務が VISTA等のクライアントで一部動作検証がとれなくなってきております。 今後のクライアントOSを考慮し、基幹業務の再構築を検討しております。 そこで開発言語を.NETでいくかJAVAで開発するか迷っております。 それぞれの利点と弱点があるかと思いますが私には双方の知識が乏しく 皆様からの意見を伺いたく投稿いたしました。 開発工数・アプリ起動時間・動作スピード等の比較がわかりますと助かります。 また、開発ツールのお勧め情報がありますたらご助言をお願いします。 運用環境は専用線(20MB)で結ばれたデータセンターのサーバーと データベースがあり、アプリケーションは社内にて運用してます。 EDIにて特定取引先に対してVPNにてデータ配信をしております。

  • システム再構築

    システム再構築の経験のあるかたにアドバイス頂きたいのですが 現在、汎用機-cobolで基幹システムを構築している製造業です 今でもなんとかやれていて特には困っていないといえば それまでなのですが このままでいいのかという疑問を感じています 開発要員COBOLは6名ほど(40歳~50歳) VB等の開発要員は2名(30歳~40歳)ほどおりますが 大量のCOBOLソースを抱えています この不景気で10年近く新人は入ってきていませんので あと数年して定年していく人たちがでてくると COBOLの維持すら難しいような気もしています このような会社は時代遅れなのでしょうか? 他の会社も似たようなものでしょうか? もし時代遅れで早急になんとかしなければいけない状態だとしたら 部員を再教育してCOBOLをVB等のプログラムを書き換え るのがいいのか・・・ ERPパッケージを導入するのがいいのか? どちらにしても高額な費用がかかると思います システム再構築を行ったところはどういった理由・目的で 予算申請して上を説得したのでしょうか? たんなるシステム置き換えでは予算が通らないと思います ましてや不景気で設備投資は控えるような状況です (1)システム再構築を早急にしたほうがいいのか?  まだ様子をみたほうがいいか? (2)システム再構築の進め方はどのようにしたらいいのか?  コンサルを雇う?  部員の再教育する?  システムの切り替えは段階的切り替えか一斉切り替えか? (3)今でもシステムはなんとか動いてはいるので  上には危機意識はありません  費用をかけてやらなければいけない理由・目的を  どのように説明、説得されましたか? (4)システム再構築の後どんなメリットが発生しましたか? このあたりのアドバイスをお願い致します