Scala勉強会参加してみた!
注目されている言語である「Scala」に初心者でも参加できる機会をいただけたので、今日の勉強会の知識を残していこうと思います!
※興味だけで参加しているので、知識は凄く浅いです。
PHPエンジニアが始めるScala
”型安全”
PHPとの違いListに対して何が入っているか一目瞭然
型エイリアス
引数/返り値 一目瞭然
”ライブラリ”
CakePHPでドン!! → 選ぶ姿勢が生まれた
”不変”
immutableで安心
match/case を使用してしまえばifを使わなくてい良い
flatMap ... ここまで来ると分からない
Either Rigthはright! 回すの便利
登壇者も言ってましたが、私もチンプンカンプンでした。
「使わなくてもプロダクトのコードは書ける!」
"cats" in practice 関数ライブラリcatsの紹介とアドテクシステムにおける使用例
関数型ライブラリのデファクトスタンダード
以下のような関数型色の強いライブラリが内部でcatsに依存している。
syntax.option._
syntax.either._
面白い事ができる
NonEmptyList
-空でないことが保証されているList
sequence,traverse
-2重に包まれたMonadの順番をひっくり返す。
OptionT,EitherT
-2重Monadoのボイラープレートを減らす
登壇者:感想
まずは使ってみることも大事
使ってる内にだんだん理解してくる
※理解するには難しい領域だと感じた。
ScalaのDIパターンについて
DIとは何か?
コンポーネント間の依存関係をプログラムのソースコードから排除し、外部の設定ファイルなどで注入できるようにするソフトウェアパターンである。
何が嬉しいのか?
・結合度の低下・コンポーネント化の促進
・単体テストがしやすくなる
Manual DI
・コンストラクタ引数を使って手作業で配線
・一番簡単にDIする方法
Pros
一番手軽に始められる方法
Compile-time DI
Pure Scala
Cons
依存関係が多いと配線作業がつらい
小規模のプロジェクトならManual DI
Cake Pattern
コンストラクタ引数を使用しない面白いアプローチ
説明するのが難しい
Pros
Compile-time DI
Pure Scala
Cons
大量のボイラープレート
柔軟性が低い
パフォーマンス・コンパイルに難あり
MacWire
・Scala用ライブラリ
・マクロで配線してくれる
Manual DIの上位互換
Pros
・ボイラープレートが少ない
・ Compile-time DI
Cons
・マクロ(強いて言えば)
Guice
・Javaようフレームワーク
・ランタイム?
Pros
・ボイラープレートが少ない
・ 高機能で柔軟性が高い
・実行時に配線をコントロールできる
・javaで使ってた人は馴染みやすい
Cons
・Runtime DI
・学習コストが高い
何を使えばいいか? → お好きなのどうぞ
オススメ
・最初はMAnual DI から始めるのがオススメ
・Compile-time DI を使うと安全
感想
知らない用語も数多く存在し、学習コストも高く感じた。
未来の自分これを見て納得できるようになっていますように頑張っていきたいな思いました。
また、登壇トークをメモ書きしている程度なので、聞き取れない部分も多々ありました。
話を追っていくのが難しかった。