見出し画像

いいプログラム仕様書の残し方!

いまふと気づいたので、一筆記載します。

何十年もIT業におり、特に業務系アプリケーションやってますと、以下の現象に見舞われます。

「あれ?このプログラムなにしてんの?」

長持ちするプログラムを作りますと、自分が作ったプログラムの意味が分からなくなる。
「爺さん飯はまだかい」の状態に、たくさんプログラムを作っているとだいたいそうなります。せいぜい1年ぐらいしか覚えてないでしょう。

(引用:大江しんいちろうさん https://twiman.net/user/88056231/1151684686084624384)

で、頭に思い浮かぶのは

1.概要設計書
2.詳細設計書
3.成果物(プログラム本体)
の3つにはなりますが、最近それぞれコツがあるなと分かりました。


まず、
1.概要設計書

概要設計書例 ヤマキ 卵かけごはんレシピ


これは、どちらかというとこのアプリが何者かということが、「素人でも初見5分以内になんとなくわかる」のが理想であり、要約、概要説明があればいいです。
料理のレシピでいうと、料理名:「たまごかけごはん」、写真だけでも十分いい感じです。

  • 作成や更新日付

  • なるべく短い説明

  • 「図示」されるもよし、画面ペタペタ貼るもよし

  • 「人間語」

  • できればユーザー用途や意味

で書かれていることが重要です。
あくまでダイジェスト版であり、あとで思い出したり、お客様に聞かれたときにパッと答えられたり、他の人がぱっと見でわかるのがいいと思います。



次いで
2.詳細設計書

詳細設計書例 ヤマキ 卵かけごはんレシピ

これは、ひと昔までは細かく書くべきでした。
しかし、最近のコンピュータ言語ソースコードはかなり英語文書のように短文で描けるようになりました。そのため、細かい仕様書はソースコードないし、ソースコードのコメント行が代用できると考えており、あまり細かく書かない方がいいと考えています。

でないと、ソースコードと詳細設計書に同内容を書くことになり、仕様変更時にソースコードは最新を追いかけますが、詳細設計書側の最新追従がよく遅れまして、内容にブレが入り、双方の最新追従がとても手間がかかります。
(特に、ドキュメント側の内容が古くなる。むしろ混乱を生みます。)

ここで必要な情報は

  • 作成や更新日付

  • このプログラムを10年後に再度開発/修正するために必要な開発環境構成メモ(最近の言語はVerupが速く、同ソースコードがすぐに動かなくなるため)

  • このプログラムのファイル構成と各ファイルの役割、大体の意味

  • 参照データベースがある場合、スキーマ構造、マッピング

  • 処理内容のおおまかな順番

  • どういう情報が入り、どういうアウトプットがあるか

  • 実は試験シートは、大まかなものがあると仕様書の代わりにはなります。

このレベルでいいと思います。


最後に
3.成果物(プログラム本体)
こちらが昔の詳細設計書、兼ソースコードになります。
コメントとしていろいろ書くのがいいと思います。
私もいろいろなソースコードを見てきましたが、「業務の意味」「その部分の機能の意味」「ややこしい変数の意味」「ここ危険」などをきっちりコメントを書く人はバグが少ないと思いますし、ソースコードを引き継いでも直しやすかったです。


なお、各項目に「日付」と記載しています。
人間、時がたつと何をしたのかはサッパリ忘れてしまうのですが「いつ頃それをしたことがある」ということは思い出しやすいです。

今日私は本業で、「昔、導入当初にデータ連携テストをしたけれども、当時のデータをそのまま流用したいな」を思い出すとき、何年頃に、同じようなことやったよねというのは覚えていて、過去データを拾うのが速いです。

…Git使いはなぜかタイムスタンプを軽視するのですが、タイムスタンプは「更新していない」「このファイルはもう触ってはいけない」「チェックはスルーしてよい」担保がExplorerでファイルを一見してすぐわかる、電話越しで他人相手に声で画面見なくても確認できるので、楽ができるため私は必要と思います。

※ なぜ、Gitはタイムスタンプ維持しないのか意味がさっぱり分からない。


ということで、ちょっと記載してみました。
要するに、ぱっと見で5分以内に要点が分かり、15分以内に雰囲気がわかればOK。
ご拝読ありがとうございました。

この記事が気に入ったらサポートをしてみませんか?