STEP 2
つくる
アプリを組み立てる知識。UI・フロント・バックエンド・DB・要件定義。
70本6時間48分7領域
UIとUXの違い画面上の操作部品と、利用開始から目的達成までの体験全体を区別する。情報設計情報の分類、優先順位、ラベル、検索、ナビゲーションを設計する考え方を説明する。画面遷移ユーザー操作によってどの画面・状態へ移るかを経路として設計する。フォームの入力設計入力項目、必須・任意、初期値、形式、補足、送信条件を整理する。クライアント側バリデーション入力直後に形式や不足を知らせる役割と、セキュリティ上サーバー検証を代替できない理由を説明する。状態と状態遷移未入力、入力中、送信中、成功、失敗など、画面が持つ状態を明示する。ローディング・空状態・エラー状態データ未取得、対象データなし、処理失敗を別の状態として設計する。フィードバックと通知操作結果、進行状況、注意、失敗、取り消し可能性をユーザーへ返す方法を説明する。レスポンシブデザイン画面幅・入力方式・利用状況の違いに合わせてレイアウトと操作を変える考え方を説明する。デザインシステム色、文字、余白、コンポーネント、状態表現を共通規則として管理する仕組みを説明する。
フロントエンドの責任範囲表示、入力、画面状態、通信開始、ユーザーへのフィードバックを担う層として整理する。コンポーネントUIを役割ごとの部品へ分け、組み合わせて画面を構成する考え方を説明する。props親コンポーネントから子コンポーネントへ値や設定を渡す一方向のデータ伝達を説明する。stateユーザー操作や通信結果によって変化し、再描画へ影響するデータを説明する。レンダリングstateやpropsから画面の出力を計算し直すReactの基本モデルを説明する。イベント処理クリックや入力などのイベントが状態更新や通信開始へつながる流れを説明する。Effect画面描画そのものではなく、外部システムとの同期に使う処理として説明する。ルーティングとレイアウトURLとページの対応、共通レイアウト、ネストされた画面構造を説明する。サーバーコンポーネントとクライアントコンポーネントサーバーで処理する部分とブラウザで対話性を持つ部分の境界を説明する。データ取得・キャッシュ・再検証取得場所、保存期間、古いデータ更新、ユーザーごとの差を設計する考え方を説明する。
バックエンドの責任範囲入力検証、業務ルール、認証判断、DB操作、外部サービス接続を担う層として整理する。WebサーバーとアプリケーションサーバーHTTP接続を受ける役割と、アプリ固有の処理を実行する役割を区別する。Node.jsランタイムブラウザ外でJavaScriptを実行し、ネットワークやファイルを扱う環境として説明する。ルートとハンドラーURLとHTTPメソッドに応じて特定の処理へ振り分ける仕組みを説明する。ミドルウェア認証、ログ、入力解析、CORSなどの共通処理を本処理の前後へ挟む仕組みを説明する。サーバー側入力検証型、形式、長さ、範囲、権限、存在確認を信頼境界で検査する理由を説明する。業務ロジック単純なデータ保存ではなく、サービス固有の判断規則をコード化する層として説明する。例外処理とエラー応答内部エラーを記録しつつ、利用者へ必要最小限の情報を返す設計を説明する。ファイルストレージDBに保存する構造化データと、画像・PDF等のオブジェクト保存を区別する。ステートレスとステートフルサーバーがリクエスト間の状態を持つ設計と、外部保存へ分離する設計を比較する。
APIとは何かソフトウェア同士が決められた形式で機能やデータを利用する接点として定義する。エンドポイントとAPI契約URL、メソッド、入力、出力、エラー、認証方式を合意事項として扱う。RESTの基本原則リソースをURLで表し、HTTPメソッドで操作する設計の考え方を説明する。JSONとシリアライズメモリ上のデータを通信・保存可能な文字列表現へ変換する仕組みを説明する。認証付きAPIトークンやCookieを要求へ含め、サーバーが利用者を識別する流れを説明する。外部APIを利用する流れ仕様確認、認証、送信、応答解析、失敗処理、利用制限の順に説明する。Webhook相手側でイベントが起きたとき、指定URLへ通知を送る仕組みを説明する。定期実行時刻や間隔を条件にサーバー処理を開始するスケジュール実行を説明する。ジョブキュー時間のかかる処理をリクエストから切り離し、待ち行列で順番に実行する仕組みを説明する。再試行・タイムアウト・冪等性通信失敗時の再実行で二重処理を起こさないための設計を説明する。
データベースとDBMSデータそのものと、保存・検索・更新・整合性を管理するソフトウェアを区別する。リレーショナルデータベース表形式のデータと、キーによる表同士の関係で情報を表現する考え方を説明する。テーブル・行・列・型保存単位と属性、各列が許容する値の種類を説明する。主キー・外部キー行を一意に識別するキーと、別テーブルの行を参照するキーを説明する。一対一・一対多・多対多現実の関係をテーブルへ落とす基本パターンを説明する。SELECTと絞り込み必要な列・行を条件に基づいて取得するSQLの基本構造を説明する。JOIN複数テーブルの関連行をキーで結合し、一つの結果として取得する仕組みを説明する。INSERT・UPDATE・DELETE新規作成、変更、削除がデータ状態へ与える影響を説明する。制約・トランザクション不正データを防ぐ制約と、複数処理を一まとまりで成功・失敗させる仕組みを説明する。インデックス・マイグレーション・バックアップ検索高速化、構造変更、障害復旧という異なる目的の仕組みを整理する。
企画と要件定義の違い何を作る価値があるかを考える活動と、作る対象・条件を明文化する活動を区別する。課題と要望の違い利用者が求める機能の背後にある、解決すべき状態や原因を分けて考える。対象ユーザー誰が、どの状況で、何を達成したいかを具体化する。現行業務の分解担当者、入力情報、手順、判断、出力、例外、引き継ぎに分けて業務を理解する。機能要件ユーザーやシステムが実行できる処理を、入力・条件・結果で記述する。非機能要件速度、可用性、セキュリティ、容量、保守性、利用環境など品質条件を定義する。MVP検証したい仮説に必要な最小範囲を定め、単なる未完成版と区別する。ユーザーストーリー利用者、目的、価値の形式で要求を表し、実装機能だけに偏らないようにする。受入条件どの状態になれば要件を満たしたと判断するかを観測可能な条件で記述する。優先順位とスコープ価値、緊急度、依存関係、リスク、工数を基に作る順番と対象外を決める。
設計とは何を決める作業か要件を満たすために、部品、責任、接続、データ、例外、品質条件を決める活動として説明する。画面設計画面の目的、表示情報、操作、状態、遷移、権限を定義する。データ設計保存対象、属性、関係、制約、履歴、削除方針を定義する。API設計機能の境界、入力出力、認証、エラー、互換性を定義する。責任分離UI、業務ロジック、データアクセスなどを分離し、変更影響を限定する考え方を説明する。結合度と凝集度部品同士の依存を弱くし、同じ目的の処理を一つにまとめる設計指標を説明する。モノリスとマイクロサービス一体構成と分散構成の利点・複雑性を、小規模開発の判断基準とともに説明する。同期処理と非同期処理の設計判断即時結果が必要な処理と、後で完了してよい処理を分ける基準を説明する。可用性・拡張性・保守性止まりにくさ、利用増加への対応、変更しやすさという異なる品質を説明する。技術選定とトレードオフ慣れ、要件、運用、費用、制約、将来変更を基に選び、万能な技術がないことを説明する。