skillup

技術ブログ

ドキュメント作成

使える設計書作成に関して

投稿日:2020年10月3日 更新日:

私自身、この仕事を7〜8年やっておりますが、設計書作成については常に悩まされておりました。

設計書のメリット・デメリットとしては以下のようなものですかね。

メリット

  • メンバー間での仕様の認識を統一できる
  • 出戻りを防ぐことができる
  • 開発進捗の遅れの影響を防ぐことができる

デメリット

  • 形式的に作られているものも多い
  • 現実の開発との差分が出てしまう(更新する文化が廃れてしまう)
  • 作っても費用対効果が良くない(作る時間に回した方がいい)

デメリットが多くてあまり作ってない現場の方が多かったんですけど、仕様の認識を統一できるというメリットはやはり大きいなと思い、真面目にこの問題に取り組んでみようと思います。

対策

設計書はコードから起こす

現実のシステムとの差分が起こらないように、ER図であればschemaから起こすとか、API仕様書であればLaravelの(Laravel API Documentation Generator)みたいなツールですかね。

要は作るのに手間がかからない、自動化されているのであれば文化として廃れることがないので、これが一番いい気がします。

設計をした方が工数がへる、楽

設計をした方が工数がへる、ラクということになればみんなその通りにやるので、この仕組みを取り入れるのがらくな気がします。

設計→コードの仕組み化

コードから起こすといっても限界があると思うので、ある程度の仕組み化が必要になってくると思います。

一般の仕事の仕組み化と同じですが、できるだけ個人の意識に頼ることは防ぎたいので、レビューのプロセスを経ないと次のプロセスに移行できない。みたいな仕組みとして存在するパターンですかね。

個人的に必要だと思っている設計書について

ダミーデータ付き+テスト仕様書

えーこれはまだ見たことがないので、理想論です。

一般のテスト仕様書って形式的なものが多いと思うのですが、ダミーデータがあれば状態の復元がすぐにできますし、開発をする上でものすごく楽になります。

イメージとしてはPHPUnitの中に組み込む感じで、そこから仕様書を復元できるようにすることですかね。

夢物語と思っていましたが、migrationを組み込んでおけば前提となるマスタデータなどを入れておき、そこからデータを入れることは難しくないのでは・・?と思いました。

API仕様書

昨年度のプロジェクトで作ってました。フロントのエンジニアと一緒に仕事をするときに開発が出来上がってないときに、

  • まずAPIのINとOUTの形だけ決める
  • テストデータでリクエストとレスポンスの形を決めておく

これだけで仕様書の出来上がりです。

グルーピングされたER図

グルーピングということが重要なのですが、ER図があればデータの移り変わりなどがイメージできるのでやはりあると仕様の理解が格段に進みますね。

ER図自体の作成はwinだったらA5SQL、Macならwwwsqldesignerが簡単で便利です。

-ドキュメント作成
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

プログラムからとExcelからのテストデータ作成

テストデータの作成ですが、プログラムから作成するケースとExcelからシコシコ作ってSQLをがんと入れる場合があります。Excelつってもマクロを使ったりするんでプログラムですし、実際にはPHPとEx …

no image

ER図作成ツールについて(Mac版)

ER図作成ツールについてMacで色々と調べましたので、メモを。 フリー限定で。 ちなみにwindowsを使っていればA5:SQLが一番使えるかと思います。 以前も下記リンクで説明させていただきました。 …

no image

データベースのテスト環境作成

現在作っているシステムのリリースが近づいており、本番に近い環境を作成しお客様に見てもらうことに。 こういった手順はマニュアル化しておいたほうが楽だろうと思い、自分的にメモ 1 現状運用されているデータ …

no image

コード静的解析ツールを使った際の気づきなど

最近のプロジェクトでコード静的解析ツール(phpcs,phpmd)を使った際の気づきなど コードを書きながら常時エディタがチェックするタイプのものでないとまず無理(保存するたびでも無理だし、コミット時 …

no image

設計業務での改善点など

比較的大規模なプロジェクトの設計段階で思ったことなど。 Contents1 明確なゴールを決める2 レビュー時はチェックリストを設ける3 チーム内での情報の情報共有方法を考える4 出来るだけ情報の同期 …