IT企業管理職の現実とその頂きを目指す

IT企業をわかりやすく語りつつ、年収1,000万(相当)の生活。目指せ役員まで出世!!

システム開発とは?~建築に例えると~

 IT企業人らしく、少し業界ネタについてご紹介します。IT業界とは別の業種業界あるいは就活中の学生にはなかなか創造しにくいところですが、ITビジネスの中心にあるシステム開発について、よく例えられる建築でご紹介します。

想定する読者

  • システム開発ってよく聞くけどよく理解出来ていないなという方
  • 就活でIT業界を志そうとしている方

 

 

システム開発とは?  

システム開発と聞くと何か特殊なことのように聞こえますが、実態は膨大なプログラムのお化けです。プログラムはテキストエディタのようなものでも作成することが出来ますが、その行数をステップ数という単位で計測します。メガステップという程度のシステムも大きめのシステムでは良く聞くサイズ感であり、100万行以上のプログラムで実装されています。 

 

f:id:nabetsuna:20210118085559j:plain

システム開発の大きなフロー

設計

1,000行であったとしても、何人かで分担して作成する場合には全体像があり、それのどこからどこまでを誰がやるかという整理が必要です。個人ワークならば自分の脳内のイメージでよいですが。設計で実施することは、語り始めると膨大な情報量になるので、別途個別にご紹介します。

 

コーディング

実際にプログラムのソースコードを書くことを言います。意外かもしれませんが、実はシステム開発の期間の中で、コーディングしている期間が長そうに感じると思いますが、この工程はみなさんの想定よりは相当短期間で完了します。

 

試験

IT業界で開発するシステムの中ではこの工程が相当重要です。というのも、上記のコーディングはもちろん、設計についても人が実施しているということから、「ミスもしくは整合性が取れない部分があるものだ」という前提にたって試験がされます。つまり、何も間違えが見つからないのではなく、間違えをきっちりと見つけきるという開発手法になっております。

   

 

さて、ここまではシステム開発のポイントのみ書きましたが、ITになじみのない方でもイメージ頂けるように家づくりに例えたいと思います。

 

建築の世界に例えてみる

設計

家やビルなどを建てる際に、設計書や図面を作成することはご存知かと思います。システム開発でもこういったドキュメントを事前に作成します。建築では、様々な規制や法律、安全に丈夫な建物にするために一級建築士をはじめとするプロにより図面が作成されます。デザインや内装なども考慮した、練りに練られたプランです。建売住宅のような既製品であれば、ある程度パターン化されたものを利用するので、類似の仕組みの転用などでコストを抑えることが可能です。一方で注文住宅となると、住む方の様々な要望を聞きながら建物を安全に作るというとても難しい問いに対する解を見出す必要があります。そのためコストも高めに設定されることになります。

 

コーディング

ここは実際に大工の方が立てる工程になります。きっちりと設計されたとおりに立てることが最重要になります。分担もありますし、どの順番に作っていくかなども考えていく必要があります。手を動かす方がいれば、全体の作業内容や進捗の把握などもされており、システム開発ではそのような役割をPM(プロジェクトマネージャー)と呼ばれています。コーディングもとても深い世界で、いくら試験でしっかりと間違えを見つけるからと言っても、コードの可読性であったり、繰り返し利用するものを共通化するなどの重要なポイントもあります。これもまた別立てでご紹介します。

 

試験

建築の世界も、様々な検査基準という名の試験を経て建設がされています。最終的に現場では組み立てるという形ですが、材料や部品については事前に工場などでしっかりと検査がされてから現場に届けられています。ただ、くみ上げた建物の確認については、建築業界人ではないのであまり詳しくないですが、実際に想定レベルの風雨や震災などを起こすことは出来ないため、このあたりはシステム開発とは異なります。システムの場合はシミュレーションを起こすことが出来るので、高負荷をかけることや部分的に障害を起こすなどでもしもの場合も再現させて動作確認することが出来ます。

 

 

 

建築とシステム開発の違い

(※システムは専門ですが、建築は素人の立場です。)

上記でも触れましたが、ここのプロセスとしては非常に類似していますが、やはり目に見えるものとそうでないものという違いはあります。

 

目に見える=実感が可能

建築の設計にてCADというITを使った電子設計図があります。こちらは3Dで、完成図の外観だけでなく、中の構成まで表現することが出来ます。つまりあたかも完成品であるかのようにして人が目で見ることが出来ます。これにより、検討漏れや洗い出し切れていない要望の抽出、認識ずれの防止が可能になります。また、完成した後も実物を人の目で確認することが出来るので、確認しやすいところがあるのも一つの特徴です。

 

目に見えない=実感がない

システムは目で形を捉えることは出来ないので、全体像というものの把握はもちろん自分が利用しているところ以外は知ることが難しいです。最近ではプロトタイピングなどを行うことで、出来るだけ可視化しようという試みも見られますが、やはりこの実感の弱さは、要望の抽出漏れや認識違いなどを生みやすいのも特徴です。

  

まとめ

さて、システム開発とは?を建築に例えてきましたが、少しはシステム開発のフローやどんな役割・作業があるのかをイメージして頂けたでしょうか。またこのあたりは、開発方法論の変遷や開発会社との分担などもご紹介いたします。