-
よしだ
-
とある人材紹介会社のマーケティング部門のデータエンジニア(自称)
-
好きな言語: Groovy
-
好きなIDE: IntelliJ IDEA
-
Scala歴: 3年(2015~)
-
ScalaMatsuri 2016, 2017, 2018 スタッフ
- 事業KPIの可視化を行うためのWebアプリケーションの設計から運用
- Scalaを使って日次や月次の集計バッチを実行するアプリケーションの作成
- 帳票や外部APIなどからデータベースへデータを投入するツールの作成
- 部門の日常業務を改善するためのちょっとしたツールの作成
-
Scalaを導入過程
- PHPからScalaへの移行
- Scalaの社内勉強会
-
導入して3年経っての振り返り
-
今後について
Akka Streamsへ移行しとるんやけどちょっと聞いてや
週一で社内勉強会を開催。
Scala研修用テキストを利用。
参加者は、同じチームに新しく入ってきた人と別のチームで今後Sparkを使っていく人。
バックグラウンドにJavaを使ったことがない人や、Pythonを使っていた人がいたので、 Scalaだけにフォーカスするよりも、違いや、躓き易い箇所を重点的に補足するようにしました。
補足説明として、以下のような内容を説明
- JavaやPythonとの違い
- 歴史的経緯の説明
- 実プロダクトでどう使われているのか
テキストだけに限らず、Scalaに関する英語のドキュメントや日本語の資料を使って説明したので、 だいぶ寄り道をしたり、回数は増えてしまったと反省してます。
但し、困った時にどこに探しに行けばいいのか、見つかったドキュメントが古いのか新しいのかを見分ける手段を伝えられたと思います。
ref: Good/Bad と 事実/気持ち から始める「ふりかえり」の手引き
- 型合わせゲームになってしまう
java.util.concurrent
等のJavaの知識や、運用ではJVMの知識が必要になってくる- 関数型プログラミングのパラダイムへの理解が必要
- 教えられる人を育てるのが難しい
Scalaのスキルを習得していくに連れて、解決出来る範囲が増える
- Better Java
- -> Futureによる非同期処理
- -> Akkaによる非同期処理
- -> Akka Streamsによる処理の抽象化
- -> Akkaによる非同期処理
- -> Futureによる非同期処理
教育や採用の難しさ
-
社内勉強会を通して、採用時にどのようなスキルを持った人が来てほしいか、どういった考えを持っている人であればScalaを学んで行けるのかの模索
チームとして持続可能な開発をしていくための環境づくりをやっていく気持ちになった
Scalaの表現力と業務の言葉がマッチして、コードがドキュメントになっていく感覚は面白い
自分が成長しているという感覚が楽しい
小さいチームでも必要に応じて新しい技術を取り入れるための仕組み、環境づくりを模索していく