採択
2025/06/15 10:30〜
Track A
招待セッション50分
Intermediate 理論 言語処理系

SML# オープンコンパイラプロジェクト

AtsushiOhori 大堀 淳

対象とする聴衆のレベル(該当するレベルを記載してください。)

  • Intermediate: 分野の基礎知識を持っている

セッションのテーマ(該当するテーマを記載してください。なければ追加頂いて良いです)

  • 言語処理系(コンパイラー、インタープリターなど)
  • 理論

セッションの概要

SML# は我々が開発しているML系関数型言語であり,そのコンパイラはMITライセンスによって公開されている.

本講演では,まずSML# の概要およびその特徴的な機能を紹介した後,SML# コンパイラの内部構造およびその特徴的なフェーズが基礎とする理論の概要を解説する.この理解を背景に,SML# のソースコードを活かしたオープンなコンパイラプロジェクトを提案する.このプロジェクトは,

  • 種々の拡張等が可能な言語開発基盤の構築,
  • 新しい機能実現のための型理論の構築

などをオープンに共同で行うことを意図している.そのためにSML# チームは,そのためのSML# の内部構造やコンパイラの基礎理論等のノウハウや知識を提供する.それ以上のオープンの意味は,今後の参加者に委ねられる.

2
採択
2025/06/15 10:30〜
Track B
スタッフセッション50分
Beginner Intermediate Advanced 理論

「Haskellは純粋関数型言語だから副作用がない」っていうの、そろそろ止めにしませんか?

igrep 山本悠滋 (igrep)

対象とする聴衆のレベル(該当するレベルを記載してください。)

主な対象は Beginner, Intermediate ですが、幅広い方々を対象と出来るよう努力します。タイトルを聞いて何かしら感情が動いた方であればおすすめです。

セッションのテーマ(該当するテーマを記載してください。なければ追加頂いて良いです)

  • 理論
  • 歴史

セッションの概要

「Haskellは純粋関数型言語だから副作用がないらしいけど、入出力処理などはどうやるんだろう?」というような疑問を抱えている方は多いでしょう。本発表ではHaskellの歴史と現状を顧みて、そのような疑問が生まれる背景や、「Haskellは副作用がない」と考えることの問題点と、それを踏まえて「副作用があるHaskell」という認識が普及した未来について論じます。関数型プログラミングやHaskellを学習する際ありがちな「思考の憑きもの」を祓う発表になれば幸いです。

3
採択
2025/06/15 10:30〜
Track C
公募セッション50分
Beginner Intermediate 言語処理系

F#の設計と妥協点 - .NET上で実現する関数型パラダイム

猪股 健太郎

対象とする聴衆のレベル(該当するレベルを記載してください。)

  • Beginner: 分野の前提知識を必要としない
  • Intermediate: 分野の基礎知識を持っている

セッションのテーマ(該当するテーマを記載してください。なければ追加頂いて良いです)

  • 言語処理系(コンパイラー、インタープリターなど)

セッションの概要

F#は.NETプラットフォーム上で実装された実用的な関数型言語です。本セッションでは、F#の言語設計における特徴的な選択と制約について解説します。

まず、非純粋関数型言語としてのF#の特徴を説明します。副作用の扱い方、関数型の機構とオブジェクト指向プログラミングの共存、そして実用性を重視した設計判断について概観します。

次に、F#独自の機能であるコンピュテーション式と非同期処理を取り上げます。HaskellのMonadやScalaのfor式との比較を交えながら、DSLとしての表現力や、非同期プログラミングモデルの特徴を示します。

最後に、.NETプラットフォームがF#の型システムに与える影響と制約について説明します。メソッドオーバーロードと型推論の相互作用、高カインド型の欠如、そしてそれらの制約に対する解決策としてのSRTPなど、実践的な観点から解説します。

3
採択
2025/06/15 11:30〜
Track A
公募セッション50分
Intermediate 理論

Haskell でアルゴリズムを抽象化する 〜 関数型言語で競技プログラミング

naoya_ito Naoya Ito

対象とする聴衆のレベル

  • Intermediate: 分野の基礎知識を持っている

※競技プログラミングの知識については必要ありません

セッションのテーマ

  • 理論

(理論に近いかな?)

セッションの概要

多くのアルゴリズムやデータ構造は、命令型プログラミングを前提に解説されていることが多いです。
アルゴリズム内部で使われるデータ構造は破壊的な変更が可能なことが前提であるため、短命データ構造が前提になります。また、プログラミング言語の抽象化能力には焦点を当てていないものが殆どで、Haskell のように、永続データ構造が備わっていて抽象化能力の高い言語でそのアルゴリズムを実装する場合、どのような抽象に至るのか解説されていることは希です。

私は競技プログラミングを Haskell で嗜んでおり、そのため様々なアルゴリズムを Haskell で実装しています。 Haskell でアルゴリズムを実装すると、その他の言語で実装したときには得られなかった様々なメンタルモデルでアルゴリズムを見ることができるようになり、結果、よりよい抽象に辿り着くことができることが多くあります。また、それをそのメンタルモデルそのままに実装することができるのも、関数型言語ならではと思っています。

例えば動的計画法を、代数的構造で抽象化することができます。 セグメント木はモノイドによって抽象化できることが知られていますが、Haskell ならそれをより自然な形で実装することができます。深さ優先探索や幅優先探索は、状態空間を宣言し、状態を遷移させる高階関数 f を渡すだけで様々な問題を解くことができるよう、実装することができます。よりよい抽象に至ると、より幅広い問題を一つの実装で解くことができます。

本セッションでは、幾つかのアルゴリズムの実装とその抽象を紹介し、命令型プログラミングと関数型プログラミングでの計算に対するメンタルモデルの違いを浮き彫りにすることを目標にします。

10
採択
2025/06/15 11:30〜
Track B
公募セッション50分
Beginner Intermediate 言語処理系

SML#コンパイラを速くする:タスク並列、末尾呼び出し、部分評価機構の開発

上野雄大

対象とする聴衆のレベル(該当するレベルを記載してください。)

  • Beginner: 分野の前提知識を必要としない(コンパイラ構成について)
  • Intermediate: 分野の基礎知識を持っている(関数型言語の使い方について)

セッションのテーマ(該当するテーマを記載してください。なければ追加頂いて良いです)

  • 言語処理系(コンパイラー、インタープリターなど)

セッションの概要

SML#は、Standard MLを包摂する、純国産のフルスケール関数型言語です。本セッションでは、SML#のコア開発者のひとりが、関数型言語とそのコンパイラを開発する者の視点で、関数型言語を作る上での苦悩と工夫をお話しします。

いくら理論が美しかろうと、言語が高機能だろうと、現実に使えなければ絵に描いた餅です。現実に使えるかどうかの判断基準のひとつは、CPUやメモリなどの計算資源の利用効率の高さ、有体に言えば「速さ」でしょう。ラムダ計算に端を発する関数型言語は、今日主流の命令的な計算機アーキテクチャとは計算モデルから異なるため、現実の計算機を効率よく駆動するネイティブコードを出力する関数型言語コンパイラを開発するのは自明なことではありません。その困難を、ときには新たな理論を開発して、ときには力技で乗り越え、今日の関数型言語コンパイラが成立しています。

コンパイル結果のコード(ひいてはコンパイラそのもの)を速くするには、「CPUコアを増やす」「速いCPUを使う」「コードの無駄を省く」の3つのアプローチが考えられます。最新のSML#コンパイラは、これらのアプローチそれぞれについて、「タスク並列を実現するためのガベージコレクション」「ARM対応のための末尾呼び出しコンパイル」「自然意味論に基づく部分評価器」を装備しています。本セッションでは、SML#コンパイラ全体のアーキテクチャを俯瞰しつつ,これらコンパイラの機能の開発経緯とその理論・技術に焦点を当てます。

本セッションに参加することで、「SML#の使い方」だけでなく「SML#の作られ方」もなんとなくわかった気になる、また関数型言語の裏にあるバイナリな部分にも目が向くようになる、そんな発表を目指します。

1
採択
2025/06/15 11:30〜
Track C
公募セッション50分
Beginner 導入事例

マイクロサービス内で動くAPIをF#で書いている

_ayato_p ayato-p

対象とする聴衆のレベル(該当するレベルを記載してください。)

  • Beginner: 分野の前提知識を必要としない

セッションのテーマ(該当するテーマを記載してください。なければ追加頂いて良いです)

  • 導入事例

セッションの概要

マイクロサービス内で動いているAPIをF#で書いて運用を2年ほど続けて得られた知見をお話します。
Domain Modeling Made Functionalが翻訳されたのをきっかけにF#という言語に興味をもたれた方も多いと思いますが、実業務でF#を採用しているという話は珍しいと思うので以下の観点についてお話できたらと考えています。

  • F#でWeb APIをどのように開発するのか
  • どのように設計するのか
  • 実運用において困ることはあるのか
  • どういう課題があるのか
3
採択
2025/06/15 14:00〜
Track A
公募セッション50分
Intermediate 理論 言語処理系

ラムダ計算と抽象機械と非同期ランタイム

Kory__3 Kory

対象とする聴衆のレベル

  • Intermediate
    • Scala 製の非同期ランタイムである Cats Effect 3 の実装に沿った話をしますが、概念レベルの話がメインになるため、Scala そのものの前提知識は仮定しません
    • ただし、(トーク内で説明はするものの、)ラムダ計算がどのようなものなのか、という点と、β簡約の計算方法をある程度把握していることは想定します

セッションのテーマ

  • 言語処理系(インタープリター)
  • 理論
  • 非同期ランタイム

セッションの概要

単一のプロセスで並行処理を行う方法として、OSカーネル上でスレッドを大量に作成する代わりに、細切れにした「タスク」をユーザーランドで処理し続ける、いわゆる非同期ランタイムが使われることが増えてきています(例: goroutine、tokio-rs、Cats Effect、Project Loom)。アプリケーション内部に用意したスケジューラを用いて実行するタスクを切り替えていくこれらの機構は、使い方こそスレッドベースの非同期プログラミングと大差ない(場合によっては、同期プログラミングとも大差ない)ものの、そのランタイム実装まで追ったことのある方は多くないのではないでしょうか。

この講演の前半部分では、ラムダ計算から出発して、ラムダ計算のシンプルな「インタプリタ」であるCEK 機械の仕組みと動作について詳しく解説します。そして後半部分では、CEK 機械の仕組みを通して、非同期ランタイムの実装(の一パターン、特に Cats Effect 3 の実装)を理解できるのだと道案内することを目標とします。

4
採択
2025/06/15 14:00〜
Track B
スタッフセッション50分
Beginner 入門 言語処理系

Julia という言語について

antimon2 後藤 俊介

対象とする聴衆のレベル(該当するレベルを記載してください。)

  • Beginner: 分野の前提知識を必要としない

セッションのテーマ(該当するテーマを記載してください。なければ追加頂いて良いです)

  • 言語処理系(コンパイラー、インタープリターなど)
  • 入門

セッションの概要

2018年にver.1.0がリリースされた新言語 Julia について、自己の経緯をベースに関数型プログラミング(以降 FP と略記)の観点で紹介・解説します。

Julia はマルチパラダイムを謳っており、特別 FP に特化した言語というわけではありません。所謂『関数型言語』と呼ばれる他言語にはよくあるけれど Julia にはない機能・言語仕様もあります。一方で、動的言語でありながら構造的に設計された型システムを持ち、多重ディスパッチという機構とそこから導かれる強力なポリモーフィズム、また
Lisp 由来の『真のマクロ』などのメタプログラミング機構を持っています。その辺りを足がかりに、以下のような内容について紹介・解説します。

  • FP の観点で見る Julia の言語仕様(Julia の型システム、Julia の関数、イテレータ、並行・並列プログラミング、メタプログラミング等)
  • Julia で FP するためのエッセンス(関数合成、高階関数、パイプライン、等)
  • Julia でより FP するためのサードパーティライブラリ(パッケージ)の紹介(部品化+組み立て機構、モナドのエミュレーション、パターンマッチング、等)
採択
2025/06/15 15:00〜
Track A
公募セッション25分
Beginner 入門 理論 Tips

より安全で単純な関数定義

gakuzzzz がくぞ

対象とする聴衆のレベル(該当するレベルを記載してください。)

  • Beginner: 分野の前提知識を必要としない

セッションのテーマ(該当するテーマを記載してください。なければ追加頂いて良いです)

  • 理論
  • Tips
  • 入門

セッションの概要

静的な型付けを行う言語において、関数の制約を表現する方向性は二つあります。

一つは戻り値で制約を表現する方向

def max[A: Ordering](list: List[A]): Option[A]

もう一つは引数で制約を表現する方向

def max[A: Ordering](list: NonEmptyList[A]): A

このセッションでは、それぞれの違いについて認識するための型の Cardinality という概念を紹介します。
また、具体のシステムにおいてそれぞれの選択がどういった影響を及ぼすかを紹介し、普段のプログラミングにおいてどういったケースでどちらを選択したらよいかの指針を示します。

3
採択
2025/06/15 15:00〜
Track B
公募セッション25分
Beginner Intermediate 言語処理系 導入事例 Tips

Leanで正規表現エンジンをつくる。そして正しさを証明する

__pandaman64__ 井山梃子歴史館

Leanで正規表現エンジンをつくる。そして正しさを証明する

対象とする聴衆のレベル(該当するレベルを記載してください。)

  • Beginner: 分野の前提知識を必要としない
  • Intermediate: 分野の基礎知識を持っている

セッションのテーマ(該当するテーマを記載してください。なければ追加頂いて良いです)

  • 導入事例
  • 言語処理系(コンパイラー、インタープリターなど)
  • Tips

セッションの概要

このセッションでは、Leanの二面性—定理証明支援系としての強力な検証能力と、依存型を備えた純粋関数型プログラミング言語としての実践性—を活かし、正規表現エンジンの実装とその正しさの検証に取り組んだ経験を紹介します。

Leanが純粋関数型言語として持つ特徴を紹介し、特に配列に対する破壊的変更(!)のサポートに注目します。この仕組みを活かすことで、オートマトンベースの正規表現エンジンを効率的に実装できることを説明します。

次に、正規表現エンジンの実装の正しさを検証する過程で直面した具体的な課題、たとえば正規表現の仕様自体の曖昧さや証明の再利用をどのように解決したかを実例を交えて掘り下げます。通常のソフトウェア開発のようにモジュール化で対処したケースもあれば、定理証明支援系ならではの問題とその解決法など、さまざまな例を紹介します。

その他にも、依存型の利用についてもお話しします。依存型は型システムの強力さを一段引き上げますが、一方で型システムに対して人工的な制限も追加してしまいます。ある意味で諸刃の剣である依存型に対して、どのような場面で使うのが良いのか、どのような場面では避けた方が良いのかを例を挙げて説明します。

これらのトピックを通じて、依存型を利用した開発や定理証明がどのようなものであるのかを皆さんに知っていただけたら幸いです。そして、興味をもったらぜひ挑戦してみてください。みんなも定理証明、しよう!

3
採択
2025/06/15 15:00〜
Track C
公募セッション25分
Beginner 入門

はじめて関数型言語の機能に触れるエンジニア向けの学び方/教え方

jsoizo せきね じゅん

対象とする聴衆のレベル(該当するレベルを記載してください。)

  • Beginner: 分野の前提知識を必要としない

セッションのテーマ(該当するテーマを記載してください。なければ追加頂いて良いです)

  • 入門

セッションの概要

関数型プログラミングに始めて触れる方にスキルを身につける/教えるためのトレーニング方法について紹介します。

私の所属先では、サーバサイドの言語として以前はPHPをメインとして開発していましたが、数年前から新規のシステムや既存システムのリプレイス時の言語としてKotlinを採用しています。
Kotlinは純粋関数型言語ではないですが関数型の特徴を持った言語であり、その恩恵を受けた開発が魅力のマルチパラダイムなプログラミング言語です。他方、PHPは比較的命令型・オブジェクト指向型の言語といえます。ゆえに、PHPを書いていた人がいきなり "Kotlinらしい" 関数型の言語機能を利用したコードを書けるようになるためには少々のハードルがあります。
そこで、Kotlinを用いた開発のオンボーディングとして初学者向けの問題集をトレーニング資料として用意し、自学自習を促すことでハードルを超えやすくする取り組みを始めています。

このセッションでは、その自学自習用の資料で具体的にどのような意図でどのような内容に触れているかを解説しつつ、効率的な学び方やペアプロを用いた教え方やついて触れられればと考えております。また、関数型言語の初学者にとって、どのようなことが関数型言語を学ぶ入口であるかのイメージが湧くようなセッションを目指します。

以下の内容をお話する予定です。

  • どのようなことを学ぶ/教える必要があると考えているか
  • 効率的に学ぶためにどのようなことをすればよいか
  • テキストとしてどのようなものをよういしているか
  • ペアプロや等を活用したハンズオンでの教え方について

よろしくお願いいたします。

3
採択
2025/06/15 15:30〜
Track A
公募セッション25分
Beginner 入門 理論

数理論理学からの『型システム入門』入門?

schwmtl ほとけ/Motoki Shakagori

対象とする聴衆のレベル(該当するレベルを記載してください。)

  • Beginner: 分野の前提知識を必要としない

セッションのテーマ(該当するテーマを記載してください。なければ追加頂いて良いです)

  • 理論
  • 入門

セッションの概要

本セッションは、数理論理学を学ぶことによって型システム理論への入門が容易になると主張するものです。
発表者はかつて『型システム入門』の勉強会に参加していましたが、参加者の一部はプログラマではないにもかかわらず、ときに職業プログラマーである発表者よりも、深く内容を理解できていました。彼らは、数理論理学に深く通じているという点で共通していました。
なぜ数理論理学の知識が型システム理論の理解を助けるのでしょうか?それは、静的型付け言語における操作的意味論と型システムの関係が、論理学における意味論と証明体系の関係に対応するからだと発表者は考えています。つまり、論理学に詳しい彼らにとって、『型システム入門』の内容はとても馴染みのあるものだったのです。
そこで本発表では、『型システム入門』への入門を目論んでいる方々に向けて、あえて数理論理学を経由することを提案します。セッションは次のような内容を含みます。

  • 論理学における意味論・証明体系の概要と、両者の関係
  • 静的型付け言語における操作的意味論と型システムの概要と、両者の関係
  • まとめとして、論理学と型システム理論の類似性
7
採択
2025/06/15 15:30〜
Track B
公募セッション25分
Beginner 入門 ライブラリ 導入事例

型付きアクターモデルがもたらす分散シミュレーションの未来

鳥越 貴智

対象とする聴衆のレベル

  • Beginner: 分野の前提知識を必要としない

セッションのテーマ

  • 導入事例
  • ライブラリやフレームワーク
  • 入門

セッションの概要

並列分散処理は高いスケーラビリティを求められる一方で、タスク分割・通信制御・データ整合性など管理するべきことが多く、とにかく開発が複雑になりがちな領域です。
そういった課題に対し、アクターモデルはソフトウェアを「アクター」という小さなメッセージ駆動単位に分割することで、スケーラブルかつ扱いやすい計算モデルを提供します。
さらにアクター間のメッセージに静的な型を付けることで、不正な通信をコンパイル時に防ぐことができます。

トヨタ自動車では、Scalaの型付きアクターモデルライブラリPekkoを基盤として、人流シミュレータ・交通シミュレータ・ドライビングシミュレータ・VRなどをリアルタイムに連携する分散メッセージングフレームワークArkTwinをOSSとして開発しています。
ArkTwinでは大量の時空情報を低遅延で処理する必要があり、型付きアクターモデルの恩恵なしには実現できませんでした。

本セッションでは、ArkTwinの開発を通じて得られた知見をもとに型付きアクターモデルの利点と実装パターンについて紹介し、それらがもたらす分散シミュレーションの未来像についてお話します。

4
採択
2025/06/15 15:30〜
Track C
公募セッション25分
Intermediate ライブラリ

iOSアプリ開発で関数型プログラミングを実現するThe Composable Architectureの紹介

yimajo Imajo Yoshinori

対象とする聴衆のレベル

  • Intermediate: 分野の基礎知識を持っている

なるべくSwift言語や関数型プログラミングの前提知識を必要としないように説明したいとは思いますが、たとえばクロージャが何かという説明などは省略します。

セッションのテーマ

  • ライブラリやフレームワーク

セッションの概要

みなさんは関数型プログラミングの説明を読む時、「それで結局何ができるようになるのか?」または「どんな課題を解決するのか?」と感じたことはありませんか?私自身そう感じることが何度もあります。

本発表では、まずiOSアプリ開発を知らない方向けに、iOS開発で課題となる状態管理やコードのテストについて説明します。そして、それらが関数型プログラミングの考え方をベースにしたOSSフレームワーク『The Composable Architecture (TCA)』によって、どのようにシンプルな形で解決されるのかを解説します。

1
採択
2025/06/15 16:30〜
Track A
公募セッション25分
Beginner 入門 言語処理系 周辺ツール ライブラリ

Gleamという選択肢

Comamoca_ こまもか

対象とする聴衆のレベル(該当するレベルを記載してください。)

  • Beginner: 分野の前提知識を必要としない

セッションのテーマ(該当するテーマを記載してください。なければ追加頂いて良いです)

  • ライブラリやフレームワーク
  • 周辺ツール(ビルドツール、静的解析ツール、エディターなど)
  • 言語処理系(コンパイラー、インタープリターなど)
  • 入門

セッションの概要

昨年v1に達したGleamという静的型付けな関数型言語があります。
この言語はErlang VM(BEAM)とJavaScript(Node.js/Deno/Bun)で実行でき、ifやforなどが存在しないなど非常にシンプルな構文を持っているという特徴があります。

Erlang VMは並列性と耐障害性に優れた処理系で、
主にゲームサービスや通信システムなど大量に同時接続されたりサーバーや高い可用性が求められるシステムにおいて採用されています。

現在のGleamエコシステムはバックエンドフレームワークであるwispや、
フロントエンドフレームワークであるLustreなど様々なライブラリ・フレームワークが登場しています。

本登壇を通して始め方や周辺ツールの導入方法からGleamという言語の強みやエコシステムの現状、今後のGleamの可能性などを紹介していきます。

6
採択
2025/06/15 16:30〜
Track B
公募セッション25分
Intermediate Tips

Scalaだったらこう書けるのに~Scalaが恋しくて~(TypeScript編、Python編)

takezoux2 竹下義晃/takezoux2

対象とする聴衆のレベル

  • Intermediate: 分野の基礎知識を持っている

セッションのテーマ

  • Tips

セッションの概要

Scala歴10年超のエンジニアが、TypeScriptやPythonを書く際にScalaならこう書けるのに!というあるあるを紹介していきます。
型周りの話から、パフォーマンスの話まで、実際に業務で書いていて感じたところを紹介していきます。
TypeScriptやPythonで、関数型スタイルのライブラリを導入して無理やり実現してみて、それでもまだ足りない!ところまで踏み込みます。
Scalaに未練タラタラの内容です。

次のライブラリ/機能にも少し触れます

対象聴衆

  • Scalaを使っていて、TypeScriptやPythonも同時に使っている人
3
採択
2025/06/15 16:30〜
Track C
公募セッション25分
Beginner Intermediate 理論 ライブラリ 導入事例

デコーダーパターンによる3Dジオメトリの読み込み

unsoundscapes Andrey Kuzmin

対象とする聴衆のレベル(該当するレベルを記載してください。)

  • Beginner: 分野の前提知識を必要としない
  • Intermediate: 分野の基礎知識を持っている

セッションのテーマ(該当するテーマを記載してください。なければ追加頂いて良いです)

  • 理論
  • ライブラリやフレームワーク
  • 導入事例

セッションの概要

OBJファイルフォーマットから3Dジオメトリを読み込むために、elm-obj-fileパッケージを使ってデコーダーパターンを使う方法を説明します。OBJフォーマットにはglTFのシーングラフのような最新の機能はありませんが、デコーダーパターンを使うと:

  • 3Dモデルの必要な部分だけを読み込めます(オブジェクト名、マテリアル、グループで)
  • 複数のプリミティブタイプを読み込めます(点、線、三角形、面、テクスチャ付きメッシュ)
  • 座標系と単位を変換できます
  • シンプルなデコーダーを組み合わせて、複雑な形状を作れます

Blenderから作ったモデルをウェブアプリケーションに読み込む実例を示します。

トークの内容:

  1. デコーダーパターンの説明
  2. OBJフォーマットへのパターンの適用
  3. Blenderとelm-3d-sceneやelm-physicsを使った実例

得られること:

  • 複雑なデータフォーマットを解析するためのデコーダーパターンの使い方
  • 関数型プログラミングによるファイルフォーマットの柔軟な扱い方
  • Elmで3Dモデリングソフトとウェブアプリケーションを連携させる方法
1
採択
2025/06/15 17:00〜
Track A
公募セッション25分
Beginner ライブラリ 導入事例

Scala の関数型ライブラリを活用した型安全な業務アプリケーション開発

taretmch Tomoki Mizogami

対象とする聴衆のレベル

  • Intermediate: 分野の基礎知識を持っている

セッションのテーマ

  • 導入事例
  • ライブラリやフレームワーク

セッションの概要

Scala は関数型プログラミングとオブジェクト指向プログラミングのパラダイムを併せ持つ言語です。JVM 上で動作し、Java のエコシステムを活用できるため、業務アプリケーションにも多く採用されています。

本セッションでは、強固な型システムで作られた Scala の関数型ライブラリを活用し、Web アプリケーションを開発する方法を紹介します。業務アプリケーションの実例を交えながら、ドメインモデルやドメインロジック、Web API の型安全な記述方法についてお話します。主に以下の内容を含みます。

  • Refinement Types
  • Opaque Type
  • Union Type
  • Tagless Final

型を活用することで、データの整合性を静的に保証し、エフェクト管理を型安全に実装しながら、疎結合な設計を維持できます。本セッションでは、それらの具体的な適用例や、関数型のアプローチがどのように業務開発に役立つのかを、実践的な観点から解説します。

4
採択
2025/06/15 17:00〜
Track B
公募セッション25分
Beginner 入門 ライブラリ Tips

ClojureScript (Squint) で React フロントエンド開発 2025 年版

馬場 一樹

対象とする聴衆のレベル(該当するレベルを記載してください。)

  • Beginner: 分野の前提知識を必要としない

セッションのテーマ(該当するテーマを記載してください。なければ追加頂いて良いです)

  • ライブラリやフレームワーク
  • Tips
  • 入門

セッションの概要

ClojureScript をベースとした軽量なコンパイラである Squint を用いて React による Web フロントエンド構築のノウハウを発表します。関数型言語で Web フロントエンドを構築してみたい方におすすめの発表です。

Squint は ClojureScript のビルドツールの新星です。ClojureScript の開発環境は時代とともに変化してきました。
もともと ClojureScript は Clojure (Java) 由来のビルドツールを使ってきましたが、 徐々に npm との親和性を求められるようになり、それを高めたツールが登場してきました。
その中でも Squint は npm ライブラリとして使用することができ、 package.json だけで ClojureScript ライクな言語を vite などと組み合わせて気楽にビルドすることができるツールです。

Squint を使うと TypeScript を導入するのと同じくらいの気楽さで ClojureScript を導入でき、 JavaScript 向けのライブラリをそのまま使うことができるので、 ClojureScript の文化を知らなくても開発を始められます。
従来の開発ではどうしても ClojureScript の独自文化を開発者が理解している必要がありましたが、 Squint ではそのハードルは大きく下がります。

今までの JavaScript の資産を気楽に使いつつ、関数型言語のパワフルさを活用する新しい Web フロントエンド開発手法を皆様にお伝えします。

1
採択
2025/06/15 17:00〜
Track C
スタッフセッション10分 (LT)
Beginner 入門 理論

ラムダ計算って何だっけ?関数型の神髄に迫る

nkawagashira 川頭信之

対象とする聴衆のレベル(該当するレベルを記載してください。)

  • Beginner: 分野の前提知識を必要としない

セッションのテーマ(該当するテーマを記載してください。なければ追加頂いて良いです)

  • 理論
  • 入門

セッションの概要

関数型プログラミングの基本ってラムダ計算とよく言われます。そもそもラムダ計算って何でしょう?コンピュータの計算理論の一つですが、あまり有名ではありません。関数型プログラミング言語の基本的なイメージをつかめるように、初心者にも分かるようにラムダ計算を紹介したいと思います。ラムダ計算についてまだ学んででいない人にも、学んだけれど忘れた人にも、導入として聞いてもらいたいです。

4