2008-06-29

エレキの分かる組込みソフトエンジニアの育て方

今回は、まっさらな新人が入ってきて組込みソフトエンジニアとして育てたいとき、どんな学習方法を取り入れるとよいかという提案をしてみたい。

ちなみに、ここで紹介する方法はたぶんデジタル系の電気系技術者の教育にも使えると思う。

【前提条件】

・複数人の新人を教育する場合に有効。(できれば4人以上がよい。チームを2つ以上作れるので)
・3ヶ月以上は現場から隔離できることが望ましい。(集中して課題に取り組んでもらいたいから)
・プログラミングの経験は必要なし。・電気回路設計の経験も必要なし。
・Word や Excel や PowerPoint 、インターネットブラウザでの検索等は使えること。

【教材】

1. CPUの創りかた











2. 電子回路シミュレータ TINA7(日本語・Book版)で見てわかる デジタル回路の「しくみ」と「基本」










3. 電子回路シミュレータ TINA7(日本語・Book版2)で見てわかる 電子回路の「しくみ」と「基本」

※純粋にソフトウェアしかやらないのなら3は省いてもよい。








【ねらい】

CPUの創りかた」は秋葉原で買えるロジックデバイスを組み合わせて CPU を自分で作ってしまおうという本だ。イラストはちょっと怪しいが中身はいたってまじめであり非常にていねいに解説してあるので、本に書いてあるように進めていけばシンプルなCPUを自作することができる。

何をするにもはじめに原点を追求しておくのはよいことだ。CPUをディスクリートで自作し、実際にプログラムコードの読み出しやアキュームレータの動きをテスターやオシロスコープを使いながら確かめることは、組込みソフトウェアエンジニアにとっても、デジタル回路設計技術者にとっても貴重な経験となるはずだ。

次に、電子回路シミュレータ TINA7 は実機がなくても、回路を書いてその動きをシミュレーションすることができる。回路に電源を供給して回路上の不特定の端子ポイントをバーチャルオシロスコープで観察することもできる。東京電機大学高等学校教諭の小峯龍男先生は、このTINA7を使った学習本の中で、「ひとつだけ残念に思うことは、TINAでは回路の組み立てに失敗しても、コンデンサをパンクさせたり、抵抗器の被覆焼け焦げたり、ICのパッケージが火傷するほど熱くなるという経験をできないことです。」と書いているが、『CPUの創りかた』で実際にCPUを作ってしまうことで、その欠点を補おうというのが今回の作戦となる。

電子回路シミュレータ TINA7(日本語・Book版)には、機能限定で TINA7のCDがついているので安価に学習ができる。

3つの本を使って、各チームにそれぞれCPUボードを作るという目標を達成させる。(Project Based Learning)

教育とマネージメントする側はPCの用意などインフラの整備、最低限のルールの規定、ポイントポイントで進捗をチェックする以外は基本的にチームに運営を任せる。

スケジューリング、材料リストの作成、道具の購入、予算管理、材料収集、回路シミュレーション、一次試作、製品制作をすべてチームに任せることで、製品開発工程のミニチュア版を体験させる。(本番と比べると商品企画と自分たちで考える回路設計だけが欠けている)

【学習方法】

まず、新人を複数のチームに分けて、各チームのリーダを決めておく。いい加減に決めるのではなく、できるだけ人物をよく観察して適性がありそうな者を指名しておく。

次に、PCやインターネットなどのインフラを使えるようにして、プロジェクトの主旨を説明し、まずは『デジタル回路の「しくみ」と「基本」』を頭から読んで、回路シミュレーションをやらせてみる。

しばらくしたら、CPUを作るための簡単な工程の説明をして、スケジューリングをさせる。(スケジューリングするためのツールとしては、GanttProject などのフリーツールを指定してもよい)

毎週一回週末に各チームの代表1人に10分間で、その週に学んだこと次週の予定などをプレゼンさせる。(週報プレゼン) また、月末には30分のプレゼンをさせる。(月報プレゼン)

【CPU制作プロジェクト】

CPU制作は、『CPUの創りかた』に書いてあるとおりにやれば出来るはずだが以下の点を考慮するとよい。

【材料収集と予算管理】
  • 必要な材料と道具のリストを作らせ、大まかな価格をインターネットで調べさせる。
  • 部品の購入方法について検討させる。(首都圏なら秋葉原で購入する)
  • 部品は一台ぶんではなく、一次試作ぶんと製品ぶんの2セット以上を購入させる。
  • 予想価格と実際に購入した価格の差を明確にさせる。
この後の工程の注意については、また今度本ブログで紹介したいと思う。
 
【この学習方法の良いところ】
  • 管理者サイドの工数がほとんどかからない。
  • チームが複数あるとそれぞれの様子を見て、良い点を取り入れようとする。
  • 週報プレゼン、月報プレゼンをさせることで学習の進度や進捗が分かる。
  • 製品の開発工程を体験させることができるので、現場に出たとき何かと役に立つ。
  • CPUの動きの原点を学習できる。
  • 早い段階で回路デバッグを経験させることができる。
  • 一発では完成度の高い製品レベルの制作は難しいことが分かる。
  • 教材費が安い(本3冊で1万円以内。CPU制作費はたぶん数万円)
  • 新人は最初とてもまじめなので黙々と学習に取り組み学習効率がよい。
  • まだ現場の仕事をしていないため割り込みの仕事がほとんどなく集中できる。
とてもよい教材本を作成してくれた『CPUの創りかた』の著者 渡波 郁氏と『電子回路シミュレータ TINA7(日本語・Book版)で見てわかる デジタル回路の「しくみ」と「基本」』『電子回路シミュレータ TINA7(日本語・Book版2)で見てわかる 電子回路の「しくみ」と「基本」』の著者 小峯 龍男先生に感謝したい。

ぜひ、お試しあれ。
 

2008-06-19

安全ソフトウェアの設計

組込みZine に 安全ソフトウェアの設計~第三回 安全アーキテクチャの可視化~ を書きましたのでご参照ください。

【安全ソフトウェアの設計の記事の裏話】

この記事の中で紹介しているエレベータの安全ソフトウェアの話は、 第6回クリティカルソフトウェアワークショップ』で始めて紹介した話で、このときソフトウェアの安全研究のオーソリティであるMITのナンシー・レブソン教授から、「ソフトウェアシステムに独立した安全装置を付けるという方法は誰でも考えつくやり方であり稚拙な方策だ。」とばっさり切られた。

そのとき、昔々の蛇腹とびらのエレベータではとびらをきちんと閉めないと電源が流れないシンプルなインターロック構造で安全を確保しているという例が紹介された。

ナンシー・レブソン教授が言いたかったのは、安全アーキテクチャを明確化すること、ソフトウェアにこだわるのではなく、システム全体でどう安全を確保するのか、いかにシンプルなアーキテクチャで安全を実現するのかを技術者は知恵を結集して考える必要があるということだ。

エレベータの安全機能をモデリングで可視化する話は、それに通じているので決して背反しないと思うが、口が悪いことで知られているナンシー・レブソン教授は、「ソフトウェアシステムの複雑性が生み出す危険性に目を背けて、安易な方法で安全を確保しようとすると痛い目にあうよ」と言いたかったのだと思う。

数々のソフトウェアが絡んだ事故を根気強く調査した人だからこそ言える教訓だと感じる。そう思ったので、この記事ではナンシー・レブソン教授のサジェスチョンをできるだけ反映させたつもりである。
 

2008-06-08

カイゼンの範囲

日経ものづくりのセミナーで『トヨタ流モノづくりの人づくりの心 伝承塾~中堅社員コース~』というのが載っていた。(申込み受付は終了したとのこと)

講師はトヨタ自動車TQM推進部課長の方で、社員のやる気向上を基本に人財育成、国内企業の繁栄の為の社会貢献活動を行い「トヨタ流:モノづくりと,人づくり 心の伝承塾」を設立し,社内外を問わず精力的に講演活動を実施しているのだそうだ。

トヨタが惜しげもなく自組織での事例を外部に紹介するのは、このようなセミナーを通じてまったく違う業種、業務の人たちが行っている活動からトヨタ自体が得るものも大きいかららしい。

この話はソフトウェアエンジニアが組織の外で直接的な企業活動とは別にコミュニティ活動やIPA SEC(ソフトウェアエンジニアリングセンター)の活動などをすることにも通じる。

組織の外に出て、自分たちとは違う環境の人たちの活動や考え方、成功体験、失敗体験を聞くのは技術者個人の刺激にもなるし、いずれは自組織の改善にも役立つと思う。

でも、組織への貢献の度合いを数字で表すのは難しいので、組織の外で何らかの知見を得たことがない上司しかいないと、部下がそのようなコミュニティ活動したいといっても許可してもらえない場合がある。

組織の外には役に立つ情報があふれている(役に立たない情報もあふれているが・・・)のに、それらを利用せずに自分たちだけで解決方法を見つけようとするのはとてももったいない、非効率的だと思う。

さて、トヨタのセミナーの話に戻ろう。以下、セミナーの目次の一部だ

トヨタ流モノづくりの人づくりの心 伝承塾~中堅社員コース~ 目次より引用】

2.【「お客様第一」の本質とは何か,その大切な心について】
【A】企業や社員が戦う相手は何か?
【B】お客様の心に感動につながる仕事をしてこそ,成果が認められる
【C】商品の品質不良と,そのトラブル対応の重要性について

<トヨタの事例紹介>
(1)「1本の電話応対で3億円の仕事を失った話」
(2)「嫌われ,つまはじきにされた一人の社員が会社をナンバー1にさせた」
<一般事例紹介>
(1)「デパートに夢を買いに来たお客様への心ない店員の対応」
(2)「風呂場の掃除作業員が,日本一のゴルフ場にさせた話」
(3)「お客様の心に感動と言う商品を提供した店員の話」
(4)「レストランの店員のルールを破ったまごころの対応」


5.【仕事の業績を上げる職場改善の基本】
【A】問題解決に重要な「現地現物」の行動
【B】改善の基本は徹底した「なぜなぜ」の追求
【C】現場改善のネタを見つける方法
【D】職場にある7つのムダ
【E】「4S」の心と必要性について
【F】生産品質の管理と改善について
【G】新技術創造の環境づくりと発想のコツ
【引用終わり】

セミナーの目次を見ただけでも、ためになりそうな話が満載のようだ。でも、残念ながらこのセミナーに参加する予定はない。

さて、今回の記事で言いたいことは改善の範囲のことだ。あまり深い掘り下げはない。

何が言いたいかというと、改善を実施し顧客満足を高めることを考えるときは、メーカーだけでなくサプライヤーも含めて考えて欲しいということだ。

自分は現在メーカーに所属しているが、ソフトウェアを発注している会社を「外注」とは言わず「協力会社」と言うようにしている。「外注」ということばには何か見下したような響きを感じるからだ。

自分は協力会社のソフトウェア技術者の中に非常に優秀な人が何人もいるのを知っているし、彼らと仕事をすることでこれまで何回も助けられたし、何年も一緒に仕事をしていると仲間意識も強くなった。

サプライヤーはその名の通り供給者という意味で、ソフトウェアを請負契約で発注して、ソフトウェア(部品)の供給を受けるのでサプライヤーと呼ぶ。

大きな組織になると、メーカーは納期短縮のツケを結果的にサプライヤーに押しつけることになることがあると思う。発注者と受注者の関係があるためどうしても受注者の方が立場が弱くなる。

しかし、メーカーはサプライヤーの協力なしに顧客満足の向上を達成することはできない。メーカーのエンジニアだけが顧客満足の達成を実感し、サプライヤーは黙々と仕事してその対価としてサラリーをもらうという構図は何とかなくせないのだろうか。

そしないと、このブログで再三主張しているように、組込みソフトエンジニアのモチベーションの源泉を、実際に組込み機器を使ってくれる顧客の満足に重ねることができるのはメーカーの技術者だけで、サプライヤーの技術者には関係のないことになってしまう。

現場で製品作りをしてきた者にとって、メーカーの技術者とサプライヤーの技術者にそれほど大きな違いはないとずっと感じていた。むしろサプライヤーの技術者にも、その製品がどのようにユーザーに使われるのかをよく知ってもらった方が、よりよい製品、顧客満足の高いソフトウェアを作り上げることができると思っている。

だから、自動車でも携帯電話でもなんでもいいが、メーカーはサプライヤーのエンジニアを仲間であるという意識を持って、ソフトウェア開発に関するカイゼンの範囲に含めて考えるべきだと、『トヨタ流モノづくりの人づくりの心 伝承塾~中堅社員コース~』の内容を見たときにふと思った次第である。
 

2008-06-01

組込みソフトウェア開発における安全文化

5月27日のIPAX2008で「組込みソフトウェア開発における安全文化」というテーマのパネルディスカッションを聞いてきた。

パネルディスカッション
「組込みソフトウェア開発における安全文化」
コーディネータ:
  浅見 直樹 (日経BP社 執行役員 日経エレクトロニクス発行人)
パネリスト:
  永島 晃 (横河電機 エグゼクティブ フェロー)
  上田 政博 (アイシン・コムクルーズ 代表取締役社長)
  吉岡 律夫 (日本システム安全研究所 所長)
  山本 修一郎 (NTTデータ 技術開発本部 システム科学研究所 フェロー)

このパネルディスカッションで使われた資料は公開されていないので断片的ではあるが書き取ったメモをたよりにパネルディスカッションででてきたいくつかのキーワードを紹介したいと思う。

【安全を実現するには3Eが必要】

3Eとは、次の3つ。
  1. Experience(経験)
  2. Education(教育)
  3. Enthusiasm(熱中、熱意、情熱、こだわり)
経験と教育は当然だが、安全の実現に Enthusiasm(直訳だと熱中、熱意、情熱だが、ここではこだわりという意味だろうとのこと)が必要だというのは「確かにその通りだ」と思った。

経験や教育を受けてもなんだかんだいって、面倒くさいとか、期限・納期の圧力などでくじけそうになったときに最後の支えとなるのが「安全へのこだわり」だ。

【発注者、開発者、運用者、利用者間の価値観の違いが不具合や欠陥を生む】

完璧な仕様を作成すれば価値観の違いなど関係ない、不具合や欠陥を限りなくゼロにすることができるという考え方が形式手法なんではないかと思うが、実際にはそうは簡単にはいかない。

今、SESSAMEで初級ソフトウェア技術者に同じ仕様でC言語の関数を作らせるといかにバラバラで危なっかしいプログラムができるのかを実験する教育コンテンツを作っている。実際、やってみると同じ仕様なのにプログラムの中身は千差万別、用意したテストケースはちゃんと通るが、変数を初期化していないとか、関数の出口が一つでないといった、設計の規範が浸透していない実例がごろごろ出てくる。

要するに仕様を完全にすることは難しいし、完全だと思っても、発注者、開発者、運用者、利用者の間で伝言ゲームをしていると勘違いや思いこみが発生する。それらの勘違いや思いこみを大きな不具合、欠陥に発展させないためには、あらかじめ関係者全体で価値観を一致させる必要があるのだ。

また、発注者、開発者、運用者、利用者はそれぞれの領域に責任と権限で線を引くのではなく、責任をオーバーラップさせてオーバーラップした部分をマネージメントすることが大事だという話もあった。

【技術者は嘘を言わない、問題点を隠さない、予見できる問題点を無視しない】

安全文化を考えるときにこの3点は絶対に忘れてはいけない。3EのEnthusiasm(こだわり)にも通じるが、納期のプレッシャーに負けて、嘘を言ったり、問題点を隠したり、予見出来る問題を「見なかったことにする」ようなことがあってはいけない。(『組込みソフト開発悪循環の構図』も参照されたし)

これらが蔓延してきた組織は安全文化の確立に逆行しているので特に注意が必要だ。

【ソフト技術者は方法論に興味があり、市場や商品には興味がない】

ソフト技術者はソフトウェア開発の方法論には興味があり、次の開発では前回よりもよりよい方法をトライしようと考えるが、商品がどのように使われるのか、どのような機能や性能が市場から求められているのかには興味がないという話だ。

組込みソフトの世界ではたぶんその傾向は少ないと思うが、価値観の共有にも通じるので安全文化の確立のためには市場や商品にも興味を持ってもらわないと困る。

【組込み製品に求められる品質の多様化と安全確保は背反することがあるか?】

これはパネルディスカッションの最後の方でコーディネータの浅見さんがパネリストに質問していたことだ。各人の解答は忘れてしまったが自分ならこう答える。

組込み製品に求められる機能や性能はインテリジェンスが増してきており、単機能では実現するこが難しくなっている。しかし、安全の確保は潜在的な価値を高める重要な要素であり、難しくても商品価値を高めるために必要だ。ユーザーは潜在的価値の低い商品にはその価値に見合った対価は払わない。品質の定義が顧客満足を満たすことであるならば、潜在的な価値を高めること、すなわち安全確保は品質の向上の一部であるから背反しない。

実際、車を買うときにエンジン性能やインテリア、エクステリアをまっさきに考えるけれども、サイドエアバッグ付きかどうか、ABSはついているかなどの安全機能を付けるかつけないかは単なる付け足しの悩みではなく真剣な選択だ。

パネルディスカッションのメモを見直してみると、総じて、やっぱり組込みソフトで安全を確保するには、その商品開発に関わるソフトウェアエンジニア全体で価値観の違いを埋める努力をしないといけないということなのだと思った。