Slide 1

Slide 1 text

医療事業開発チー ム 2016-09-07 エンジニア全体MTG

Slide 2

Slide 2 text

の前に、 先週みんなを置き去りに してしまった型クラスの話 2

Slide 3

Slide 3 text

まず、「 型クラス」 という名前が良くない 英語で「type class」 「class」 は、 オブジェクト指向における「 クラス」 とは まったく関係がない この発表では、 混乱しないように、 「 型クラス」 のことを 「 型ホゲ」 と呼びます ( 理解が進むとしっくりくるんだけどねw) 3

Slide 4

Slide 4 text

型ホゲとは何か 定義の話は今回は省略 何のために使うものか 4

Slide 5

Slide 5 text

型安全 アドホックな「 性質」 の付与 5

Slide 6

Slide 6 text

Java( 静的型付けオブジェクト指向) interface Walker { void walk(); } class Cat implements Walker { private int x = 0; public void walk() { x++; } } 6

Slide 7

Slide 7 text

Ruby( ダックタイピング+ オー プンクラス) class Cat; end class Cat def walk @x = (@x || 0) + 1 end end 7

Slide 8

Slide 8 text

レガシー な言語は、 この両立ができない 型安全 アドホックな「 性質」 の付与 8

Slide 9

Slide 9 text

Swift( 型ホゲ) // 性質 protocol Walker { func walk() } // デー タ構造 struct Cat {} // 性質の実装 extension Cat: Walker { func walk() { // ... } } 9

Slide 10

Slide 10 text

型ホゲがあるとどんな設計になっていくか 「 デー タ構造」 の部分はあらゆるメソッドを持たず、 本当にデー タだけを持つ デー タに紐づくあらゆる処理は、 型ホゲとして切り出される 設計の段階で、 その「 性質」 の本質に迫っていく 抽象化 圧倒的な汎用性( 例: モナド) 10

Slide 11

Slide 11 text

例 trait Semigroup[T] { def append(t1: T, t2: T): T } trait Monoid[T] extends Semigroup[T] { def zero: T } def double[T: Semigroup](t: T): T = append(t, t) def sum[T: Monoid](l: List[T]): T = l.foldLeft(zero)(append) ※ ほぼScala だけど一部省略した記法になってます 11

Slide 12

Slide 12 text

型ホゲおもしろい! 12

Slide 13

Slide 13 text

たぶん1 割ぐらいしか伝えられてないと思うので、 深く踏み込んでみたい方いたら教えてください 13

Slide 14

Slide 14 text

ここから本題の医療事業チー ムの話 14

Slide 15

Slide 15 text

開発手法の話 15

Slide 16

Slide 16 text

圧倒的ディレクション力を中心とした 開発フロー 16

Slide 17

Slide 17 text

よくあるSpeee の開発チー ム 17

Slide 18

Slide 18 text

医療事業開発チー ム 18

Slide 19

Slide 19 text

かわりに 技術と向き合う時間が増えた 19

Slide 20

Slide 20 text

エンジニアが技術と向き合う 圧倒的スピー ド 「 新規機能追加」 レベルの開発を半日~3 日で回し続ける ディレに「 思ったより早く開発進んでる」 って言わせろ 実現難度の高い要望も成し遂げる 利用経験のない技術でも何でも使って実現する 代替案なんか考えてる暇があったら実現方法を考えろ エンジニアは「 魔法使い」 20

Slide 21

Slide 21 text

技術的な話 21

Slide 22

Slide 22 text

Elasticsearch みんなどんどん使えばいいと思う Pros 公式ドキュメント読めば十分な知識手に入る クラスタ増強である程度パフォー マンス維持できる安心感 Cons デー タ設計やクエリ構築に慣れは要る Rails がサポー トしてくれるわけではないので頑張る必要はある 22

Slide 23

Slide 23 text

SPA (Single Page Application) 操作感めちゃめちゃ気持ちいい 日本はまだそんな雰囲気ないけど、SPA 当たり前の時代来る いつやるの? 今でしょ、 感 意外とview がボトルネックになりやすいRails の強い味方 ( ただしSprockets、 お前はダメだ) Angular? React? ウチはReact Router でSPA 23

Slide 24

Slide 24 text

React!!! React Router Simple!! ソー スコー ド読めば分かる Redux Flux フレー ムワー ク 公式ドキュメントにベストプラクティスまで用意されてる 「Redux にきちんと乗ること」 が、 フロントをスパゲッティにしないコツ 秩序と柔軟性の絶妙なバランス 24