詳細設計書は必要?

結論から言うと、 「詳細設計は必要、詳細設計書も必要」 と考えている。 ただ、コスパの良い詳細設計書の書き方は見つかっていない。 作る上では考えているのにアウトプットができないとはこれいかに。 詳細設計書とは ウォーターフォール型の開発だとこのようなドキュメントが作られる。 要件定義書 クライアントと話して何が必要なのかをまとめたもの 基本(外部)設計書 要件定義書をもとに画面や機能を詳細化したもの 詳細(内部)設計書 基本設計書をもとに各画面、各機能を具体化したもの これをもとにコードが書かれる 単体試験仕様書 実装した各画面、各機能単位のテストのための仕様書 単体試験エビデンス 単体試験の結果をまとめたもの 結合試験仕様書 システム全体のテストのための仕様書 結合試験エビデンス 結合試験の行った結果をまとめたもの 詳細設計書をもとにコードを書いたり、単体試験仕様書を考えるので、ないと困る代物である。 不要といわれる理由 Excel方眼紙を使った詳細設計書のメンテナンスを経験するといらない、と言いたくもなる。 ただでさえ、セルの結合と解除でぐずぐずになりやすいのに 手動で版管理する 共同編集ができない(新しいExcelではできる) あたりが組み合わさると、編集コストがかさんで気軽に直せなくなる。あるいは、修正するファイルを間違えたりする。 仕様書とコードの乖離が激しくなると、仕様書を見る機会は減り、仕様を考えている人と実装する人が直接やり取りして完結するようになる。 そして、納品物として必要だから書いているそれらしい仕様書、という本質を見失ったドキュメントが誕生する。 そういう背景はあるものの システムを作る上の共通の言語として、詳細設計書は必要だと思う。 ごりごりのフォーマットに落とし込んだ何かではなくてもいい。詳細設計を考えた時のアウトプットをすることで、自身の理解が深まるし、まとまっていればのちの改修作業で重要な情報になる。 ほかの人の読みやすさを少し意識すれば、自分はこのように考えています、と説明もしやすい。 案 詳細設計書 Excelかスプレッドシート 図式を使えるのは表計算系ソフトなので、セル結合は避けるなどルールを作って編集コストを下げられるのでは? Markdown対応のWiki 簡単な表組ならできるし、表現力は十分にあるように思う MkDocsなどのドキュメント生成ツール Markdownで書いてさっとアップできる テーブル仕様書 テーブル定義ファイルから自動生成 丁寧にコメント入っているなら定義ファイルを読めば事足りそう 関数・API仕様書 コードから自動生成 自動生成前提でコメントが入っているなら、コードを読めば事足りそう ざっと思いつくのはこんなところ。 改めて調べてみると、様々なやり方、ツールがあるので、コスパよくドキュメントにできるかもしれない。 雑感 今のところはMarkdown対応のWikiにまとめている。Excel方眼紙でないだけでやる気でるのだから面白い。

February 21, 2021 · Kei

Ruby on Railsをアップデートした話

サービスのホスティングをしているherokuからRubyのバージョンが古いとアップデートを促すメールが来た。 調べてみると、どうやら、このままだと数か月後にデプロイできなくなるという。 それは困るのでアップデートをすることにした。 現行 新 heroku-16 Stack heroku-20 Stack Ruby 2.3 Ruby 2.5.8 Ruby on Rails 4.2.6 Ruby on Rails 4.2.11.3 heroku-20 Stackの要件をコンパクトに目指す。 大まかな作業手順は確立していて、どんなGemを使っているのか、どんなコードを書いているのかで細かくわかれる。 アップデートの流れ Railsのアップデート 1回目のGemのアップデート この時点では大した変化なし Rubyのアップデート 2.3 -> 2.5だと破壊的な変更はないので特に悪影響出ず 2回目のGemのアップデート jQuery UIのファイル構成が変わって、画面が表示されなくなった。新しいパスを定義して無事起動するように 動作確認と不具合対応 各画面を開いて、表示が崩れていたり、動かない処理がないかの確認など 幸い、大きな問題はなかった デプロイテスト デプロイできるのかのテスト ここでメモリ消費量削減とパフォーマンス向上で導入していたビルドパックの対応状況があやしいことが発覚。あやしく見えただけで実は問題がなかった リリース いろいろやってきたことで、リリース自体は無事完了。準備は大事 アップデートの結果 Rubyの高速化の恩恵が非常に大きく、レスポンスが平均して1秒近く速くなっている。 あわせてタイムアウトが減った。 メモリ消費量の最大値が削減されて、システムリソースに余裕ができた。 一部ファイルアップロード機能の不具合が改善された。 どうやらGem由来の不具合だったらしい。 一週間強の作業でこの成果は大成功だろう。 課題 人力テスト テスト自動化が必要 Ruby on Rails 5とRuby on Rails 6 Gemの更新はもちろん、Rubyの変更もあり、コードに手を加える必要がある そこそこの規模感なのでそれなりの時間がかかるだろう はてさて、どうやっていこうか。

February 14, 2021 · Kei

Netlify CMSの導入

何だかままならいのでメモだけ。 既存のHugo製サイトにNetlify CMSを導入する。GitHubを使ってNetlify以外でのホスティングの場合 | tabosque.com Failed to persist entry: API_ERROR: Branch not found · Issue #4564 · netlify/netlify-cms 「NetlifyCMSのOAuth認証」Githubで失敗する件を解決した | 東京夜7時

February 13, 2021 · Kei

faviconを追加した話

faviconがないも寂しいのでfaviconを追加することにした。 dotgridで画像を作成する Favicon Generatorでfaviconを生成する static ディレクトリに生成したファイルを入れる デプロイ という手順で終わり。 dotgridは点を打った順番に線を引いてくれるタイプのソフトなので、絵が描けなくてもそれらしいものが作れて神! 参考 faviconを作る(HUGO) - Qiita

February 13, 2021 · Kei

ブログ作成

Hugo Netlify GitHub HTMLの生成はHugo、バージョン管理などはGitHub、ホスティングにはNetlify。 設定がややこしいところがあったものの、公式のドキュメントに従って進めていけば問題なし。 好きなエディタで書いて、git pushしたら記事が投稿できるのはなかなか面白い。 参考 Host on Netlify | Hugo この手順を踏めばOK 子猫を保護したので Hugo + Netlify を使って爆速で里親募集ページを作る - Qiita HugoとNetlifyで静的サイト構築するメモ(themeはsubmoduleを利用) - Qiita

February 13, 2021 · Kei