Scala Days 2015 San Francisco に参加してきました (4)


(前回から続く)

Scala Days 2015 サンフランシスコの 3日目のレポートです。
私が聴講したセッションについてポイントをまとめます。

尚、発表スライドはこちらにリスト化されていますので、あわせてご覧ください。

3日目


早いもので Scala Days 2015 San Francisco も最終日。
この日も用意された朝食を満喫してから、キーノートの会場へ向かいます。

[09:00] Technical Leadership from wherever you are

sf3-1

テクニカル・リーダーの心構えについてのプレゼン。
Scala Days の参加者にはリーダー層の方が多いようで、質疑応答の時間が終わっても Dianne さんを取り囲み、白熱したディスカッションが続けられていました。

  • リーダーシップとは何か
  • 組織の中でリーダーシップを発揮するには?
    • 多くの人の意見を聞き、実践する
    • 成功体験を捨てる
    • 信念のために立ち上がり、恐怖に打ち勝て
  • リーダーは何をするか
    • ビジョン、戦略を持つ
    • コミュニケーション
      • 傾聴すること
      • 人によって会話のプロセスは異なる
      • 情報と時間を与える
    • フィードバックを得る
      • これが一番重要
      • あなたが常に正しいとは限らない
  • テクニカル・マネージャの困難
    • ミーティングばかりでコードを書けない
      • それでも、Tech Muscle (技術筋肉) を鍛え続けよう
    • 締切のない (Off-critical path) プロジェクトを作る
    • 社内ハッカソンはとても良い
  • 最初の仕事から、経営者のように振る舞え
  • 質疑応答
    • 2人のリーダーが異なるビジョンを持っており、対立している。どうしたらいいか?
      • (これは切実な問題ですね)

[10:25] How Scala is made

sf3-2

Scala言語のコンパイラやコアライブラリの開発を行っている Typesafe社のエンジニアの発表。

  • なぜ Scala を作るのか
    • インパクトを与えたい
    • 新規性と普及度の両立
      • 当初は多くの博士が作った言語ということもあり、新規性が高かった
      • C と似たシンタックスだと普及しやすい
    • 安定性が大事
      • 測定可能にする
      • しかし、安定のために機能を捨てるのは悲しい
  • どのように新しい機能を検討するのか
    • コンパイラやコアライブラリの機能追加は 1年以上かかる
    • ユーザーをセグメント化して分析
    • オプト・イン方式で、フラグとしてリリース
  • ツールとベストプラクティス
    • ツール最優先主義
      • 良いツールを使えば、自然と品質、生産性、リリース速度が向上する
    • 巨大な Scala コミュニティのフィードバック・ループ
    • 検証の非属人化
      • Pull Request が送られる度に、複数の観点のテストが走っている
    • どんどんオープンになっているのは素晴らしいこと

[11:35] The Unreasonable Effectiveness of Scala for Big Data

sf3-3

Typesafe社でビッグデータ・アーキテクトを務める Dean Wampler 氏が、ビッグデータと関数型言語の関係について語りました。

  • Hadoop
    • Yahoo で大規模事例あり (2008年時点で 16PB, 4000ノード)
    • MapReduce
      • アルゴリズム実装の難易度が高い
      • APIの問題でボイラープレートが多くなってしまう
    • Scalding (by Twitter) が唯一の希望
      • それでもディスク読み込みのパフォーマンス、バッチとストリームの統合に課題あり
  • Spark
    • 非常にエレガントな関数型API
      • 様々なアルゴリズムに柔軟に対応できる
    • バッチ (mini batches) もストリーム処理も同じように扱える
  • データ処理は数学
    • Algebird (by Twitter)
      • 抽象代数学ライブラリ
      • モノイド・群・環といったものが実装されている
      • サンプリングではなく、ハッシュを使って空間効率を高め、推定する
    • Spire
      • 高速かつ正確な数値計算ライブラリ
    • Scala NLP
  • Spark を使った実装コード紹介
    • 飛行機のフライトに関するシミュレーション

[12:20] ランチ

sf3-4

[13:20] Akka HTTP: The Reactive Web Toolkit

sf3-5

Akka Tech Lead1の Roland Kuhn 氏のプレゼン。Coursera のビデオでもお馴染みの方です。
Akka HTTP の話を期待していたのですが、大部分は Akka Streams のライブ・デモでした。

  • Akka Streams
    • ライブ・デモ
      • Source, Sink を作る
      • mapAsync
      • HTTP ストリーム
  • Akka HTTP
    • もうすぐ開発が終わりそうなところ
    • SSL対応も BidiFlow で実装。本当にもうすぐ実装されるが、Scala Days には間に合わなかった
  • 質疑応答
    • HTTP2 への準備は?
      • まずは HTTP1.1 への対応をしているところ
      • 夏以降か、来年になるか、未定
    • WebSocket
      • SSL対応と同じ時期に、すぐに対応する予定

[14:30] The road to sbt 1.0 is paved with server

sf3-6

日本人には馴染みの深い、横田さんと Josh の sbt についての発表。
2人の掛け合いが絶妙で、会場はとても和やかな雰囲気でした。

  • ビルドツールの歴史
    • sh, make から ant, Maven, Rake といったツールを振り返り
  • sbt 1.0 へのロードマップ
    • sbt-server
      • モジュール化
      • IDEなどからもアクセスできるように
      • まだまだ課題も多い
    • より安定的に
    • プラグインのバイナリ互換性、ビルドソースの互換性を向上

[15:40] Scala needs YOU!

sf3-7

Scala のコントリビューション・ページを一新したそうです。
コミュニティへの貢献について、熱く語ってくれました。

  • コミュニティのためにできること
    • ドキュメントを書く
    • バグ修正
    • ツール/IDEの開発
    • コアライブラリの開発
    • 機能拡張
  • ドキュメントから始めよう
    • 最も完全である必要がある
    • 更新が必要
    • 何よりも助けが必要
  • バグ報告
    • まずはガイド scala-lang.org/contribute を読むこと
    • 書く前に読むのが大事
      • 未整理のもの、議論中のものが多くある
    • チェックリストの確認も忘れずに
  • Scaladoc
    • ドキュメントが欠けている部分を見つける
    • スペルチェック、文法、コードのチェック
      • concurrent.Future のように良いガイドを全てに付けたい
    • Wiki を更新するのも良い貢献
  • ツール/IDE
    • Scalariform にはまだアイコンが無い。チャンスだみんな!
  • コアライブラリ
    • SLIPs: コアライブラリの提案集

[16:50] Why Scala.js

sf3-8

Scala.js のコミッターである Li Haoyi 氏の発表。
軽妙なトークで会場を盛り上げていました。

  • デモ
    • OpenWeatherMap から天気の情報を取り出し、AJAXで表示する
  • Webアプリを作っているScala開発者には
    • JavaScript を書く必要がなくなり、Scala だけで完結
    • ブラウザサイドでも型安全に
  • Webアプリ以外を作っているScala開発者には
    • 作ったものをWebで公開すると、みんなが見てくれる
  • コンパイラ開発者には
    • Scala.js はコンパイルが楽しい
    • リフレクションを使っていないので安全
    • コンパイル時間や出力バイナリのサイズなど、最適化も日々進歩している
  • 質疑応答
    • なぜJS自身ではなくJVMでコンパイルしているのか?
      • JSは速い(Pythonの5倍)と言っても、Javaよりは遥かに遅い
    • TypeScriptについてどう思うか?
      • JS自体が冗長だという問題は解決されていない
      • 複数のFutureのようなAjaxをまとめることができない

カンファレンスを通じて Scala.js に乗り遅れるな、という雰囲気を随所で感じました。
既に「実用レベル」とのことなのでまずは触れる機会を増やしてみようと思います。

[18:00] Closing Panel and Thank You

  • Typesafe
    • 司会: Josh Suereth
    • Adriaan Moors (Scala Tech Lead)
    • Lukas Rytz
    • Jason Zaugg (scalaz コミッター)
    • Grzegorz Kossakowski

sf3-9

最後は、恒例の Typesafe メンバーへの質疑応答コーナーでした。

  • 今後のロードマップは?
    • 2.11.9 は年内にリリース
    • 2.12 の開発も進行中
  • Java の機能を Scala に持ってくる計画はあるか?
    • ない
  • TASTY の仕様確定は?
    • tasteless という噂も

こうして世界的な Scala イベント、Scala Days も盛況のうちに幕を閉じました。
次回は6月にオランダ・アムステルダムで開催されます。

サンフランシスコ、素晴らしい時間をどうもありがとう!

sf3-10

(つづく)

  1. ちなみに、元 Tech Lead の Viktor Klang 氏は Typesafe社の副CTOというポジションになったそうです []