LambdaConf 2015に参加しました!
by Yuji Yamamoto on June 12, 2015
This is a Japanese tranlation of Attended LambdaConf 2015 in Boulder!.
5月22日から24日かけてアメリカのコロラド州、
Boulder(ボールダー1)にて開催された、「LambdaConf 2015」に参加しました!
なのでまた超今更の私的まとめです!
知ったこと
いろいろありましたが、以下のセッションに参加しました。
概要と感想は、私が居眠りしないでちゃんと参加できたものだけ書いておきます。
(残念ながら時差ボケにやられてしまったのです…)
Day 1
- Write Some Idris
- Idris入門。私にとっては依存型の入門でもありました。
- 面白かったのですが、詳細を聞き取れなかったせいもあってか、めちゃめちゃ難しかったです。 練習問題中の合間を縫って、まだ答えていない問題の答えを推測したりサンプルコードをいじったりしてみましたが、全然うまく行きませんでした。
- Developing Web Applications with Haskell
- shakespeareでのHTMLの生成から、Spockによるルーティング、persistentを使ったORM、それからdigestive-functorsを使ったフォームのバリデーションまで、 Webアプリづくりに必要なもろもろを勉強しました。
- もともとある程度知った話題であったのと、スピーカーのAlejandroさんの声が聞きやすかったおかげもあってか、十分理解できましたし、楽しくできました。
- でも、練習問題を解いている間はほとんど
cabal install
していた気がします…。sandboxをもっと賢く使いたかった。
- A Practical Introduction to Haskell GADTs
- 確か覚えている限り、GADTsを利用して依存型を実装する、という話だった、はずです。
- 2つ目の練習問題の前、時差ボケで恐ろしく眠く、気分も悪くなってしまってたのです。 せっかく朝早くにglambdaをコンパイルしたのに、使うことがなく終わってしまいました。無念。
- LiquidHaskell: Refinement Types for Haskell
- タイトル通り、LiquidHaskellのチュートリアルでした。
- が、聞けたのは最後の方だけでした。引き続きお休み中だったためです。
- それでも、その最後の方(事例の紹介だったと思います)だけでも、LiquidHaskellの力を非常に印象づけてくれました。ぜひ上記リンク先の資料を見返したいと思います。
Day 2
- Pattern Functors: Wandering Around Fix-points, Free Monads and Generics
- Give me Freedom or Forgeddaboutit: What Does “Free” Really Mean?
- FreeがfreeなのはFunctorをfreeで(タダで)Monadに変換するから。ListがHask圏のオブジェクトをfreeでMonoidに変換するのと同様。
- よく見るとListとFreeは構造もすごく似ている。
- 発表内容やスライドにはもっといろいろあったと思うのですが、理解できたのはそこまででしたorz。
- モナド基礎勉強会に参加して以降、少しずつ圏論をかじっては来ましたが、少ししか理解できませんでした。
- Finally Tagless DSLs and MTL
- Accelerating Haskell: GPGPU Programming with Haskell
- GPGPUと、HaskellでGPGPUを簡単にできるようにするaccelerateの紹介。
- accelerateについてはParallel and Concurrent Programming in Haskellで伺っていましたが、使ったことはありませんでした。 なので、ハンズオン形式であればもっとよかったですね!(ぶっちゃけ、特に必要性を感じていないので自分から使うことはないでしょうから…)
- In Rust We Trust
- Mozillaが作ったあのプログラミング言語、Rustの魅力の紹介。
- 特に印象に残ったのは以下の3つですね。
- GCも別のランタイムシステムも使わない、「ownership」によるメモリ管理。私には線形型のようにも聞こえました。
- デフォルトで一度束縛した変数は書き換え不可。
- 関数型プログラマ的に見慣れたコンビネーター群(mapとかfilterとかtake_whileとか)
- Introduction to Intuitionistic Type Theory
- Introducing Emily: Simplifying Functional Programming
- Emilyでは、全ての処理はJavaScriptライクなオブジェクトに対するアクセスとなるそうです。
a = 123
のような単なる代入式ですら、スコープオブジェクトのset
メソッドを呼び出す構文糖になるんだとか。 - まるでJavaScriptのオブジェクトベースのLispであるかのように見えて興味深かったです(どこまでLispっぽいかは知りませんが)。
- Emilyでは、全ての処理はJavaScriptライクなオブジェクトに対するアクセスとなるそうです。
- The Next Great Functional Programming Language
- Johnさん (LambdaConf 2015の主催者だった模様です)が考える、最強のプログラミング言語の機能について語ってくれました。
- およそネタだったと思いますが、今日の多くの言語を面白おかしく批判していました。
- 参加者のみなさんがその日で一番活発に議論したおかげで、めっちゃ時間が延びました。まぁ、とにかく楽しそうだったので何よりです :)
Day 3
- An Adventure in Elm: Writing an Adventure Game in Elm
- Elmのチュートリアル。
- 「今日からElmですね!」なんて以前の記事で叫んでいながら、それまでElmに全く手を付けられていなかったので、大変ありがたかったです。
- 登壇者のJoe Nashさんも親切で、私を含め多くの参加者が気軽に質問できる良いワークショップでした。
- Elmは思った通り簡単で強力でした。もっと使いたいなあ。
やったこと
関数型プログラミング関連のセッションの他に、LambdaConf 2015ではハイキングもしました!
写真の通り、Boulderは山に囲まれています。街のどこからでも美しく連なる山々が見られました。 そしてもちろんハイキングコースも近くにあったので、Johnさんはじめ参加者のみなさんと一緒に行きました。
そしてLambdaConf 2015の紹介で述べているように、
Boulderではダウンタウンでお祭りも行われました。
どうやらJohnさんは、このタイミングに合わせてLambdaConf 2015の日取りを決めたようです。
Boulderをもっと楽しんでほしい、というJohnさんの熱いBoulder愛を感じました。
Nice idea!
折角なんで私はそのお祭りで、下記のジャンプ台から、紐なしバンジーに初挑戦しました!
やらなかったこと
本当はLTを一本、できれば二本やりたかったのですが、3日目のunconferenceで見つけたチャンスを逃してしまいました。 私のMonadに対する考えやapiaryの紹介を行うつもりでした。
なのでこの場を借りて掲載させてください。
ただ、内容は以前日本語でやった、「『やらなければならないこと』としてのHaskellのMonad」の英訳ですので、
ご存知の方は改めて見る間でもないでしょう。
もちろん、Slideshareにも上げました。
apiaryの方は私のやる気が続いて、ちゃんと完成させたら公開します。あしからず。
みんな、ありがとう!
最後に、私をこの素敵なイベントに導いてくれたすべての人たち ー 主催者はもちろん、発表された方、参加された方、ホームステイさせてくれた方、その他もろもろ全員 ー に感謝したいと思います。
本当にありがとうございました! <3<3<3
英語の発音的には「ブゥルダー」の方が近かった気がします。↩︎