Upgrade to Pro — share decks privately, control downloads, hide ads and more …

関数型まつりレポート for JuliaTokai #22

関数型まつりレポート for JuliaTokai #22

関数型まつりレポート
JuliaTokai #22 発表資料

Avatar for GOTOH Shunsuke

GOTOH Shunsuke

June 22, 2025
Tweet

More Decks by GOTOH Shunsuke

Other Decks in Programming

Transcript

  1. 自己紹介 • 名前:後藤 俊介 • 所属:有限会社 来栖川電算 • コミュニティ:🌟JuliaTokai, 🌟JuliaLangJa, JuliaTokyo,

    Python東海, 🌟関数型まつり🆕… • 言語:Julia, Python, Ruby, … • SNS等:                  (@antimon2) • SNS等(2):      (@antimon2.jl) • 著書:実践Julia入門
  2. Julia とは?(1) • The Julia Language • 最新 最新 v1.11.5(2025/04/14)

    ◦ LTS:v1.10.9(2025/03/10) ◦ Upcoming:v1.12.0-β4(2025/06/05)🆕 • 科学技術計算に強い! • 動作が速い!(LLVM JIT コンパイル)
  3. Julia とは?(2) • Rのように中身がぐちゃぐちゃでなく、 • Rubyのように遅くなく、 • Lispのように原始的またはエレファントでなく、 • Prologのように変態的なところはなく、

    • Javaのように硬すぎることはなく、 • Haskellのように抽象的すぎない ほどよい言語である 引用元:http://www.slideshare.net/Nikoriks/julia-28059489/8
  4. Julia とは?(3) • C のように高速だけど、 Ruby のようなダイナミズムを併せ持っている • Lisp のような真のマクロを持ちながら、

    MATLAB のような直感的な数式表現もできる • Python のように総合的なプログラミングができて、 R のように統計処理も得意で、 Perl のように文字列処理もできて、 MATLAB のように線形代数もできて、 shell のように複数のプログラムを組み合わせることもできる • 超初心者にも習得は容易でありながら、 ハッカーの満足にも応えられる • インタラクティブな動作環境もあって、コンパイルもできる (Why We Created Julia から抜粋・私訳)
  5. • 2025/06/14(土)〜15(日) に開催 ◦ ちょうど1週間前! • 参加者:合計494名(スタッフ Slack 内の報告より) ◦

    一般参加者:410 ◦ スピーカー:19+23=42 ◦ スタッフ:42 • スタッフしてた(コアスタッフ、当日スタッフ TrackB) • 発表してきた → Julia という言語について (Day2 TrackB 14:00-14:50) 関数型まつり2025
  6. のついでに回答: • return も 式 です。 • ブロック内の次の式が評価さ れなくなる(関数を抜ける)と いう制御構造でももちろんあ

    りますが、一応 式 です。式の 値は与えられた値(return «HOGE» の «HOGE» の値、関 数の戻り値になる値)、もしく は nothing(単に return と だけ書いた場合)です。 反応紹介1 https://x.com/igrep/status/1934115876065980659
  7. のついでに回答その2: • 仰るとおり、「代入が 式 (Expression)ではなく 文 (Statement)」なものとして 想定していたのは Python。 •

    他には割と modern な言語 では Go とか Rust とか。 ◦ あと BASIC系(例 :VB.NET)、Pascal系とか …「そいつら昨今使う か??」というツッコミはお いとくものとしてw 反応紹介2 https://x.com/igrep/status/1934118662434377796
  8. • Day1 TrackB 一発目の発表 ◦ https://fortee.jp/2025fp-matsuri/proposal/b 952a4f0-7db5-4d67-a911-a7a5d8a840ac • Elixir(Erlang VM

    上で動く関数型言語、文法はRuby ライク)で IoT 開発という発表 ◦ Elixirの発表他にも結構多かった(どれも面白かった) • リアルタイムなデモ、Elixir/Nerves の機能・特長の紹 介 • (感想)Elixirは少し触ったことがあり、Julia との共通点 ・類似点が意外に多くて聞いてて楽しかった! デモも見 てるだけで楽しかった! Elixir で IoT 開発、 Nerves なら簡単に できる!? by pojiro https://x.com/pojiro3/status/1933711470606627151
  9. • Day1 TrackB 昼休憩明けの発表 ◦ https://fortee.jp/2025fp-matsuri/proposal /b7a97e49-8624-4eae-848a-68f70205a d2a ◦ 私が司会担当(内容も興味あったので役得)

    • Haskell + DeepLearning • (感想)Hasktorch 辛そう というのが第一印象😅 あと「それJuliaでもできる(テンソルの型付け等)」 「それJuliaならたぶんもっと楽(環境構築・ライブラリ 連携等)」等と思ったトピックいくつか(質問の時間な くて伝えられなかった) Hasktorchで学ぶ関数型ディープラーニング:型安全 なニューラルネットワークとその実践 by 橋本順之 https://x.com/gree_tech/status/1932356360098005303
  10. • Day2 TrackB 私の発表の直後のセッション(25分) ◦ https://fortee.jp/2025fp-matsuri/proposal/af 94193a-4acb-4079-82a9-36bacfae3a20 • Lean という、純粋関数型言語・定理証明系の紹介

    ◦ 満員だった。みんな Lean 好きなんだな ◦ Lean の発表も他にもあった。みんな好きなんだな • 「定理証明は苦しい」→「解けたときの快感で中毒に」w • (感想)Lean も少しだけ触ったことあり。定理証明系は いつかもっとちゃんとやりたいと思ってた所。てかだんだ んやりたくなってきたw Leanで正規表現エンジンをつくる。そして 正しさを証明する by 井山梃子歴史館 https://x.com/ysaito8015/status/1934129955417538958
  11. • Day2 TrackB 終盤の発表(10分LT) ◦ https://fortee.jp/2025fp-matsuri/proposal/9 2b697d1-206c-426a-90c9-9ff3486cce6f • スライド90枚超の爆速LT!楽しい! •

    「LISPのことは忘れてもいいけどラムダ計算は覚えてお いてください」 • (感想)Julia も Lisp の流れを汲んでいる(というか極 論『JuliaはLisp』)のでプロポーザルの時点から興味 あった。内容は概ね同意。Juliaにも当てはまる部分多 かった(関数型としてのステータス、根源は式(S式)とマ クロ、など) Lispは関数型言語(ではない) by うさみけんた https://x.com/ysaito8015/status/1934166904647889367
  12. • Day1 最後のセッション(基調講演、Track A/B/C 共通、録画) ◦ https://fortee.jp/2025fp-matsuri/proposal/cc680424-27f5-4fc1-8fa1-82 b5df6cad20 ◦ 動画(日本語字幕あり):

    https://youtu.be/GYCofVVDaok • 『関数型ドメインモデリング』 という書籍の原著者 • 「直和型とレコード型を駆使しドメインモデリングを正確に表現することで保守 性が向上するだけでなく動作可能なドキュメントとしても機能する」 • (感想)すべてを(純粋関数型ではない)Julia で実践することは難しいが、関数 型プログラミングのコアは分かりやすかったし、基本的な内容は Julia でも応 用できるものも多くて非常にためになった。 • (次以降、特に有用だと思った内容をいくつか紹介) What I have learned from 15 years of functional programming by Scott Wlaschin (1)
  13. • “Five ideas behind FP” (訳:関数型プログラミングの5つの要素) 1. Functions are things (訳:関数は『何か』である)

    2. Functions are like lookup tables (訳:関数はルックアップテーブルのようなものである) 3. Build bigger functions using composition (訳:小さな関数を組み合わせて大きな関数 を構築する) 4. Types are not classes (訳:型はクラスではない) 5. Build bigger types using composition (訳:型を組み合わせて大きな型を構築する) • (感想)簡潔にして核心。これらを意識したプログラミングをするだけで洗練され た間違い(不具合)の少ないコードが書ける(関数型言語でなくても、例えば Julia でも) What I have learned from 15 years of functional programming by Scott Wlaschin (2)
  14. • “Functions are like lookup tables, meaning that they're completely

    predictable.” ◦ 訳: 「関数はルックアップテーブルのようなもので、完全に予測可能である」 • (純粋)関数は 参照等価(であるべき)ということを言い方変えたもの • (感想)Julia では純粋でない(参照等価でない、副作用バンバンにある)関数が 自由に書けてしまうが、少なくとも引数に対して 戻り値が完全に一意 となる関 数を書くように心がければ不具合減らせる。 What I have learned from 15 years of functional programming by Scott Wlaschin (3)
  15. • “Building things out of functions rather than building things

    out of objects and classes.” ◦ 訳: 「オブジェクトやクラスから作るのではなく、関数から作ること」 • その前に「小さなものから大きなものを作る方法は」という枕詞がある • あとその後に「型はクラスではない、集合に近いもの」という説明が続く • (感想)これまさに Julia が得意とする設計思想。翌日の私の発表スライドにも このあたりの話は元々盛り込まれていた(関数レベルの抽象化→引数別の実装 →その組合せでプログラム作成)。 • (感想2)あと「型はクラスではない」はその夜スライド編集して Julia の紹介に 含めた(Julia にはクラスはない、Julia の型はクラスではない) What I have learned from 15 years of functional programming by Scott Wlaschin (4)
  16. • “A function is a standalone thing, not attached to

    a class.” ◦ 訳: 「関数は独立したものであり、クラスに紐づけられるものではない」 • スライドには「言い換えると再利用可能!(Another word for reusable!)」とい う手書きの注釈が付いている • (感想)Julia にもマッチする概念。ただし Julia は 総称関数(generic function) → 引数(型シグニチャ)ごとの実装(アドホック多相) という概念も 入り込んでくる What I have learned from 15 years of functional programming by Scott Wlaschin (5)
  17. • “Pipeline-oriented programming” ◦ 訳: 「パイプライン指向プログラミング」 • 入力から出力まで一方向のパイプライン構築 • その各コンポーネントもパイプラインの各部も理解しやすい

    • 「単一責任の原則」「オープンクローズド原則」などとの関係性も解説 • (感想)Julia にも(F#由来の) パイプライン演算子 |> が存在。それを自然に利 用しやすくするパッケージ(例:私のスライドで挙げたものだと Transducers.jl)もある(元々私のスライドでも紹介してた)。 What I have learned from 15 years of functional programming by Scott Wlaschin (6)
  18. 参考リンク等 (2): 関数型まつり関連 • 公式サイト: https://2025.fp-matsuri.org • fortee(タイムテーブル等): https://fortee.jp/2025fp-matsuri •

    𝕏公式アカウント: https://x.com/fp_matsuri ◦ 𝕏ハッシュタグ: #fp_matsuri, #fp_matsuri_a(TrackA), #fp_matsuri_b(TrackB), #fp_matsuri_c(TrackC) • Scott さんの講演(動画): https://youtu.be/GYCofVVDaok