WebエンジニアのLoL日記

LoLをプレイしたりLJLの試合を見たりするのが好きなエンジニア。LoLのイベントやパッチノートなど気になった点を記事にしたり、LJLについの記事をかいたりしています。某社でWeb系のエンジニアとして働いているので、技術系の記事もたまに書きます。コンタクトを取りたい場合はtwitterまで。

【ScalaMatsuri2018】がくぞさん「なぜComposabilityは重要か」メモ

もくじ

資料

http://gakuzzzz.github.io/slides/why_composability_matters/

はじめに

Scalaオブジェクト指向 + 関数型プログラミングという言語 最近のプログラニング言語はラムダ関数などの関数型プログラミングの要素を含んだオブジェクト思考言語も多い Composabilityというのが特にscalaの特徴である

そもそもComposabilityとは?

そのまえにCompositionとはなんだろう。

Compositionとは

Composition=構成

といってもいろいろあったりする。Function composition, Object composition, デザインパターンのComposit pattern などなど…

複数のOptionインスタンスから新しいOptionインスタンスを作ることもCompositionという。

同じ概念の異なる要素を特定の方法で組み合わせて同一の別概念を作ること

(動画IDとスレッドIDを組み合わせてWatchIDとするみたいな?(適当))

Composabilityとは

Composabilityが高い/低い とは。

このセッションでは、2つの概念を比較して合成する「方法」が(相対的に)多い側をComposabilityが高いと表現することにする。

なぜComposabilityは重要か

プログラミングはいかに複雑な問題を分解するかが重要。

独自型の変換

例えばWebフレームワークを考える。HTTPを受け取って何らかの処理をしたい。当然HTTPのリクエストはテキストなので、扱いやすくクラスにマッピングしてやりたい。

そこで Conversion Custom Typesがある。Play Frameworkとかで使える。

Jsonと型のマッピングも同様

モナドなんかもComposabilityのためのデザインパターン

参考