「実戦での Scala 〜 6つの事例から知る Scala の勘所〜」を開催しました!

_IGP5843

こんにちは、江口です。

2月21日(土)に「実戦での Scala 〜 6つの事例から知る Scala の勘所〜」をスマートニュース株式会社さんと共同で開催いたしましたので、その様子と発表内容を公開された資料とともに簡単に紹介します。

場所は渋谷にあるスマートニュースさんの新オフィスで行われました。Scalaへの注目度の高さもあってか、当日は広いスペースに用意された座席がほぼ満席という盛況具合でした。

ビズリーチの新サービスをScalaで作ってみた ~マイクロサービスの裏側 (株式会社ビズリーチ 竹添さん)

最初に、株式会社ビズリーチの竹添さんから、新サービスであるスタンバイという求人検索エンジンの開発についての発表が行われました。

サービス全体のアーキテクチャにマイクロサービスを採用し、各サービスの実装にはScalaを採用したというような内容でした。 Scalaを採用した理由として、並列処理の記述が容易なこと、静的型付けの安全性を挙げられていました。 具体的な例としてFutureを使用したコードや、HTMLのインデキシング処理には並列分散処理を手軽に記述できるScala製の高速バッチ処理フレームワークApache Sparkを使用したコードについて説明が行われました。 最後に、Scalaを採用する上での一番の課題としてScalaエンジニアの採用・教育について取り挙げれられ、その解決に向けて進めている取り組みについて紹介されました。

Scala が支える医療系ウェブサービス (エムスリー株式会社 瀬良さん)

次に、エムスリー株式会社の瀬良さんからはScala が支える医療系ウェブサービスの話として、リニューアルされた m3.com を支えているScalaのOSSプロダクトについての発表が行われました。

Play Frameworkの採用事例をはじめ、バックエンドのサービスのAPIの呼び出しに利用しているOctopartsや瀬良さん自身が開発を行っているSkinny Frameworkなどのプロダクトについて、実際の利用例を含めて紹介されました。

Java ラブなヌーラボにおける Scala + Playframework 体験記 (株式会社ヌーラボ 吉澤)

弊社の吉澤からは、Typetalkの開発にRuby on RailsやSpring FrameworkではなくScala + Playframeworkを採用するに至った経緯や、実際の開発において便利に感じた点と問題点についての発表が行われました。

Play Frameworkを採用した理由として、Hot ReloadingやDatabase Migration、ViewがType-safeである点などが挙げられました。

Scalaについては、便利な点としてOptionやCaseクラス、パターンマッチが、問題点としてバイナリの互換性問題やコンパイル速度の遅さについて紹介されました。

2社でのScala開発経験にもとづいてそれぞれの事例を比較してみる (株式会社はてな 粕谷さん)

株式会社はてなの粕谷さんからは異なる2社でScalaプロダクトの開発に関わった経験という視点からの発表が行われました。
前職でJavaでの開発を中心としていたチームにScalaを採用した時には、Better Java的な書き方から少しずつ関数型プログラミングのスタイルを学びながら開発を進めるというスタイルで進められれたこと、そのため書かれた時期によってコード全体の雰囲気が大きく変わっていることが紹介されました。一方、現職のはてなでのMackerelの開発では、Haskellが好きなリードエンジニアとPerlに精通したプログラマを中心としたチーム構成で、はじめから関数型プログラミングのスタイルが取り入られており全体的にコードに統一感があったとのことです。

この点について、LL言語の方がはやくから関数プログラミングのエッセンスが取り入られていることからくる差異ではないかとのことでした。そのほかの違いとして、前職ではテンプレートエンジンにvelocityを採用しているがMackerelではtwirlを利用していることなどが紹介されましたが、意外と2社で差異が無かったという結論となっていました。

とあるScala伝道師の過去と現在 (ChatWork株式会社 加藤さん)

ChatWork株式会社の加藤さんからは、ChatWorkの刷新プロジェクト「Falcon」についての話を中心にそのアーキテクチャやドメイン駆動設計(DDD)についての発表が行われました。

もともとChatWorkはPHPと独自フレームワークで実装されており、大規模サービスを想定したアーキテクチャではなかったとのこと。刷新の際に使用する言語とフレームワークを選定するために合宿を開催し、そこで最終的にScalaの採用が決まったこと、Scalaに決まった理由が具体的なコードも含めて紹介されました。さらに、現在はビッグバンリリースを避けるためまずは新iOSアプリのサーバサイドとして開発を進めていることや、Falconのアーキテクチャ、ユビキタス言語に基づいてリファクタリングされたコードの例が紹介されました。

Scala@SmartNews – 高パフォーマンス広告配信システムを3ヶ月で作った話 (スマートニュース株式会社 竹井さん 村石さん)

スマートニュース株式会社の竹井さんからは高パフォーマンスな広告サーバーの実装についての発表が行われました。

フレームワークとしてTwitter社製のFinagleを採用し、内部はIO処理が走る部分をFutureとして返すように実装されたとのことで、コードを例にFutureをどのように扱えるか紹介されました。また、最後にパフォーマンスのTipsがいくつか紹介されました。

引き続いてスマートニュース株式会社の村石さんからはAdFrontendをScalaで書いた話について発表が行われました。

Play Frameworkを選択した理由として宣言的なルーティング定義やフォームバリデーション定義を挙げられていました。さらに、Slickを利用してのDataAccess層の自動生成やflywayでのスキーマのバージョン管理を行っているとのことでした。最後にScalaについて、Optionやcase classなどの便利な点、その反面コンパイル速度が遅い点も挙げられていましたが、Scala + Play2 + Slick は開発のリズムを作りやすく、業務系アプリを作るのにも最適な言語とまとめられていました。

LT

本編終了後には会場はそのままにピザと飲み物が提供される懇親会が行われ以下の7名からのLTが行われました。

まとめ

IMG_1693

どの発表もScalaを実戦されている方々の発表ということもありいずれも参考になる内容が多く、私自身もBacklog APIv2の開発で実際にDDDやScalaを導入していたりマイクロサービスアーキテクチャへの興味などあり、非常に有意義な時間を過ごすことが出来ました。

一方、社内での教育や採用に力を入れているといったような内容もいくつかあり、まだまだScalaを使えるプログラマーは少ないとう現状も窺うこともできるイベントでした。

当日Twitter上でつぶやかれた内容は http://togetter.com/li/785932 にまとまられているようですので、興味のある方はこちらもご覧ください。

ご参加いただいたみなさま、ありがとうございました。

より良いチームワークを生み出す

チームの創造力を高めるコラボレーションツール

製品をみる