知っていてもできるようにならないのはなぜ? ―― 問題意識を強く持とう,うまくいっている人の話を聞こう

島 敏博

 社内や社外でセミナの講師を担当すると,受講した方のアンケート結果をいただくことがある.その中に,「分かりきった内容のことが多かった」などという感想が含まれていることがある(筆者だけではない.Business Media 誠のコラムにも同様のエピソードが書かれている).

 筆者が教えているのは,構造化設計,オブジェクト指向設計,ソフトウェア・プロダクト・ライン開発などだ.しかし,知っていることを使って,良い設計ができているのかというと,実はそうでもないらしい.どうしてなのか.それを少し考えてみる.

 知っていることを使えるようにする方法を,いくつか考えてみた.

●技術を使うその過程に着目する

 良い設計にするというテーマはとても幅広いし,こうすればうまくいくという解もない.一つ言えるのは,いろいろなレビュー視点を持つ,ということかもしれない.構造化設計の視点で考えてみる,またはリアルタイムOSを使った設計の視点で,オブジェクト指向設計の視点で,モデル駆動開発の視点で,プロダクト・ライン開発の視点で.同じモデルを別々の視点で見てみることは,設計の改善に効果的である.

 良い視点を持ち続ける,さらに良くする,チームで良くするには,どうすればよいのだろう? 設計をレビューするときには設計改善に集中しているけれど,そのときどういう視点でどういう指摘をしたのかを文章で残しておくと効果的だ.問題の解が大事なのではなく,途中の視点とその順番がより大切だ.

 結果は再利用できない.しかし結果を導く方法は再利用できる.ソース・コードは再利用できないけれどデザイン・パターンは再利用できるのと同じだ.もしデザイン・パターンを再利用できていないなら,できている人の話をもう一度聞くべきだ.構造化設計の本で改善できないなら,改善できている人と何か違っているはずだ.

●視野を広げて解法の気づきを獲得する

 本はたくさん読んだ.使い方はもう知っている.その使いどころが分からないのかもしれない.そこを学ぶ.学びに出ることがまず必要.視点を広げるには,普段指摘してくれない人の話を聞いてみること.「視野が広がってやり方が変わった」という評価の人の話を聞きに行くことだ.

 もちろん解きたい問題に合った話を聞く.人気のセミナ,自分が聞きやすいテーマのものが解きたい問題に合っているとは限らないかもしれない.一つ大事なのは,自分が解決したい問題や問題意識を強く持って解を探し続けることだ.そうしないと解法があっても気づかないし,セミナを聞いて帰っても何も変わらない.

 同じアーキテクトならば同じ設計上の悩みを持っているはず.プロセスはプロセスの,テストはテストのコミュニティがあって日々解決できているように,自分の悩みを表現できれば,解法獲得の半分は達成できたようなものだ.そこから,解法を得るための議論が始められる.

●抽象化して問題をとらえ,解法は自分の問題に具象化する

 抽象化とは,実は「その問題が起きているのはその場所だけじゃないと気付くこと」である.問題を解くことも大切だけれど,起きている問題や起きている場所に類似個所があると気付くことも大切だ.それは,一段上に登れるチャンスである.少し引いた位置から見ることができているので,まとめて解決する方法が考えられるし,これからも同じ問題が起きないように仕組みを作っておくこともできる.

 構造化設計も,オブジェクト指向設計も,デザイン・パターンも知っているけれど,効果的に使うのはなかなか難しい.やはり現実の問題は,教科書通りには解けない.教科書はある例で示されており,使えるレベルにするには自分の問題に合わせて具象化しなければならない.一つ一つの技術がそのまま簡単に導入できて効果が上がる,などということはない.使えるレベルになるまで,設計を組み合わせ,パターンを組み合わせる必要がある.または削る場合もあるかもしれない.使えるレベルまで具体化し,ドメインならではの問題を解決する.抽象化を現実の問題に戻すことができて初めて,それらの技術が使えるものになる.

*           *           *

 2011年9月28日(水),組込みソフトウェア管理者・技術者育成研究会(SESSAME)が,「設計から考える高品質なソフトウェア開発」をテーマとした「第19回 組込みソフトウェア技術者・管理者向けセミナー」を開催する.筆者もその中で,「今一度設計を見直して、品質改善に設計力で取り組もう」と題した講演を行う.

 今回のセミナでは,構造化設計,リアルタイムOSを用いたリアルタイム・マルチタスク設計,オブジェクト指向設計,これらを加速するモデル駆動開発,それらすべてをまたがってソフトウェア生産性を向上させるプロダクト・ライン開発の着目点を整理する."知っている"が"使えていない技術"を,プロダクト・ラインというパラダイムに載せて"使ってみる"ことにより,設計改善のための道筋の例を紹介する.

 自分のモデルをそれぞれの見方で「良い」と言ってくれるレビューアは何人いるだろうか? いなければ,まず自分がそうなろう.良い設計にするとは,良い設計でないことに気付くことだ.レビューのポイント,部下や同僚が作ったモデル図面にどうコメントすればよいだろうか.良いモデルが設計できるからこそ,テストしやすくなり,派生開発しやすくなり,その結果開発効率が上がって,ソフトウェアの仕事が楽しくなるのだ.

 セミナでお会いしよう.

 

 

しま・としひろ
セイコーエプソン(株) LFP企画設計部

 

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日