cryogenでサイトつくろーじぇん

26
{:company “Greative GK” :name “Kazuhiro Hara” :twitter “kara_d” :github “https://github.com/karad ”} Tokyo.clj #24 Cryogenで サイトつくろうじぇん

Upload: kazuhiro-hara

Post on 20-Jul-2015

361 views

Category:

Internet


1 download

TRANSCRIPT

Page 1: Cryogenでサイトつくろーじぇん

{:company “Greative GK” :name “Kazuhiro Hara” :twitter “kara_d” :github “https://github.com/karad”}

Tokyo.clj #24

Cryogenでサイトつくろうじぇん

Page 2: Cryogenでサイトつくろーじぇん

#tokyocljdescjop.org

自己紹介

2

原 一浩ハラ カズヒロ

ClojureScript + Electronのプロジェクトテンプレdescjopの作者

http://greative.jp/

( @kara_d )

http://descjop.org/

Page 3: Cryogenでサイトつくろーじぇん

#tokyocljdescjop.org

Electron用のLeiningenプロジェクト

➡ http://descjop.orgnow version 0.1.4 available

本日0.1.4リリースしましたElectron 0.26.0に対応

3

Page 4: Cryogenでサイトつくろーじぇん

#tokyocljdescjop.org

ちょっと前の著書➡ Play Framework 2徹底入門 - JavaではじめるアジャイルWeb開発

4

実践編(4章~7章)を担当

✦サンプルアプリの企画から設計、構築、テスト、管理画面作成までを一通り

マニュアルにはない詰まりポイントとかもちりばめられてます。

Page 5: Cryogenでサイトつくろーじぇん

#tokyocljdescjop.org

アジェンダ➡ Cryogenとはなんぞや➡ できること➡ Cryogenの構造➡ はじめてのCryogen➡ 処理の流れ➡ コンパイラアセットを作ろう➡ 今後の課題

5

Page 6: Cryogenでサイトつくろーじぇん

#tokyocljdescjop.org 6

Cryogenとはなんぞや

Page 7: Cryogenでサイトつくろーじぇん

#tokyocljdescjop.org

Cryogenとは? ➡ 読み方はクリョージェン?ドイツ語サイトもあることからドイツ製か?

➡ Static Site Generatorの一種jekyllとか系

➡ 静的なHTMLを生成するmarkdownからコンテンツを生成

7

Page 8: Cryogenでサイトつくろーじぇん

#tokyocljdescjop.org 8

できること

Page 9: Cryogenでサイトつくろーじぇん

#tokyocljdescjop.org

できること➡ MarkdownもしくはAsciiDocからHTMLを生成➡ postおよびpageベース➡ TOCを自動生成➡ タグをコンテンツにふれる➡ Bootstrap組み込み済み➡ HTMLテンプレートによるデザインカスタマイズ➡ シンタックスハイライト組み込み済み➡ sitemap自動生成➡ RSS自動生成➡ Sass/SCSSサポート

9

Page 10: Cryogenでサイトつくろーじぇん

#tokyocljdescjop.org

Clojure的な特徴➡ コンフィギュレーションは、edn➡ Markdownに書くメタデータもClojureライク

➡ HTMLテンプレートは、Selmer➡ leiningenテンプレート用意➡ 開発モードは、Ring/Compojureでサーバ起動

10

{:title  "First  Post!"  :layout  :post  :tags    ["tag1"  "tag3"]}

Page 11: Cryogenでサイトつくろーじぇん

#tokyocljdescjop.org

作ったもの➡ 自社サイトをリニューアル http://greative.jppostベースではなく、pageベース

11

Page 12: Cryogenでサイトつくろーじぇん

#tokyocljdescjop.org 12

はじめてのCryogen

Page 13: Cryogenでサイトつくろーじぇん

#tokyocljdescjop.org

はじめてのCryogen➡ leiningenのテンプレートを使おう

➡ サーバとして起動するとファイル監視も開始

13

$  lein  new  cryogen  PROJECT_NAME

$  lein  ring  server

Page 14: Cryogenでサイトつくろーじぇん

#tokyocljdescjop.org 14

Cryogenの構造

Page 15: Cryogenでサイトつくろーじぇん

#tokyocljdescjop.org

Cryogenの構造

15

.├──  project.clj├──  resources│      └──  templates│              ├──  404.html│              ├──  config.edn│              ├──  css│              │      └──  screen.css│              ├──  html│              │      └──  layouts│              ├──  js│              │      └──  highlight.pack.js│              └──  md│                      ├──  pages│                      └──  posts└──  src        └──  cryogen                ├──  core.clj                └──  server.clj

Page 16: Cryogenでサイトつくろーじぇん

#tokyocljdescjop.org 16

処理の流れ

Page 17: Cryogenでサイトつくろーじぇん

#tokyocljdescjop.org

処理の流れ➡ サーバ起動➡ (cryogen-core.watcher/start-watcher! "resources/templates" ignored-files compile-assets-timed)ここで、起動しっぱなしで、ファイル監視

➡ (compile-assets-timed)では、 cryogen-core.compiler/compile-assets を利用しているコンパイラアセットがCryogenのキモ

17

Page 18: Cryogenでサイトつくろーじぇん

#tokyocljdescjop.org

コンパイラアセットでやっていること➡ resources/public内をクリーン➡ 静的リソースファイルをコピー➡ md内のフォルダをまとめてimgへコピー➡ mdページからHTMLの生成➡ mdポストからHTMLの生成➡ タグ関係ページの生成➡ トップページの生成➡ アーカイブページの生成➡ sitemap、rss、sassコンパイル

18

Page 19: Cryogenでサイトつくろーじぇん

#tokyocljdescjop.org

コンパイラアセットに欠かせないconfig➡ compile-assets内でこんな風に呼び出されている

➡ read-config内では、templates/config.ednを読んでいる

19

{:keys  [site-­‐url  blog-­‐prefix  rss-­‐name  recent-­‐posts  sass-­‐src  sass-­‐dest  keep-­‐files  ignored-­‐files]  :as  config}  (read-­‐config)

Page 20: Cryogenでサイトつくろーじぇん

#tokyocljdescjop.org

投稿ごとの画像をまとめる仕組み➡ 通常のポストmd/posts/2014-12-12-hoge.md img/hoge.png

➡ 画像含めてフォルダ化md/posts/myPost/2014-12-12-hoge.mdmd/posts/myPost/hoge.png

20

Page 21: Cryogenでサイトつくろーじぇん

#tokyocljdescjop.org 21

コンパイラアセットを作ろう

Page 22: Cryogenでサイトつくろーじぇん

#tokyocljdescjop.org

コンパイラアセットを作ろう➡ コンパイラはcryogen.core内で定義されており、内容、順番の変更ができない

➡ ファイル監視時に実行されるコンパイラアセットは、server.cljに書かれている

➡ 独自のコンパイルアセットを渡して実行することができる

➡ デフォルトのコンパイラアセットを利用しないこともできる

22

Page 23: Cryogenでサイトつくろーじぇん

#tokyocljdescjop.org

独自のコンパイラアセットは作成できる

➡ これを、

➡ こう使う23

(defn  compile-­‐htaccess    "put  htaccess  file"    []    (println  (blue  "compiling  htaccess"))    (spit  (str  public  "/.htaccess")        (render-­‐file  "templates/.htaccess"  {})))

(cryogen-­‐core.watcher/start-­‐watcher!

   "resources/templates"

   ignored-­‐files

   #(do  (compile-­‐assets-­‐timed)  (compile-­‐htaccess))

Page 24: Cryogenでサイトつくろーじぇん

#tokyocljdescjop.org 24

今後の課題

Page 25: Cryogenでサイトつくろーじぇん

#tokyocljdescjop.org

今後の課題➡ pagesの階層化➡ あまりカスタマイズが過ぎる場合、自作のがいいかも

25

Page 26: Cryogenでサイトつくろーじぇん

{:company “Greative GK” :name “Kazuhiro Hara” :twitter “kara_d” :github “https://github.com/karad”}

Tokyo.clj #24

Cryogenでサイトつくろうじぇん

ありがとうございました!!