モジュール
モジュールは目的の処理を行うために、複数のプログラムをまとめたものである。 モジュールは粒度の概念が重要になる。あまりに細かくモジュールを作成すると、小回りは効くが組み合わせが複雑になり再利用が難しくなってしまう。 一方で、大きすぎるモジュールは逆に小回りが効かなくなり、再利用が難しくなる。 モジュールの単位は、適度なサイズであることが望ましい。
どのようなモジュールを用意するかは、各会社それぞれだとも言えるが、ここでは私が用意した基本モジュール一覧を参考にしてほしい。 これが、web サービスを構成する基本モジュール 13 個である。

web サービスには共通する機能があり、それを再利用可能なモジュールと呼ぶ。 モジュールは取捨選択が可能なプログラムのユニットである。 web サービスによっては「サムネイルの更新」モジュールは必要ないかもしれない。 その場合はモジュールを利用しない選択が可能である。 モジュールはカプセル化されており、依存関係さえを満たせば取り付け取り外しが可能なようにしておく。
moduleの構造
@startuml
rectangle "テンプレート" as TP #wheat
rectangle "メール送信" as MAIL #lightblue
rectangle "新規アカウント作成" as UN #lightblue
rectangle "ログイン" as LOGIN #lightblue
rectangle "コンテンツのCRUD" as CON #lightblue
rectangle "シリアライザー" as SERIAL #lightblue
rectangle "ページネーション" as PAGE #lightblue
rectangle "画像のアップロード" as IMG #lightblue
rectangle "ユーザー" as USER #lightblue
rectangle "カウント" as COUNT #lightblue
rectangle "お気に入り" as FAV #lightblue
rectangle "タグ" as TAG #lightblue
rectangle "検索" as SEARCH #lightblue
rectangle "デプロイ" as BETA #lightblue
'rectangle "フィクスチャー" as FX
'rectangle "フォロー" as FOLLOW
'rectangle "通知" as ALERT
TP -r->> MAIL
MAIL -r->> UN
UN -r->> LOGIN
LOGIN -r->> CON
CON -d->> SERIAL
SERIAL -d->> PAGE
PAGE -d->> IMG
IMG -d->> USER
USER -l->> COUNT
COUNT -l->> FAV
FAV -l->> TAG
TAG -l->> SEARCH
SEARCH -l->> BETA
@enduml