フロントエンドエンジニア 入社4か月目mmj blog

フロントエンドエンジニア 岸
フロントエンドエンジニア 岸
2017年12月14日

こんにちわ、フロントエンドエンジニアの岸です。

今はシステムリニューアル案件のフロントエンドをTypeScriptを使ってReactで実装しています。
このプロジェクトでは「ドメイン駆動設計(DDD)」という開発手法を採用しています。
DDDを行うことで一貫性、整合性のとれたシステム開発が行えるようです。

フロントエンドはDDDに沿った設計をするために「almin.js」というライブラリを使って開発しています。
DDDもalminも聞いたことがなかったのですが、プログラマーの方にサポートをしてもらいながら何とか実装を進められています。
僕のわかる範囲ですがalminのことについて簡単にざっくり説明します。
(何か間違ってたら教えてください…)

almin.js

alminでは処理の役割が以下のように分担されています。

・view
reactで書かれたファイルが置かれています

・usecase
クリックした時などのイベントで発生する処理や処理の流れが記述されています

・domain
「Repository」のinterfaceが記述されています

・Repository
「usecase」から渡された状態(State)を「database」に保存したり、「datebase」から状態(State)を取りに行って「store」に渡したりする処理が記述されています

・database
状態(State)を保存する場所です

・store
Stateを持つオブジェクト
「Repository」から状態(State)が渡されてきます

例えばクリックすると状態(State)が変わるボタンを押したとします。
ボタンをクリックすると「usecase」にstateを渡し、中に書かれている処理が行われます。
その処理の中に「Repository」に書かれているstateを保存する処理によって「database」に保存が行われます。
そして「Repository」に書かれているstateを渡す処理で「store」にデータを渡し最終的に「view」で描画します。

それぞれに役割があり、初めての僕でもこの処理はここに書くという判断が出来るのでコードの可読性は高いのだと思います。

DDD、alminについてわからないことが多く、本質はまだ見えていないですが、これから理解を深めていいシステムを作れたらと思います。
15日に社内でDDDの勉強会を行うようなので楽しみです。

2017年12月14日

フロントエンドエンジニア 岸 |

« »
このページのトップへ