また、匿名の高校生さんからお題をもらったので答えていきます。
面白くて、わかりやすかったです。あと、いいホームページももらいました。ありがとうございます。確かに、自分が作った組込みソフトが組込 み機器に搭載され、お客さんに満足してもらえるならうれしいですね。将来の夢のために、もっと頑張らないと......学校の勉強でそれに最も関連のある 教科とか、最も使える知識とかはありますか。知りたいです!このやりとりで、ますます組込みソフトに興味を持つようになりました(笑)。普通の会話みたい に何の違和感もなく、すごく楽しいです。これからもお願いします。
さて、質問に答える前に組込みソフトの楽しさを全国の高校生に伝えようとしている二上貴夫さんから、君に向けて情報やアドバイスをもらったので伝えておきます。
まず、高校生向けの組込みソフト教育に関する状況について。マジカルスプーンは当初工業高校向けにカリキュラムを開発しており、その後、普通科の高校生向けの情報科学の教材としてのカリキュラムを開発していく予定とのこと。
都内の普通科の高校でデモンストレーションを行った結果、情報処理に強い興味を持った生徒がいて、彼らに対して特別カリキュラムを秋から実施するそうです。工業高校向けに少し専門的な組込みシステム開発の教育を飛行船を題材に実施することも企画中とのことです。(これ必ずしも自分の会社の仕事とは直接関係ない計画だからその情熱たるやすごいよね。こういう人たちが利益度外視でがんばっていることに感謝して、与えられた機会を有効に使って欲しいと思う。)
二上さんは、高校生の頃に社会人から情報を仕入れるのは良いことだと思うと言っています。また、君のように自分がやりたいことを外に向かって発信できる人は、よい組込み技術教育の教材を紹介すれば、かなりのところまで自分で学習できてしまうだろうと見ています。組込みの世界でアーキテクト(建築で言うところの設計士)として活躍しているエンジニアの生い立ちを紐解くとみなそのようなタイプだそうです。
また、前回紹介したETロボコンの他に
Hamana というロケット打ち上げの実験プロジェクトや、
MDDロボットチャレンジという取り組みも是非見て欲しいとのこと。
マジカルボックスのプログラミング教室というのをSESSAMEのメンバーでもある舘 伸幸さんが計画しているそうです。
ちなみに、自分が住んでいることろからイベント開催場所が離れている場合は、SESSAMEが費用を補助することも考えようと思っているので、資金のことで今一歩踏み出せないでいる高校生諸君は一度 SESSAMEの相談窓口 query@sessame.jp に「組込みソフトイベント参加の相談」という件名で相談メールを出してみて欲しい。
以下は二上さんの直接のメッセージ
私からのアドバイスとしては、7月、8月に出たCQ出版のボード付雑誌を買って(酒井注釈:CQ出版のInterface誌でたぶん7月号、8月号ではない。定価が高い号がボード付きの号。こちらから探すべし。)、自分で組み立ててこらん。わからなくなったら、著者に質問状を書こう。私から著者に取り次いであげるから。ただし、君が高校3年生で大学受験するつもりなら、ボードの組み立ては来春に私の実験室で一緒にやろう。(酒井注釈:東海大学 組込み技術研究科 組込み技術専攻 を受験して大学で一緒に勉強しようということだと思う)
【「(組込みソフトの仕事に就くには)学校の勉強でそれに最も関連のある教科とか、最も使える知識とかはありますか。知りたいです!」の質問へのアドバイス】
まず、アドバイスの前に伝えておきたいことがある。それは、「人から言われたことをそのまま鵜呑みにしちゃいけないよ」ということだ。これは「人を信じるな」「必ず疑ってかかれ」ということではない。人にはいろいろな考え方があって、僕が正しいと思ったことはもしかすると他の人はそうではないと考えているかもしれない。世の中にはいろいろな考え方があって答えがひとつではないことがたくさんあるということを認識して欲しい。
現に、組込みソフトってなに?の回答に対して、
stpete97 さんはもっと違う組込みソフトの世界もあると書いている。(
こちらの記事) 21世紀の組込みソフトの世界という意味ではセンサーやアクチュエータを使わないような世界もある。組込みソフトといっても何しろ幅が広いので「コレが組込みソフト」と一刀両断では答えられない。だから、ひとつのアドバイスを鵜呑みにしてはいけないし、最後はいろいろな意見や考え方を聞いた上で、自分が持っている価値観に照らし合わせて咀嚼することが必要だ。ただ、高校生という年代は自分の価値観を構築する時期でもあるので、いろいろなことに首を突っ込んで世の中の多くのことにアンテナを張り巡らせ感度を高めておくことがよいと思う。
次に、考えて欲しいのは自分の人生という長い年月のことだ。例えば、君が80歳まで生きるとしよう。そうするともし君が今17歳なら人生はまだ、全体の21%しか進んでいないことになる。この後大学に進んだとして、就職して仕事について定年を迎えるとすると、社会人として働く期間はだいたい38年間で一生の48%となる。だからこそ、人生の約半分を費やす社会人として期間どんな仕事をするのかを選択するのは非常に重要な選択だ。
ただ、よくよく考えてみて欲しいのは、それでもその38年間は人生の約半分に過ぎないということだ。社会人を卒業してからの人生も20年近くある。また、30歳くらいで結婚したとしたら人生の62.5%は新しい家族との生活があるということになる。
何が言いたいかというと、人生を80年と考えれば、17歳くらいの君が学んでいること、過ごしている時間で何に役立つかはそう簡単には言えないということだ。
そのことを前提にして、今人生の約半分くらいまで来ている自分が過去を振り返って、君が学んでいることが何に役に立つかについて自分の考えを書いてみたいと思う。(鵜呑みにしちゃいけないよ)
【英語】
実は中学、高校、大学と一番きらいな教科が英語だった。なぜかというと、自分は英単語を覚えるのが苦手だったからだ。必ずしも記憶力が悪いということではなく、今後の人生において役に立ちそうにないと思うとやる気がなくなって学習する意欲が低下し、結果として勉強が進まなかった。あまり我慢強い性格じゃなかったんだ。
その当時、自分は日本を出て海外で働くような夢はなかったし、そうしたいと思ったこともなかったし、英語が分からないことで得られない情報などないと思っていたから、英語は大人になっても使うことはないというちょっとした自信があった。
でも、社会人になってから以外に必要だということが分かってきたね。その当時、社会人の人たちに英語は使うから勉強しておいた方がいいよと言ってもらいたかった。だから君には英語は勉強しておいた方がいいよと言っておくよ。
何に使うのかというと、まず、海外で作られたハードウェア部品やソフトウェア部品のカタログや取扱説明書は英語で書かれていることが多く、日本語に翻訳されていない場合もあるから英文を読む必要がある。また、日本で作った商品を海外で売るためには、国際規格を理解しないといけないことがあるけれど、この国際規格はフランス語と英語で書いてある。
さらに、インターネット上の情報で特定の分野においては日本語のサイトよりも英語圏のサイトの方が圧倒的に多くの情報が存在するケースがある。例えば、ソフトウェアの構築方法について書かれたソフトウェアアーキテクチャ(Software Architecture)については、英語サイトの方が情報量が多い。だから、英語が分かっていると最新の情報をゲットできる可能性が高い。
もう一つ、場合によっては君は外国人と仕事をすることがあるかもしれない。グローバルな世界で部品や商品を売り買いしていると、自ずと海外の人たちとメールを交わしたり、打ち合わせしたり、出張したりする機会も出てくる。そのときに英語が話せるととても楽だ。
ということで学生時代、なかなか身につかなかった英語は、社会人になってからお金も使いつつ、ちょっとずつ勉強している。いまではどんなことに役立つのかイメージがわいているので、辛いながらも意欲は持ちながら勉強できているのでまあいいかと思うけど、学生時代に英語が自分の人生の中で役に立たないと決めつけてしまっていたことは間違いだったと素直に認めるね。
全然関係ないけど、英語の授業で今でも覚えているのは中学生のときの先生がテープレコーダを毎回持ってきて英語の歌を生徒に聞かせてみんなで歌えるようにしてくれたことだ。
もちろん、そんなことは学習指導要領には書いてないから先生のオリジナルの授業だった。そのとき歌った歌は次のようなもの。
「花はどこへ行った」(原題 Where have all the flowers gone?)
ザ・ブラザース・フォア が歌ったものを先生は聞かせてくれた。そのときは何のことを言っているのかまったく分かっていなかったし、先生もわざわざ解説しなかったけど、大人になってから知ったのはこの曲は世界で一番有名な反戦歌でフォークの不朽の名曲だったんだ。
「We shall overcome」 アメリカ公民権運動のテーマ・ソングのように歌われた歌で、アフリカからヨーロッパを回って奴隷としてアメリカへ連れてこられた人たちの、船上での労働歌のようなものだったという歌。その当時はそんな背景はまったく知らなかった。
「Country Road」 ジョン・デンバーの作詞作曲で、このときはオリビア・ニュートン・ジョンが歌っていた。最近では宮崎駿監督の耳を澄ませばで挿入歌として使われていたね。
中学生レベルでネイティブな英語の歌詞を歌えるようになるのは至難の業だったけれど、今でも覚えているんだからもっともインパクトのある授業だったと思う。
【国語】
ソフトウェアとはまったく関係がないように見えて実は大いに関係があるのは国語だと思う。プログラムもアセンブラというコンピュータが解釈するための言語で書いていたときはそうでもなかったけれど、C言語などの高級言語と呼ばれる、より自然言語(もちろん英語)に近い言語でプログラムが書かれるようになって、プログラミング=やりたいことを文章で書き表すに近くなってきた。
だから、極端に言えば分かりやすい文章を書く人は分かりやすいプログラムを書く傾向があるように思う。自分自身にしか分からないようなトリッキーなプログラムを書く天才プログラマーと呼ばれるエンジニアも中にはいるけれど、そういう人が書いたプログラムは多くの場合その人しかメインテナンスできないので、チームで仕事をしたり、同じ人がずっとその製品の担当になれない場合が増えてきた現在では、分かりやすいプログラムを書くことがもとめられている。
また、ソフトウェアは市場やユーザーの要求を図や文章で書き表し、それをもとにしてプログラムを書くことになるので、文章の読解力や作文の能力は高い方がよい。
先人の成功や失敗が体系化されたソフトウェア工学を勉強する際には書籍を読むことでそれらの知識を吸収することも多いから、長文読解能力は特に求められる。「こいつは何を言いたいんだ」ということができるだけ早く分かるようになることが重要なんだ。また、ソフトウェアでは他の人が書いたドキュメントをチェックするレビューという行為を頻繁に行うのだけれども、このときもいかに大量のドキュメントを斜め読みして、重要なポイントがどこかあたりを付ける能力が求められる。
【数学】
数学は言わずもがなソフトウェアの世界ではよく使う。ソフトウェアの世界では解を求めるときに総当たりで見つけ出すのが得意で、大きな数字同士の最大公約数を求めるような問題は自分でやるとうんざりするけれど、コンピュータは繰り返し演算させてもイヤだとはいわない。
そういう意味では個人が使っているようなパソコンの計算の仕方で美しくないなあと思うことはある。例えば、分数を使った演算は分数のままで表しておけば割り算をしないので誤差はゼロだが、一般的なコンピュータでは途中の計算でどんどん割り算を繰り返してしまうので誤差が生じてしまう。誤差を最小限に抑えるために浮動小数点演算を行うこともできるけど、誤差がゼロになるわけではない。そういう観点から分数演算は美しいと思うし、ソフトウェアの世界は最新の数学の世界に追いついていないところもまだまだあるように思う。
【物理】
組込み機器でセンサーやアクチュエータを使う可能性があるのなら物理学は必ず使う。自然界で起こる現象を物理法則で表して、その法則をもとにセンサーやアクチュエータを動かすことになるからだ。
【生物】
生物はどんな組込みソフトの分野に進むのかによってはとても重要な学問となる。あんまり詳しくはいえないけど、自分の仕事では生物学はとても重要だし、生物学が一番好きだったから今の仕事を選んだとも言える。なぜ、生物が好きだったかというと、それは自分自身の体の中で起こっていることが説明されていたからだ。そこには内なる宇宙が広がっていて、信じられないような精巧なメカニズムで生命を維持する活動が行われている。植物は地球上で光合成により最も効率よく光のエネルギーを化学エネルギーに変換し、二酸化炭素から酸素を作りだし、夜は夜で呼吸によりエネルギーを作れる。
その頃は勉強しなければいけないからではなくて、おもしろいから教科書や参考書を何度も読み直したし、25年以上たっても DNAの情報からミトコンドリアがタンパク質を作り出すしくみなんかは覚えている。
【地理・歴史】
地理や歴史もソフトウェア開発には役に立たないと思うだろう。確かに、ソフトウェアエンジニアには必須の教科ではないかもしれない。でも、最初に書いた人生80年のことを思い出して欲しい。
人生80年の中で、必ずしも仕事の関係だけではなく日本国内のいろいろな地域の人、または海外の人と交流することはある。そのときに大事なのは、その人の地域のことについてある程度知っていることと、さらに大事なのは自分の地域や日本のことについて説明できるということだ。
海外の若者は自分の国のことを説明することがうまいのに、日本人は日本のことをうまく説明できないと聞く。そういう場面に慣れていないのかもしれないが、日本人として誇りのようなものを持つことがピンとこない、そんなことをしなくても普通に暮らしていけるからだろう。でも、今後商品作りは間違いなく世界が市場になる。大田区の町工場でロケットの先端部分が作られていることからも分かるように、世界のどこの人々から部品を入手し、どの国の人々へ商品を届けることになるのかはわからない。
ソフトウェアエンジニアはそんなことを知らなくてもいいかと言えば、知っていていろいろな国のいろいろな業種の人々とコミュニケート出来るようになっていた方が当然のことながら自分の器が大きくなる。
海外のエンジニアと親交を深めることで飛躍的にスキルがアップすることもあるだろう。
【問題解決能力】
学校の授業で教えるようなものではなく、社会人になると必要になる能力、それが問題解決能力だ。簡単に言うと、学園祭でバンドをやりたい、メンバーを募ってライブを盛り上げたいと思い、幾多の障害を乗り越えながら成功させるといった経験を積むことでこの能力は高まっていく。
何か作りたいものがあって、いろいろな情報源や道具を使いながら自分の力だけで完成させるというのも問題解決能力を高めることにつながる。
与えられた問題をひたすら解いていい点数を取ることでは、決して身につかない。くわしくは
こちらの記事を読んでもらいたい。
【放課後】
さて、組込みソフトエンジニアとしての道を進みたいと考えた場合、大きな分岐点があると思う。それはプログラミングすること=ソフトウェアを作ることが好きなのか、それとも何か特定の分野のことが好きで、その分野の中でソフトウェアエンジニアになりたいのかという選択肢だ。
前者の仕事をする一つの例としてサプライヤーと呼ばれるソフトウェアの受託開発会社がある。ソフトウェアの開発を請け負って、ソフトウェアをクライアントとなる商品開発メーカーなどに納めるような場合。また、技術者の派遣会社に入って、ソフトウェア技術者としていろいろな会社に派遣される仕事に就くこともある。
非常に規模の大きい会社でどんな分野の商品を作ることになるか分からないけれど、例えばソフトウェアエンジニアとしてのスペシャリティを活かして商品作りに関わる人もいる。
一方で、車好きな人、鉄道が好きな人、宇宙ロケットが好きな人、音楽が好きな人がそれらの分野の会社に入って、その分野の商品を作り上げる過程において組込みソフトエンジニアとして働くということもある。
自分はSESSAMEのメンバーでTEACの國方さんという人を知っているが、TEACは自分の中では音響機器(特に録音機器)の会社で、國方さんは音楽が好きな組込みソフトエンジニアだ。SESSAMEではバンドを組んだり、技術者の教育教材を作るためのセミナーで講演者の音声を自分が開発した機材を使って録音したり、後で聞きやすいように編集したりしている。
ようするにある分野に強い興味があって、その分野において組込みソフトエンジニアとして働きたいのなら、当然のことながらその分野のことは徹底的に詳しくないとよい製品を作ることはできない。
音楽機材を作る仕事がしたいのなら音楽のことを知らないといけないし、自動車作るのなら自動車のしくみ、鉄道の仕事するのなら鉄道の知識といった具合だ。
これは、どっちかというと勉強しなければいけないことではなくて、今君が何に興味を持っていて人から言われなくても調べてみたい、知りたいと思うことは何かということだ。
ちなみに、現時点で興味があるのはソフトウェアや組込みソフトウェアであり、後から関心の強い分野が出てくる、もしくは、その仕事に就いた後からその分野が好きになるということもあるので、今すぐに何が好きか決めろということではない。
だから、教科別の最後のアドバイスはあまり範囲を狭めるのは得策ではなく、若いうちは興味があると思ったら飽きるまで徹底的に突っ込んで満足いくところまでやってみるという経験を重ねておくことが大事だということを言いたい。
そうなると、学校の授業も大事だし、それ以上に放課後に何をするのかということも大事になる。SESSAMEのメンバーが仕事を持ちながら、プライベートな時間に活動しているのと似たような話で、一見関係ないような活動でも、実はそれぞれが相乗効果になっていることも少なくない。
全部精一杯頑張れというような内容になってしまったけれど、まあ、いろいろチャレンジしてみることだね。組込みはやってみないことには楽しさはわからない、これは間違いないと思うよ。今の時期は「クリエイティブで楽しい」「クリエイティブでおもしろい」という経験をたくさん積み重ねることがもっとも大事だと思う。小さい楽しい、おもしろいを経験すると、より大きな楽しい、おもしろいを経験したくなる。そうなると技術的な壁が現れるけれど、最初に楽しい、おもしろいという体験を持っていると、一時期辛くてもその壁を意欲をもって乗り越えることができるんだ。
そのことを学生のうちに経験しておけば、その経験は間違いなく社会人になったときに役に立つことは保証します。
すみません、初めてのコメントです。実は私、高校生なんですが、組込みソフトに興味を持っています。今、私たちの生活の中で(身近なところ)よく使われている組込みソフトってなんですか。答えてくれるならすごくうれしいです。お願いします。
組込みソフトウェア工房の管理人です。
たぶん一度では答えられないので何度かやりとりしましょう。
「組込みソフトとは何か?」これに答えるにあたって一番の大事なのは高校生の君がなぜそれを知りたいと思ったのか・・・これが問題です。
1. 学校の授業で「組込みソフト」の話がでてきたから
2. 何かおもしろそうな感じがするのでどんなものか知りたいから
3. 進路について組込みソフトの仕事につくことも考えているから
4. 親が組込みソフトの仕事をしているのだけれど教えてくれないから
5. その他の理由
この中のどれ? 例えば、1とか2なら組込みソフトでワクワクするイベントや教材を紹介するし、3や4ならどんなところが楽しいのか、どんなところが大変なのかを中心に答えを考えます。
こんな日記風の説明もありますが、もう少し情報をください。
ありがとうございます。わかりやすかったところもありますし、少しわかりにくいところもありました。私は元々ソフトウェアに興味を持っていて、将来 ソフトウェアに関する仕事につきたいと考えています。その中でも、特に組込みソフトに強い関心を持っています。ってことは、2. 3.ですね(笑)。ぜひ、組込みソフトについていろんな話を聞かせてください。