VPNサービスと動画配信サイト

先日、タイにいってきました。
その際にJリーグの試合の観戦をしたくてHotspotVPNを利用して日本サーバから接続してみましたが観ることはできませんでした。
以前はこの方法で海外から接続できたことがあったのですが。。ついでにスカパーオンデマンドもダメでした。

おそらく有名どころのVPNサービスが利用しているIPアドレスをブラックリスト化しているのかなと思われますが利用者側からすると残念です。
海外での配信権を持っていないからということだと思うので実際VPNを利用してもみられないのがサービス提供者としては正しい状況です。

ゲームや動画配信の権利って音楽に比べると全世界で提供できるようなライセンスを取得するのが難しいものなのですかねえ?
そもそもサービス提供者がコンテンツごとの配信料を視聴数とかで従量で権利者に支払うような契約ができるなら再生された分だけきちんと権利者に支払いがされて、視聴を制限するよりもみんな得すると思うのですけどそうも行かない事情があるのかな。

コンテンツを持っている人にきちんと利益を配分しつつ、ユーザが利用しやすいようになるといいなあと思ったのでした。

DDDを実践するときのアーキテクチャ

エリックエバンス本や実践ドメイン駆動を読んでも思想的なところは定義されているものの実際のプロジェクトの中でどう落とし込むのかについては、それぞれで考えないといけないです。

DDDと一緒に語られているアーキテクチャについてよくまとまっている記事がQiitaにあったので参考に。

今、進行中の案件ではKotlinでSpringBootを使ってバックエンドのAPIを開発していて、
普通にやるといわゆるMVCの三層アーキテクチャになってしまうのですがここにドメインモデル層を確立してドメインロジックを集約したいなと思っています。

Controller -> Presentation
Service -> Application

思想的なところでのマッピングとしてここまではよくて、
ドメインモデルとORマッパー実装を切り離しドメインモデル層を確立しないといけないです。
ORマッパーはMyBatisを採用しています。
model層にはモデルとMapperのinterfaceを定義しinfrastracture層にMyBatisに特化した実装を逃しています。

以下のようなinterfaceをmoodel層に定義し、

infrastracture層には以下を定義します。

Couponモデルに値オブジェクトとしてCouponCodeを定義していたり、Couponのビジネスロジックを集約するようにします。

こんな感じで三層アーキテクチャ+ドメインモデルを試みておりますがまだまだ色々と試行錯誤を繰り返しています。

DDDを開発現場に落とし込む

Webアプリの開発現場において、Spring Bootを使っていわゆるMVCの三層モデルで構築してきました。
最近流行りのドメインモデルをきちんと理解してオブジェクト思考で開発することのメリットを最大限に生かしたいなと。

DDD本といえばまずはこの2冊。
“エリック・エヴァンスのドメイン駆動設計”

“実践ドメイン駆動設計”

実践ドメイン駆動設計の方がより具体的にイメージがしやすいので読みやすいが、それでもなかなか理解するのが難しい部分も多い。

そこで合わせて読みたいなと思ったのがこちら。
“現場で役立つシステム設計の原則 〜変更を楽で安全にするオブジェクト指向の実践技法”

一見、DDD本には見えない題名ですが、ドメインモデルを駆使した設計の話が全体で説明されており、難解なDDD本の理解を助けてくれるものと思いました。
これだけを読むというよりはこの本を読み進めつつ、”実践ドメイン駆動設計”の該当する章も参照するなどすると理解が深まると思います。

最近、読んだ本では結構オススメです。