本記事について
本記事はフリーランスSESの営業マンが記載しています。
背景として企業から「ビジネスロジックはフロントエンドで実装したい、できる人はいるか?」と聞かれ回答に困ったので、自分なりに調査しました。
非エンジニアのため記載に誤りがあった場合は優しくご指摘ください。
ビジネスロジックとは何か
システムが処理をしてデータベースに登録する部分をビジネスロジックと呼ぶことが多いです。
ただし、明確な定義ではなく使う人の解釈がかなり含まれているので、相手が「ビジネスロジック」という単語を使った場合は「〜の処理は含まれるか?」など認識のすり合わせはした方が良さそうです。
3層アーキテクチャの「アプリケーション層」に該当する部分だな、というのは以下記事を見てわかります。
Wikipediaでは以下のように説明されています。
データベース上のデータに対する処理手順といったようなものを指す、ソフトウェア工学的な用語である。
~中略~
エンタープライズ系(業務支援系)ソフトウェアを開発する企業が内部的に、もしくは顧客への販売促進のために用いる用語である。この用語は、主にプログラムが3層構造となるWebアプリケーション開発で使われる。ビジネスロジックは3層の中の中間層(アプリケーションサーバ)に相当する。いずれにしても、ビジネスロジックという用語は明確な定義がなく、人によって意味が異なる可能性がある。
e-Worksでは以下のように説明されています。
「3階層システム」(3-tier system)では、プレゼンテーション層(ユーザーインターフェース層)とデータアクセス層(データベース層)の中間に位置し、「ビジネスロジック層」あるいは「アプリケーション層」と呼ばれる。アプリケーション固有の処理やルールが記述される。
ビジネスルールとワークフローがビジネスロジックをつくる鍵になる
また、ビジネスロジックにはビジネスルールとワークフローの2つが大きく関わっています。
以下は自分なりの解釈を含みますが、2点のイメージを記載します。ビジネスの構造に合わせて定義されているルールです。
ECサイトで在庫がある商品のみ顧客は購入することができる、の「在庫がある商品のみ」などを定義し制御している部分がビジネスロジックで、ECサイトでカートに入れた商品のみ購入することができるなど一連の作業や手続きがワークフローです。
クリーンアーキテクチャでいうと「エンタープライズビジネスルール(Entities)」「アプリケーションビジネスルール(Use Cases)」などと表現されています。
おそらくサーバーサイドの話なので、バックエンドエンジニアがPHPやJavaなどで開発する部分だろうと思います。
フロントエンドエンジニアは何が求められるのか?
ここで疑問。
今回企業からは「ビジネスロジックはフロントエンドで実装したい、できる人はいるか?」と聞かれています。
なぜフロントエンドがビジネスロジックに関与するのか?
フロントエンドはクライアントサイド(ECサイトで言うと買い手、ユーザー側が見る部分)の実装をする人です。HTMLやCSS、JavaScriptなどで書いてるイメージです。
そのフロントエンドでビジネスロジックを実装させるとなると、サーバー側の処理も一部になって欲しいということでしょうか。
SPAを作るのであればサーバサイドにはAPIだけがあれば十分?
SPA(Single Page Application)とは、Webブラウザでページの移動をしなくてもよい単一ページのアプリケーションです。
SPAの開発にはReactやAngular、Vue.jsなどが使われることが多く、このライブラリ/FWがビジネスロジックの実装に関わっていて、「アプリケーション層」の実装に関わるとのことです(MVCフレームワークのModelとの部分)。
vtecxのブログに以下との記載があり、フロントエンドでもビジネスロジックを実装してそうです。
サーバサイドのビジネスロジックや帳票レイアウト作成においてもJavaScript(React)を利用できます.
~中略~
サーバサイドでレンダリングするのではなく、クライアントからAjax(XHR)でサーバのAPIにアクセスし、サーバからはJSONデータを返すのみとなります。これを、Thin Server Architectureといいます。
ビジネスロジックはクライアントサイドに移るので、サーバサイドはAPIができれば80%は完成したも同然です。
まとめ
つまり、「ビジネスロジックはフロントエンドで実装したい、できる人はいるか?」の回答はYesです。
また、どんな人なのかと聞かれたら、【React/Angular/Vue.jsの技術を使ってWebアプリケーション開発経験がある人】と言えるのかも?
参考
- ビジネスロジック - Wikipedia
- ビジネスロジック (business logic)とは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
- ビジネスロジックとは - IT用語辞典 e-Words
- React Server Componentsに感じたフロントエンドの消失 - Zenn
- フロントエンドエンジニアがすべてのシステムを作る未来 - vtecx
- SPAのフロントエンド実装は、モデルの理解が重要 - Yohei Isokawa