LoginSignup
1
1

More than 5 years have passed since last update.

Jekyllでプレゼンするためにremark.jsを使った話

Posted at

結論を先に一言で

jekyll + redcarpetの人がremark.jsを使うなら、
assetsとしてmarkdownファイルを用意して、remark.jsが外部ファイルを読み込むように設定しよう

どういうことなのか

普段、技術メモをgithub pagesでjekyllを使ってとっていました

技術メモの内容からLTしようと思ったときに、
markdownで書いたメモの内容をプレゼンテーション形式にできたら楽だと思いました。

markdownからスライドを作るツールとしては、
すでにいくつかあるようで、自分も以下の記事を参考にremark.jsを使うことにしました。

Markdownでプレゼン用スライドをつくる方法いろいろ

失敗したパターン

remark.jsのREADMEを参考に、jekyll用のテンプレートを作ります。
idがsourceになっているテキストエリアにmarkdownを書くことでプレゼンにしてくれるらしいので
そこにjekyllでとっていたメモを表示するようにしました。

<!DOCTYPE html>
<html>
  <head>
    <title>Title</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <style type="text/css">
      @import url(https://fonts.googleapis.com/css?family=Yanone+Kaffeesatz);
      @import url(https://fonts.googleapis.com/css?family=Droid+Serif:400,700,400italic);
      @import url(https://fonts.googleapis.com/css?family=Ubuntu+Mono:400,700,400italic);

      body { font-family: 'Droid Serif'; }
      h1, h2, h3 {
        font-family: 'Yanone Kaffeesatz';
        font-weight: normal;
      }
      .remark-code, .remark-inline-code { font-family: 'Ubuntu Mono'; }
    </style>
  </head>
  <body>
    <textarea id="source">
    {{ content }}
    </textarea>
    <script src="https://gnab.github.io/remark/downloads/remark-latest.min.js">
    </script>
    <script>
      var slideshow = remark.create();
    </script>
  </body>
</html>

ためしに書いたmarkdownも、READMEの内容そのまんまです。

---
layout: default
title: test
---

class: center, middle

# Title

---

# Agenda

1. Introduction
2. Deep-dive
3. ...

---

# Introduction

水平線がでてきた

jekyll serverして見てみると、1スライドに上で書いたmarkdownが表示されます。
remark.jsではハイフン3つがスライドの区切りのはずなのに、
水平線(hr要素)になっているのはなぜだ?と思っていました。

原因は、jekyllの設定でmarkdownのレンダリングにredcarpetを使うようにしていたため、
redcarpetの拡張文法で、ハイフン3つがhr要素にレンダリングされていたからでした。

うまくいったパターン

解決策としては、markdownがjekyllにレンダリングされなければいいことなので、
プレゼンの内容をassetsフォルダ(画像とかCSSとか置いているフォルダ)に配置しました。

メモの書き方

メモ(_postフォルダに保存するもの)の書き方は以下の通りです。

  • レイアウト指定
  • タイトル
  • プレゼンに変換されるmarkdownのパス

だけ設定して何も書いていません。

---
layout: layout_remark
title: テスト
source: /assets/remark/2015-03-05-test.md
---

2015-03-05-testには、READMEに書いてあるmarkdownを書いておきます。

レイアウトの書き方

次にレイアウトのHTMLを変更します。

<!DOCTYPE html>
<html>
  <head>
    <title>Title</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <style type="text/css">
      @import url(https://fonts.googleapis.com/css?family=Yanone+Kaffeesatz);
      @import url(https://fonts.googleapis.com/css?family=Droid+Serif:400,700,400italic);
      @import url(https://fonts.googleapis.com/css?family=Ubuntu+Mono:400,700,400italic);

      body { font-family: 'Droid Serif'; }
      h1, h2, h3 {
        font-family: 'Yanone Kaffeesatz';
        font-weight: normal;
      }
      .remark-code, .remark-inline-code { font-family: 'Ubuntu Mono'; }
    </style>
  </head>
  <body>
    <script src="https://gnab.github.io/remark/downloads/remark-latest.min.js">
    </script>
    <script>
        var slideshow = remark.create({
            sourceUrl: '{{ page.source }}'
        });
    </script>
  </body>
</html>

大事なのは、以下の部分。
remark.createするときにsourUrlを指定して外部ファイルを読み込むことができるので
メモに書いてあったsourceのパスを読み込んでくれるように書きます。

<script>
    var slideshow = remark.create({
        sourceUrl: '{{ page.source }}'
    });
</script>

これでビルドするとメモの一つがスライドに変換されて
LTとかですぐ発表できるようになります。

すごくLTしたくなってきました。

さいごに

ためしに作ってみたのが以下のプレゼンです。
チェックイン風アプリを5分でつくる

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1