scala daysに行ってみて - あるいはスイス旅行記 -
TRANSCRIPT
Scala Daysに行ってみて~ あるいはスイス旅行記 ~
@kmizu
自己紹介
名前:水島宏太 @kmizu http://twitter.com/kmizu/
筑波大学大学院 博士後期課程3年生 構文解析関係の研究
Scala言語仕様輪読会等のイベントを主催 http://atnd.org/events/3161 (第4回)
今年中に再開したい
プログラミング言語が大好き 俺言語(Onion)を作ったり
あちこちでScalaの布教活動
Scalaに関する最初のワークショップ
Scalaのお膝元であるEPFLで開催 スイスのローザンヌ
04/15~04/16の二日間
参加者150名超
Martin Odersky先生やScalaチームの人に会える!
全発表の動画が公式ページから視聴できる! 太っ腹! http://days2010.scala-lang.org/node/136
Scala Days 2010 ?
Agenda
発表申し込み~出発まで
成田~ローザンヌ
Scala Days(1日目)
Scala Days(2日目)
飛行機欠航
Scala Days延長戦
帰国
終わりに
きっかけ
Scala DaysのCFP(Call For Speakers)を読む ちょうど持ちネタがあるし、発表しようかな? 生Odersky先生に会ってみたい
しかし、海外に行くのは初めて 一人では心細い 英語駄目駄目だけど大丈夫だろうか?
友人(@_tad_)からの後押し チャンスがあるなら行かないのは損!(うろ覚え)
ならば行ってやろうじゃないか
Speakerへの応募
タイトルと概要を適当に英語で書いてsubmit PEGEX: a PEG-based pattern matching library EXtended by back reference with regex-like notation in Scala
Accepted
それから約1週間後… ヒャッホウ
さて、自分の発表順は…
なんと(Opening Talkを除いて)一番最初! プレッシャーが…
発表の準備とか
英語の発表は初めて
もちろん、英語のスライド作るのも初めて
というわけで、読み上げ原稿を用意 原稿無しでその場で英語発表はきつい…
発表練習 ついつい早口になってしまい、うまく話せない 一人で原稿を読み上げてみたり
英語スライドの作り方の作法がよくわからない 英語圏の技術者の発表スライドを見て勉強
Agenda
発表申し込み~出発まで
成田~ローザンヌ
Scala Days(1日目)
Scala Days(2日目)
飛行機欠航
Scala Days延長戦
帰国
終わりに
成田~ジュネーブ
経路は成田→ロンドン→ジュネーブ ジュネーブ直通路線が無い
計約13時間のフライト 疲れた…
ジュネーブに着く頃には真っ暗(22時過ぎ) ジュネーブのホテルで一泊
タクシーでホテルに行こうとしたが… 行き先告げると嫌そうな顔して去って行ってしまった 徒歩でも近くの距離なので嫌がられた?
ヒースロー空港(ロンドン)の風景
ジュネーブ~ローザンヌ
スイス国鉄(SBB)で1時間弱 のどかな風景を眺めながらのんびり 山とか牧場とか
スイスは鉄道が発達してて、時間もきっちり守る ので、日本人にとってもわかりやすい
ローザンヌ
スイスのヴォー州に属する基礎自治体
フランス語圏 売店のおっちゃんとか、英語通じない人が多い
国際オリンピック委員会(IOC)の本部がある 別名、オリンピックの首都
坂道が異様に多い 疲れる
細い路地が多くていりくねってる かなり迷う
ローザンヌ駅前
ローザンヌにもあるマクドナルド
Agenda
発表申し込み~出発まで
成田~ローザンヌ
Scala Days(1日目)
Scala Days(2日目)
Scala Days延長戦
帰国
終わりに
ホテル~Scala Days会場まで
ホテル最寄駅~EPFL駅(!)まで地下鉄で移動
案内の張り紙を見ながら会場まで移動 馬鹿でかいキャンパス
Scala Days会場(外側)
Scala Days会場(メインホール)
Opening Talk (Martin Odersky)
登壇するときにOdersky先生がこけそうになるw
主な内容: Scalaの歴史
2001年:設計開始, 2003年:最初のリリース
Scalaの背景にある思想 Scalaを導入している企業
4sq,Twitter,Xerox,eBayなどなど
Scala 2.8新機能解説 Scalaの未来
英語が聴き取りやすい
内容も非常にわかりやすい
PEGEX: a PEG-based pattern matching library EXtended by back reference with regex-like notation in Scala (@kmizu)
自分の発表
パターンマッチングライブラリPEGEXについて
緊張しまくりで発音も怪しい
School Daysネタを入れてみたが、全く通じず
質疑応答は、聴き取り能力が低いため難航
教訓:英語の聴き取り能力は鍛えておくべき 話す力は低くても極端な話なんとかなる が、聴き取り能力が低いとどうにもならない
発表後、スライドの\マークは何?と質問された バックスラッシュに置き換えるのを忘れてたorz
発表者特典のマグカップ
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とかを思い出す
よく考えられてて、上手い
Automated Refactoring for Scala(Mirko Stocker)
IDE独立なScalaのリファクタリングエンジンの話
scalacの上に乗っける
Scala特有のリファクタリングをサポート
Eclipse上で動作デモ
Eclipse上の動作デモに感動 Extract Methodとかorganize importとかRenameとかがちゃんと動いてた(?)のは凄い
現在のScala Eclipse Pluginのnightly buildにこれの成果が取り込まれたっぽい
昼食(1日目)
EPFLの大学食堂で
なんかコース料理っぽいものが出てきた
割とおいしかった 特にデザート
周りで面白そうな話してるのに、聴き取り能力が低いせいで自分からなかなか話に飛び込めずorz やはり聴き取り能力は重要
食堂までの道順がややこしい 誰かについて行かないと迷う
Lightweight Language Processing in Kiama and Scala (Anthony M. Sloane)
Kiamaという言語処理ライブラリについての話
基本的なコンパイラの構成要素が多い 抽象構文木 データフローグラフ などなど
ので、正直退屈だった
時差ぼけ(?)で眠かった
Lightweight language support for type-based, concurrent event processing (Philipp Haller)
型情報を使ってScalaのActorライブラリを最適化 Actorではメールボックスを線形探索する必要 型情報によってメッセージを仕分けしておくことで、メールボックスの探索コストなどを減らせる
最悪でも23%程度のオーバーヘッド
コードサイズはほとんど変化無し
Producer/Consumerパターンでは劇的な性能改善
Scala 2.8のコンパイラプラグインとして実装
Scalaの標準ライブラリに組み込んで欲しい
Named and Default Arguments in Scala(Lukas Rytz)
名前つき引数とデフォルト引数についての話 動機とか設計・実装の話
一見簡単に見える が、継承とかジェネリクスとかを絡めると意外と複雑
オーバーライド時に引数名を交換すると何が起こる?
型チェックは呼び出し側で行われる def id[T](x: T = "scala") = x // OK id[Int]() // Error
コンパイラの中の人は大変だ…
Automatic refactorings for Scala programs (Ilya Sergey, Dave Clarke, Alexander Podkhalyuzin)
JetBrainsの人の発表 IntelliJ IDEAの中の人
IDEAのScalaプラグインのリファクタリング機能
Scalaのリファクタリングで、どこがめんどうか 型推論とかimplicit conversionとかクロージャとか
この辺があると色々ややこしいらしい
"Closure with state are evil!"
実際のリファクタリングのデモ
リファクタリングエンジンの中の人も大変だ…
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
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を埋め込まなくても…
Scala Days会場~Reception会場
Nice Boat
貸切の船でReception会場まで移動(!)
レマン湖上からの風景
Reception
食事はイマイチだが、デザートはおいしかった
Odersky先生やScalaチームの人に挨拶したりとか
翌日に待ち受ける運命を知る由も無いのであった
Agenda
発表申し込み~出発まで
成田~ローザンヌ
Scala Days(1日目)
Scala Days(2日目) 寝坊したのでKeynote Addressを聞き逃したorz
Scala Days延長戦
帰国
終わりに
Odersky先生のサイン
"Have fun with Scala !"
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"
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入門ぽい印象
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までご連絡下さい
昼食(2日目)
確かMiles Sabin氏らと同席したような… ソースコードフォーマッタを実装する計画はあるかとか質問してた気がする(うろ覚え)
sbt: Design and Implementation(Mark Harrah)
Scala用のビルドツールsbtの設計・実装の話 Scalaベース Apache Ivyを利用 同じJVM上でのプログラムの実行をサポート 設定ファイルはScalaで書く
immutableが基本で、できるだけ副作用を排除
task{ ... }がタスクを返す、dependsOnメソッドで依存関係を定義、#>と#>>,#&&演算子によるパイプやリダイレクトのサポート、などなど #>とか#>>がカッコイイ
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)
}
Sneaking Scala Into Your Organization(David Copeland)
「あなたの会社でScalaを使うにはどうすればいいか?」
Scalaの学習曲線の急さをどう緩和するか
どの部分でScalaをまず採用するか ビジネスロジック層 モデル層 アプリケーションエンドポイント層
Web TestingのためのDSLをScalaで書く
論点の切り分け方が明確で、非常にわかりやすい 良い発表
The Future of Scala
参加者をいくつかのグループに分けて、グループごとにScalaの未来について議論するというセッション…だったのだが、全く参加できずorz(後述)
帰りの飛行機が欠航orz
アイスランドのEyjafjallokull(エイヤフィヤトラヨークトル。読めねえ)火山の火山灰が欧州に拡散 帰りの便が欠航に&いつ帰れるかわからない状態に(泣)
一気に鬱な状態に
なんとか別経路を探してみるが…
ギリシャ辺りまで陸路で行くのはどうか 同じように考えてる人が殺到してるのでは?
アメリカまで海路で行くのはどうか 船だと時間かかり過ぎる
いっそのことシベリア鉄道で大陸横断… 治安がやばそう そもそもロシアのビザ持ってない
早期に回復したスペインから行くのはどうか スペイン行く電車は超満員
結局スイスで待機するのが無難という結論
Agenda
発表申し込み~出発まで
成田~ローザンヌ
Scala Days(1日目)
Scala Days(2日目)
Scala Days延長戦
帰国
終わりに
Scala Days延長戦
いつ帰れるかわからない不安の中、Odersky先生による次のポストがTwitterに これはもう行くしかあるまい
Scala Days延長戦
Odersky先生やScalaチームの方々とランチをご一緒させていただくことに
Scala研究室見学ツアーのおまけつき Scaladoc2の開発者の方に改善案を提案してみたり Leaky Monadsの人とモナドについて語り合ったり なんか日本のアニメファンっぽい方と日本のアニメについて語り合ったりしてました
デスノートとかシリアルエクスペリメンツ・レインとか
不幸中の幸い
Scala(螺旋階段)
Scala研究室の屋上からの風景
なんか工事中っぽい雰囲気がばりばりと…
Scalaを降りる
Agenda
発表申し込み~出発まで
成田~ローザンヌ
Scala Days(1日目)
Scala Days(2日目)
飛行機欠航
Scala Days延長戦
帰国
終わりに
一期一会
当時、2chのエアライン板のアイスランド火山スレに張り付いてた 空港の状況などの情報収集のため こういう非常時に2chの情報は結構役に立つ
同じようにスイスに取り残された人を発見 「飯でも一緒に食いませんか?」
→ ローザンヌで夕食をご一緒することに
日本語でしゃべれることのありがたさを実感
帰国
Agenda
発表申し込み~出発まで
成田~ローザンヌ
Scala Days(1日目)
Scala Days(2日目)
飛行機欠航
Scala Days延長戦
帰国
終わりに
終わりに
Scala Daysは非常に楽しかった 来年も都合が悪くなければ行きたい
人と人のつながりの大切さを実感 Scalaチームの方々(特にAntonio Cuneiさん) Twitterで励ましのメッセージを送ってくれた方々 現地で夕食を一緒した日本人の方
英語の聴き取り能力は鍛えておくべき
ブロークン英語でも割となんとかなる 海外を必要以上に恐れることは無い
来年、一緒にScala Daysに行きませんか?