LoginSignup
1
0

More than 5 years have passed since last update.

Scalaを知るために参加した勉強会【2017/12/4 メモ】

Posted at

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 を使うと安全

感想

知らない用語も数多く存在し、学習コストも高く感じた。
未来の自分これを見て納得できるようになっていますように頑張っていきたいな思いました。
また、登壇トークをメモ書きしている程度なので、聞き取れない部分も多々ありました。
話を追っていくのが難しかった。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0