猫でもわかるWeb開発・プログラミング

本業エンジニアリングマネージャー。副業Webエンジニア。Web開発のヒントや、副業、日常生活のことを書きます。

【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のためのデザインパターン

参考