第一回関数型プログラミング(仮)の会

イベント内容


概要

昨今、いわゆる「関数型プログラミング」(Functional Programming)はかなり一般的になっています。

特に、いわゆる「関数型プログラミング言語」(HaskellやOCaml、Clojure、Scala、Elmなど)からは多くの機能が既に主流の言語に輸入されています。たとえば、

  • 高階関数(ファーストクラス関数)
  • 不変コレクション
  • 不変データを簡単に作る機構

などは多くの言語に取り入れられています。

そんな中で、それぞれの言語コミュニティで徐々に「関数型プログラミング」が業務にも広がっているように感じます。

そんな「関数型プログラミング」ぽいものについて、特定の言語コミュニティを超えて知見を共有したり、あるいは単にわいわいしゃべりあうという会を定期開催するのが良いのではと感じるに至りました。

というのが本イベントの趣旨です。関数型プログラミング言語の話にとどまらず、普段利用しているプログラミング言語での「関数型プログラミング」ぽいテクニックについての発表など何でも歓迎です。

「ぽい」としたのは、厳密な「関数型プログラミング」の定義は人によって異なるので、そこで諍いを起こすよりも、とりあえず知見を持ち寄るのが有益と感じるからです。

肩肘はらずにゆるーく楽しめればと思っていますので、お気楽に参加ください。  

参加資格

特にありません。強いていうと、いわゆる「関数型プログラミング言語」と呼ばれる言語(HaskelやOCaml、Clojure、Idris、Erlang、Elixir、Elmなどなど)を使っている方や、そう呼ばれない言語でも、「関数型プログラミング」ぽいことを実践している方が望ましいです。

発表について

Zoomを使ってオンラインで発表していただきます。発表資料を画面共有しながら発表していただくという形になります。プレゼン資料については、必ずしも事前に提出の必要はありませんが、事前にあると聴講しにくる方にとって便利なので、できれば当日までに提出していただけると助かります(提出先については、このページのコメント欄にいただければと思います)。

タイムスケジュール(敬称略)

  • 18:30: 開始

  • 18:30-18:50: オープニング by @kmizu

  • 18:50-20:40: 発表

    • 18:50-19:10: 「命令プログラムを関数プログラミングっぽく書く」 by @nobsun

      素直に命令プログラミングするのが自然であろうプログラムを、関数プログラミングっぽく(命令プログラミングぽくなく)書くという試み。題材はKernighanのトイ・コンピュータのシミュレータ kernighan.com/toysim.html 。言語は「世界最高の命令型言語」Haskellを使う。Haskellの命令型っぽさ(do構文、Arrayの使用)を排除しても素直に書ける、すなわち、関数プログラミング思考を適用できることを示す。

    • 19:10-19:30: 「色々な関数型プログラミング言語を比較してみた」 by @kmizu

      2021年現在、非常に多くのいわゆる「関数型プログラミング言語」が存在しています。また、企業などで採用される事例も随分当たり前に見るようになりました。この発表では、「いわゆる」関数型プログラミング言語たちを横断的に見て、それぞれの特徴を比較します。なお、発表スライドレスになるかもしれません。

    • 19:30-19:40: 休憩

    • 19:40-20:00: 「Domain specific library/frameworkを用いた実践的開発手法」 by @arowM_

      いわゆる「関数型」の文脈では、これまで様々な手法が紹介されてきました。しかし、そのほとんどが要素技術的なものです。null安全な処理や特殊な型クラスを応用したアルゴリズムなど、局所的な処理をうまく実現する手法ばかりです。アプリケーション全体の設計に関わる大域的な手法は、「関数型」の文脈ではあまり語られていないように思えます。そこで本発表では、さくらちゃんがHaskellやElmによる実際の商用アプリ開発で使っている大域的な開発手法を紹介します。Domain specific library/frameworkと名付けたこの手法を使うことで、ビジネスを強力にサポートする開発が可能になります。チームでの分業を効率的にし、サービス運営上の要求も正確にすばやく反映できます。

    • 20:00-20:20: 「Idris 2の数量的型が解決した問題、導入した問題」 by @blackenedgold

      関数型言語Idrisの次世代版として開発されているIdris 2の大きな特徴の1つとして型システムに数量的型理論(Quantitative Type Theory)を導入していることが挙げられます。このシステムではIdris 1にあった証明環境での利用可能な値の問題や、本来ならば実行時に不要な型を持ってしまっていた問題を解決します。一方で数量的型を便利に使うための仕組みであった多重度の部分型付けにより非健全性が入るなどの問題もありました。本発表ではIdris 2の数量的型のそういった特徴を紹介します。

    • 20:20-20:40: 「Lagom Frameworkのご紹介」 by @tockri

      「Lagom Framework」は、マイクロサービスやイベントソーシングによるCQRS等、比較的新しい話題をてんこ盛りにしたフレームワークです。 提供元は、Scala言語を使ったプロダクトを開発する人は全員お世話になっているLightbendです。 私達のチームはDDDや関数型プログラミングと親和性の高いこのフレームワークを業務で使おうとしているので、できるだけライトな感じでご紹介しようと思います。

    • 20:40-21:00: 休憩

  • 21:00-21:30: Lightning Talk

    • 「形式検証の視点から再確認したいMaybe型/Option型からNull許容データへのデータ変換」 by @nekonibox ※事情により10分枠

      関数型言語において、Maybe型やOption型を外部データベースやJSONに変換する際、Null許容データとして扱うことが多いです。しかしながら、Maybe型やOption型とNull許容データのデータ構造は細かい点で異なるため、注意してデータ変換を実装しないと思わぬバグの原因になります。そこで、形式検証の視点からデータ変換のあり方や満たすべき仕様を考察し、その仕様を満たすようなMaybe/Option型からNullableなデータへの変換を実装していきます。

    • 「関数型言語作成のチュートリアルをやってみる」 by @mitsuchi

    • 「関数型Webフロントエンドプログラミング」ひとめぐり by @choplin

      昨今、多くのアプリケーションはWebをベースに提供されています。Webアプリケーションの基盤言語は言わずもがなJavaScriptですが、Webフロントエンドも「関数型プログラミング」で開発したい、そんな貴方もきっと満足できる言語たちを紹介していきます。言語ごとに様々にいいところがあるので、ちょっとでも気になる言語に出会えることを願っています。

    • 「関数型言語OCamlと形式手法で証明されたブロックチェーンプログラミング」@yoshihiro503

      ブロックチェーンの技術によりプログラミング言語によって記述される金融契約の信頼性が重要になってきています。この発表では関数型プログラミングと形式証明の技術を使った高信頼スマートコントラクト開発の方法について紹介します。

    • 「関数型プログラミングの視点で考えるテーマ機能 on React」 by @guvalif

      関数型プログラミングをクライアント領域で実応用する "宣言的 UI" に関して、主要ライブラリの一つである React を軸に、テーマ機能の実現とビルディングブロック性を考察します。

    • 「関数型っぽくROSロボットプログラミング」by @takasehideki

      ロボット開発を加速するプラットフォームとしてROS(Robot Operating System)があります.Elixirでこのプログラミングを気持ちよく進められるRclexという取り組みについて紹介します.

    • ElmアーキテクチャでGUIプログラミング by @totto2727

      Webのフロントエンド開発において、Elmは大きな影響を与えました(Reduxなど)。その文法やロジックは非常にわかりやすく優れています。今回はElmアーキテクチャを元に、GUI開発のできる言語やライブラリを紹介していこうと思います。

  • 21:30-21:50: 休憩+アナウンス

  • 21:50-23:00: 懇親会(Gather利用)

場所

ご自宅などネット環境のあるところならどこでも(要マイク・スピーカー)

受付

特にありません。参加登録いただいた方は「参加者への情報」欄経由でZoom Webinar URLが見られるようになっています。そこからご参加ください。よろしくお願いします。

参加費について

無料です。オンライン開催なので、飲食物の提供はありません。

飲食について

オンライン開催のため飲食物の提供はありませんが、各自でご自由に飲食いただけます。

キャンセルについて

当日あるいは事前に参加できなくなった場合は、必ずこのページから「キャンセル」を押して、キャンセルしてください。

アンケートについて

本イベントの参加者に対して、LTが終わったタイミングで当日アンケートを行います(回答は任意)。アンケートの結果には個人情報を含みませんが、今後のイベントのご案内等のために利用させていただく場合がございます。

<共同利用企業>

  • 株式会社デジタルホールディングス
  • 株式会社オプト

注意事項

※ こちらのイベント情報は、外部サイトから取得した情報を掲載しています。
※ 掲載タイミングや更新頻度によっては、情報提供元ページの内容と差異が発生しますので予めご了承ください。
※ 最新情報の確認や参加申込手続き、イベントに関するお問い合わせ等は情報提供元ページにてお願いします。

類似しているイベント