ObjectSquare [2001 年 5 月号]

[OOエンジニアの輪!]


OOエンジニアの輪!

〜 第9回 福富三雄さんの巻 〜

今回のゲストは、株式会社 豆蔵の福富三雄さんです。 現在、組み込み系のコンサルタントとして活躍されており、実務を通して得た豊富な経験を話してくださいました。 また、オブジェクト指向技術を組み込み系のプロジェクトに適用し、全社展開までこぎつけた経験や趣味の話など肩のこらない様々な話題について語っていただきました。


尊敬する人 マハトマ・ガンジー(非暴力主義の提唱者でインド建国の父)
好きな言葉 「こちらが生きてきた社会の知識や論理を全部持っていって目的を遂げるのではなく、現地にできるだけ身を寄せて最大限向こうの生活の利点を取り入れて自分の目的を成し遂げる。」植村直巳(冒険家)

はじめに

--- 本日はよろしくお願いします。

よろしくお願いします。

--- では、最初に福富さんの簡単な略歴などをお願いします。

学生時代に初めてFortranとBasicを学びました。しかし、専攻は無機化学でセラミックスの材料研究を行っていたので、材料メーカーに就職しました。

--- どれくらい、いらっしゃったんですか?

そこに確か8年程いました。

--- 長いですね。

ええ。ずっと無機材料の研究をやってました。 そこで、材料のシミュレーションをする関係からソフトウェアもいくらかやってたんです。 それでソフトウェアの方が面白くなって、10年前に転職をしました。
その会社では、もともとはエキスパートシステムやオブジェクト指向をやっていて、 本当はそういうのやりたかったんです。
前の研究所では、半導体用シリコンウェアの引き上げを行っていて、 それを、エキスパートシステムに適用すれば面白そうだと思ったのですが、 入ったら組み込みの方に配属されてしまいました(笑)。

--- 入ってすぐにですか?

そうです。入ってずっとOA機器の組み込みをやってきました。

--- じゃ、そのときからエンベディッドに?

もう、そのときから専門です。


オブジェクト指向をはじめたきっかけ

--- オブジェクト指向をやりはじめたきっかけっていうのはなんですか?

以前の材料メーカーは工学的に製品を開発製造していましたが、 ソフトウェア開発は職人さんによる手工業開発の印象を受けました。 そこで、工学的なアプローチができないかと思っていました。

--- 前は、割ときっちりしたんですか?

はい、材料の製造は工程管理されていて工学的に行われていました。

--- それでソフトウェア業界に来て、混沌としていると思われたんですね。

そうそう(笑)。なんでこんなに人に依存しててドキュメントも無いところなんだって思いました。 ドキュメントが不十分な中で開発をしているんだろうって。

--- その会社に入られたときって、オブジェクト指向全盛期だったんですか?

そうですね。

--- じゃ羽生田さん、中谷さん、金沢さんなどがいらっしゃんたんですか?

いました。中谷さんは中途採用で同期なんですよ。それに春木さん、藤野さん、(佐藤)啓太さん。
しかし、部門が違っていたので全く交流がありませんでした。組み込みチームは厚木拠点だったのです。

--- そうなんですか。

残念ながらオブジェクト指向で開発をしていた方々とは、ほとんど交流が無かったのですが、会社が社外向けにオブジェクト指向の講演会を実施していて、ランボーさん、ヨードンさん等を招待してた時期があったのです。
最初に聞いていた時は組み込みと別世界な話で、こんなの実現できないだろうなぁって思ってました。

--- OMTでも、実時間システムは対象外って書いてありますもんね(笑)。

そうです。そして、その後で啓太さんとたまたま社内で会ったのです。
私のほうが「組み込みのオブジェクト指向をやりたいんだけど」という話をしたら、 啓太さんが「じゃあ、いっしょにやりましょう」っていう話になりました。 オブジェクト指向をはじめたのは、その時からです。

それから一緒に、C言語で開発された既存システムをOMTでモデリングをしC++に書き換えました。そのプログラムをROM化して、実機評価しました。
組み込みで一番懸念していたリアルタイム性の確保およびROM/RAM容量は非機能要求仕様に近い結果が得れました。

--- それは、いつぐらいですか?

組み込みソフトウェアの開発を行ってから2年程たった頃で、約11年前です。

--- 最初取り組んだときに期待したところはなんですか?

仕様変更容易性と再利用性です。組み込み系ソフトウェアは仕様変更が多く、また製品群による再利用ができると期待したからです。 今、言われてる”プロダクトライン”ですね。

--- 一番大きいのは、やっぱり再利用性ですか?

そうです。謳い文句なので、やってみないと解らないですから

--- それまでの手法だと、うまくいかないというのはありましたか?

それはないです。個人には依存しますが構造化でも上手く出来ている部分があります。

--- できますよね。

問題ないと思います。
できる人は構造化でもオブジェクト指向のように設計・実装していますよね。
データを隠蔽したり、変更箇所を局所化するといったあたりで。

--- それでも、オブジェクトにいった理由というのは?

やはり、謳い文句にやられたかもしれません。
しかし、最初はそう思ってたんですが、結局一番のメリットはビジュアル・モデリングだと思います。

目に見えて解るというのは、一番大きいと思うんです。
特にプロジェクトリーダーやコンサルティングとか、そういう立場になってくるとすべてを見れるわけじゃないですから。 昔みたいにソースコードで見て云々なんて絶対無理です。 それに比べてビジュアル・モデリングではクラス図をパッと見れば、良し悪しが大体解るじゃないですか。
レビューで容易に品質が見れるところが一番効果的なのです。
再利用性云々というより品質が上げられやすいっていうところだと思います。

--- この前、杉浦さんと話していたのは構造化手法というのは、思考した結論がモデルだということです。 オブジェクト指向は、どう協調させるかっていう以前に、協調させるクラスを出すところでモデルがありますよね。
それは、ソリューションではなくて、登場人物の一覧なので、一番奥のところまで行かない前に、 モデルが見えますよね。それは大きいですね。
構造化の成果物は見せられても最終形だから、どうしようもないですね。

機能分割されていて細かいですね。
ユースケースの良いところというのは、やっぱり一見して機能がわかるところです。
たとえばコンサルティングに行ってはじめてのドメインでも、ユースケースを見ると、なんとなくやってることが解ります。 分析モデルを見ると、システムの概要が把握できます。
逆にオブジェクト指向を実施していないところへ行き、詳細な機能仕様書しかなかったりするとシステム概要って全然理解できません。 ビジュアル・モデリングだと、一時間、二時間見てればここのチームのレベルが大体解りますよね。そこが、良いところだと思います。


オブジェクト指向をプロジェクトに適用する方法

--- 最初にオブジェクト指向に対してはどんな形でアプローチしましたか?
結構それを聞きたい読者っていっぱいいると思うんです。
こういう風に工夫したよっていうところはありますか?。

最初は、私と啓太さんのオブジェクト指向が好きな二人ではじめました。
私のほうが組み込みにOOを何とか取り込んでいきたいっていうのと、 啓太さんの方は組み込みに興味があって、やってみたいっていう二人がこう上手く合って。
はじめは、アンダーグランドで業務の合間を見ながら実施していました。

--- それは、本当のプロジェクトじゃなかったんですか?

一応、予算は少しもらってたんですけど、本当のプロジェクトではなかったですね。
ほとんどはサービス残業で実施していて、モデルが描けてプログラムが上手く動作した時点で提案をしました。

--- できたところで、他の人にPRをしたということですか?

はい、そうです。組み込みの難しい点は、やはり動作しているところを見せないと納得してくれないところです。 モデルが出来た云々っていう話より、実行させて組み込みソフトウェアで一番懸念されている、ROM/RAM容量とリアルタイム性について評価し、PRをしました。

--- それは、どんなシステムだったんですか?

OA機器の画像処理部分です。それを役員にプレゼンテーションしました。
その結果、妙に受けて「製品化を検討して」と言われて(笑)しまったんです。
しかし、画像処理部分はリアルタイム性の要求が厳しくないので、動作しても当然でしょうと言う人たちがいました。
そこで、ハードリアルタイムが要求されているメカ制御部分のドメインを担当していた杉浦さん(前回のOOエンジニアの輪)に話を持ちかけてみたら、 「いいですよ。一緒に製品化しましょう。」っていうことになりました。

--- じゃ、実務以外のところでアプローチをしてモノを作って、社内にPRして提案して、予算をつけてもらっという形ですか?

そうですね。やはり、これが現実だろうと思います。逆に最初からトップダウンっていうのは、なかなか難しいと思います。組み込み開発者は日々開発に追われていて余裕がなく、上から技術を押し付けれれても反発する事が多いです。エンジニアのモチベーションが高ければ別ですが。

--- それで、提案が受け入れられて組み込みへのオブジェクト指向適用の立ち上げに?

はい、そうです。
製品化が終了しOOの全社展開になってきたので、私の仕事が一区切りついた時点で、今後組み込みメーカのオブジェクト指向適用の立ち上げに貢献したいと思い現在の会社へ転職しました。


組み込みの苦労話

--- 今まで、業務をやられて苦労してきた話を伺いたいのですが。

仕様がすぐに決定してない点です。
組み込みは、ハードとソフトを並行で開発するので、なかなか仕様 ― 特にハードの仕様が決まってこないのです。
それでハードの仕様変更のしわ寄せがソフトの方に来てしまいます。

それに要求分析が出来ていないです。
組み込みのソフトウェア開発者は、外からの要求すなわちユーザの要求が見えなくて開発をしています。

--- 確かにね。

システム全体が見えないから、自分たちが何を作るか良く解らないで作らざるを得ないんです。

--- そうですね。逆にそういうところをあまり見直そうというのに気づかないまま、ルーチンワークにはまってしまう。

どこも一緒ですね。

--- 他には、なにかありますか?

開発環境では苦労します。開発当初は、PC上でシミュレーション出来ます。しかし、最終的にターゲットCPU上で動作させるのでクロスコンパイラが必要なります。私が最初に使用した16ビットCPUにはC++のコンパイラがなかったのです。そこでコンパイラメーカさんへ依頼して作成して頂いたんです。

--- あ、それは大メーカーですね(笑)。

そう、私たちの活動に協力してくれて開発をしてくれたんです。 無償で開発してくれました(笑)。でも、コンパイラには問題は無かったんですが、デバッガに問題がありました。

--- ソースコードデバッガはできたんですか?

はい出来ました。
しかし、デバッガ開発者はオブジェクト指向で使用されることを考慮していなくて、C++自体をBetter C的な使用を前提にデバッガを開発していました。オブジェクト指向プログラミングですと継承や集約などのオブジェクト間の関連が必要になりますが、この関連に関する属性のシンボルが正しく表示が出来ないのです。GNUのgdbだと簡単に出来ますけどね(笑)。それで苦労しました。 そのため、高級言語を使用しているにも関わらずシンボルが正しく表示できないためメモリを直接ダンプしたり、あるいはアセンブラレベルでのデバッグをしてました。

--- それって、最近もそうですよ。この間の仕事で、RISCチップのアセンブラを見ても良くわからなくて。

わからないですね。

--- 結構、変数の変わるタイミングなんかが違うんです。

パイプラインなんかが働いて。

--- そうそう、先読みするじゃないですか。

確かに、アセンブラレベルでは読めないですね。

--- 結局、自分たちでデバッグをやろうと思ったら、ちゃんとユーティリティを作らないとだめですね。 環境がちゃんと揃うという話を鵜呑みにしてはまってしまいました。

そうですね。開発環境には、毎回泣かされます。


オブジェクト指向の好きなところ嫌いなところ

--- オブジェクト指向の好きなところ嫌いなところを伺いたいんですが。

別にないですけどね(笑)。オブジェクト指向だと他の手法と比べてビジュアル・モデリングができて、 全体を把握しやすいってところです。

--- じゃあ、嫌いなところは?

嫌いなところですか? 私個人的には嫌いなところってないんですけど。 現実にコンサルしていて、皆さん苦労するところはオブジェクトを抽出できなところです。
開発の現場の人は、特にそうなんです。

当初の考えはオブジェクト指向技術を使用すれば、みんな楽に開発できると思ってました。しかし、逆に個人のスキルの差が、構造化手法よりもはっきりしてきたのです。 それに関しては、対策をしなくてはならないと思っています。
やはり、道筋を立てて指導しないといけないです。 例えば、このような観点で抽出しなさいといったガイドラインの提示です。

--- 嫌いなところっていうのは属人性に依存するところですか?

はい、そうです。オブジェクト指向の分析、設計が出来る人が少なくなります。 日本のメーカさんは、縦割りで開発をさせようとします。
サブシステムごとに担当を割り当てて、自分のサブシステムを分析、設計、実装、テスト全てを実施しています。上流工程の能力がある人がテストまで担当しなければならないというのは、もったいないですよね。かなり能力があるんだけど、単体テストまで一生懸命やってたりしている人を見ます。
属人性も選別化にはいいのかなって思ったりしますね。そのため、出来る人を適材適所に活用できますから。


注目しているパターン

--- では、パターンについてお聞きしたいんですが。 パターンって言われて久しいじゃないですか。

パターンはそれなりに有効だと思います。

--- どんなパターンをよく使われますか?

組み込み系で使用しているのは、GoFのデザインパターンですとObserver、State、Strategy、Composite、Abstract Factory、Template Method、Commandを良く使用します。

--- 他のパターンは使わないんですか?

使うパターンは、大体それぐらいです。但し、パターンの使い過ぎには気を付けたいです。
例えば、Stateパターンを使用して操作がひとつしかなく、属性がないクラスが、ズラズラっていうものを見たことがあります。メモリを多く使用しますし、逆に理解し難いモデルになることが多々あります。
そのため、最初からパターンを使用しないでモデルを洗練するときに使用したほうが良いです。

--- GoF以外のパターンはどうでしょう?

"Small Memory Software"Patterns for systems with limited memroyと言う本があるのです。
メモリプールやガーベジ・コレクションといった各種のメモリ割付のパターンが載っています。最近は、メモリやリアルタイム性のパフォーマンスチューニングのためのパターン本が結構出来ていています。 組み込み系ソフトウェアの開発をOOで行う時に困る問題の解が最近は紹介されてきて助かっています。
アナリシスパターンやアーキテクチャパターンよりも重宝しています。

--- 組み込み系の本は、最近は昔よりも出てますね。

以前はほとんどありませんでしたが、徐々に増えて来ていますね。但し、日本の著者が少ないのが残念です。
それとイディオム関連の本があると嬉しいですね。たとえばモデル図からコードへの変換方法です。今はCASEツールが変換してくれますが初心者用にそういう本が、本当はあった方が良いと思ってるのです。

--- そうですね。あとは非OOの世界からからオブジェクトの落とし方とか。 毎回同じところで苦労しますね。

そうですね。毎回苦労するので、そういう本があると良いです。 あとは、アンチパターンがもっと欲しいですね。 組み込み系はアンチパターンが結構多いんです。

--- 出会ったことのある一番のアンチパターンて言うのはどんなものですか?

組み込みのアンチパターンで一番陥りやすいのは、多重割り込みなどによる排他処理です。

--- それでデッドロックが発生したりとか?

デッドロックの問題もあります。組み込み系ってそういったあたりの指導が疎かです。先輩たちが、「なんだ、そんなの当たり前でしょ」って言っていて。でも、その人たちも苦労した経験があったりするんですが。

--- そういう本はあまりないですね。

そうです。それでアンチパターン的な本が作れると良いなと思ってるんです。


趣味の話

--- 尊敬する人は誰ですか?

ガンジーですね。インド、チベットが好きなので、マハトマ・ガンジーや、ダラ イ・ラマが好きなのです。 民族紛争が多くなっている昨今に、非暴力主義を貫いているところが尊敬できます。

--- インドには行かれたことはあるんですか?

旅行が趣味なので、インドには何回も行っています。 田舎に行って、その土地にとけこむのが好きなんです。

--- そう言えばインドってソフトウェアが進んでいますよね。

一度インドへ会社訪問に行きました。すごい進んでいて、オフィスもきれいなんです。

--- CMMのレベル3とかは当たり前ですね。

ええ、レベル4なんかも。
驚いたのは、構成管理が行き届いていてオフィスに行ったら資料のファイルが机の上に置いてないんです。

--- 電子媒体で見れるっていうことですか?私なんかは紙のドキュメントの方が読みやすいんですけど(笑)。

電子媒体で管理しているか、きっちりとした保管場所で管理しているんでしょうね。
契約もきっちりしていて、見積依頼を出すと論理的に見積もりの根拠が列挙されてるんです。

--- いままで、どこに旅行しに行かれたんですか?

インド、ネパール、パキスタン、ヨーロッパなんかも一人旅で行きました。
岩登りやフリークライミング、それにフィッシングも好きなんです。今の会社に入る前に2ヶ月間ぐらい旅行してきました。 チベットをツアーで一週間ジープでまわって、そのあとネパールでトレッキングへ行きました。
その後、南フランスの友達のところへ行って、ロッククライミングを楽しんできました。

--- フランス人の友人ということは、コミュニケーションはフランス語で?

友達は英語を話してくれますから(笑)。
そこで150m位の壁を登りました。フリークライミングは、ロープ以外の道具は使わなくて、手足だけで登るんです。ちゃんとルートが決まっていて、まぁ落ちるときは5mか10mぐらい落ちるんですけど(笑)。でも、そのときはガイドがいたので怖くはなかったです。

--- アウトドア好きなんですね。

好きですね。あとは釣りです。
フライフィッシングで白神山地の源流までテントを持って行ったこともあります。

--- いろいろやられてますね。

仕事よりも趣味のほうが(笑)。しかし、最近趣味の時間が取れなくて困ってるんです。
最近は結構、土日のうち一日は家で勉強をしています。結局、分からないことは家で調べています。

--- 以前とは生活が変わりましたか?

今の会社に移ってから生活スタイルが変わりました。

--- じゃ、趣味の時間がとれないですね。

悲しいかな取れなくなってきています。

--- 一回、そういう風にハマってしまうと、ずっと繰り返しになりますね。

抜けられないです。

--- 私もここ2年ぐらい、あまり釣りに行ってないんです。年に1回ぐらいしか。

ああ、いやですね。そうなんですか。
前は、夏休みには二週間ぐらい休暇をとる主義でしたし、年に二、三回は旅行してたのです。 普段は、残業しててでもやる事はやって、夏になるとスイマセンって言って二、三週間は休暇とってリフレッシュしてました。 今でもやろうとは思ってるんですけど、コンサルティングの契約を途中で切っちゃう訳には行きません(笑)。

--- 難しいですよね。

年棒が下がっても良いですから、私は長期休暇を取ります(一同笑)。それをやらないと良い仕事ができない気がして。
やはり、リフレッシュが必要です。

--- 他の事をやらないと、毎日が同じになってきますよね。

なんか、ルーチン化してきて活力が無くなってくるような気がするんです。
そのため思いっきり遊んで、その後良い仕事をしたいなと思うんですけどね。

--- じゃ、自分で会社やるなんてもってのほかですよね。

絶対ダメです。

--- 山荘のおやじとかになるしかないんじゃないんですか(笑)?

そうそう。本当はやりたいとは思ってるんです。
今の仕事自体は全然嫌いじゃないんですけど、ある歳がきたら、農業とか民宿の親父とかやりたいなと思っています。

--- なんか結構、話し聞いてるとバイタリティがありそうですね。海外移住とかは考えてられるんですか?

もちろん考えています。移住するなら絶対にネパールか南フランスしかないと思ってます。 やはり、美しい山が近くにあって良いですし、物価の安さも魅力です。
南フランスは夏はカラッとしてて、気候がメチャクチャ良いから、歳とったら住みたいですね。
カンヌ、コートダジュール、ニースやマルセイユ等がありますが、あそこまで大都市というより、アルプス側のすっごいド田舎の方が好きなのです。


おまけ:勉強の仕方

ここからインタビューする方と受ける方の立場が逆転して、勉強の仕方について質問される一幕がありました。

逆に質問したいんですけど、皆さんどうやって勉強をしてるんでしょうね? 最近は本の出る量も半端じゃないじゃないですから。

--- 私は、完璧に行き帰りの電車です。
「リアルタイムUML」も、去年ほほとんど京浜東北線の電車の中で翻訳しました。
だから京浜東北線がなければ、一切翻訳ができなかったに等しいですよ。
行き帰りのちょうど一時間ずつ、ダッシュで乗ったりして見苦しいなって思うけど、しょうがない仕事のためだって(一同笑)。

それは凄いです。私はシートに座って10分ぐらい読むとその後寝てしまいます。

--- 十年以上、電車の中を書斎にしてます。 だから会社から近いところに住んでると、バカになってるかもしれないです(笑)。技術についていけなくって。

そうですね。家が会社に近いと、結局は勉強をしなくなります。 私はしょうがないから家で読んでるんですが。 会社じゃ忙しいから無理ですね。結局は夜中に家で本を読んでます。



アンケートにご協力お願いいたします
記事の内容を5点満点で評価してください。
1点 2点 3点 4点 5点

© 2001 OGIS-RI Co., Ltd.
Prev Index Next
Prev. Index Next