Create a gist now

Instantly share code, notes, and snippets.

@grimrose /LT.md
Last active Feb 3, 2018

What would you like to do?

とあるマーケティング部隊とエンジニアとScalaの導入

お前、誰よ

  • よしだ

  • とある人材紹介会社のマーケティング部門のデータエンジニア(自称)

  • 好きな言語: Groovy

  • 好きなIDE: IntelliJ IDEA

  • Scala歴: 3年(2015~)

  • ScalaMatsuri 2016, 2017, 2018 スタッフ

普段の仕事

  • 事業KPIの可視化を行うためのWebアプリケーションの設計から運用
  • Scalaを使って日次や月次の集計バッチを実行するアプリケーションの作成
  • 帳票や外部APIなどからデータベースへデータを投入するツールの作成
  • 部門の日常業務を改善するためのちょっとしたツールの作成

話すこと

  • Scalaを導入過程

    • PHPからScalaへの移行
    • Scalaの社内勉強会
  • 導入して3年経っての振り返り

  • 今後について

Scalaの導入過程

PHPからScalaへの移行

Akka Streamsへ移行しとるんやけどちょっと聞いてや

Scalaの社内勉強会

週一で社内勉強会を開催。

Scala研修用テキストを利用。

参加者は、同じチームに新しく入ってきた人と別のチームで今後Sparkを使っていく人。

バックグラウンドにJavaを使ったことがない人や、Pythonを使っていた人がいたので、 Scalaだけにフォーカスするよりも、違いや、躓き易い箇所を重点的に補足するようにしました。

補足説明として、以下のような内容を説明

  • JavaやPythonとの違い
  • 歴史的経緯の説明
  • 実プロダクトでどう使われているのか

テキストだけに限らず、Scalaに関する英語のドキュメントや日本語の資料を使って説明したので、 だいぶ寄り道をしたり、回数は増えてしまったと反省してます。

但し、困った時にどこに探しに行けばいいのか、見つかったドキュメントが古いのか新しいのかを見分ける手段を伝えられたと思います。

導入して3年たっての振り返り

ref: Good/Bad と 事実/気持ち から始める「ふりかえり」の手引き

Good and Bad

Good

  • 巨人の肩に乗る
  • コンパイラーとIntelliJ IDEAに教えてもらいながらスキルを磨ける
  • EitherとValidation(scalaz, Cats) によるエラー処理の抽象化

Bad

  • 型合わせゲームになってしまう
  • java.util.concurrent等のJavaの知識や、運用ではJVMの知識が必要になってくる
  • 関数型プログラミングのパラダイムへの理解が必要
  • 教えられる人を育てるのが難しい

事実 and 気持ち

事実

Scalaのスキルを習得していくに連れて、解決出来る範囲が増える

  • Better Java
    • -> Futureによる非同期処理
      • -> Akkaによる非同期処理
        • -> Akka Streamsによる処理の抽象化

教育や採用の難しさ

気持ち

チームとして持続可能な開発をしていくための環境づくりをやっていく気持ちになった

Scalaの表現力と業務の言葉がマッチして、コードがドキュメントになっていく感覚は面白い

自分が成長しているという感覚が楽しい

今後

小さいチームでも必要に応じて新しい技術を取り入れるための仕組み、環境づくりを模索していく

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment