Haskell Day 2019を開催しました!

Posted by YAMAMOTO Yuji (@igrep) on November 29, 2019Tags: イベント

先日2019119日、TECH PLAY SHIBUYAにてHaskell Day 2019を開催しました。
今回は、各発表の概要や、アンケートの結果をお伝えしたいと思います。

Link to
here
発表

まずは各種発表の紹介から。

Link to
here
関数型(function type)を見つめるプログラミング

「関数型」 — すなわちHaskellでいうところのa -> bで表される、Haskellの関数について、ちょっと見方を変えた新しい発見を教えてくれました。

資料はこちら

Link to
here
HKD(Higher Kinded Datatype)

Higher Kinded Datatype (HKD)という、昨今Haskell界で流行りの型定義方法を解説しています。
レコード型を定義する際HKDにすることで、より柔軟に扱うことができるようになります。
さらに、barbiesextensibleといった、HKDの利用を飛躍的に促進するパッケージも紹介されました。

資料はこちら

Link to
here
「しんさんきぼう」のDerivingストラテジー

Haskellderiving機能 — 型を定義したとき、型クラスのインスタンスまで自動で定義してくれるあの機能ですね — の、適用範囲を広げるGHCの言語拡張をいろいろ紹介してくれました。

資料はこちら

Link to
here
HaskellメタプログラミングによるEgisonのパターンマッチの実装

プログラミング言語Egisonの核となる機能である強力なパターンマッチを、GHCの各種拡張を駆使することで、Haskellのソースコードに自然に埋め込めるような形で実装した、という話です。

資料はこちら

紹介しているライブラリーのソースコードはこちら

Link to
here
関数と型で理解する自動微分

関数の自動微分を行うパッケージadの仕組みを自力で実装してみることで解説してくれました。

資料はこちら

Link to
here
GHCJS によるWebフロントエンド開発

misoというおいしそうな名前のアプリケーションフレームワークと、Firebaseと連携するmisoのサンプルを、ライブコーディングを通して紹介してくれました。
misoを使えば、GHCJSを使ってElm Architecture風の設計に基づいてアプリケーションを作ったり、さらにそのコードを利用してサーバーサイドレンダリングをしたりできます。

ℹ️資料はまだ公開されていません!当日はライブコーディングが大半の時間を占めていたため、同等の解説を文章にして公開したいというチェシャ猫さんの意向によるものです。
現在執筆中のためお待ちください。🙇

発表中に使用したソースコードはこちら

Link to
here
Haskellで作る競技型イベントの裏側

mixi git challenge」というイベントにおいてユーザーが投稿した解答を採点するサーバーを、HaskellElmで一から書き直した、という事例を発表してくれました。
rioservantといった著名なパッケージを使うだけでなく、足りないところを自力で補って新しいパッケージとして公開したり、さらに作成したアプリケーション自体をOSSとして公開したりすることで、大きな資産を残していただけました。

資料はこちら

紹介しているアプリケーションのソースコードはこちら

Link to
here
大規模数値計算を支える Haskell ── Pragmatic Haskell in Large-Scale Numerical Computation──

DeepFlow株式会社におけるHaskellの事例の紹介です。
超高速で大規模な数値計算システムを、GHCの多様な言語拡張を駆使して作っているそうです。
Tagless Finalを活用することで知っているべき領域を区分して仕事を分けることに成功しているという点が印象的でした。

資料はこちら

Link to
here
Cadenza: Building fast functional languages on the JVM

cadenzaという、TruffleGraalVMに含まれている、高速なインタープリター作成フレームワーク)製の関数型言語の紹介です。
Truffleがもたらす強力なJITと「Normalization by Evaluation」という技術を応用することで、型検査と実行時両方における高いスピードを得ることが狙いだそうです。 将来的には依存型言語における型チェックや、GHCのランタイムの高速化に寄与したいとのことです。

資料はこちら

紹介しているアプリケーションのソースコードはこちら

Link to
here
LT

今回はHakell Day史上初めての試みとして、Lightning Talkを当日公募しました。
残念ながら5分間という短い制限時間に収められない発表が大半でしたので、ぜひ👇の資料を読んでみてください!

順番が間違っていたら済みません!ご指摘を!

Link to
here
アンケート結果

Haskell Day の各セッションや、参加者のバックグランドなどについてアンケートをとりました。 なので、後者の方の集計結果を載せたいと思います(前者はセッション発表者へのフィードバック)。

Link to
here
Haskell 以外のプログラミングに関する質問

大きく分けて Haskell に関する質問とそうでない質問がありました。 まずは Haskell 以外に関する質問の方を集計結果を紹介します。

Link to
here
エンジニアの経験年数はどれくらいですか?

Link to
here
得意なプログラミング言語はなんですか?

ちなみに、言語のリストは Haskell Survey 2019 を参考にしました。

Link to
here
得意・好きな技術領域はどれですか?

Link to
here
最近注目している技術があれば記述してください

自由記述形式にしたところ、ほとんど重複が無かったので箇条書きにします。

  • FP
  • 匿名暗号通貨(Monero,Zcash,Dash,Koto)
  • Cardano ADA
  • GraphQL
  • extensible
  • Enigma
  • workerベースの非同期プログラミング
  • フロント界隈
  • Next.js
  • 自然言語処理
  • 型レベルプログラミング
  • 自動微分
  • AWSによるサーバーレスアーキテクチャでのフルスタックWebアプリケーション開発
  • Rust
  • Kubernetes
  • TLA+
  • algebraic effects and handlers
  • 深層学習コンパイラ
  • AR
  • 定理証明支援系

Link to
here
Haskell に関する質問

ちなみに、Haskell に関する質問は Haskell Day 2018 でもアンケートしました。

Link to
here
Haskell をいつ頃始めましたか?

Link to
here
Haskell を初めてどれくらい経ちますか?

Link to
here
読んだことのある日本語の Haskell 本は?

参照: https://wiki.haskell.jp/Links#書籍

Link to
here
おわりに

以上の発表に加えて今回は、下記のスポンサー企業の皆様や@fumievalくんのおかげで、大変満足度の高い懇親会ができました。

懇親会で振る舞われた料理
懇親会で振る舞われた料理

発表について。
昨年は「Haskellちょっと興味あるからちょっとできるまで」というテーマを意識して、発表の難易度別に時間帯が分かれるよう調整しましたが、残念ながらうまくいきませんでした。
そこで難易度調整の難しさを痛感したため、今回は敢えて難易度調整を行わなかったのです。
結果、全体として難しい発表に偏ってしまった点は少し反省です。私が会社で開いているHaskell勉強会に毎回参加いただいている同僚も、総じて難しくて追いつくのが大変だった、と仰ってました。
次回は特別に難易度を下げた発表枠をいくつか作り、内容を事前に精査する、なんてプランを考えています。

会場について。
TECHPLAY SHIBUYAは素晴らしいですね!
我々のようなお金がないコミュニティーが今回の規模のイベントを行うのにうってつけでした。
元々イベントを開催する前提で作られており、受付と演壇が近いため受付しながら発表を聞くことができるのも、持ち回りで受付をしている我々にとって好都合でした。
来年も是非使わせていただきたいです🙏

最後に。
発表者のみなさんはもちろん、支えていただいたスタッフ、スポンサー企業、会場まで足を運んでいただいた参加者の皆様、その他この会の実現に関わったすべての方々に、この場を借りて感謝の意を示したいと思います。
みなさんのご協力おかげで、大きなトラブルもなく、楽しいイベントが開催できました。ありがとうございます。
今後も日本Haskellユーザーグループ(a.k.a. Haskell-jp)をよろしくお願いします!
hask(_ _)eller

Link to
here
あわせて読みたい