関数型まつり2025
採択
公募セッション10分 (LT)
公募セッション Beginner 導入事例 ライブラリ/フレームワーク

F#で自在につくる静的ブログサイト

pizzacat83b pizzacat83 pizzacat83b

対象とする聴衆のレベル

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

セッションのテーマ

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

セッションの概要

私のブログサイト https://blog.pizzacat83.com を作るために F# でジェネレータを実装した話です。このブログサイトはFornaxという静的サイトジェネレータをforkしたジェネレータで生成しています。

Fornaxは、データの読み込みやサイトの生成処理を F#スクリプトで書くと、それを実行してサイトを生成してくれる、というものです。これにより、以下のメリットがもたらされます。

  • テンプレート言語の表現力の制約に縛られず、F#で実装すればなんでもできる
  • 一般的なテンプレート言語と違い、F#譲りの型検査・コード補完等が使える

データ読み込みやサイト生成をF#スクリプトで表現するからこそ、データソースとしてファイルから読み込むことも、headless CMSのAPIを叩くこともできます。サイト生成処理の中ではMarkdownをHTMLに変換することも、Markdown一式からRSSを生成することも、自在に実装できます。そしてこれらの処理をすべて F#で実装するので、F#の型システムの恩恵を存分に享受できます。補完のないままテンプレート言語を書いて実行時エラーに悩まされる必要はないのです。

セッションでは以下について話す予定です。

  • Fornaxの魅力
  • Fornax内部の仕組み
    • F#スクリプトを実行時に読み込んで、Fornax自体とスクリプトの間でオブジェクトをやり取りするには?
    • ファイルをウォッチして、変更があった場合にサイトを再生成してブラウザをリロードするには?

なお、Fornaxの使い方や私がFornaxを選定した背景などは、ブログ記事「F#でこのブログを構築した」に綴っています。セッション内で語りきれなかったテーマについても、懇親会などでぜひお話ししましょう!