Carpe Diem

備忘録

Goのpresentで発表用スライドを作成する

概要

先日Goオールスターズ2で登壇させて頂き、その時プレゼン作成のために使ったpresentの使い方を紹介します。
presentを使うと↓のようなスライドを作れます

http://go-talks.appspot.com/github.com/jun06t/go-all-stars/main.slide#1

メリット・デメリット

実際に使ってみたメリット、デメリットを挙げます。

メリット

  • プログラムをスライド上で実行できる
  • スタイルが統一できる

デメリット

  • プログラムのソースコードの分割が大変(はみ出したらスライド外に表示される)
  • 画像の位置など指定できない
  • ブログなどで埋め込み表示ができない
  • フルスクリーン表示できない
  • アニメーション使えない

あまり融通のきかない感じに見えますが、スライド上でプログラムが実行できるのはやはりメリットは大きく、またプログラムを載せる時に簡単に導入できるのは便利でした。

フォルダ構成

フォルダ構成は以下のようにすると良いです。
xxx.slideというファイルがスライドファイルになります。
画像やプログラムを挿入できるので、それは下記のように別ディレクトリに分けておくと見やすいです。

.
├── README.md
├── example
│   ├── buffer.go
│.......
│   └── writer.go
├── image
│   ├── awa.jpg
│   ├── easy.jpg
│   ├── gopher.png
│   └── leak.jpg
└── main.slide

インストール

$ go get golang.org/x/tools/present

実行は

$ present

とするだけです。すると

http://127.0.0.1:3999

にアクセスして、と言われるので、アクセスするとそのディレクトリに存在するスライド一覧ページに行きます。

f:id:quoll00:20161004153727p:plain

xxx.slideがスライドです。
リンクをクリックすればスライドショーが見れます。

ではこれからxxx.slideを作っていきます。

編集

表紙の用意

こんな感じで用意します。

タイトル
サブタイトル
15:04 2 Jan 2006  ← 日付
Tags: foo, bar, baz  ← タグ

著者名
会社名
joe@example.com  ← メールアドレス
http://url/  ← ブログURLなど付加情報
@twitter_name

こうすると最初のページと最後のページが用意されます。

最初のページ

f:id:quoll00:20161004153404p:plain

最後のページ

f:id:quoll00:20161004153420p:plain

次のスライドを用意する

アスタリスクを付けると次のスライドになります。

* スライド1
- 内容1
- 内容2
- 内容3

* スライド2
- 内容1
- 内容2
- 内容3

f:id:quoll00:20161004154024p:plain

f:id:quoll00:20161004154032p:plain

画像を入れる

.imageで始めると画像を挿入できます。
ローカルファイルでもURLでもどちらでも可能です。
2つ目の引数が高さ、3つ目が横幅です。指定しないとオリジナルのサイズで表示されます。

* スライド3
.image image/easy.jpg 400 500

f:id:quoll00:20161004154328p:plain

プログラムを入れる

.codeとするとソースコードを挿入できます。

* スライド4
.code example/sample.go

f:id:quoll00:20161004155359p:plain

.playとすると実行可能になります。

* スライド5
.play example/sample.go

f:id:quoll00:20161004155407p:plain

Runを押すと実行 f:id:quoll00:20161004155413p:plain

スライドに表示されるプログラムの量を変更する

先程のソースコードの表示ですが、フォントサイズなどの変更に融通がきかないので自分で公開範囲を設定する必要があります。

まずはプログラムにコメントを追加します。OMITというのが必須です。STARTENDは自由な書き方です。

package main

import "fmt"

// START OMIT
func main() {
    fmt.Println("Hello world")
}

// END OMIT

そしてスライド側で

* スライド6
.play example/sample.go /START OMIT/,/END OMIT/

というものを後ろに付けると f:id:quoll00:20161004155734p:plain

表示部分を制限できます。

1つのプログラムの中に複数のOMITを入れることで、複数のスライドに分割することも可能です。

太字・イタリック体

太字・イタリック体も表現可能です。
ただし注意なのが空白にもその記号を入れる必要があります。
以下の例を参考にしてください。

* スライド7
- 通常
- *太字*
- *bold*word*
- _イタリック体_
- _italic_font_

f:id:quoll00:20161004173903p:plain

公開

githubでpublic状態で上げていればいつでもWeb上で公開することが可能です。

http://go-talks.appspot.com/github.com/<owner>/<project>/<xxx.slide>

上記の形式に則ってURLを叩けば、スライドのWebページ自動的に生成されます。

私の場合だとgithubリポジトリgithub.com/jun06t/go-all-stars/main.slide なので、 http://go-talks.appspot.com/github.com/jun06t/go-all-stars/main.slide で公開できます。

ソース