スキルアップ
2014年3月11日
「わかっていること」と「そうでないこと」を切り分けて考える癖をつけよう~システム設計の第一歩
文・高安 厚思
  • はてなブックマークに追加

 今回お話ししたいのは、「わかっていることとわかっていないこと(無視していいことも含む)を明確にし、考えてみよう」ということです。これは私が専門としている「システム設計」などでも言えることですが、4月に入ってくるIT業界の新人さんへのメッセージでもあります。

大事なのは、全体を俯瞰できること


 新人さんへのメッセージとしては少し難しい書き出しでしたが、ここからはシステム設計に話を戻しましょう。

 システム設計でいちばん難しいのは、全体の整合性を取ることです。全体を見るときに詳細にこだわっていては、全体が見えなくなります。いわゆる「木を見て森をみず」の状態です。ですので詳細には目をつぶります。しかし、詳細が気になる方もいらっしゃるでしょう。そこで詳細をブラックボックス化し、それを「中身のわからない状態の要素」として捉えてみてはどうでしょうか(図参照)。

※クリックすると拡大


 このようにしてブラックボックス化し、ブラックボックス間のインタフェースを明確にすることで、全体の整合性を取ることを考えてみましょう。

 これは、システムを勉強することにもつながるかもしれません。すぐにすべての知識の詳細を知ろうとすると無理があります。何年もかけて知識を習得し、経験することで、いろいろなことがわかるようになってきます。全体になにがあるのか、なにを勉強すればよいのかを把握してから、興味のある箇所や仕事で必要な箇所から勉強していくのがよいと思います。

 「全体像とはなにか」という意味では、IPAで実施している情報処理技術者の各試験のシラバスや、ITSS(ITスキル標準)などが参考になります。

※IPA:https://www.jitec.ipa.go.jp/1_04hanni_sukiru/_index_hanni_skill.html
※ITSS:http://www.ipa.go.jp/jinzai/itss/download_V3_2011.html

 視野を広く持つことは、問題解決の幅を広げてくれます。つねに、全体を見渡せる癖をつけておくようにしましょう。

「詳細」にも目を向ける


 しかし、全体が大事だからといって、詳細を無視してよいわけではありません。全体を分割したブロック単位(機能、データ、システム構成要素など)で、詳細を確認する必要があります。単に全体を見渡しただけでは地図を作っただけになり、実際に歩いてみないとわからないことがあるのは、皆様にも経験があるのではないでしょうか。そのため、段階を踏みながら詳細化する必要があります。ときには、大事な部分を最初から詳細化しながら、全体を解きほぐしていく必要もあるでしょう。とくに、仕様書や設計書がなく、ソースコードから整理する場合は、そのようなケースがよくあります。

 システムを勉強する観点でいうと、それぞれの分野で詳細に理解するための学習方法につながります。必要な知識は全体から理解した上で細かい内容を勉強することで、「使いこなせる技術」になります。また、技術者として1つの領域を深く理解し、経験しておくことは、強力な武器になります。

大海の前で立ち尽くさないために


 物事の規模の大きさや複雑さに驚き、どのようにしたらよいのかがわからなくなった経験が一度はあるのではないでしょうか。詳細を理解しようとする気持ちが強ければ強いほど、そうなりがちです。そのような場合、詳細をブラックボックス化し、全体を分解した上で全体を見直し、「いくつのブラックボックスを解決すれば抱えている問題を解決できるのか」を、考えてみてください。

 分解された全体構成があれば、全体観や要素の位置づけを他人と共有できます。また、ブラックボックスを分担して、協業することもできます。

 当たり前のことですが、作業を熱心にすればすればするほど、見えなくなる部分は出てきます。ブラックボックス化を活用して設計(思考)対象の大きさをコントロールし、問題解決とアウトプットに結びつけましょう!

(了)


システム設計の謎を解く
強いSEになるための、機能設計/入出力設計の極意
高安 厚思 著



【著者】高安 厚思(たかやす あつし)
アーキテクトとして活動し、『システム設計の謎を解く 強いSEになるための、機能設計/入出力設計の極意』や『StrutsによるWebアプリケーションスーパーサンプル』シリーズなど、多数の著作実績がある。アーキテクチャ構築に関する研究と啓蒙に多忙な日々をおくりながら、休日はもっぱらAKB48/NMB48/ももいろクローバーZのDVDを観て過ごす。東京電機大学工学部非常勤講師。SQuBOK設計開発領域担当委員。
Facebookページ:https://www.facebook.com/SystemDesignBook
  • はてなブックマークに追加