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

Effective Jekyll

wtnabe
January 18, 2025

Effective Jekyll

2025-01-18 北陸三県.rb での発表資料です。

真面目にJekyllを使おうと思うといろいろつらくなってくる部分がありますが、それらをどう乗り換え、(比較的)快適にブログを書くか、そのためにいかにyak shaveするか、スナップショットを共有します。

wtnabe

January 18, 2025
Tweet

More Decks by wtnabe

Other Decks in Programming

Transcript

  1. 時代 製品、サービス 90 年代 手書きHTML 日記 2001 tDiary 2001 MovableType

    2003 シックスアパート株式会社 2003 はてなダイアリー 2003 ココログ ( MovableType ) 2003 ライブドアブログ 2003 WordPress
  2. 時代 製品、サービス 2004 GREE 2004 mixi 2004 アメーバブログ 2006 Twitter

    2007 Tumblr 2008 Jekyll 2011 はてなブログ 2014 note 2015 Gatsby
  3. 世代別DOM 構築 and Cache 戦略 1. 事前HTML 生成&キャッシュ Movable Type

    2. 動的HTML 生成(+キャッシュ) tDiary, WordPress, ... 3. 静的サイト(事前HTML 生成) Jekyll, Astro, ... 4. 静的サイド(a.k.a JAMStack ) Gatsby, Next.js, ...
  4. 基本構成 オブジェクトストレージ + CDN + CI/CD 具体例 S3 + CloudFront,

    ... Firebase Hosting, ... Netlify, Vercel, Cloudflare Pages, render.com, ... ※ レン鯖でもイケるっちゃイケるけど個人だとたぶん割高
  5. ライティング環境 いろんな拡張をブッ込めるMarkdown エディタがいいです Markdown Preview Enhanced - Visual Studio Marketplace

    Mermaid, PlantUML などのプレビュー、コードハイライト機能 ※ デフォルトのMarkdown で書いている場合
  6. Liquid の乗りこなし 自由に p できない問題 Jekyll::Filters#jsonify を利用 {{ var |

    jsonify }} 公式推奨は {{ var | inspect }} だけど、inspect は Object の作り方次第なので jsonify の方が安定
  7. jekyll-include-cache HTML 生成負荷削減 benbalter/jekyll-include-cache: A Jekyll plugin to cache the

    rendering of Liquid includes include (部分HTML の読み込み)時に内容を丸ごとcache して HTML 生成をバイパス 完全に共通になる部分に使用 ちょっとでも内容の変化するもの(title とか)に使用するとハマる
  8. ホスティング次第ではビルド用コンテナの最適化も Ruby x Node.js x yarn を利用した静的サイト生成用のDocker image をできるだけ素朴に構築する (2022-05-03)

    | あーありがち Docker を利用したアプリケーション構築のためのイメージの役割と ビルドについて整理してみた (2024-06-22) | あーありがち GitHub - wtnabe/example-node-and-ruby-docker-scripts-and-app: multi language, multi phase, maintainable docker image example
  9. ちなみに「あーありがち」は Debian slim 上にNode.js + Ruby の環境を準備してregistry に保存 3100 以上のエントリを処理、6000

    ページ弱のHTML 生成 Netlify でそのままリリースすると8 分半のところ Google Cloud Build + Firebase Hosting へのdeploy で2 分半 ※ image のupdate には5 分掛かってます
  10. Jekyll の設定の切り替え CSS を書いてる時とエントリ書いてる時で欲しい機能が違う Procfile からjekyll を起動するオプションを切り替え Procfile をERB で生成

    jekyll serve 用のrake task を整備 --limit_posts の設定 --disable-disk-cache の設定 足りなければ _config.yml もERB で動的に生成
  11. 目視チェックを減らしたい Linter 自作 メインイメージを設定しているか description, tag を設定しているか Frontmatter と body

    を別々に lint commit hook evilmartians/lefthook: Fast and powerful Git hooks manager for any type of projects.
  12. 今回触れなかったもの Admin Panel ( JekyllAdmin, NetlifyCMS, etc ) HeadlessCMS Contentful,

    Strapi, microCMS, Kuroco, ... esa.io などからドキュメントを抜いてきてビルド コンテンツをリッチにするplugin
  13. rake task 設定 複数言語Runtime を含むコンテナイメージのmulti-stage build コンテナレジストリそのもの commit hook 設定

    フロントエンドビルドツール JavaScript そのもの、CSS そのもの Jekyll plugin VS Code 拡張?