関数型まつり2025まとめ&感想
こんにちは、skytomoと申します!
この記事は関数型言語に疎い人(著者)の視点から見た関数型まつり2025を書きます。
来年、参加しようか迷っている方に参考になればいいと思っています!
関数型まつり2025について
「関数型まつり2025」は関数型プログラミングのカンファレンスです!
関数型まつりとしては初めての開催ですが、前身としてScalaMatsuriがありました。
ウェブサイト:https://fortee.jp/2025fp-matsuri
参加理由
普段は業務でRubyを書いています(!?)。
Rubyは関数型言語とは程遠く、私自身も関数型言語及びその周辺知識がほとんどありません。
なぜ参加したのか気になると思いますが、今回参加したのには理由がふたつあります。
- フォロワーさんが宣伝していた
- 関数型言語に強い興味があった
「フォロワーさんが宣伝していた」 なんかよくわからないけど楽しそうにカリー=ハワード同型対応について語られたら気になるじゃないですか(安心してください、私もまだカリー=ハワード同型対応が何なのかわかっていません、ごめんなさい)
「関数型言語に強い興味があった」 これも参加する上で大きなモチベーションとなったものです。知識はないが、やる気はありました。参加する前にタイムラインを確認して「再帰、正規表現エンジン、おお、聞いたことあるキーワードあるし参加しよう!」となって参加しました。
全体的な感想
全体のうち3割は内容を理解できました。残りの6割のうち、3割は何がわからないのかわかって、4割はわからないことがあるということがわかりました。
いくつかのセッションにはbeginner
と書かれていたので安心していましたが、騙されました(笑)。けっこう内容がかっ飛ばしてあってなかなか難しかったです!
まあこれは普段Railsを書いている人がRubyKaigiに行ってコンパイラの話をされてちんぷんかんぷんになっている構図と似ている気もしていて、実務でKotlinとかF#を書いている人が聞いていてもわからないものはわからないだろう、だから私がわからなくても当然だという楽観的な感じで聞いていました。
まとめ&具体的な感想
ここからはもう少しどんな感じだったかまとめながら感想を言っていきたいと思います。
聴講したセッションを赤く囲っています。
また個人的にモナ度(ニッチさ・難易度が高ければ高い値を取る)を書きました。
主観なので、実際のあれとは違うかもしれません、ごめんなさい。
モナ度が低いものは私みたいにOOPしか触れてこなかった方でもわかりやすいと思います。
[A-107] What I have learned from 15 years of functional programming
個人的なモナ度:🌶🌶
1日目の最後の公演はScott Wlaschinさんの「15年間の関数型プログラミングから学んだこと(和訳)」です。いきなり最後から紹介したのは理由があります。
Scott Wlaschinさんは日本語字幕付きの動画だったのですが、関数型言語のすべてを説明していました。これを見れば、ほとんど理解できるといった感じの内容です。しかも、数学の専門的な用語をあえて避けて、OOPプログラマフレンドリーで平易な用語を使っていました。
まじで見返したいので、動画は後日公開されることを願っています。
関数型言語わかんないけど興味あるし関数型まつりに参加したい方は、まずこの動画を見て履修してからいくとだいぶ良いと思います。
[A-101] 型システムを知りたい人のための型検査器作成入門
個人的なモナ度:🌶
RubyKaigiでも登壇される遠藤侑介さんの発表でした。
関数型での耐放射線Quineを求めていました。
このスライドを見れば型検査器作成できるようになると思います。
[A-102] Rust世界の二つのモナド──Rust でも do 式をしてプログラムを直感的に記述する件について
個人的なモナ度:🌶🌶🌶🌶🌶
https://konn-san.com/t/two-monads-in-rust.pdf
スライド:Haskellにあるdo構文をRustに持ち込む話をしていました。
do構文をRustに持ち込むとどんないいことがあるか、またモナドにはいくつか種類があることも話していました。
内容はけっこうレベルが高かったですが、発表者が「なるほど!」と無理矢理話を進めていて面白かったです。
interact
のススメ — できるかぎり「関数的」に書きたいあなたに
[B-103] 個人的なモナ度:🌶
https://github.com/nobsun/fpfes2025/blob/main/doc/markdown/interact.pdf
スライド:I/O でも関数的に書く方法を話していました。かなり易しく解説されていて良かったです。
[A-103] 関数型言語を採用し、維持し、継続する
個人的なモナ度:🌶
https://zenn.dev/siiibo_tech/articles/adopting-fp-languages
スライド:関数型言語を採用し、維持し、継続する話をしていました。関数型言語の導入事例はあまり多くないので、けっこう貴重な内容でした。
狂気。と書かれていますが、内容はかなりまともで、なんなら関数型言語に限らずどこでも通用するような話をしていました。
[A-104] 関数プログラミングに見る再帰
個人的なモナ度:🌶
スライド:プログラミングにおける再帰の基礎を初心者向けにわかりやすく解説していました。
すごく易しい解説でした。
これを見れば、関数型における再帰の考え方(しかも実装も大体どうなっているか)がわかります。
[B-105] 産業機械をElixirで制御する
個人的なモナ度:🌶🏞️
制御をElixirで行った水力発電所の例を紹介していました。
すごく面白かったです。
1年分のダムの写真を見ました。
Elixirを採用した理由のときに他の言語を採用しなかった理由がけっこう面白かったです。
Go かわいそうw
[A-106] continuations: continued and to be continued
個人的なモナ度:🌶🌶🌶🌶🌶
https://nymphium.github.io/pdf/fp_matsuri_2025.html
スライド:覚えましたよ! 継続は残りの計算!
継続について包括的に説明をしていました。
Intermediate
とAdvanced
と書かれている通り、ちゃんとレベルが高めです。
私はなぜか登壇者にTwitterでブロックされていたので、いいねできなかったのがちょっと悲しいです。(心当たりがないので謎です)
[C-201] F#の設計と妥協点 - .NET上で実現する関数型パラダイム
個人的なモナ度:🌶🌶🌶🌶
https://speakerdeck.com/matarillo/f-number-design-and-trade-offs-functional-paradigms-on-net
スライド:F#の設計と妥協点についてひたすら語っていました。けっこう内容がぎっしりしていて満足感があります。
.NET以外にもJavaScriptとの相互運用性を考えないといけないのは知りませんでした。
[A-202] Haskell でアルゴリズムを抽象化する 〜 関数型言語で競技プログラミング
個人的なモナ度:🌶🌶🌶
https://speakerdeck.com/naoya/guan-shu-xing-yan-yu-dejing-ji-puroguramingu
スライド:これを見てHaskellで競プロしたくなりました。
内容もわかりやすく、私でもわりと理解できました。
[A-203] ラムダ計算と抽象機械と非同期ランタイム
個人的なモナ度:🌶🌶🌶
https://docs.google.com/presentation/d/1_GATrCUwgo-ZABGYzuSIapUIzxs9CK7ZuQw1FVk9Ew4/edit
スライド:タイトルで怖気づきそうですが、内容がわかりやすく、私でもわりと理解できました。
アニメーションが優秀で理解を促進しました。
あと地味に演算子にふりがなを振ってあったり、言語を小さく書いてあったり、至る所に配慮が見られ、すごく親切なスライドでした。
内容は説明に書いてあるとおり、ラムダ計算の話から出発して、ラムダ計算のシンプルな「インタプリタ」であるC(E)Kマシンの仕組みと動作について詳しく解説していました。
[B-204] Leanで正規表現エンジンをつくる。そして正しさを証明する
個人的なモナ度:🌶🌶🌶🌶
https://github.com/pandaman64/kansuugatamatsuri-2025/blob/main/main.pdf
スライド:「Leanで正規表現エンジンをつくる。そして正しさを証明する」というタイトルで正規表現エンジンに惹かれて見ましたが、実態としては「Leanで」と「そして正しさを証明する」がかなり強めに出ていました。
定理証明支援系はけっこう大変だということも知りました。
そして私は証明がどういう意味であるかわかっていないということがわかりました。
私は今、「定理証明支援系で本当に証明できるの? 証明って形式的にできるものなの? 本当に?」となっています。
わかっていないことがわかったので大きな一歩です。
Leanを実際に触ってみて理解しようと思います。
[A-205] 数理論理学からの『型システム入門』入門?
個人的なモナ度:🌶🌶🌶🌶
https://slides.buddha0818.workers.dev/fp-matsuri2025
スライド:論理学がわかっているならこっちから入るといいよ~という発表でした。が、私はこれを聞いて、論理学がわかっていないことがわかりました。そんな……
私の場合、「∀」とか「∃」とかぐらいはわかるのですが、自然演繹とか証明図は知りませんでした。個人的にはそこのステップが抜けててけっこう難しかったです。多分、私以外も情報工学出身はそんな感じの理解だと思っているのですが、どうなんでしょうか?
論理学ももう少し勉強しないといけないな~と思いました。
[A-206] Gleamという選択肢
個人的なモナ度:🌶🌶
https://speakerdeck.com/comamoca/gleamtoiuxuan-ze-zhi-jia
スライド:Gleamに対する愛の気持ちを発表していました(ちゃんと技術的な中身もあります)。
GleamはGoのようにシンプルです。
C/C++を参考にしてできたGo、FP言語を参考にしてできたGleamといった感じだそうです。
Gleamの開発者は仕事をやめてフルタイムで開発しているらしく(すごすぎる……)、資金繰りにけっこう困っているようなので、寄付をお願いしていました。
[A-207] Scala の関数型ライブラリを活用した型安全な業務アプリケーション開発
個人的なモナ度:🌶🌶🌶
https://fortee.jp/2025fp-matsuri/proposal/02f89c3a-672e-4294-ae31-69e02e049005
スライド:[B-208] Lispは関数型言語(ではない) by うさみけんた
個人的なモナ度:🌶🌶🌶
https://tadsan.fanbox.cc/posts/10062198
スライド:10分で100スライド超えで、爆速で発表しててすごかったです。
Lispは雑草。LispのパラダイムはLispかも?
[B-209] Kotlinで学ぶ代数的データ型 by Kanon
個人的なモナ度:🌶🌶
https://speakerdeck.com/ysknsid25/kotlindexue-bu-dai-shu-de-detaxing
スライド:「[A-107] What I have learned from 15 years of functional programming」をもう少し具体的にKotlinでやってみた感じです。これもけっこうわかりやすくおすすめです。
ブース
最推し書籍が印象的でした。
自分の推し書籍に一つシールがあってかなり嬉しかったです。
シャツを2着もらいました! ありがとうございます
個人的には少し暑かったので、シャツよりもタオルのほうが嬉しいかもと思いました。これは本当に個人的な感想なので、気にしないでください。
アクリルスタンドは運に負けてもらえませんでした~、悔しい~~
最後に
初心者には難しい内容も多くありましたが、発表者や聴講者が楽しいそうに聞いているのを見て、私も理解できるようになりたい気持ちが強くなりました。
来年も行きたいです!
そして、次はもっと理解してから行けるように頑張ります!
ありがとうございました!
Discussion
カリーハワード同型対応は、
この違う分野から出た2つの学問って実はぶっちゃけ何ら変わらないことについて議論してましたというものです。
証明が合ってるか確認するときにはその式の流れが定理に合致するかを見に行くし、プログラムが合ってるか確認するときにはその式の流れが演算子や関数の型に合致するかを見に行くといった次第です。
でも普通の言語は
Int -> String
(Int型の値があれば必ずString型の値を導ける)みたいなしょうもないことしか言えないので、もっと面白いプログラムの性質を導けるように型システムをムキムキにしたのがleanとかの証明支援系って言われるやつです。