春のカンファレンスまつり 2025 (TSKaigi, JJUG CCC, 関数型まつり) 参加録
春のカンファレンスまつりと書いたのにTSKaigiとJJUG CCCと関数型まつりしかないのは、自分がこれしか参加していないからです。ごめんなさい!!!!
今回、この3つのカンファレンスとまつりを連続して参加してみて、それぞれが掲げるメインテーマには直接現れない特色がそれぞれあると感じました。
僭越ながら
- TSKaigiは静的検査カンファレンスだった
- JJUG CCCは長期開発カンファレンスだった
- 関数型まつりは言語構文の深層探訪まつりだった
と一旦まとめさせていただいて、それぞれの項目で詳しく感じたことを書きます。
もちろんこのテーマではない発表もあり、その多様な発表こそがカンファレンスの醍醐味だと思うのですが、それぞれのターゲット言語から離れてみるとこうとも見ることができるというのをお伝えしたいと思います。
言語やコミュニティに直接の興味を持たなくても、こういう知見を持って帰れるのかもという参考になれば幸いです。
TSKaigiは静的検査カンファレンスだった
二日間にわたって行われ、現在ライブ配信のアーカイブも公開されています。
ターゲットであるTypeScriptは簡単に言ってしまうとJavaScriptというWebブラウザで動かすために作られた言語に静的型検査を追加したものです。
この時点で結構特殊な言語であることを認識したほうが良く、つまりTypeScriptにとって静的型検査以上に大事なものはないのです。
JavaScriptではなくあくまでTypeScriptと銘打っている通り、このカンファレンスの対象は主にそのJavaScriptとの違いである静的型検査です。
他の言語で例えるならPythonはPythonでも型ヒントにだけテーマを絞っているみたいな状態なのです。しかもそれで二日間やります。
いい意味での異常性というか、TypeScriptコミュニティの熱意の高さがうかがえるのではないでしょうか。
つまりこのカンファレンスに集まる人々は、開発環境での静的検査が重要だよねと思っている人々なわけで、静的検査によるガードレールの敷き方や活用法が多く議論されました。
TSKaigiは静的検査カンファレンスだったのです。
どういう発表があったか
フロントエンド開発で主に用いられるので、WAI-ARIA[1]で型検査を活かす方法とかデザインシステムの強制に型検査を活かそうといったテーマがわかりやすいですかね。
もっと一般的に使われる技術で言えば、APIスキーマをTypeScriptのコードから生成したりその逆でスキーマをTypeScriptから参照することでfetchを型安全にするとか。
TypeScript関係なく活きる話としては、AIと静的検査を合わせてHuman-in-the-loop[2]を削減しようという話もあります。
その発表で触れられたAIにLintルールを書かせてAIを縛ろうというのは特に興味深く、Lintルールを有機的に運用することでコード品質改善や開発速度向上が容易に想像できてよかったです。
JJUG CCCは長期開発カンファレンスだった
春と秋に定期開催されていて、今春は現地開催のみでしたが参加費無料です。
Javaの特色といえばなんといってもJVMですね。Write once, Run anywhere.
今でもどんどんと言語構文が追加されているホットな言語ですが、後方互換性が重視されており一度動くものを作ってしまえばそれはずっと動き続けるというのが強みです。
「何もしていないと壊れる」と言われるWeb界隈とは逆ですね。
とはいえビジネス上の理由からシステムは常に変化するもの、JJUG CCCにはそうして長期開発されているJava(/JVM言語)プロジェクトに携わる人々が集まっています。
JJUG CCCは長期開発カンファレンスだったのです。
どういう発表があったか
まずひとつの目玉として、リプレースプロジェクトの発表が二件ほどありました。
それと目立ったのはSpringBoot[3]のDIコンテナを発端とした、DDDや開発論ですね。
オーソドックスなクラスベースOOP設計論なので、Java/SpringBoot以外でも十分に活かせそうだと感じました。
また、データベースはアプリケーションよりも長生きするということで、長期の開発に耐えられるデータベースの設計論もありました。
LTでは脅威モデリングを導入しようという話や技術書の出し方というのが印象に残りました。
Javaコミュニティという懐の広さとJavaという言語の安定性が、どんな現場でも身になる発表につながっているのだと思います。
関数型まつりは言語構文の深層探訪まつりだった
2日間、現地のみ開催で行われました。ちなみにあまりまつり要素はありません。
ここ何年かの風潮として関数型言語の構文がその他の言語で再解釈され取り入れられ、関数型プログラミングが広く行われるようになってきました。
モダンな書き方は関数型言語からやってくると言い換えてもいいかもしれません。
高階関数[4]にパイプライン[5]にADT[6]にパターンマッチングに純粋関数[7]に全称関数[8]、do記法[9]などなど。
言語の表現力が上がるとどう嬉しいのか、どうしてこの構文が明快なコードにつながるのか、その答えを持った人たちによる実践と理論の両面からの発表の場でした。
関数型まつりは言語構文の深層探訪まつりだったのです。
どういう発表があったか
まずは「関数型ドメインモデリング」の著者からの発表も含めた実践論です。高階関数による依存性注入や、tagless-finalによってドメインモデルのガードレールを作る話など。
ちょっと毛色が異なりますが、AWSが作成している認可システム記述言語の作成で定理証明[10]を取り入れているという話もありました。
関数型言語を支えていると言っても過言ではないモナド[11]や継続[12]の話も多かったです。手続き型言語ではjump命令に支えられたif/for/whileがあるように、関数型言語には継続に支えられた制御構造があるという話がとても響きました。
確かにJavaScriptでもかつてコールバックだけで非同期処理していたしなぁと思っていたら、非同期処理もtryもgoのdeferみたいなのも全部コールバックで実現しつつ書式が冗長にならない構文を提供するGleamという言語の発表がありロマンを感じました。
理論も理論の分野である型システム関連の話も多くありました。「『型システム入門』[13]入門」という発表もあり、本とかで読んでても目が滑ってしまう自分のようなものには講義形式が大変ありがたかったです。
カンファレンスの色はコミュニティの色
以上、3つのカンファレンスとまつりに連続して参加した私が、それぞれを比較して感じたことでした。
どうしても発表が同時並行的に行われる都合上、自分の選好というのもある程度反映されているとは思うのですが、それぞれに色を感じました。
最近全然Java書けてないのでJJUG CCCの発表は活きない、ということもなくそれはそれで持ち帰るものが多かったというのがいい発見でした。
一応この3つは全部自分が知っている言語/界隈だったのですが、今度はRuby全く書いたことないけどRubyのカンファレンスに参加するみたいなこともしてみようかなと思いました。
-
UIコントロールへの意味付け ↩︎
-
いちいちAIが承認を要求してきたり、人間が検証しなきゃいけなかったりするやつ ↩︎
-
JavaのWebアプリケーションフレームワーク ↩︎
-
関数を受け取ったり、関数を返したり ↩︎
-
f(x)
をx |> f
と書くみたいな ↩︎ -
特に「AもしくはB」を表す型があると嬉しい ↩︎
-
副作用がない ↩︎
-
返り値が常にある ↩︎
-
flatMapチェーンを平たく書きたい ↩︎
-
形式手法の一つ。機械的に正しさを証明する ↩︎
-
do構文をするためのやつ ↩︎
-
その後の計算という概念。関数が明示的にその概念を取り扱う一つの現われにコールバックがある ↩︎
-
TaPLとして知られる本。難しいらしい ↩︎
Discussion