- ベストアンサー
組み込み系プログラマーにIT以外の知識・技術は必要なのですか?
機器に組み込まれるソフトウェアの開発には、プログラミング言語の文法やライブラリ、データ構造、アルゴリズムなどのITに関すること以外の知識・技術は必要なのでしょうか? 例えば携帯電話の制御ソフトの開発には、音声工学や電磁気学、電気・電子回路などの工学や物理の知識・技術は必要なのでしょうか? よろしくおねがいします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
> ハードウェアの初歩的な知識というのは、CPUやメモリーの役割が理解できているということを指すのでしょうか?それとも半導体の知識や、簡単な電子回路を設計できるということでしょうか? 両方です。CPUやメモリのことは当然必要ですし、回路図ぐらいは読めるべきです。オシロスコープやロジックアナライザ等の計測機器が使える必要もあると思います。 > 知らなくても済むということは、仕様が記載された書類が与えられて、基本的にはそれさえあれば組み込みソフトを書けるということでしょうか? 最低限のプログラマであれば、そういうことです。 > そしてハードウェアの知識があればより高速であったり容量が軽かったりする性能の高いソフトを書けるという理解で間違っていないでしょうか? 効率的なこともありますが、自分で出来ることの幅が広がります。 アプリケーション部分しか作れないプログラマになるか、デバイスドライバまで作れるプログラマになるか、トラブルが発生した際に、自分で深く解析ができるか、その人の限界が変わってくるわけです。
その他の回答 (5)
お役に立てるかわかりませんが。 組み込み機器のソフトウェアの開発についてですが、一言ではどういった機器を開発するかで必要な知識、技術が決まると思います。 たとえば、ある機器を開発する業務命令を受けると、機器のマーケティングによる出荷台数の予想(目標台数)、開発日程(特許含む)、コスト等を考慮して、機器の仕様を決め、また社内で従来から使用しているCPU(マイクリプロセッサー)を考慮して決定します。(開発ツールのコスト、メインテナンス等も含む)当然、パネル表示、センサー技術、ドライバー等の回路設計を行います。当然その中にソフト制御能力も加味した設計仕様書も作成します。昔と違い機器の制御は商品の性能に反映します。 会社の規模により、担当する範囲がありますので一様には言えませんが... temp2005さんも簡単な機器の製作をしたことがあると思いますが、ただ動かす(動いたからOK)のではなく、それを擬似商品として考えて、機能をUpさせたらソフト開発に対する考え方が一味違ってくるのではないのでしょうか。 頑張ってください。
お礼
ありがとうございました。具体的なお話で参考になりました。 >会社の規模により、担当する範囲がありますので一様には言えませんが... 結局これがすべてなんだなと本スレを通して感じました。仕事の感覚は職場でつかむものですね。 >temp2005さんも簡単な機器の製作をしたことがあると思いますが、 いや恥ずかしながらOPアンプを使った増幅回路を学生実験でテキスト通りに組んだ(というか他の人がやるのを傍観していた)程度しか経験がないので、具体的にどういう仕事をするのか想像がつかなくて不安だったんですよね。研究ではプログラミングしかしてませんし。。。 >擬似商品として考えて、機能をUpさせたらソフト開発に対する考え方が一味違ってくるのではないのでしょうか。 学生の私にはお客さんの存在がまったく見えていませんでした。仕事内容がどんなものであっても、ゴール(お客)を見失わなければ自ずとゴールまでの道は浮かんできそうですね。数学の勉強には自身がありませんが…
- matyrcry
- ベストアンサー率47% (101/213)
組み込み業界に来るなら、「機器」そのものが色々あって、その大半は 職に就いてから初めて見ることになると考えたほうがいいです。 携帯電話はかなり高機能の端末ですが、大抵ウインドウズ以外のOSを 採用してますし、市販PC用のライブラリが使えないことも多いです。 他の一般的な(たとえば家電などの)制御用マイコンなどでは、OSと いうものすらないです。 画面、キーボード、マウスなんて高機能な入出力デバイスが付いている のはごく僅かで、フォトカプラやメモリなどを相手に限られたRAMや ROMの残量見ながら「みみっちく」コーディングすることも多いです から、CPUの能力や豊富なリソースに依存せずに今ある資源を最大限 に活用する能力が要求されます。(ライブラリごと自作とか^^;) 具体的に何が必要かって言われると、全体では色々必要なんだけど分業 することが多いから...。 自分的にはCPUのハードウェアマニュアルのサンプル回路図が読める程度 にロジックICとかを見ておくくらいかなぁ。 職に就いてから本読んで勉強することも多いし、就職前に知っておかな いとダメってこともないですよ。
お礼
回答ありがとうございました。 >フォトカプラやメモリなどを相手に限られたRAMや >ROMの残量見ながら「みみっちく」コーディングすることも多いです >から、CPUの能力や豊富なリソースに依存せずに今ある資源を最大限 >に活用する能力が要求されます。(ライブラリごと自作とか^^;) ライブラリを自作ですかぁ。お話を聞いていると、もしかしてアセンブリ言語による職人芸も普通に要求されるのでしょうか。。。オブジェクト指向とか縁遠い世界なんですかね。。。でもJavaで携帯の制御ソフト開発という話も聞きますし、大枠はオブジェクト指向でつくって、高速・低容量を要求される部分だけアセンブリ言語でチューニングといった感じなのでしょうか。 >職に就いてから本読んで勉強することも多いし、就職前に知っておかな >いとダメってこともないですよ。 そうですね。どんな仕事でも多分そうなんですよね。でも私はあまり大学数学が得意ではないので、例えば携帯電話や空調機の制御ソフトを開発する際に、大学数学が使われている音声工学や熱力学を勉強しなければならないとしたら苦しいので今回の質問を立てました。が、なんとかなりそうですね^^ まだ組み込み系志望に決定したわけではないのですけれど。。
- jacta
- ベストアンサー率26% (845/3158)
> SEであれば最終的にプロジェクトマネージャー、コンサルタント、またはソフト開発のスペシャリストに上っていくキャリアパスがあると聞きます。組み込み系プログラマーが辿るキャリアパスについて教えていただけないでしょうか?よろしくおねがいします。 私の周りの方々は、(私も含めて)皆さん順次起業されていますので、上記のようなパターンに当てはまりにくいですね。 サラリーマン一筋の方の回答を待ちましょう。
お礼
順次起業ですか。。。組み込み系プログラマーという職業の中で実力のある方にとっては、天井が低いということなのでしょうか。。。それともSEの方でも起業される方って多いんですかね。。。 私は自分の能力に自信がなく未踏の大海へ漕ぎ出すような性質ではないので、自分が起業をすることを考えたことはなかったもので、正直驚きました。 数々の追加質問に付き合ってくださってありがとうございました。
- jacta
- ベストアンサー率26% (845/3158)
> 回路図というのはAND、ORなどの素子が配置された論理回路のことなのでしょうか?それとも抵抗・コンデンサー・半導体などが配置された電気・電子回路のことでしょうか? やはり両方読めた方がよいと思います。 プルアップのような初歩的な回路が分からないと、ちょっと辛いでしょうね。 > ということは信号の波形をチェックするということと思いますが、どの程度詳しく波形をチェックするのでしょうか? 基本的にプログラマなので、ICの端子の入出力のレベルとタイミングが追えればよいと思います。その意味で、TTLやCMOSの違いぐらいは抑えておきたいところです。 > あと、これはまた新たに湧いてきた疑問なのですが、組み込み系プログラマーが電子回路のレイアウトを逆に回路設計者に提案したりということはあるのでしょうか?というか回路の設計を兼任するということもあるのでしょうか? 職場によりますが、私がメーカーに勤務していたときはそんな感じでした。ソフト・ハード合わせてのシステムですので、両方の視点から総合的に判断できた方がよいことは言うまでもありません。
お礼
回答ありがとうございました。イメージが具体的につかめてきました。かなり詳しいようにお見受けしますので、最後にもう一つだけ質問させてください。最初の質問からは離れてしまいますが…。 SEであれば最終的にプロジェクトマネージャー、コンサルタント、またはソフト開発のスペシャリストに上っていくキャリアパスがあると聞きます。組み込み系プログラマーが辿るキャリアパスについて教えていただけないでしょうか?よろしくおねがいします。
- jacta
- ベストアンサー率26% (845/3158)
少なくともハードウェアの初歩的な知識は必要だと思います。 知らなくても済むといえば済むのですが、それだけ技術者としてのレベルは低くなります。
補足
回答ありがとうございました。 ハードウェアの初歩的な知識というのは、CPUやメモリーの役割が理解できているということを指すのでしょうか?それとも半導体の知識や、簡単な電子回路を設計できるということでしょうか? >知らなくても済むといえば済むのですが、 知らなくても済むということは、仕様が記載された書類が与えられて、基本的にはそれさえあれば組み込みソフトを書けるということでしょうか?そしてハードウェアの知識があればより高速であったり容量が軽かったりする性能の高いソフトを書けるという理解で間違っていないでしょうか? 追加質問ばかりですみません。。。
お礼
回答ありがとうございました。大分イメージがつかめてきました。もうちょっと質問させてください。 >回路図ぐらいは読めるべきです。 回路図というのはAND、ORなどの素子が配置された論理回路のことなのでしょうか?それとも抵抗・コンデンサー・半導体などが配置された電気・電子回路のことでしょうか?論理回路と電気回路は大学で必修だったのでいいのですが、電子回路は選択しなかったので自信がないのですが。。。 >オシロスコープやロジックアナライザ等の計測機器が使える必要もあると思います。 ということは信号の波形をチェックするということと思いますが、どの程度詳しく波形をチェックするのでしょうか?例えば『A点に信号を流したとき、B点に信号が流れるように設計してある。A点に信号を実際に流してみてB点に信号が流れるかどうかチェックする。つまり扱う信号は0と1だけ。』程度のことなのでしょうか?それとも計測した信号をフーリエ変換とか、いろいろ変換して分析したりするのでしょうか?フーリエ変換とかの信号処理に関しては苦手で自信がないのですが。。。 あと、これはまた新たに湧いてきた疑問なのですが、組み込み系プログラマーが電子回路のレイアウトを逆に回路設計者に提案したりということはあるのでしょうか?というか回路の設計を兼任するということもあるのでしょうか? 重ね重ねの追加質問ですみません。。。