Architecture
Overview
あらゆる物事の構造や基本的な仕組みをまとめたセクション。
参考
TheTwelve-factor-app
MVC, 3層アーキテクチャから設計を学び始めるための基礎知識
設計理論がすごい
メルペイの事例に学ぶ、SSRとJAMstackのメリット・デメリット
DDDでアプリを作成する(これはすごい)
プロジェクト管理方法
monorepo(モノリポ)
アプリケーションが利用しているライブラリをすべて1つのコードリポジトリとデプロイプロセスで管理しようという開発手法。
さまざまなプロジェクト、多くのチームが1つのリポジトリを共有すると、リポジトリの更新頻度は必然的に高くなるでしょう。これによりリポジトリで多くのブランチを管理したり、ブランチをマージしたりするコストが増えることとなります。フィーチャーブランチや環境ごとのブランチなど、長命ブランチを複数保持するスタイルとは相性がよくありません。
※上記を鑑みてプルリクをissue駆動にするのはアリなのか。
モノリポでは、トランクベース開発を導入する
ポリリポ
対義語。プロジェクトごとに管理する手法
考え方
アーキテクチャとアーキテクチャスタイルは別物
デザイン(設計)とデザインパターンは別物
アプリケーション・アーキテクチャとして、以下のような選択があることが分かります。 レイヤー構成 ... 3層、ヘキサゴナル、クリーンなどから選ぶ プレゼンテーション層 ... MVC、MVP、MVVMなどから選ぶ ビジネスロジック層 ... トランザクションスクリプト、ドメインモデルから選ぶ
ので、「3層 + MVC + トランザクションスクリプト」といった構成や、「クリーンアーキテクチャ + MVVM + ドメインモデル」といった構成になるわけです。
どの組み合わせを採用すべきかは、開発規模や扱えるフレームワークとの相性などにより異なります。
ビジネスロジックとは
端的に理解するとなると アプリケーションをプレゼンテーション・ビジネスロジック・データアクセスの3つに分けたときプレゼンテーションでもデータアクセスでもない部分がビジネスロジック
ソフトウェア開発における4つのプロジ ェクト管理手法
ウォーターフォールモデル アジャイル スパイラルモデル プロトタイプ開発
SPA + REST API構成のサービス開発リファレンス
REST API
RESTはWebのアーキテクチャスタイル APIはシンプルな機能ごとに作られてこそ威力を発揮する。 そしてAPIは機能ごとに分けるのが定石 機能の単位とは?? 「リソース(何を)」と「メソッド(どうする)」で表現できる単位。 →Web APIでは、URL部分を「リソース」と見なし、HTTPメソッドとURLの組み合わせ
設計順序
UI(画面)がある程度固まって、データベース定義の初期段階。ER図ができたあたりからAPI設計をし始めるのをオススメする。
言語選定
Webサイト設計順序
- こんなサイトを作りたいと想像する
- 要件定義
- UI設計に入る
- DB設計
- この段階である程度欲しい機能がわかる
- API設計
以上
project start手順
技術選定
いまいちフロントエンドを理解する上司がいない場合もある 技術選定は最終的なgoalが必要で、そのGOALがどんなサイトかで選定は決まると思われる。 どんなサイトにしたいのかをまずは上席、またはビジネス側に伺う。
jQueryは重い。パフォーマンスは下がる
今までのレンダリング
最近はブラウザの中にも、これまでサーバ側で動いていたHTMLを構築するための仕組みが入ってきた。
なぜServer Side Rendiringが必要なのか
まずSEOが最初にあがる。
スケジュール
スケジュールの引き方は相手の依頼が間に合わないと遅くなると言う前提で作ると楽
実際にある業務をシステムに落とし込むとき
通常はある業務をシステムに落とし込むとき
- 現在の業務を適切に抽象化した分析モデルの作成、
- 分析モデルを基にした設計 という2回の射影が行う必要がある。 具体的には、前者はユーザヒアリングによる要件抽出、後者は要件を基にした仕様書作成/実装となる。
スケジュールの引き方は相手の依頼が間に合わないと遅くなると言う前提で作ると楽
要件定義からサービス作成まで(小さいパターンの場合)
-
簡単なサービス設計書を作成
-
サービス設計書のレビューがくるまで作成する
-
レビューがくる。ここで再度要件をつめる。
そのほうが早いでしょってこと
サービス設計書
サービス設計は要件定義と同一。 そのため他部署との折衝となるため、これができます。これはできませんという場となる。
これはサービス設計なので、仕組みではなく、どうするかを書いてください。 ex. 自動削除はしない。リクエスト毎の対応、または、要望があれば、別途打ち合わせの上、削除の自動化を行う。
仕事の進め方
大きく分けて以下のフェーズがある
- サービス設計
- 基本設計
- 詳細設計
- テスト
- 運用