Upgrade to Pro — share decks privately, control downloads, hide ads and more …

システムリニューアルと現場からみたサーバサイドKotlin #m3kt

jomjomni
November 22, 2017

システムリニューアルと現場からみたサーバサイドKotlin #m3kt

jomjomni

November 22, 2017
Tweet

Other Decks in Technology

Transcript

  1. リニューアルについて • 10年近く運用している • 運用が辛くなってきている。 • 新規エンジニアの学習コストが高い • 影響範囲が把握しづらい •

    DBのデータの重複やソースコードの処理の重複が多数 ありリファクタリングもままならない。 • 手が空いたらやる。 • いつ手が空くの? 6
  2. リニューアル前の現状 11 メインサイト Rails サテライト サイト Java(独自FW) 管理者用サイト Java(独自FW) DBその1

    DBその2 ElasticSeach 1.5 Lucene Lucene 現在のシステム構成(簡略版) Web-frontの構成が 統一されていない
  3. リニューアル前の現状 12 メインサイト Rails サテライトサイト Java(独自FW) 管理者用サイト Java(独自FW) DBその1 DBその2

    ElasticSeach 1.5 Lucene Lucene 現在のシステム構成(簡略版) 管理するDBが2つある。 重複しているテーブル、 データが多数ある。
  4. リニューアル前の現状 13 メインサイト Rails サテライト サイト Java(独自FW) 管理者用サイト Java(独自FW) DBその1

    DBその2 ElasticSeach 1.5 Lucene Lucene 現在のシステム構成(簡略版) 検索エンジンが複数ある。 ElasticSearchの Versionが1.5と古い・・・
  5. リニューアル前の現状 14 メインサイト Rails サテライト サイト Java(独自FW) 管理者用サイト Java(独自FW) DBその1

    DBその2 ElasticSeach 1.5 Lucene Lucene 現在のシステム構成(簡略版) 独自FW! |ω・ o)
  6. リニューアル前の現状 16 作業選定の基準 効果 開発時間 高い 低い 少ない 作業A 作業C

    多い 作業B 作業D 作業の優先度  作業A > 作業B ≒ 作業C > 作業D
  7. リニューアル後の期待する効果 19 システムA Rails5.1 システムB Rails5.1 システムC Rails5.1 DB ElasticSeach

    5.6 リニューアルのシステム構成(簡略版) API Server Kotlin Vue.js Vue.js Vue.js
  8. リニューアル後の期待する効果 20 システムA Rails5.1 システムB Rails5.1 システムC Rails5.1 DB ElasticSeach

    5.6 リニューアルのシステム構成(簡略版) API Server Kotlin Vue.js Vue.js Vue.js Web-Frontの構成を 統一する!
  9. リニューアル後の期待する効果 21 システムA Rails5.1 システムB Rails5.1 システムC Rails5.1 DB ElasticSeach

    5.6 リニューアルのシステム構成(簡略版) API Server Kotlin Vue.js Vue.js Vue.js 各システム間の ロジック重複を削 減! 型付き言語で 堅牢にする。
  10. リニューアル後の期待する効果 22 システムA Rails5.1 システムB Rails5.1 システムC Rails5.1 DB ElasticSeach

    5.6 リニューアルのシステム構成(簡略版) API Server Kotlin Vue.js Vue.js Vue.js DBを1つにする! テーブルやデータの 重複をなくす!
  11. リニューアル後の期待する効果 23 システムA Rails5.1 システムB Rails5.1 システムC Rails5.1 DB ElasticSeach

    5.6 リニューアルのシステム構成(簡略版) API Server Kotlin Vue.js Vue.js Vue.js 検索エンジンを1つにする! ElastinSearchの Versionを5.6にする!
  12. Kotlin導入後 29 リストの操作が簡単です。 val numbers = arrayListOf<Int>(1, 2, 3, 4).map

    { it + 1 } print(numbers) -> [2, 3, 4, 5] val numOne = arrayListOf<Int>(1, 2) val numTwo = arrayListOf<Int>(3, 4) val numCombine = numOne.flatMap{ one -> numTwo.map{ two -> one + two }} print(numCombine) ->[4, 5, 5, 6]
  13. Kotlin導入後 30 リストの操作が簡単です。 val numbers = arrayListOf<Int>(1, 2, 3, 4).map

    { it + 1 } print(numbers) -> [2, 3, 4, 5] val numOne = arrayListOf<Int>(1, 2) val numTwo = arrayListOf<Int>(3, 4) val numCombine = numOne.flatMap{ one -> numTwo.map{ two -> one + two }} print(numCombine) ->[4, 5, 5, 6] 何も宣言しないと 要素名が it と自動的に命名さ れる。
  14. Kotlin導入後 31 リストの操作が簡単です。 val numbers = arrayListOf<Int>(1, 2, 3, 4).map

    { it + 1 } print(numbers) -> [2, 3, 4, 5] val numOne = arrayListOf<Int>(1, 2) val numTwo = arrayListOf<Int>(3, 4) val numCombine = numOne.flatMap{ one -> numTwo.map{ two -> one + two }} print(numCombine) ->[4, 5, 5, 6] 予め要素名を宣言することもできる。 ネスト処理の時にわかりやすくなる。
  15. Kotlin導入後 33 Null-safety 効果的な場面 • DBのカラム属性と合わせる • APIのパラメータと合わせる • NullPointerExceptionの早期発見

    val nullableString: String? = null -> コンパイルOK val notNullString: String = null -> コンパイルエラー
  16. まとめ 44 作業選定の基準 効果 開発時間 高い 低い 少ない 作業A 作業C

    多い 作業B 作業D 作業の優先度  作業A > 作業B ≒ 作業C > 作業D
  17. まとめ 46 作業選定の基準 効果 開発時間 高い 低い 少ない 作業A 作業C

    作業B 作業D 多い 作業の優先度  作業A > 作業B ≒ 作業C > 作業D  変わらない・・・!