Clojure
Go
Scala
勉強会

Go、Scala、Clojureで開発する3社が集結!!

「Go、Scala、Clojureで開発する3社が集結!!」に参加してきました。

http://hitomedia-night.connpass.com/event/23452/

メモ程度ですが何かの参考になればと。

コンテンツ
発表者
資料

Golang in eureka
エウレカ 三津澤さん
-

Scala採用の背景とその謎
Demand Side Sience 平岩さん
-

サイボウズスタートアップス
サイボウズスタートアップス 落合さん
-


Golang in eureka


  • エンジニア:50人 / 社員数:90人


    • エンジニアドリブンの文化



  • pairs


    • 会員数: 2年 300万人

    • 急成長してます



  • PHP から Go にフルスクラッチ


    • DBもマイグレーションも書き換えた




フルスクラッチの背景


  • 大量の技術的負債


    • 密結合

    • スケールしないDB設計

    • 巨大なモノリシックなコードベース




移行先言語に求められるもの


  • シンプルさ


    • キャッチアップに時間がかからないか

    • チーム開発向きか



  • ハイパフォーマンス


    • 開発速度(ビルドの速さなど)

    • 並列処理がシンプルに記述可能



  • チャレンジング


    • エンジニアリングのレベル向上につながる




Why Go?


  • 学習が容易

  • さくっと書いても割と速度が出る

  • goroutine / channel


Goの欠点


  • モダンなシンタックスはない


    • map /reduce

    • パターンマッチ

    • 例外



  • 確立されたライブラリが少ない


    • WAF

    • 3rd party



  • 数値計算系が不得意


Go版pairs


  • フロントサイド


    • AngularJS + Typescript



  • 設計


    • Microservices


      • 決済 を完全に分けて別DBを参照している






Goでアプリケーションを作る時の所管


  • パフォーマンスは出る

  • 罠はそれなりにある


    • 値の初期値でハマる



  • LLのセキュアのものは若干扱いづらい


まとめ


  • やりたいこと/やるべきことが見えているならあり

  • デファクトがないので 0 → 1は厳しい


Scala採用の背景とその謎


  • オプトのアドテク


Scalaとは?


  • オブジェクト指向と関数型


採用した理由


  • やりたい人がいた

  • 技術ベンチャーとしてアピールポイントになると思った


    • DSPとして技術をアピールしたかった



  • なんかすごそうと思った(勢い)


Scalaを採用している理由


  • エコシステムやコミュニティの充実


    • Scala Matsuri



  • エンジニアとしてのメリット


    • 型安全

    • ボイラープレートを減らせる

    • 関数型・オブジェクト型の両面による抽象化



  • 採用にプラス


    • Scalaがキッカケで応募する

    • 量より質を上げる




改善点や課題


  • 枯れていない


    • ベスト・プラクティスが確立されていない分野が多い

    • バグもたまにある

    • Scala本体のアップデートがよくある



  • コンパイルが遅い


    • 最大の欠点

    • SPAでつくっている


      • AngularJS + Typescript



    • プロジェクトを適切に分割する

    • implicit conversion、マクロ



  • 関数型プログラミングをどこまで推奨するか


    • scalazやshapelessの利用

    • 圏論などの前提知識が必要




まとめ


  • 新言語導入は打算と勢いで


    • メリットがないと



  • 現場の人達が幸せになれる選択を


    • 使う人が幸せに慣れば




サイボウズスタートアップス


  • 会社説明


Clojureの採用


  • 会社の技術的な中心に Clojure をおいた


新しい言語を採用するにあたって


  • 優秀なエンジニアを採用したい


    • 優秀なエンジニアが使いたいと思う言語


      • 関数型とか





  • 採用で勝てる条件が揃ってる


    • 大手が採用していない

    • その言語で圧倒的なブランド力がある企業がない




メリット


  • Simple

  • LISP


Simple Made Easy


  • 経営陣の共通の考え


CloureScript


  • Reagent, Om


人材採用面で有利


  • 能力の平均値が高い

  • ブランドが築けそう


まとめ


  • 機械学習

  • 人材採用の面で有利


感想


  • 新しい言語の導入は最後は勢いかも

  • 実際にその言語を使って開発する人が幸せになれるのは重要

  • メリットがないと正直導入は難しい

  • チャレンジすることによって技術力のアピールにはなる

  • あえて競合がいない言語も選ぶのも、差別化という意味ではあり

  • Go言語だったら◯◯社みたいになれるチャンスも

新しい言語にチャレンジするのは技術力アピールにつながるので全然ありだなと思う一方、

経営層の理解がないと結構辛いことになりそうな気がしますね。