設計力を身につけるナレッジ#2

本ナレッジはプロを目指す方向けにしっかりと理解して頂きたい内容をまとめたナレッジです。
現役で活躍しているプログラマーであって設計力の不足が問題になることがあります。
しっかりとした設計力とプログラミング力を持ち合わせていればとても強力な武器・アピールポイントとなります。

設計力とは

image

携わるプロジェクトで要求されていることを含め、目的・目標を理解していることを明確にすることが可能です。
その他、次の作業や効率向上につながる情報整理も兼ねていますのでとても重要な能力です。

  1. 目的・目標を明確化できる
    ゴールの線引きがしっかりとできる=委託の際のトラブルを減らせる
  2. タスク化しやすい
  3. スケジュール管理
    ロードマップ・マイルストーン作成のための資料に
  4. チームメンバーの作業分担がしやすい
  5. 必要な作業に集中できる
    不要な作業を生まない
  6. 全体を把握することができる
    クラス構成図の作成、プログラム設計に必要な資料が作れる
  7. 資料化することで後任者へ引継ぎがスムーズに行える
  8. プログラム実装前にロジックの流れを考案できる
    メンテナンスできないような複雑なコード作成を事前に防ぐ(スパゲッティーコード防止に)

企画書について

大まかにプロジェクトを立ち上げるきっかけやプロジェクトの目的および主要なウリとなる機能などについて説明された資料です。
商品のアイディアを記載しており利用者・お客が魅力に感じられる要素を明確にします。
プロデューサーや株主など投資を行う人から見て納得のいく内容を含む必要もあります。
場合によっては会社としての方針・風潮に左右されてしまうこともあるかもしれません。

ファイルの形式としては一般的にはWordやPDFの形で作成されます。
業務委託などで請け負う場合に関しては発注元から提供される場合もありえます。

企画書はプログラマーというよりは企画職の人が作るものではあります。
ですが企画段階でプログラマーの能力に応じた企画を練ることも大事です。
プロジェクトメンバーの能力を超えるものを作るには追加の学習であったりミドルウェアの購入で補ったりと想定以上の費用が掛かることが考えられます。
企画の段階で何段階かあらかじめゴールを決めておくことが重要です。

最低限ライン

絶対に必要な機能を一通り実装できており、それぞれの機能が合わさった状態で正常に動作すること。
トラブル等が発生してスケジュールが大幅に遅れてしまった場合でも対応できる範囲であること。

基本ライン

最低限ラインに合わせて、便利な機能やオプション機能が十分に実装できていること。

チャレンジライン

メンバーの能力や実力以上の追加の機能などが実装できていること。
次のプロジェクトへつながる強みと言える機能などがバグ等があっても実現できていること。

要求仕様書について

大まかに要求定義・要求仕様としてどのような機能があり何が実現できるのかを一覧にまとめて説明された資料です。
企画書と仕様書の中間の位置づけで例としては発注元・委託元からの要望を満たしているかの判断を行うための資料となります。
契約内容にもよりますが要求仕様書に記述した機能のみを実装する契約を行い責任を明確化にすることでトラブルを減らせます。
そのため仕様書ほど細かな情報は含みません。

ファイルの形式としては一般的にはExcelや表の形で作成されます。

要求定義・仕様は業務委託を受けた側が発注元の要望を会議などで口頭で大まかに確認して資料とすることもあります。
その他、大雑把な必要な機能をあらかじめリストなどで提供を受けた状態から始めることもあります。

要求仕様の例(簡易)

  1. ログインが必須の社員向けのブラウザベースのデータ入力ツールである
  2. ブラウザはGoogle Chrome・firefox・Edgeに対応(作業時間短縮)
  3. PCのみでアクセスを行う、解像度は1000x800以上前提のUI(作業時間短縮)
  4. ログインフォームのページではログインに必要なフォーム以外表示しない
  5. IPアドレスを用いてアクセス制限を行う(セキュリティー強化)
  6. ユーザーは管理者アカウントで追加・削除が行え任意に登録はできない(事前許可制)
  7. ログイン後はダッシュボードとして〇〇〇を表示する
  8. グループ機能がありユーザーをグループで管理できる
  9. 入力したデータは履歴を保持していつでも任意に前のデータへ戻せる

要求仕様書の作り方に関してはご契約を頂いた方へご要望に合わせて説明させて頂きます。