scala daysに行ってみて - あるいはスイス旅行記 -

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

Upload: kota-mizushima

Post on 09-Jan-2017

711 views

Category:

Engineering


5 download

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回)

今年中に再開したい

プログラミング言語が大好き 俺言語(Onion)を作ったり

あちこちでScalaの布教活動

Page 3: Scala Daysに行ってみて - あるいはスイス旅行記 -

Scalaに関する最初のワークショップ

Scalaのお膝元であるEPFLで開催 スイスのローザンヌ

04/15~04/16の二日間

参加者150名超

Martin Odersky先生やScalaチームの人に会える!

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

Scala Days 2010 ?

Page 4: Scala Daysに行ってみて - あるいはスイス旅行記 -

Agenda

発表申し込み~出発まで

成田~ローザンヌ

Scala Days(1日目)

Scala Days(2日目)

飛行機欠航

Scala Days延長戦

帰国

終わりに

Page 5: Scala Daysに行ってみて - あるいはスイス旅行記 -

きっかけ

Scala DaysのCFP(Call For Speakers)を読む ちょうど持ちネタがあるし、発表しようかな? 生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で使われてると言うとなんか凄そうに聞こえる法則

かなりトリッキーな使い方 Specsとかを思い出す

よく考えられてて、上手い

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)

名前つき引数とデフォルト引数についての話 動機とか設計・実装の話

一見簡単に見える が、継承とかジェネリクスとかを絡めると意外と複雑

オーバーライド時に引数名を交換すると何が起こる?

型チェックは呼び出し側で行われる 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の中の人

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を用意して、こいつにモナド的な演算を定義してうんたらかんたら

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

Page 32: Scala Daysに行ってみて - あるいはスイス旅行記 -

Type-safe SQL embedded in Scala(Christoph Wulf)

SQLのクエリをコンパイル時にチェックしたい

埋め込みXMLと似たような方針で実装

埋め込みSQLをプリプロセス Scalaの予約語と衝突したらどうする?

パーズに失敗したらScalaにフォールバックしたりとか

val iter = SELECT id, name FROM user >> sqlConnection

コンパイラプラグインとして実装

SQLの型をScalaのtraitにマッピングとか色々

凄いけどここまでしてSQLを埋め込まなくても…

Page 33: Scala Daysに行ってみて - あるいはスイス旅行記 -

Scala Days会場~Reception会場

Nice Boat

貸切の船でReception会場まで移動(!)

Page 34: Scala Daysに行ってみて - あるいはスイス旅行記 -

レマン湖上からの風景

Page 35: Scala Daysに行ってみて - あるいはスイス旅行記 -

Reception

食事はイマイチだが、デザートはおいしかった

Odersky先生やScalaチームの人に挨拶したりとか

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

Page 36: Scala Daysに行ってみて - あるいはスイス旅行記 -

Agenda

発表申し込み~出発まで

成田~ローザンヌ

Scala Days(1日目)

Scala Days(2日目) 寝坊したのでKeynote Addressを聞き逃したorz

Scala Days延長戦

帰国

終わりに

Page 37: Scala Daysに行ってみて - あるいはスイス旅行記 -

Odersky先生のサイン

"Have fun with Scala !"

Page 38: Scala Daysに行ってみて - あるいはスイス旅行記 -

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

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

Scalaによる分散計算フレームワークNorbert "a framework written in Scala that makes it fast and easy to write asynchronous, cluster aware, message based client/server applications"

Page 39: 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 40: 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/04現在の情報) 今年10月にMiles Sabin氏が日本に来るらしい 興味のある人は@kmizuまでご連絡下さい

Page 41: Scala Daysに行ってみて - あるいはスイス旅行記 -

昼食(2日目)

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

Page 42: Scala Daysに行ってみて - あるいはスイス旅行記 -

sbt: Design and Implementation(Mark Harrah)

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

immutableが基本で、できるだけ副作用を排除

task{ ... }がタスクを返す、dependsOnメソッドで依存関係を定義、#>と#>>,#&&演算子によるパイプやリダイレクトのサポート、などなど #>とか#>>がカッコイイ

Page 43: Scala Daysに行ってみて - あるいはスイス旅行記 -

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

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

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

無名関数などを活用して、Processingを使うよりも簡潔にコードを書けている

size(500, 500)

def squared = points(-50, 50) { x => x * x }

def draw {

lineplot(squared)

}

Page 44: Scala Daysに行ってみて - あるいはスイス旅行記 -

Sneaking Scala Into Your Organization(David Copeland)

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

Scalaの学習曲線の急さをどう緩和するか

どの部分でScalaをまず採用するか ビジネスロジック層 モデル層 アプリケーションエンドポイント層

Web TestingのためのDSLをScalaで書く

論点の切り分け方が明確で、非常にわかりやすい 良い発表

Page 45: Scala Daysに行ってみて - あるいはスイス旅行記 -

The Future of Scala

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

Page 46: Scala Daysに行ってみて - あるいはスイス旅行記 -

帰りの飛行機が欠航orz

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

Page 47: Scala Daysに行ってみて - あるいはスイス旅行記 -

一気に鬱な状態に

Page 48: Scala Daysに行ってみて - あるいはスイス旅行記 -

なんとか別経路を探してみるが…

ギリシャ辺りまで陸路で行くのはどうか 同じように考えてる人が殺到してるのでは?

アメリカまで海路で行くのはどうか 船だと時間かかり過ぎる

いっそのことシベリア鉄道で大陸横断… 治安がやばそう そもそもロシアのビザ持ってない

早期に回復したスペインから行くのはどうか スペイン行く電車は超満員

結局スイスで待機するのが無難という結論

Page 49: Scala Daysに行ってみて - あるいはスイス旅行記 -

Agenda

発表申し込み~出発まで

成田~ローザンヌ

Scala Days(1日目)

Scala Days(2日目)

Scala Days延長戦

帰国

終わりに

Page 50: Scala Daysに行ってみて - あるいはスイス旅行記 -

Scala Days延長戦

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

Page 51: Scala Daysに行ってみて - あるいはスイス旅行記 -

Scala Days延長戦

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

Scala研究室見学ツアーのおまけつき Scaladoc2の開発者の方に改善案を提案してみたり Leaky Monadsの人とモナドについて語り合ったり なんか日本のアニメファンっぽい方と日本のアニメについて語り合ったりしてました

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

不幸中の幸い

Page 52: Scala Daysに行ってみて - あるいはスイス旅行記 -

Scala(螺旋階段)

Page 53: Scala Daysに行ってみて - あるいはスイス旅行記 -

Scala研究室の屋上からの風景

なんか工事中っぽい雰囲気がばりばりと…

Page 54: Scala Daysに行ってみて - あるいはスイス旅行記 -

Scalaを降りる

Page 55: Scala Daysに行ってみて - あるいはスイス旅行記 -

Agenda

発表申し込み~出発まで

成田~ローザンヌ

Scala Days(1日目)

Scala Days(2日目)

飛行機欠航

Scala Days延長戦

帰国

終わりに

Page 56: Scala Daysに行ってみて - あるいはスイス旅行記 -

一期一会

当時、2chのエアライン板のアイスランド火山スレに張り付いてた 空港の状況などの情報収集のため こういう非常時に2chの情報は結構役に立つ

同じようにスイスに取り残された人を発見 「飯でも一緒に食いませんか?」

→ ローザンヌで夕食をご一緒することに

日本語でしゃべれることのありがたさを実感

Page 57: Scala Daysに行ってみて - あるいはスイス旅行記 -

帰国

Page 58: Scala Daysに行ってみて - あるいはスイス旅行記 -

Agenda

発表申し込み~出発まで

成田~ローザンヌ

Scala Days(1日目)

Scala Days(2日目)

飛行機欠航

Scala Days延長戦

帰国

終わりに

Page 59: Scala Daysに行ってみて - あるいはスイス旅行記 -

終わりに

Scala Daysは非常に楽しかった 来年も都合が悪くなければ行きたい

人と人のつながりの大切さを実感 Scalaチームの方々(特にAntonio Cuneiさん) Twitterで励ましのメッセージを送ってくれた方々 現地で夕食を一緒した日本人の方

英語の聴き取り能力は鍛えておくべき

ブロークン英語でも割となんとかなる 海外を必要以上に恐れることは無い

来年、一緒にScala Daysに行きませんか?