どうも。ひろです。
最近自作しているアプリでも簡易的な画面仕様書、機能仕様書、詳細設計をしています。
以前はアイディアが浮かんだら頭の中で描いているコーディングをして実現してみようとしていましたが、
そうすると大体失敗するんですよね。
原因は「経験」だと思います。
今回はアプリ、システムを作る時の設計の重要性をお話ししてきます。
目次
プログラミングの設計とは?
土木や機械類の製作の前にどんなものを作るのか、どのような寸法で作るのか
というのを示すために設計図を作成しますよね?
プログラムの設計も同様です。
プログラム設計の本質は、人にとって明確な意味を感じ用意に理解できる単位にプログラムを分解することになっています。
多くのデータと処理から作られているプログラムに対して、
データには構造で意味を、処理には意味付けした単位で分解することです。
プログラム設計は人に向けてやること
コンピュータはプログラムがどう設計されていようが関係なしに動きます。
人はプログラムの設計を気にすることができますが、
コンピュータにはそれができません。
コンピュータはプログラムに書かれた処理一つ一つを手順通りに実行する役目だからです。
そのためにプログラムの設計を気にすることができる人が設計します。
規模が小さいプログラムである場合はそこまで設計書が重要になってくることはありませんが、
規模が大きくなるときちんと動くものが作れなかったりメンテナンスができなくなってしまいますのでしっかりと設計しましょう。
設計書を見れば誰もが処理の流れ、データ構造を把握することができれば
膨大なソースコードを見て解析する時間が短縮されます。
設計することでやるべきことが明確になる
本当に簡単なことをなら設計なしでもできます。
極端な例で言うと文字列を表示するなどです。
ではなくて少し規模が大きくなった時に、
どのようなものが作りたいと言うイメージはできていても
実際に紙などに書き出さないと頭の中を整理することができません。
紙に書き出した内容からどんな処理が必要か、どのようなデータが必要か
考えられるようになってきます。
そこからどの関数がその責務を果たすのかまで考えられると実装する時に
楽に実装ができます。
それらを設計書にまとめておけば自分が実装しないとなった時もそれを見てもらえばある程度実装できるはずです。
私は一人で開発する時も思考の整理をするために簡易的な設計図は作っています。
設計段階でしっかりとやるべきことを網羅できていればスムーズに作業が進んでいきます。
設計しないと実現できない理由は「経験」
世の中には設計をしなくてもスムーズに製作物を作れる人がいますよね?
元から能力が高い人もいますが、大体の人は経験値があるからです。
そのシステム、アプリを実現するために必要な処理や技術を
以前に何回も触れてきている人は設計などしなくても作れると思います。
経験値がある人たちは頭の中で設計図を作ることができています。
経験が少ない人はどういった処理をすることで実現ができるのかと言うことが
まだ体に染みついていない為、一度アウトプットとして設計図を作ります。
それを繰り返していくうちにあの時作ったシステムの一部を代用できそうなど
思えるようになってくるので初めのうちは設計図を作成し、
慣れてきたらそのまま実装する形でもいいかもしれません。
まとめ
今回は以下のことをお話ししました。
- プログラミングの設計は土木や機械の製作する時に作る設計図と同様
- 設計することでデータ構造、処理が明確になり何をすれば良いかわかる
- 経験値を向上させることで設計をせず高品質なプログラムを書くことができる
最初は設計する時間あるなら実際にプログラム書きながら修正していった方が効率が良いと思いかもしれません。
場合によりますが設計してきちんと整理してから実装することで簡単なエラーで済むかもしれませんので
一度設計してから実装する手順を踏んでみるのもいいかもしれません。
ここまで読んでくださりありがとうございました。
一緒に読みたい記事
- 周りのプログラマーの一歩先を行く! プログラムの設計の本質と秘訣
https://engineer-club.jp/program-design#i-25 - 僕がプログラムを作る手順
https://note.com/erukiti/n/nec8e3dbe4a53