オープン系と組込み系についての特徴と差異

このQ&Aのポイント
  • ソフトウェア開発の分野で「オープン系」と「組込み系」という分類があります。
  • オープン系は汎用的なソフトウェア開発を指し、組込み系はマイコンなどを制御するプログラム開発を指します。
  • 組込み系は外見のデザインよりも制御に重点を置き、マイコンの知識も必要です。
回答を見る
  • ベストアンサー

オープン系とか、組込み系とかって何?

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

  • furoru
  • お礼率62% (338/537)

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

  • ベストアンサー
回答No.2

「~系」は他の方にお任せするとして、 >ただ、「組込み系」だけは、多少わかりました。(以下略) だけではありません。 PCの周辺機器だって、制御システムは「組み込み系」に属します。 >自分のイメージですが、(中略)出力する画面のデザインなどの見た目については、あまりこだわらず、制御にいそしむ、ある意味、地味な領域なのかなという気もしました。 そんなことはないとも言えるし、あるとも言えます。 携帯やデジタルカメラのプログラムも、一般ユーザが自由に作成できる部分を除けば「組み込み系」に属します。 ここで使用されているH/Wはそれこそ千差万別であり、要求仕様を満たすためにはそれなりの努力が必要ですし、液晶表示のように見た目に関わる部分については、それこそこだわりを持たなければ求心力を持った製品など作れませんよ。 >それに、結構、マイコンに関するハードの知識も必要とされるのですよね。 あるとないとではやれる内容は大違いです。 但し、一般のマイコンとは違い専用設計であったりするので、ある程度の知識と仕様を理解する能力の方が必要です。 「マイコンを制御する」ということは「制御するH/W」があったり、それらをつなぐI/Fがあったりします。当然こちらの知識も必要になります。 >やっぱり、組込みはC言語で無ければならないのでしょうか。 最近はコンパイラの性能もよくなったためC言語以外の開発環境もありますが、やはりメインはC/C++です。 ちなみに、今現在だってアセンブラを使用する環境だってありますよ。

furoru
質問者

補足

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

その他の回答 (4)

回答No.5

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以下のオーダーでの処理速度やタイミングの要求が必要な場合は、言語など関係なく根本的に設計や、それから作成しているプログラムに問題が無いかの方が重要ですから。

furoru
質問者

お礼

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

回答No.4

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

furoru
質問者

お礼

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

回答No.3

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さん、専門家の方のようですが、たいへん参考になりました。 どんな人の「専門家」「経験者」「一般人」、「回答に対する自信」は『自己申告』です。 本当にそうだとは限りませんのであまり信用しない方がいいかもしれませんよ。 (何にでも「専門家」で怪答する方もよく見ますので注意をこめて) 私だって似非専門家かもしれませんよ?

furoru
質問者

お礼

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

  • Lchan0211
  • ベストアンサー率64% (239/371)
回答No.1

「オープン系」、「組込み系」は確かによく使います。 「オープン系」の反対語として「プロプラ系」という 言葉もあります。 プロプラは、プロプライエタリ(proprietary)の略で メーカー独自仕様コンピュータ向けソフトウェアを 指します。 その他にも「~系」は、いろいろあると思います。 「アプリ系」は、あまり聞いたことがないですが、 まぁみんな適当に雰囲気で使っていると思います。 「癒し系ソフト」とか・・ Webプログラミングだったら、やっぱ「Web系」でしょう。 組み込み系は、確かに制御ものが多いですが、 例えば、携帯電話やカーナビ等、画面デザインも 重要とされる組み込み系もあります。 特定のハードウェアに組み込んで出荷するソフトなら 組み込み系です。 組み込みをやるなら、やはりC言語は必須だと思います。 VB.NETは、Windowsが基本ですから、Windowsの動かない ところでは使えません。Windows Serverベースの Webシステムでは、よく使われると思います。

furoru
質問者

補足

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

関連するQ&A

  • オープン系?分野について

    情報処理で事務をしています。スキルシートや求人を掲載する際に困っています。 オープン系、WEB系、汎用系、制御系、組み込み系という分野がよく理解できません。また、これらに使用される言語やDBについても教えてください。 業務系とかいう○○系というのは他にも存在するのでしょうか? 上記5つの分野の中に、業務系というのが付随するのでしょうか? ネットで調べても、いまいち分からなかったので・・・

  • オープン系?

    エンジニアやプログラマの種類で、制御系・汎用系・オープン系・Web系などありますが、オープン系とWeb系がよくわかりません。 制御系は電気製品のICや工作機械のことですよね? 汎用系はメーンフレームなどですよね? Web系はJabaでのプログラミングですか? オープン系は全然わかりません。 初歩的ですみませんが、おねがいします。

  • 求人カテゴリについて

    転職を考えています。恥ずかしながら未経験の分野に飛び込もうとしていますが、ネットで検索したときに、カテゴリが絞れなくて困っています。ソフトウエア開発において、「オープン」「汎用」「WEBアプリ」「制御」というようなカテゴリは、具体的にはどういったものなのでしょう?「制御」は家電などのマイコンみたいなものなのかなあ、WEBアプリは携帯サイトや携帯のゲームかな?と勝手に想像していますが、間違っていたら指摘してください。オープンや、汎用はどういうものか分かりません。会社の基幹システムなどはどういうカテゴリなのでしょうか?教えてください。よろしくお願いいたします。

  • 制御系?組込み系?

    現在転職活動中ですが ソフトウェア会社を見ていると「制御系」とか 「組込み系」という分野がある事がわかりました。 オープン系やWEB系と同じレベルであるようですが 具体的にはどのような業務になるのでしょうか? よろしくお願いします。

  • 「制御、組込系の仕事」について

    「制御、組込系の仕事」について いつもお世話になっております。 出来れば、「制御、組込系の仕事」についてみたいと考えております。 C#、javaを使ったweb系の開発経験が3年程あります。(他の言語も併せれば、経験年数は5年程度です) c言語の基本知識はありますが、業務経験はありません。 年齢は30を超えてしまっています。 何らかの努力次第で、「制御、組込系の仕事」に就く事は可能でしょうか?

  • 組込み系、Web系の仕事内容について。

    プログラマーを目指していますが、組込み系やWeb系などに関心があります。 前者は、マイコンや電子回路などハードウェアに関する知識も合わせて持っていなければならないようですが、またそこが魅力です。 後者は、これからも伸びる分野なのではないかと思うのですが、サーバーサイドやクライアントサイドなどを.NETやJavaで構築するのも楽しそうです。 そこで、両者のお互いのチャームポイントなどを知りたいのです。 ただ、ひとつ気になることがありまして、勝手な想像かもしれませんが、イメージとして組込み系のプログラマーは、組み込む機械や、ハードウェアに関連した工場などに出向してヘルメットをかぶったり、一日中立ち尽くして仕事をするようなことはあるのでしょうか。 これは、かなりデスクワークとしてのプログラマーのイメージとかけ離れているのですが。 手作業やモノ作りもいいですし、たまにならいいものの、そうしたこともかなりの割合を占める仕事ともなると、そこが心配です。 何だか、プログラマーと言うよりも製造業の工人の方のような感じで あまり雰囲気になじめないのですが。 Web系に関してはソフトウェア開発一本で、工場だの、機械だのとは無縁でそのようなことは、ないのかもしれませんが。 また、Web系では、Javaではなく、VB.NETなども今後、ソフト開発に利用されていくのでしょうか。 どなたか、解説を頂けましたら何卒よろしくお願い致します。

  • 組み込みプログラマになるには

    現在大学生をやっているものです。 表題の通りなのですが、私は将来組み込み開発系のエンジニアに なりたいと考えています。 ただ、大学ではそれとは関係なく物理を専攻しており、 プログラミングもCやFortranを数値計算に使う程度で専門的な知識が無いのですが、 このような者でもいきなり組み込み系のプログラマの職につくことは 可能なのでしょうか? それとも、会社としてはやはり全く知識の無い学生ではなく 情報系などの少しでも早く使えるようになる学生しか必要ないのでしょうか? やる気だけなら十二分にあります。 もちろん個人の能力に依るといえばそうなのですが、 一般的に難しいかどうか教えていただけないでしょうか? 組み込み系にこだわっているのは、 なるべくハードウェアに近いところでソフトが 実際の物理現象となっていくのを体感していたいからです。 また、組み込み開発をやっているところでお薦めの会社などあれば それも教えてください。 よろしくお願い致します。

  • 組込みマイコンの選定(トレンド)

    制御用の組込みマイコンの選定をしています。 日立(ルネサンス)のH8系、(もしくはSH-2系)を の使用を考えています。 現在、デバッカ、コンパイラなどの開発環境は 全くない状態です。 他メーカのマイコンも含め選定したいと思うのですが、 マイコンのトレンドが分かりません。 NEC(V850、78K)、PowerPC?....など。 現在詳細仕様は決まってませんが、下記にまとめます。 ビット数:16or32ビット ROM容量:約 512kバイト(内蔵or外付けどちらでも可) 使用周波数:15~25MHz シリアルあり (マニュアル関連は日本語希望) ●質問 ”(この程度のスペックであれば)組込み系マイコンは H8(SH-2)系だ”もしくは”NEC系が良い”などのトレンドはあるでしょうか。 (トラ技などを見るとH8、SH系の記事が良く載っている ような気がするのですが....)

  • ■制御系・組込み系のエンジニアの定義について

    私は求人広告業界で営業をしているものです。 ソフトハウスやメーカーなど、制御・組み込みのエンジニアの募集が増えているのですが、いまいち本やネットで検索しても、何が制御系エンジニアなのか、組み込み系エンジニアなのかわかりません。 本当に困っているので、教えていただけると幸いです。 どうぞ宜しくお願いします・・・。

  • H8マイコンによる組み込みプログラミング入門

    この分野の初心者です.マシン語,アセンブラ,CPUの仕組みは理解できていますが,CPUと周辺との入出力,デバッグ環境等はまったく自信なしです. H8マイコンを使って,組み込みプログラミングを学習したいと思います.秋月から出ている,AKI-H8~ が手頃なようですが,どれを購入したら良いのかよくわかりません.ゆくゆくは,自分で回路なんぞ組み立ててH8から制御してみたいのですが,現時点では,LCDへの表示やLEDの点灯等の簡単なものを行いたいのです.C言語はできるので,開発環境一式そろったものが良いのです. AKI-H8/3052F USB開発キット(フルセット) AKI-H8/3052F開発セット(H8マザーボードセット) AKI-H8/3048開発キット(即使えるキット) など,8000円台前後でいろいろあるようですが (1)組み立ては難しいですか? (2)パソコンと接続するのに,他に何か必要なのですか? (3) ROMに焼けるのですか?(何回も) (4)最初に述べた目的を達成するには,何を購入すれば良いですか.

専門家に質問してみよう