Hakyllで遊んでみた
             2013-04-06 広島Ruby勉強会 #031




13年4月7日日曜日
Hakyllって?



             Jekyll みたいなやつ

             静的サイトジェネータ




13年4月7日日曜日
Jekyllじゃダメなん?



             いや、いいけど。

             Haskellしたい。




13年4月7日日曜日
Jekyll と何が違うん?

             Jekyll はルールが決まってる

             Hakyll はルールから定義できる

              デフォだとJekyll似てる感じの構成

             カスタマイズしやすそう



13年4月7日日曜日
Jekyll と何が違うん?



             コードハイライトに pygements が不要

              pandoc 使いたい




13年4月7日日曜日
目標・要求

             Markdown でかきたい

             Pandoc つかいたい

             SCSS つかいたい

             compass つかいたい



13年4月7日日曜日
資料


             http://jaspervdj.be/hakyll/

             http://jaspervdj.be/hakyll/tutorials/01-
             installation.html




13年4月7日日曜日
インストール


             haskellの環境をインストール

               http://www.haskell.org/platform/

             $ cabal install hakyll




13年4月7日日曜日
セットアップ


             $ hakyll-init my-site

               ファイルが生成されます

             $ cd my-site




13年4月7日日曜日
作成されたファイル
        ├── about.rst
        ├── contact.markdown
        ├── css
        │ └── default.css
        ├── images
        │ └── haskell-logo.png
        ├── index.html
        ├── posts
        │ ├── 2012-08-12-spqr.markdown
        │ ├── 2012-10-07-rosa-rosa-rosam.markdown
        │ ├── 2012-11-28-carpe-diem.markdown
        │ └── 2012-12-07-tu-quoque.markdown
        ├── site.hs
        └── templates
         ├── archive.html
         ├── default.html
         ├── post-item.html
         └── post.html


13年4月7日日曜日
コンパイル

             サイトを生成するためのプログラムは作る

               基本的な構成の例が用意してある

               site.hs

             $ ghc --make site.hs



13年4月7日日曜日
サイトの生成



             $ ./site build

               HTML が生成されます




13年4月7日日曜日
_site の中身
        _site
        ├── about.html
        ├── archive.html
        ├── contact.html
        ├── css
        │ └── default.css
        ├── images
        │ └── haskell-logo.png
        ├── index.html
        └── posts
           ├── 2012-08-12-spqr.html
           ├── 2012-10-07-rosa-rosa-rosam.html
           ├── 2012-11-28-carpe-diem.html
           └── 2012-12-07-tu-quoque.html



13年4月7日日曜日
サイトのプレビュー



             $ ./site preview

             $ open http://localhost:8000/




13年4月7日日曜日
デプロイ



             ./site deploy

             設定がいるけどね




13年4月7日日曜日
13年4月7日日曜日
あれどっかでみた?




13年4月7日日曜日
railsdoc.eiel.info




13年4月7日日曜日
13年4月7日日曜日
解説



             生成したファイルは _site

             その他のメタデータ _cache




13年4月7日日曜日
解説

             マッチするファイルがみつかる

              登録した処理をする

             作成したいファイル名を登録

              ファイルを生成

              他のファイルの情報を利用したり


13年4月7日日曜日
解説



             依存性の扱いがよくわからない

              要勉強




13年4月7日日曜日
markdown を使う



             なにもしなくても使える

             pandocCompilerを使う




13年4月7日日曜日
pandocを使う



             pandocCompiler使った




13年4月7日日曜日
SCSS を使う


             マッチしたときの処理の途中で

              unixFilter で コマンドをフィルターに

              sass コマンドで。




13年4月7日日曜日
SCSS を使う場合


        http://jaspervdj.be/hakyll/reference/Hakyll-Core-UnixFilter.html
        にかいてあるとおりでいけます

        match "css/*.scss" $ do
          route $ setExtension "css"
          compile $ getResourceString
              >>= withItemBody (unixFilter "sass" ["-s", "--scss"])
              >>= return . fmap compressCss




13年4月7日日曜日
compassを使う
             いろいろやったけどうまくいかない

              preprocess ってのがあったけど

              preprocess で生成したファイルを更新
              したと認識してくれない

             仕方ないので

              rake でラッパーかいた

13年4月7日日曜日
Rakefile



        desc 'generate site'
        task :generate do
         sh 'ghc --make site.hs && compass compile && ./site build'
        end




13年4月7日日曜日
URLまわり

             hoge.md には hoge/ でアクセスしたい

              hoge.md -> hoge/indexhtml

             customRoute に関数を渡せばよい

              Identify -> FilePath な関数



13年4月7日日曜日
例



        let addIndex x = replaceBaseName x $ (takeBaseName x) ++ "/index"
        route $ customRoute $
          addIndex . (`replaceExtension` "html") . toFilePath




13年4月7日日曜日
ソースコード
      https://github.com/eiel/raildoc.eiel.info




13年4月7日日曜日
ご清聴ありがとうございます




13年4月7日日曜日

More Related Content

PDF
Offline Hoogleで何処でもはすはす
PDF
Wiki設置するならgitit!
PDF
~/.bashrcを難読化しよう!
PDF
なれる! Debian開発者 〜 45分でわかる? メンテナ入門
PDF
黒い画面入門 + パッケージ管理紹介 + Macの使い方とか
PDF
Mac OS X のパッケージ管理紹介/比較
PDF
Nodejsによるapiサーバ構築事例
PDF
20130412 titanium meetupvol7
Offline Hoogleで何処でもはすはす
Wiki設置するならgitit!
~/.bashrcを難読化しよう!
なれる! Debian開発者 〜 45分でわかる? メンテナ入門
黒い画面入門 + パッケージ管理紹介 + Macの使い方とか
Mac OS X のパッケージ管理紹介/比較
Nodejsによるapiサーバ構築事例
20130412 titanium meetupvol7

Similar to Hakyllで遊んでみた。 (20)

PDF
Mysql casual talks vol4
PDF
PhpStormとGrunt.jsで作るCakePHP快適開発環境
PDF
Scala2.10.x bytecode problems in Android
PDF
20101106 ramaze発表
PDF
Sinatraでwebアプリケーション開発を学ぶ
PDF
Jenkins plugin memo
PDF
JavaEE6 First Application #glassfishjp
PDF
Rails初心者レッスン lesson5 2edition
PDF
Sacss sp5
PDF
Railsの基礎
PDF
Sqale の Puppet と Chef (と テスト)
PPT
いまさら聞けないRake入門
KEY
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
PDF
#31 愛しのst2
PDF
Word camptokyo2012セッション資料
PDF
Djangoとweb2pyをapacheに組込む
PDF
Fuel phpをcomposerに本気で対応させた時の話
PDF
Building document with the Sphinx public edtion
PDF
バージョンアップに負けないためのプラクティス
PDF
New Generation Build System "Fly"
Mysql casual talks vol4
PhpStormとGrunt.jsで作るCakePHP快適開発環境
Scala2.10.x bytecode problems in Android
20101106 ramaze発表
Sinatraでwebアプリケーション開発を学ぶ
Jenkins plugin memo
JavaEE6 First Application #glassfishjp
Rails初心者レッスン lesson5 2edition
Sacss sp5
Railsの基礎
Sqale の Puppet と Chef (と テスト)
いまさら聞けないRake入門
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
#31 愛しのst2
Word camptokyo2012セッション資料
Djangoとweb2pyをapacheに組込む
Fuel phpをcomposerに本気で対応させた時の話
Building document with the Sphinx public edtion
バージョンアップに負けないためのプラクティス
New Generation Build System "Fly"
Ad

More from Tomohiko Himura (20)

PDF
つながりをゆるふわにしよう Active supprt notifications
PDF
Hiroshimarbについて
PDF
コンピュータをもっと使おう
PDF
OSC2013 HIROSHIMA ライトニングトーク すごい広島
PDF
広島で Ruby が流行らないのはどう考えても俺たちが悪い
PDF
O/R Mapping の話をするよ。ActiveRecord の話をしたかった。
PDF
Rails の自動読み込みを支える技術
PDF
Rails プロジェクトでスタートダッシュを決める
PDF
すごい cron ? - Jenkins 試した
PDF
すごい広島
PDF
やりなおせる Git 入門
PDF
すごい Hiroshima で楽しく学ぼう
PDF
軽量マークアップ言語で気楽にマークアップ
PDF
Liquid の紹介
PDF
Git 仕組み 入門
PDF
Rails Guide 翻訳しようぜ。
PDF
Hiroshimarb 027-fiber
PDF
Hiroshimarb 027-fiber
KEY
OSC 2012 HIROSHIMA
KEY
SNS 「github」で遊ぼう
つながりをゆるふわにしよう Active supprt notifications
Hiroshimarbについて
コンピュータをもっと使おう
OSC2013 HIROSHIMA ライトニングトーク すごい広島
広島で Ruby が流行らないのはどう考えても俺たちが悪い
O/R Mapping の話をするよ。ActiveRecord の話をしたかった。
Rails の自動読み込みを支える技術
Rails プロジェクトでスタートダッシュを決める
すごい cron ? - Jenkins 試した
すごい広島
やりなおせる Git 入門
すごい Hiroshima で楽しく学ぼう
軽量マークアップ言語で気楽にマークアップ
Liquid の紹介
Git 仕組み 入門
Rails Guide 翻訳しようぜ。
Hiroshimarb 027-fiber
Hiroshimarb 027-fiber
OSC 2012 HIROSHIMA
SNS 「github」で遊ぼう
Ad

Recently uploaded (12)

PDF
翔泳社 「C++ ゼロからはじめるプログラミング」対応 C++学習教材(三谷純)
PDF
Geminiの出力崩壊 本レポートは、Googleの大規模言語モデル「Gemini 2.5」が、特定の画像と短文入力に対して、誤った地名を推定し、最終的に...
PDF
20250823_IoTLT_vol126_kitazaki_v1___.pdf
PPTX
生成AIとモデルベース開発:実はとても相性が良いことを説明します。まあそうだろうなと思われる方はご覧ください。
PPTX
Cosense - 整えずして完全勝利!Cosenseが他のwikiツールと違う理由
PDF
20250826_Devinで切り拓く沖縄ITの未来_AI駆動開発勉強会 沖縄支部 第2回
PPTX
Vibe Codingを触って感じた現実について.pptx .
PDF
ココロ分解帳|感情をやさしく分解し自分と他者を理解するためのモバイルノートアプリ
PDF
Yamaha DT200WR Real Enduro ENGINE CYLINDER TRANSMISSION
PDF
Working as an OSS Developer at Ruby Association Activity Report 2025
PDF
R-SCoRe: Revisiting Scene Coordinate Regression for Robust Large-Scale Visual...
翔泳社 「C++ ゼロからはじめるプログラミング」対応 C++学習教材(三谷純)
Geminiの出力崩壊 本レポートは、Googleの大規模言語モデル「Gemini 2.5」が、特定の画像と短文入力に対して、誤った地名を推定し、最終的に...
20250823_IoTLT_vol126_kitazaki_v1___.pdf
生成AIとモデルベース開発:実はとても相性が良いことを説明します。まあそうだろうなと思われる方はご覧ください。
Cosense - 整えずして完全勝利!Cosenseが他のwikiツールと違う理由
20250826_Devinで切り拓く沖縄ITの未来_AI駆動開発勉強会 沖縄支部 第2回
Vibe Codingを触って感じた現実について.pptx .
ココロ分解帳|感情をやさしく分解し自分と他者を理解するためのモバイルノートアプリ
Yamaha DT200WR Real Enduro ENGINE CYLINDER TRANSMISSION
Working as an OSS Developer at Ruby Association Activity Report 2025
R-SCoRe: Revisiting Scene Coordinate Regression for Robust Large-Scale Visual...

Hakyllで遊んでみた。

  • 1. Hakyllで遊んでみた 2013-04-06 広島Ruby勉強会 #031 13年4月7日日曜日
  • 2. Hakyllって? Jekyll みたいなやつ 静的サイトジェネータ 13年4月7日日曜日
  • 3. Jekyllじゃダメなん? いや、いいけど。 Haskellしたい。 13年4月7日日曜日
  • 4. Jekyll と何が違うん? Jekyll はルールが決まってる Hakyll はルールから定義できる デフォだとJekyll似てる感じの構成 カスタマイズしやすそう 13年4月7日日曜日
  • 5. Jekyll と何が違うん? コードハイライトに pygements が不要 pandoc 使いたい 13年4月7日日曜日
  • 6. 目標・要求 Markdown でかきたい Pandoc つかいたい SCSS つかいたい compass つかいたい 13年4月7日日曜日
  • 7. 資料 http://jaspervdj.be/hakyll/ http://jaspervdj.be/hakyll/tutorials/01- installation.html 13年4月7日日曜日
  • 8. インストール haskellの環境をインストール http://www.haskell.org/platform/ $ cabal install hakyll 13年4月7日日曜日
  • 9. セットアップ $ hakyll-init my-site ファイルが生成されます $ cd my-site 13年4月7日日曜日
  • 10. 作成されたファイル ├── about.rst ├── contact.markdown ├── css │ └── default.css ├── images │ └── haskell-logo.png ├── index.html ├── posts │ ├── 2012-08-12-spqr.markdown │ ├── 2012-10-07-rosa-rosa-rosam.markdown │ ├── 2012-11-28-carpe-diem.markdown │ └── 2012-12-07-tu-quoque.markdown ├── site.hs └── templates ├── archive.html ├── default.html ├── post-item.html └── post.html 13年4月7日日曜日
  • 11. コンパイル サイトを生成するためのプログラムは作る 基本的な構成の例が用意してある site.hs $ ghc --make site.hs 13年4月7日日曜日
  • 12. サイトの生成 $ ./site build HTML が生成されます 13年4月7日日曜日
  • 13. _site の中身 _site ├── about.html ├── archive.html ├── contact.html ├── css │ └── default.css ├── images │ └── haskell-logo.png ├── index.html └── posts ├── 2012-08-12-spqr.html ├── 2012-10-07-rosa-rosa-rosam.html ├── 2012-11-28-carpe-diem.html └── 2012-12-07-tu-quoque.html 13年4月7日日曜日
  • 14. サイトのプレビュー $ ./site preview $ open http://localhost:8000/ 13年4月7日日曜日
  • 15. デプロイ ./site deploy 設定がいるけどね 13年4月7日日曜日
  • 20. 解説 生成したファイルは _site その他のメタデータ _cache 13年4月7日日曜日
  • 21. 解説 マッチするファイルがみつかる 登録した処理をする 作成したいファイル名を登録 ファイルを生成 他のファイルの情報を利用したり 13年4月7日日曜日
  • 22. 解説 依存性の扱いがよくわからない 要勉強 13年4月7日日曜日
  • 23. markdown を使う なにもしなくても使える pandocCompilerを使う 13年4月7日日曜日
  • 24. pandocを使う pandocCompiler使った 13年4月7日日曜日
  • 25. SCSS を使う マッチしたときの処理の途中で unixFilter で コマンドをフィルターに sass コマンドで。 13年4月7日日曜日
  • 26. SCSS を使う場合 http://jaspervdj.be/hakyll/reference/Hakyll-Core-UnixFilter.html にかいてあるとおりでいけます match "css/*.scss" $ do route $ setExtension "css" compile $ getResourceString >>= withItemBody (unixFilter "sass" ["-s", "--scss"]) >>= return . fmap compressCss 13年4月7日日曜日
  • 27. compassを使う いろいろやったけどうまくいかない preprocess ってのがあったけど preprocess で生成したファイルを更新 したと認識してくれない 仕方ないので rake でラッパーかいた 13年4月7日日曜日
  • 28. Rakefile desc 'generate site' task :generate do sh 'ghc --make site.hs && compass compile && ./site build' end 13年4月7日日曜日
  • 29. URLまわり hoge.md には hoge/ でアクセスしたい hoge.md -> hoge/indexhtml customRoute に関数を渡せばよい Identify -> FilePath な関数 13年4月7日日曜日
  • 30. let addIndex x = replaceBaseName x $ (takeBaseName x) ++ "/index" route $ customRoute $ addIndex . (`replaceExtension` "html") . toFilePath 13年4月7日日曜日
  • 31. ソースコード https://github.com/eiel/raildoc.eiel.info 13年4月7日日曜日