大学同士のレベルなんて大差ない。新卒採用時の個人スキルなんて、特別な人は除いて差があるわけではない。そこから何をしていくのかが大切なわけであって、何をしていくか次第でどんなものにもなれる。どんなことでも、3年やれば結構いいところまで行く。10年やり続けると、その道のプロフェッショナルと呼ばれる。最初に何をするのかは関係なく、やったのかやらないのかが大切になる。これを実践する最初の場が研究室選び。研究室選びについてどの研究室も卒業しにくいし、卒業しやすい。しにくいといわれるのは配属されるも、卒業のための単位が足りないバイトメインになって研究室に来なくなる先生と相性が悪くなる(レアケース)などの理由が挙げられる。普通にやっていれば卒業できる。研究室に関するうわさ話はほとんどがデマだという。時間に関しては基本的に仕事と同じ9時-17時で研究。アピールしている以外のところに面白さがあることも。見てみないと行っている研究の興味深さに気づかない。研究室配属の一番大切ことは、この選択が人生初の主体的にする選択だということだ。これまでは、なんとなくだったり、「普通行くよね」みたいな感じで、高校から大学へと進学してきた。本気で、「待てよ...。中卒で仕事始めたほうが自分にとっていいかもしれない」なんて考えたことはないだろう。この初めての選択をしっかりしておくと、この後の選択も同じようにしっかりと行うことができる。ここで適当にやってしまうと、これから一生そんな感じになってしまう。ソフトウェアの種類について組込みシステム前回にも出てきたが、今回は車を例にしてみる。車の中にはコンピュータ(ICU)が60個くらい、高いやつだと200個くらいある。このコンピュータは一つのネットワークを形成しているわけではなく、その特徴に合わせて複数のネットワークを形成している。文字化けを起こさないCanというネットワークは制御信号に使われており、高速で大容量のネットワークであるFlexRayは映像メディアの信号送信に用いられている。問題なのは、もうコンピュータを入れる場所が車の中にないということ。ワイヤの重量もかなりネック。面白い特徴として、ハードウェアとのバランスが必要になってくる点がある。スマホを例にすると、CPUの速度・バッテリーの大きさ・発熱などのバランスを最適化しなければならない。これまで説明した種類のソフトウェアにはなかったものだ。信頼性がとても重要になる。リコールされたら元も子もない。OTAを用いて無線でアップデートデータの同期を行っていたりする。テレビや車のシステムアップデートは無線で、自分たちが知らないうちに行われている。これにより信頼性を高めているといえる。クラウドシステム今や、これなしではローカルファイルのやり取りがめんどくさいと思ってしまうほどに普及しているクラウドシステム。この大元は単一のレポジトリで動いている。常にテストコードが走っているという。ここで出てくるのがスケールアウトという考え方、手法。この説明をする前に、従来のスケールアップという考え方の説明をする。「規模を大きくする」や「壊れたところを修繕する」といったとき、自分の手でOSをインストールして、配線目見直して、一回全部の電源を落として...などと手間暇がかかりすぎてしまう。利益はリニアに上がっていくのに対して、負担は指数関数的に上がっていく。利益と負担のグラフが重なるところが、規模拡大の上限になる。この考え方をスケールアップという。スケールアウトでは、周りのコンピュータが新しく入ってきたコンピュータにOSのインストールやデータ補完を自動的に行う。これにより、人の手をほとんど借りなくても、規模拡大ができるようになった。これは、利益と負担がともにリニアに上がっていくことをあらわしている。従って、規模を拡大すればするほど、利益も上がっていくという夢のような状態になる。これをスケールアウトという。お客さんにたくさん使ってもらって、たくさん変更・改善していくというスタンスも従来の手法とは異なるところ。これまでは、試験運用を重ねて、実用環境でも大丈夫と判断できた時点でリリースされていた。このシステムはβサービス(CIともいう)と自動リリースを使って実現できている。day」なんてことができるのも、このおかげといっても過言ではない。ここでいろいろと用語が出てきたので、用語の追加も兼ねておさらいしておきましょう。βサービス:リリース前のサービスをテスターに使用してもらうこと。CI:継続的インテグレーションの略。リリース前のチェックの自動化をしてくれるJenkinsが有名。DevOps:開発担当者と運用担当者が連携を取り、スムーズにリリースまでもっていこうとするソフトウェア開発手法の一つ。これにはTDD(テスト駆動開発)が必要不可欠。TDD:とりあえず、プログラムの枠組みを作って、そこから洗練していく作業を重ねていく開発スタイル。テストして、駆動するか確認して、洗練していく。知っておくことここまでで、ソフトウェアの種類についての説明は終わり。ソフトウェア工学で扱うものにはこれだけ種類があるということをわかっていないといけない。時空を超越できる劣化しないし、変更できる目に見えない・進捗が見えない上の3つはハードウェアの性質と全く異なる。目に見えないので、目に見えないものを見る能力が必要になってくる。ちなみに、これが最初の課題のテーマだったりする。目に見えないものをより多く見た人は加算されるらしいです。80:80の法則というのもありました。コードが書けて50%終了。デバッグにコードを書く時間と同じくらいに時間がかかってしまう。Uber(ウーバー)について海外では移動手段を確保するのが大変。そこで、スマホで目的地を設定したら、現地の空いているドライバーがそこまで連れて行ってくれるというサービス「Uber」というものがあるらしい。日本に上陸したらタクシー業界が終わるので、日本人のほとんどはこのサービスについて知らないらしいです。ソフトウェアに大切なものプログラム設計図:プログラムだけではなく、データや設定などの設計も必要。プログラムはもちろん大切なのだが、それ以前に設計図が超重要になってくる。データの使用はプログラムに直接かかわってくるからだ。「アルゴリズムはデータ構造に従う」。いいプログラマとはお客さんの、その先まで想像できる。そのときそのときのコストを見ることができるQCDについてQuality(品質)・Cost(コスト)・Delivery(納期)の頭文字をとったもの。現場ではDQCの順番で重視される(納期最優先)。見えないものを見る目とも書いたが、虫の目(細部を見る)、鳥の目(俯瞰して見る)も必要になってくる。様々な視点で、新しい可能性を見つけるのが大切だろう。付けたし次回はVモデル課題1をするための知識がメインテーマだそうです。Vモデルは期末試験にも出るそうなので、必須ですね...。»Searchマエカワ思い立ったら更新。忘れちゃダメなことをその日のうちに。Maekawa_studyはてなブログをはじめよう!maekawa_yoshimiki_1119さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。