scala daysに行ってみて

55
Scala Days にににににに にににににににににに @kmizu

Upload: kota-mizushima

Post on 20-Jun-2015

2.767 views

Category:

Technology


1 download

DESCRIPTION

Scala Days参加レポートのような何か

TRANSCRIPT

Page 1: Scala Daysに行ってみて

Scala Daysに行ってみて~ あるいはスイス旅行記 ~

@kmizu

Page 2: Scala Daysに行ってみて

自己紹介 名前:水島宏太

@kmizu http://twitter.com/kmizu/ 筑波大学大学院の博士後期課程 3年生 Scala 言語仕様輪読会等のイベントを主催

http://atnd.org/events/3161 ( 第 4回 ) プログラミング言語が大好き あちこちで Scala の布教活動

Page 3: Scala Daysに行ってみて

Agenda

発表申し込み~出発まで 成田~ローザンヌ Scala Days(1 日目 ) Scala Days(2 日目 ) 飛行機欠航 Scala Days 延長戦 帰国 まとめ

Page 4: Scala Daysに行ってみて

Scala Days 2010 ?

Scala に関する最初のワークショップ Scala のお膝元である EPFL で開催

スイスのローザンヌ 04/15 ~ 04/16 の二日間 参加者 150 名超 Martin Odersky 先生や Scala チームの人に会える!

全発表の動画が公式ページから視聴できる! 太っ腹! http://days2010.scala-lang.org/node/136

Page 5: Scala Daysに行ってみて

きっかけ Scala Days の CFP(Call For Speakers) を読む

PEG 関係の持ちネタがあるし、発表したい Scala の最新動向を実際に肌で感じたい Odersky 先生に実際に会って話をしてみたい

しかし、海外に行くのは初めて 一人では心細い 英語駄目駄目だけど大丈夫だろうか?

友人の @_tad_ からの後押し チャンスがあるなら行かないのは損! (うろ覚え )

ならば行ってやろうじゃないか

Page 6: Scala Daysに行ってみて

Speakerへの応募 タイトルと概要を英語で書いて submit

PEGEX: a PEG-based pattern matching library EXtended by back reference with regex-like notation in Scala

Page 7: Scala Daysに行ってみて

Accepted

それから約1週間後… ヒャッホウ

Page 8: Scala Daysに行ってみて

さて、自分の発表順は… なんと (Opening Talkを除いて )一番最初!

プレッシャーが…

Page 9: Scala Daysに行ってみて

発表の準備とか 英語の発表は初めて もちろん、英語のスライド作るのも初めて というわけで、読み上げ原稿を用意

原稿無しでその場で英語発表はきつい… 発表練習

ついつい早口になってしまい、うまく話せない 一人で原稿を読み上げてみたり

英語スライドの作り方の作法がよくわからない 英語圏の技術者の発表スライドを見て勉強

Page 10: Scala Daysに行ってみて

Agenda

発表申し込み~出発まで 成田~ローザンヌ Scala Days(1 日目 ) Scala Days(2 日目 ) 飛行機欠航 Scala Days 延長戦 帰国 まとめ

Page 11: Scala Daysに行ってみて

成田~ジュネーブ 経路は成田→ロンドン→ジュネーブ

ジュネーブ直通路線が無いので 計約 13時間のフライト

長時間のフライトは初めてだったので疲れた… ジュネーブに着く頃には真っ暗 (22 時過ぎ )

ジュネーブのホテルで一泊 タクシーでホテルに行こうとしたが…

行き先告げると嫌そうな顔して去って行ってしまった 徒歩でも近くなので嫌がられたっぽい

Page 12: Scala Daysに行ってみて

ヒースロー空港 (ロンドン )の風景

Page 13: Scala Daysに行ってみて

ジュネーブ~ローザンヌ スイス国鉄 (SBB)で1時間弱

のどかな風景を眺めながらのんびり スイスは鉄道が発達してて、時間もきっちり守る

ので、日本人にとってもわかりやすい

Page 14: Scala Daysに行ってみて

ローザンヌ スイスのヴォー州に属する基礎自治体 フランス語圏

売店のおっちゃんとか、英語通じない人が多い 国際オリンピック委員会( IOC)の本部がある

別名、オリンピックの首都 坂道が異様に多い

疲れる 細い路地が多くていりくねってる

かなり迷いやすい

Page 15: Scala Daysに行ってみて

ローザンヌ駅前

Page 16: Scala Daysに行ってみて

ローザンヌにもあるマクドナルド

Page 17: Scala Daysに行ってみて

Agenda

発表申し込み~出発まで 成田~ローザンヌ Scala Days(1 日目 ) Scala Days(2 日目 ) Scala Days 延長戦 帰国 まとめ

Page 18: Scala Daysに行ってみて

ホテル~ Scala Days会場まで ホテル最寄駅~ EPFL駅 (!)まで地下鉄で移動 案内の張り紙を見ながら会場まで移動

馬鹿でかいキャンパス

Page 19: Scala Daysに行ってみて

Scala Days会場 (外側 )

Page 20: Scala Daysに行ってみて

Scala Days会場 (メインホール )

Page 21: Scala Daysに行ってみて

Opening Talk (Martin Odersky) 登壇するときに Odersky 先生がこけそうになる w 主な内容:

Scala の歴史 2001 年 :設計開始 , 2003 年 :最初のリリース

Scala の背景にある思想 Scala を導入している企業

4sq,Twitter,Xerox,eBay などなど Scala 2.8新機能解説 Scala の未来

英語が聴き取りやすく、内容も非常にわかりやすかった

Page 22: Scala Daysに行ってみて

PEGEX: a PEG-based pattern matching library EXtended by back reference with regex-like notation in Scala (@kmizu)

自分の発表 パターンマッチングライブラリ PEGEX について 緊張しまくりで発音も怪しい School Days ネタを入れてみたが、全く通じず 質疑応答は、聴き取り能力が低いため難航 教訓:英語の聴き取り能力は鍛えておくべき

話す力は低くても極端な話なんとかなる が、聴き取り能力が低いとどうにもならない

発表後、スライドの \ マークは何?と質問された バックスラッシュに置き換えるのを忘れてた orz

Page 23: Scala Daysに行ってみて

発表者特典のマグカップ

Page 24: Scala Daysに行ってみて

A Case Study in DSL Development: An Experiment with Python and Scala (Klaus Havelund, Michel Ingham, David Wagner)

Scala の機能をうまく生かして DSL を作ってみました的な話 無名関数とかデフォルト引数とか call by name とか

Python による DSL と比較してあーだこーだ NASAのケネディ宇宙センターで使われてる(!)

NASAで使われてると言うとなんか凄そうに聞こえる法則

感想:かなりトリッキーな使い方してるけど、よく考えられてて、上手いなー

Page 25: Scala Daysに行ってみて

Automated Refactoring for Scala(Mirko Stocker)

IDE独立な Scala のリファクタリングエンジンの話

scalac の上に乗っける Scala特有のリファクタリングをサポート Eclipse上で動作デモ 感想: Eclipse上の動作デモに感動

Extract Method とか organize import とか Rename とかがちゃんと動いてた (? )のは凄い

現在の Scala Eclipse Plugin の nightly build にこれの成果が取り込まれたっぽい

Page 26: Scala Daysに行ってみて

昼食 (1日目 )

EPFL の大学食堂でなんかコース料理っぽいものが出てきた

割とおいしかった 特にデザート

周りで面白そうな話してるのに、聴き取り能力が低いせいで自分からなかなか話に飛び込めず orz やはり聴き取り能力は重要

食堂までの道順がややこしい 誰かについて行かないと迷う

Page 27: Scala Daysに行ってみて

Lightweight Language Processing in Kiama and Scala (Anthony M. Sloane)

Kiama という言語処理ライブラリについての話 基本的なコンパイラの構成要素 (抽象構文木やらデータフローグラフやら )の話が多かったので、正直退屈だった あと、時差ぼけ(?)で眠かったというのもある

Page 28: Scala Daysに行ってみて

Lightweight language support for type-based, concurrent event processing (Philipp Haller)

実行時型情報をうまく使って Scalaの Actorライブラリを最適化してみました、という話 Actorのメールボックスの探索コストなどを減らせる

最悪でも 23%程度のオーバーヘッド コードサイズはほとんど変化無し Producer/Consumerパターンでは劇的な性能改善

Scala 2.8のコンパイラプラグインとして実装 ぜひとも Scalaの標準ライブラリに組み込んで欲しいところ

Page 29: Scala Daysに行ってみて

Named and Default Arguments in Scala(Lukas Rytz)

2.8で導入される (された )名前つき引数とデフォルト引数についての話 導入する動機とか、設計・実装の話

一見簡単に見える機能だが、継承とかジェネリクスとかを絡めると意外と複雑なことになる オーバーライド時に引数名を交換すると何が起こる?

型チェックは呼び出し側で行われる 意外 def id[T](x: T = "scala") = x // OK id[Int]() // Error

Page 30: Scala Daysに行ってみて

Automatic refactorings for Scala programs (Ilya Sergey, Dave Clarke, Alexander Podkhalyuzin)

JetBrains の人 (IntelliJ IDEAの中の人 )の発表 IntelliJ IDEAの Scala プラグインに実装されたリファクタリング機能の話

Scala のリファクタリングで、どこがめんどうか 型推論とか implicit conversion とかクロージャとか

この辺があると色々ややこしいらしい "Closure with state are evil!"

実際のリファクタリングのデモ リファクタリングエンジンの中の人も大変だ…

Page 31: Scala Daysに行ってみて

Leaky Monads - An Experiment with Automatic Resource Management(Josh Suereth)

最初の一発ネタがウケた 5秒でわかるモナド

trait Monad[M]{ def flatMap(...) } がモナドだ!

モナドを使うと、 ARM(Automatic Resource Management) ライブラリをうまく実装できるよ! リソースを要素に持つコンテナ型 ManagedResource を用意して、こいつにモナド的な演算を定義してうんたらかんたら

2010/09/02現在、実装が github から見られる http://github.com/jsuereth/scala-arm

Page 32: Scala Daysに行ってみて

Type-safe SQL embedded in Scala(Christoph Wulf)

SQL のクエリをコンパイル時にチェックしたい 埋め込み XML と似たような方針で実装 SQL としてパーズを試みて、失敗したら Scala にフォールバックしたりとか val iter = SELECT id, name FROM user >> sqlConnection

コンパイラプラグインとして実装 SQL の型を Scala の trait にマッピングとか色々 個人的には、ここまで頑張って SQL を埋め込まなくてもいいかなと思う

Page 33: Scala Daysに行ってみて

Scala Days会場~ Reception会場

Nice Boat

Page 34: Scala Daysに行ってみて

Reception

食事はイマイチ、デザートはおいしかった Odersky 先生や Scala チームの人に挨拶したりとか

翌日に待ち受ける運命を知る由も無いのであった

Page 35: Scala Daysに行ってみて

Agenda

発表申し込み~出発まで 成田~ローザンヌ Scala Days(1 日目 ) Scala Days(2 日目 )

寝坊したので Keynote Address を聞き逃した orz Scala Days 延長戦 帰国 まとめ

Page 36: Scala Daysに行ってみて

Scala at LinkedIn: Distributed Computing with Norbert(Chris Conrad)

LinkedIn(登録ユーザー 4500万人超のビジネスSNSサービス )内で Scalaがどのように使われているか

Norbertという Scalaで実装された分散計算フレームワークについて "a framework written in Scala that makes it fast and easy to write asynchronous, cluster aware, message based client/server applications"

Page 37: Scala Daysに行ってみて

Migrating a Struts/Java E-Mail Application to Lift/Scala(Christoph Knabe, Thomas Fiedler)

Struts/Java で書かれた Webアプリを Lift/Scalaにどうやってポーティングするかという話

例外処理をどうするか 特に Ajax/Comet なアプリケーションで発生した例外をどう取り扱うか

Lift の O/R マッパーについて Lift のテンプレートシステムについて 全体として、 Lift入門ぽい印象

Page 38: Scala Daysに行ってみて

The Scala IDE for Eclipse - Retrospect and Prospect for 2.8(Miles Sabin)

微妙なことで名高い(?) Scala Eclipse Plugin についての発表

EDF Trading がスポンサー でも、開発はほとんど Miles Sabin氏一人っぽい?

現在作業中 (当時 )の諸々について 宣言へのジャンプとか

Eclipse でのデモ (2010/09/02現在の情報 ) 今年 10月に Miles Sabin氏が日本に来るらしいので、興味のある人は連絡下さい

Page 39: Scala Daysに行ってみて

昼食 (2日目 )

確か Miles Sabin氏らと同席したような… ソースコードフォーマッタを実装する計画はあるかとか質問してた気がする (うろ覚え )

Page 40: Scala Daysに行ってみて

sbt: Design and Implementation(Mark Harrah)

Scala用のビルドツール sbt の設計・実装の話 Scala ベース Apache Ivy を利用 同じ JVM上でのプログラムの実行をサポート 設定ファイルは Scala で書く

immutable が基本で、できるだけ副作用を排除 task{ ... }がタスクを返す、 dependsOnメソッドで依存関係を定義、 #>と #>>,#&&演算子によるパイプやリダイレクトのサポート、などなど

Page 41: Scala Daysに行ってみて

Processing with Spde: Scala at the Intersection of Art and Technology(Nathan Hamblen)

Processing(Java ベースのビジュアルプログラミング環境 ) の Scala版である Spdeについての話

Scala は Java に比べて言語的なメリットが色々あるので、 Processing を Scala でも使いたい云々

無名関数などを活用して、 Processing を使うよりも簡潔にコードを書けているsize(500, 500)def squared = points(-50, 50) { x => x * x }def draw { lineplot(squared)}

Page 42: Scala Daysに行ってみて

Sneaking Scala Into Your Organization(David Copeland)

一言で言うと、「あなたの会社で Scalaを使うにはどうすればいいか?」

Scalaの学習曲線の急さをどう緩和するか どの部分で Scalaをまず採用するか

ビジネスロジック層 モデル層 アプリケーションエンドポイント層

Web Testingのための DSLを Scalaで書く 論点の切り分け方が明確で、非常にわかりやすい良い発表

Page 43: Scala Daysに行ってみて

The Future of Scala

参加者をいくつかのグループに分けて、グループごとに Scala の未来について議論するというセッション…だったのだが、全く参加できず orz( 後述 )

Page 44: Scala Daysに行ってみて

帰りの飛行機が欠航 orz アイスランドの Eyjafjallokull(エイヤフィヤトラヨークトル )火山の火山灰が欧州に拡散 帰りの便が欠航に&いつ帰れるかわからない状態に(泣 )

Page 45: Scala Daysに行ってみて

一気に鬱な状態に

Page 46: Scala Daysに行ってみて

Agenda

発表申し込み~出発まで 成田~ローザンヌ Scala Days(1日目 ) Scala Days(2日目 ) Scala Days延長戦 帰国 まとめ

Page 47: Scala Daysに行ってみて

Scala Days延長戦 いつ帰れるかわからない不安の中、 Odersky 先生による次のポストが Twitter に これはもう行くしかあるまい

Page 48: Scala Daysに行ってみて

Scala Days延長戦 Odersky 先生や Scala チームの方々とランチをご一緒させていただくことに

Scala研究室見学ツアーのおまけつき Scaladoc2 の開発者の方と Scaladoc2 の改善案について提案してみたり

Leaky Monads の人とモナドについて語り合ったり なんか日本のアニメファンっぽい方と日本のアニメについて語り合ったりしてました

デスノートとかシリアルエクスペリメンツ・レインとか

不幸中の幸い

Page 49: Scala Daysに行ってみて

Scala(螺旋階段 )

Page 50: Scala Daysに行ってみて

Scala研究室の屋上からの風景 なんか工事中っぽい雰囲気がばりばりと…

Page 51: Scala Daysに行ってみて

Scalaを降りる

Page 52: Scala Daysに行ってみて

Agenda

発表申し込み~出発まで 成田~ローザンヌ Scala Days(1 日目 ) Scala Days(2 日目 ) 飛行機欠航 Scala Days 延長戦 帰国 まとめ

Page 53: Scala Daysに行ってみて

帰国

Page 54: Scala Daysに行ってみて

Agenda

発表申し込み~出発まで 成田~ローザンヌ Scala Days(1 日目 ) Scala Days(2 日目 ) 飛行機欠航 Scala Days 延長戦 帰国 まとめ

Page 55: Scala Daysに行ってみて

まとめ Scala Days は非常に楽しかった

来年も都合が悪くなければ行きたい でも、今回みたいな災難はもう勘弁して欲しい

人と人のつながりの大切さを実感 Twitter で励ましのメッセージを送ってくれた方々や情報収集を行ってくれた方々に感謝

英語の聴き取り能力は鍛えておくべき 英語能力が無くてもブロークン英語でもコミュニケーションを取るだけならなんとかなる ので、海外を必要以上に恐れることは無い