はじめに
このエントリは、初挑戦カレンダー Advent Calendar 2025 の 10日目記事です。
https://qiita.com/advent-calendar/2025/silvia
今年、Twitterで何か主張したかったことを拾いながら記事を書いていきます。
本文
設計書に書くべき情報というのは、設計である。
何を当然のことを言っているのかと疑問に思うかもしれないが、設計書を書く内容を理解していない人は意外と存在していて、そういう人が書く設計書は、きちんとした設計が書かれていない。
実は私も新卒からしばらく(恐らく3年以上)は、設計書というものを理解していなかった。
私が当時行っていたのは 設計書を作る ことだけだった。
どういうことか説明しよう。
設計書とは、これから作成しようとしている機能が、どのような処理によって実現されているかを記載する必要がある。
書くべきなのは機能を実現するための処理設計であって、その上位設計書(詳細であれば基本、基本であれば要件定義など)の処理をちょっと細かく書いただけの意味のない紙であってはならないのだ。
当時の私はそれがわかっておらず、基本設計書に書いてあることを、詳細設計書のテンプレにただ落とし込んだだけの何の意味もない設計書を作っていた。
当時の詳細設計書はそもそも基本設計で大体の処理が決まっていたため、そこまで問題が起こるような事にはならなかったが、私は当時書いた設計書をほとんど何も思い出せない。
その原因はやはり、私が設計をしていなかったからだろう。
また、とあるプロジェクトで数年目のエンジニアが書いた設計書のレビューを行った時、書いてある内容にびっくりしたことがある。
そこには、何故か私が作った設計とかなり似た内容が、パラメータと文言を変えて書かれていた。
私は、本来Aサーバで行うべきである処理を、システムの制限によりBサーバで行うような設計を行っていた。
そしてレビュー対象の設計書は、システム制限など何もないにもかかわらず、私の設計を真似てBサーバで行うように書かれていた。
何故Bサーバにしたのか?私の設計がそうだったからである。
つまりその子は、設計を行ったのではなく、設計書を作っただけなのだ。
私は頭を抱えた。
これ、どうやって教えたらいいのだろう?
Aサーバでやった方がいいよ、という指摘では、わかりました。で終わってしまう。
なぜBサーバでやるの?と聞いてしまうと、その子は答えられないか、私の設計書を真似しました。と答えるだろう。なにせ、私が書いた設計書は正解の一つではあるのだ。正解に近いものであれば、安心できる。
それに対して、ちゃんと考えてないでしょう?などと詰めれば、萎縮してしまう。
苦い経験を積ませるために、もし設計書をそのまま通したら、実装でなんだかうまくいかずに、こうじゃないああじゃないとレビューなどで言われ続け、時間だけかけて周りに言われたことを詰め込んだだけの機能が出来上がる。
そしてその結果では、ちゃんと設計しなかったからという原因にはたどり着けず、ただただ大変だったという記憶が残るだけなのではないか。
とりあえずその場では、私の設計はシステム制限でBサーバでやってるだけで、本来はAサーバでやるのが適当だからAサーバでやってねと指摘して終わった。
この問題について、実際、私は新人の頃に似たような指摘を受けた記憶がある。
しかし、私はその時その指摘を理解できなかった。
更に、理解できる今であっても、その当時の私に何を言ったら理解させられるかわからない。
色々考えてはみたのだが、思いつかないので、いつか人の力を借りよう。