中小企業の働き方改革をサポート>>

よく、ソフトウェア開発の世界では、「オープン系」とか、「組込み系」、「汎用系」などと言う分野がありますよね。
これってそれぞれどう違い、どのような特徴があるのでしょうか。
また、上記以外のもので他にも「~系」ってあるのでしょうか。あればそれについても概要が知りたいのです。
「アプリ系」などというのもありますか。市販の、例えばグラフィック関連のソフトとか、ゲーム・ソフトや、会計ソフトなどはこう呼ぶのでしょうか。
また、Webプログラミングはどの分野の系統に属するのでしょうか。
ただ、「組込み系」だけは、多少わかりました。例えば電化製品などに内蔵されているマイコンを制御するプログラムを開発するのですよね。国内でも、この分野の技術者が不足しているということも知りました。
自分のイメージですが、この組込み系というのは、いわゆる市販のパソコン・ソフトを開発する分野と比べると、出力する画面のデザインなどの見た目については、あまりこだわらず、制御にいそしむ、ある意味、地味な領域なのかなという気もしました。
それに、結構、マイコンに関するハードの知識も必要とされるのですよね。
私は、ソフト開発のみというよりも結構、電子基盤の操作などに魅力を感じるので、組込みの仕事もしてみたいなとも思うですが、実は、これからVisualBasic.NETを学習しようかと思っています。
これはまったく、的外れな努力でしょうかね。やっぱり、組込みはC言語で無ければならないのでしょうか。
反対に、VisualBasic.NETを生かす道としてはどのような分野が考えられますか。Webやデータベース、サーバサイドのプログラミングなどでしょうか。
ASP.NETなどもありますしね。
どなたか貴重な解説・御意見を頂けましたら、よろしくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

「~系」は他の方にお任せするとして、



>ただ、「組込み系」だけは、多少わかりました。(以下略)
だけではありません。
PCの周辺機器だって、制御システムは「組み込み系」に属します。

>自分のイメージですが、(中略)出力する画面のデザインなどの見た目については、あまりこだわらず、制御にいそしむ、ある意味、地味な領域なのかなという気もしました。
そんなことはないとも言えるし、あるとも言えます。
携帯やデジタルカメラのプログラムも、一般ユーザが自由に作成できる部分を除けば「組み込み系」に属します。
ここで使用されているH/Wはそれこそ千差万別であり、要求仕様を満たすためにはそれなりの努力が必要ですし、液晶表示のように見た目に関わる部分については、それこそこだわりを持たなければ求心力を持った製品など作れませんよ。

>それに、結構、マイコンに関するハードの知識も必要とされるのですよね。
あるとないとではやれる内容は大違いです。
但し、一般のマイコンとは違い専用設計であったりするので、ある程度の知識と仕様を理解する能力の方が必要です。
「マイコンを制御する」ということは「制御するH/W」があったり、それらをつなぐI/Fがあったりします。当然こちらの知識も必要になります。

>やっぱり、組込みはC言語で無ければならないのでしょうか。
最近はコンパイラの性能もよくなったためC言語以外の開発環境もありますが、やはりメインはC/C++です。
ちなみに、今現在だってアセンブラを使用する環境だってありますよ。

この回答への補足

回答ありがとうございます。
なるほど、確かに携帯やデジカメであれば、機体の表面部に液晶部分の操作パネルなどがありますが、PCの周辺機器などは特にそのようなものは無くても、内部にマイコンとしてプログラムが内蔵されているのですね。
それにインターフェースの知識も必要であると。
また、コンパイラの性能がよくなると、開発効率に影響するのでしょうか。JAVAや、VBだと向かないということがいえるのですか。
SilverThawさん、専門家の方のようですが、たいへん参考になりました。

補足日時:2009/09/19 15:31
    • good
    • 0

No.2です



No.3
>素朴な疑問なのですが、汎用性があるという「C言語」というのと、マイクロソフトの「VisualC/C++」って何か違うのでしょうか。
C言語そのものは「ある命令(関数)に対してこう実行する」という基礎部分と、変数の型や引数の渡し方といった基本ルールを定義している部分になります。
この「基礎部分」に、Windowsアプリを作りやすいようにMSが機能(関数)を追加したものがVisualStudio等それぞれの開発環境になります。

>Cでは「基本的に使用できる部品の大きさがVBとは桁違いに小さいサイズのもの」(以下略)
>VBってやっぱり、多言語に比べわかりやすくするために細かい機能を大幅に割愛してしまっているんでしょうか。
「機能を割愛」というと語弊があります。
プログラムを作りやすいように、決まった機能が最初から提供されているのがVBやVC等です。
最初から提供されていて細かいことを何も考えなくてよい分、作るのは楽ですが小回りが利きにくくなります。
C言語は、根本的な部分はどれだけメモリを使用するかといった「メモリ管理」から自分で考える必要があります。
また、専用H/W用の開発環境なら、CPUに供給されるクロックを元に、各種の設定まで自分で行います。
つまり、細かいことができる分、勝手にやっていてくれた部分まで自分で設計し制御する必要が出てくることになります。これが柔軟さでもあり難しさでもあります。

>もしそうだとすると、やや幻滅というか、これだから最初からCを勉強した方がいいやとも思ってしまいます。
Windowsアプリに特化している環境という意味では、十分に活用できますから、幻滅する必要はありませんよ。
本当に組み込み系を目指すのであれば、遠回りにはなるかも知れませんが。

>それに、VBは文法的にシンプルだとしても、コンパイルすれば、VBだろうが、Cだろうが、機械語になるのでいっしょだとも聞きますが
コンパイラの処理の仕方にもよるため、必ずしも一緒になるとは限りません。

>それだと、結局、どういうところが具体的に開発工程の向き不向き・効率に影響しているのか知りたいです。
おそらく最初の質問に関連すると思いますが、いくら特殊なH/WのプログラムをVBと作りたいと思っても、開発環境がなければ作れない、開発環境がC言語用しかなければC言語で作るしかないというのが実状です。

>結局、処理速度の違いがいちばん大きな違いなのかなとも考えてしまいます。
Windows上(というか最近のPCのスペック)では、それほど速度に遜色はありませんよ。
本当にmsec以下のオーダーでの処理速度やタイミングの要求が必要な場合は、言語など関係なく根本的に設計や、それから作成しているプログラムに問題が無いかの方が重要ですから。
    • good
    • 0
この回答へのお礼

何度も御親切に回答ありがとうございます。
確かに、VC++というのも、そういう言語があるというよりも、マイクロソフトの考えた統合開発環境の名前ですよね。
なるほど、Cでは自分でいろいろと考えて細かいところまで作らなくてはいけないと。それが、マニュアル的でおもしろいという人もいるのかもしれませんね。まあ、エラーも出やすい原因なのかもしれませんが。
それに、組込み系では、開発環境が伝統的にというか、C言語のものである場合が多いと。VB.ENTはプラット・フォームとして幅が広く、これからの発展や、また多用されるとも聞いています。
処理速度についてはそうですか。さほどの違いは言語間でないということですね。あるとすれば、膨大な処理の必要になるAIなどの分野での話なのかもしれません。

お礼日時:2009/09/21 22:39

No.2です。



No.3
>Cは関数で出来ているという話も聞きました。と、すると、VBでは部品が無ければ自分でつくるということは、できないのでしょうか。
いえ、VBでも「関数」(サブルーチン)という意味では作ることはできます。
但し、Windowsアプリ向けに傾倒しているVBと、汎用的にプログラムが作成できるC言語では、どうしても差が出てきます。
VBはWindowsアプリの作成を容易にするために、Windowsの機能を簡単に使えるように予め部品が用意されています。これはVisualStudio(C/C++)や.NET等も同様と言えます。
VBと(組み込み向け)C言語の大きな違いは、No.2でも例えましたが基本的に使用できる部品の大きさがVBとは桁違いに小さいサイズのものがあり、専用H/W用に豊富な種類の部品やコンパイラが提供されているところにあります。
    • good
    • 0
この回答へのお礼

再び回答ありがとうございます。
わざわざ感謝致します。
VBのサブルーチンのこと了解しました。
素朴な疑問なのですが、汎用性があるという「C言語」というのと、マイクロソフトの「VisualC/C++」って何か違うのでしょうか。
因みに後者が統合開発環境であるというのはわかっております。
後者はマイクロソフトが何か言語の仕様に拡張したり付加したりした機能でもあるということなのか。
また、頂いた回答で、注目した部分なのですが、Cでは「基本的に使用できる部品の大きさがVBとは桁違いに小さいサイズのもの」があるといいますのはどのようなことなのか非常に興味をそそられました。
VBですと、そうしたものがCに比べ極端に少なく、大雑把であるといいますか。
VBってやっぱり、多言語に比べわかりやすくするために細かい機能を大幅に割愛してしまっているんでしょうか。もしそうだとすると、やや幻滅というか、これだから最初からCを勉強した方がいいやとも思ってしまいます。
それに、VBは文法的にシンプルだとしても、コンパイルすれば、VBだろうが、Cだろうが、機械語になるのでいっしょだとも聞きますがそれだと、結局、どういうところが具体的に開発工程の向き不向き・効率に影響しているのか知りたいです。
結局、処理速度の違いがいちばん大きな違いなのかなとも考えてしまいます。

お礼日時:2009/09/20 03:02

No.2です



>それにインターフェースの知識も必要であると。
いらない場合もありますよ。
あくまでも「別のH/Wと通信する部分を作る場合」という前提に基づいた話です。
例えば、USB接続のHDDの制御部分を作るとした場合、必要な知識を簡単にあげても
・PCと接続した際にHDDとして認識させる(USBの知識)
・PCとHDDでデータをやり取りする(USB、SCSIコマンドの知識)
・HDDとデータのやり取りをする(IDE/SATA等HDDとのI/F知識)
が必要になります。作業する内容によっては不要となる知識もあります。
但しUSBと通信を行う為のマイコンは必ずしも同じとは限りません。
製品Aと製品Bでは使用しているマイコンが違うこともあります。マイコンが違うということはプログラムも違うものが必要になる可能性があります。

>また、コンパイラの性能がよくなると、開発効率に影響するのでしょうか。
正確には「コンパイラも含めた統合開発環境」と言った方がいいでしょう。
「コンパイラ」の役割は、「人の書いたプログラム」を「機械(CPU)が理解できる命令に変換する」ことです。
つまり、プログラム言語に対応したコンパイラさえあれば、どんな言語であっても開発することは可能になります。
しかしながら、VBは基本的には「出来上がっている部品を組み合わせて」プログラムを作成していきます。
対してC言語は、出来上がっている部品を使用することもできれば「部品がなければ自分で作って」組み立てることもできます。
これがC言語が組み込み系に向いている理由になります。

「統合環境」というのはVB等のように、一つのアプリ上でプログラム開発からコンパイルまでできるもののことです。
今でも……というか今現在の私がそうですが、テキストエディタでプログラム作成→DOSプロンプトからコンパイラ実行→できたファイルを組み込み機器のフラッシュROMに書き込んでデバッグ、というものもあります。


>JAVAや、VBだと向かないということがいえるのですか。
一部分野では「組み込み専用JAVA」(正確には組み込み専用の仮想VM上で動作するJAVAプログラム)というのもあります。


最後にちょっとだけ補足
>SilverThawさん、専門家の方のようですが、たいへん参考になりました。
どんな人の「専門家」「経験者」「一般人」、「回答に対する自信」は『自己申告』です。
本当にそうだとは限りませんのであまり信用しない方がいいかもしれませんよ。
(何にでも「専門家」で怪答する方もよく見ますので注意をこめて)

私だって似非専門家かもしれませんよ?
    • good
    • 0
この回答へのお礼

たびたび回答ありがとうございます。
I/Fだけでも、多くの知識が必要になりそうですね。
なければ部品をつくって組めるというC言語のお話、おもしろかったです。Cは関数で出来ているという話も聞きました。と、すると、VBでは部品が無ければ自分でつくるということは、できないのでしょうか。
怪答者には用心したいと思います。

お礼日時:2009/09/19 19:26

「オープン系」、「組込み系」は確かによく使います。


「オープン系」の反対語として「プロプラ系」という
言葉もあります。

プロプラは、プロプライエタリ(proprietary)の略で
メーカー独自仕様コンピュータ向けソフトウェアを
指します。

その他にも「~系」は、いろいろあると思います。
「アプリ系」は、あまり聞いたことがないですが、
まぁみんな適当に雰囲気で使っていると思います。
「癒し系ソフト」とか・・
Webプログラミングだったら、やっぱ「Web系」でしょう。

組み込み系は、確かに制御ものが多いですが、
例えば、携帯電話やカーナビ等、画面デザインも
重要とされる組み込み系もあります。
特定のハードウェアに組み込んで出荷するソフトなら
組み込み系です。

組み込みをやるなら、やはりC言語は必須だと思います。
VB.NETは、Windowsが基本ですから、Windowsの動かない
ところでは使えません。Windows Serverベースの
Webシステムでは、よく使われると思います。

この回答への補足

回答ありがとうございます。
「プロプラ系」などと言う言葉は初めて聞きました。
たいへん参考になりました。
なるほど確かにカーナビや携帯であれば、見た目も重要ですね。
VBと、Cでは言語としての機能、難易度はかなり異なるのでしょうか。巷に売られている解説書でもVBよりCの本のほうがずっと分厚い場合が多いように思います。それだけ言語としてできることが高度といいますか。

補足日時:2009/09/19 10:48
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q組み込み系と制御系の違いは?

SE/PGの求人で、組み込み系、制御系を見ますが、
組み込みとは、家電製品などに組み込み、使用者が家電製品を使うときに操作したとおりに動くようにプログラムをつくるエンジニアのことでしょうか?

制御系はどういたことなんでしょうか?
制御とついているので制御するのだと思うのですが、使われる箇所としてはどういった所に使われるのでしょうか?

さっきの組み込み系でも、家電製品に”組み込ん”でも、”制御”もされているのではないでしょうか?
例えば、電子ジャーに”組み込ん”でも、温度調節なども”制御”しているのではないでしょうか?

組み込みと制御は同じような事なのでしょうか?

Aベストアンサー

○○系という言葉自体が広い概念ですので、たしかに重複する意味もありますが。
元々、系列化するものに対して○○系として区別していました。
対象が同じものであっても言い方で混乱しますね。
結論を簡単に言えば、表現の方法の違いなのですが、
1)主機能面から言えば、○○制御系
  (背景には、複雑・多様化、ネットワーク化、ユビキタス、インフラなどの課題が多い)
2)機器内部にコンピュータシステムを組み込むための技術力、対応力を強調させる場合は、組み込み系。(背景には、小型化、省電力、高速化などの課題が多い)

で、SE/PG求人ということなので、「ソフトウェア開発」に絞られます。
一般には、制御系システムの方が範囲が広く、以下のように使われるケースがあります。
「...制御系のシステム(計測・制御用ソフト、組み込み用ソフト、FA用ソフト)の開発経験者を求む....」

一般的には、
組み込み系システムとは、
 昨今の家電・電子機器・自動車(etc.)には、機器を制御するためのマイコン用ソフト・ハードが組み込まれて内蔵されている。その機器内部のコンピュータシステムを指す。組み込み系ソフトとは、機器内部のコンピュータシステムを稼動させるソフトウェアで、組み込み系システム用に開発されたソフトウェアのこと。組み込み系に対しては、PC系・UNIX系と言ったりする。機器の外部にコンピュータを接続する形式が「非組み込み系」と考えてよい。システムの構築の際、形態・方法を指す言葉。したがって、電子ジャーは、組み込み系システムであるとは言えます。

一方、制御系システムとは、広義には、機器を「制御する」システムを対象とする。狭義には、特に制御が主機能になっているものを指す。ここでの「制御系」の概念は、「組み込み系」であっても「非組み込み系」であっても構わない。すなわち、システム構築の目的や用途(機能)を強く意識した言葉。したがって、電子ジャー(炊飯)などの特定の狭い用途で主機能ではない場合には、使いません。自動車のカーナビ(位置特定)なども。敢えて「制御」を使うならば、電子ジャーの温度制御ソフトのように使われる。


制御系の実例的には
主な制御系         具体的システム例       ソフトの対象例
監視・制御系        中央監視盤、照明制御システム 制御端末用ソフト
FA系           製造ライン監視制御システム  PLC用ソフト
プロセス制御系       製鉄プラントシステム
通信・制御系        移動体通信制御システム    携帯電話、基地局
計測・制御系        排ガス濃度監視装置      濃度計測、ロギング
組み込み・制御系      DVDプレーヤシステム     モーター回転数制御
「DVDプレーヤ」では、単に「制御系」とは普通言わない。
「組み込み・制御系」もしくは単に「組み込み系」。

納得がいかないなら、「制御系」などで検索し、
ターゲットの実例を調べてください。

参考にされば、幸いです。

○○系という言葉自体が広い概念ですので、たしかに重複する意味もありますが。
元々、系列化するものに対して○○系として区別していました。
対象が同じものであっても言い方で混乱しますね。
結論を簡単に言えば、表現の方法の違いなのですが、
1)主機能面から言えば、○○制御系
  (背景には、複雑・多様化、ネットワーク化、ユビキタス、インフラなどの課題が多い)
2)機器内部にコンピュータシステムを組み込むための技術力、対応力を強調させる場合は、組み込み系。(背景には、小型化、省電力、高...続きを読む

Qオープン系、汎用系とは?

職を探すときに、オープン系システム開発とか汎用系システム開発という言葉が使われますが、オープン系・汎用系とはそもそもどーいう意味なんでしょうか?

どなたか、よろしくお願いします!

Aベストアンサー

オープン系とは、Unix,WS(+PC)をベースにした所謂「クライアント・サーバーシステム」を前提にしているようです。各WSやPCは、「通信」で結ばれます。文字どおり、個々の機種への依存性を極力排し、自由に結合できるのが特徴です。

汎用系とは、汎用大型機を前提としており、今でも金融系や移動通信の制御などに用いられています。(E)WS+Unixが出てくるまでは事実上これしかありませんでした。(他にもスパコンとかミニコンはあったが、基本は同じ)

これ以上詳しく言うとボロがでるので、あとは、専門家の方に任せます。

Q汎用系とオープン系の違いって?

ソフトウェア業界について勉強しています。
本によると、『業務システム開発は、汎用系システム開発とオープン系システム開発に分かれる』とあるのですが、違いがよく分かりません。

知り合いからは、「例えば人事給与システムはオープン系で、銀行などの基幹システムは汎用系だよ」と言われました。
それって、つまり規模の差ってことでしょうか?
よろしくお願いします。

Aベストアンサー

こんにちは。

おおまかに言えば汎用系とオープン系は高速性、信頼性が違います。汎用系のほうがどちらも優れています。
データ量だけならオープン系をSAN環境で使用すればどちらもあまり変わりません。

汎用系は高速性を要求される為、そのプログラミングはハードウェアに特化(ハードウェアやシステムの特性を考慮した)ものになります。よってマシン語に近い言語を使用することも多く、システム専用に構築される場合が多いので、システム変更や他に応用することが容易には出来ません。(昔銀行の統合でこれに失敗して大事件になったことがありますよね。)

オープン系は主にWindows等のアプリケーション(例えば会計ソフト)が動作する環境に用います。ハードウェアに特化しないので、その変更が汎用系に比べ容易です。

汎用系は集中処理型システムであるがゆえ、信頼性も高いものが要求されます。極端にいえば1台システムがダウンすると全滅してしまいます。ですからそのようなことがないように障害発生時の対処についてもオープン系よりもシビアなものとなります。

とはいえオープン系も信頼性が高くなってきており、さらにSAN環境等でリスク分散することでさらに信頼性を高めることができます。

汎用系とオープン系は互いに一長一短ですので使用するシステムの特性にて使い分けます。
極端な例でいえば銀行ATMなど大勢の人が同時に使用するようなシステムの場合は汎用系でないと対応できないでしょうし、質問者様自身が何かのアプリケーションを使用する為に自分のPCにディスクを増設されてもそれはオープン系システムと言えます。

つまり汎用系システムは、高速性などそれでないと対応できない場合に用い、オープン系はその名の通りオープンですのでいろいろな用途のシステムに用いるのが一般的です。

こんにちは。

おおまかに言えば汎用系とオープン系は高速性、信頼性が違います。汎用系のほうがどちらも優れています。
データ量だけならオープン系をSAN環境で使用すればどちらもあまり変わりません。

汎用系は高速性を要求される為、そのプログラミングはハードウェアに特化(ハードウェアやシステムの特性を考慮した)ものになります。よってマシン語に近い言語を使用することも多く、システム専用に構築される場合が多いので、システム変更や他に応用することが容易には出来ません。(昔銀行の統合でこ...続きを読む


人気Q&Aランキング

おすすめ情報