Rabbit Slide Show

Rabbit on Sinatra

2013-11-24

Description

Sinatraで動いているプレゼン用PDF作成ツールrab2pdfの紹介

Text

Page: 1

Rabbit on Sinatra
プレゼン用PDF作成ツールrab2pdf
横山昌史
Rabbitショッカー
勉強会@Sinatra札幌
2013/11/24
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf
Powered by Rabbit 2.1.2

Page: 2

自己紹介
ソフトウェア開発者
Webアプリの主戦場はSinatra
Rabbitショッカー
札幌でRabbitを使っている
Rabbitコミッター
札幌でRabbitにコミットしている
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf
Powered by Rabbit 2.1.2

Page: 3

宣伝
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf
Powered by Rabbit 2.1.2

Page: 4

札幌市中央区Ruby会議01
札幌市中央区Ruby会議01
2014年2月8日(土)
2014年2月8日(土)
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf
Powered by Rabbit 2.1.2

Page: 5

話すこと
Rabbitを
Sinatraで動かした話
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf
Powered by Rabbit 2.1.2

Page: 6

話すこと
Rabbitを
Sinatraで動かした話
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf
Powered by Rabbit 2.1.2

Page: 7

Powered by
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf
Powered by Rabbit 2.1.2

Page: 8

Rabbitとは
Rubyで書かれたプログラマー
向けのプレゼンテーションツール
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf
Powered by Rabbit 2.1.2

Page: 9

Rabbitの特徴
文章はテキストで記述
RD、Wiki、Markdownなど
装飾(テーマ)はRubyで記述
RubyGemsで簡単に追加
バージョン管理しやすい
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf
Powered by Rabbit 2.1.2

Page: 10

昨日機能が豊富
キーバインドの一部
一覧
情報
メニュー
i(小文字) I(大文字) 右クリック
http://rabbit-shocker.org/ja/sample/rd/rabbit.html
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf
Powered by Rabbit 2.1.2

Page: 11

インストールも簡単
gem install rabbit
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf
Powered by Rabbit 2.1.2

Page: 12

だけど、インストールする
前に試してみたいとか
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf
Powered by Rabbit 2.1.2

Page: 13

借りたPCで、そもそも
Rubyが入ってないとか、
そんなとき
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf
Powered by Rabbit 2.1.2

Page: 14

話すこと
Rabbitを
Sinatraで動かした話
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf
Powered by Rabbit 2.1.2

Page: 15

Rabbit + Sinatra = rab2pdf
Rabbit + Sinatra = rab2pdf
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf
Powered by Rabbit 2.1.2

Page: 16

rab2pdfとは
Webアプリケーション
RabbitのPDF生成機能を活用
テキストからプレゼン用PDFを作成
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf
Powered by Rabbit 2.1.2

Page: 17

サーバーの仕事
Rabbitはインストール済み
リクエストはSinatraで処理
SinatraからRabbitを実行
PDFを生成
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf
Powered by Rabbit 2.1.2

Page: 18

余談
RabbitはGUIアプリケーションです
が、GUI環境がなくても動くように工
夫されています。
なので、Webアプリケーションのバッ
クグラウンドとしても使うことができ
ます。
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf
Powered by Rabbit 2.1.2

Page: 19

本題
本題
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf
Powered by Rabbit 2.1.2

Page: 20

作り方
1. テキストを書く
2. rab2pdfに送信
3. PDFをダウンロード
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf
Powered by Rabbit 2.1.2

Page: 21

1. テキストを書く
現在はRD形式のみ対応
RabbitはWikiやMarkdownに対応
rab2pdfでも対応したい
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf
Powered by Rabbit 2.1.2

Page: 22

2. rab2pdfに送信
普通のフォーム
普通のテキストエリア
普通の送信ボタン
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf
Powered by Rabbit 2.1.2

Page: 23

3. PDFをダウンロード
ダウンロードリンクが表示される
PDFはしばらくサーバーに残る
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf
Powered by Rabbit 2.1.2

Page: 24

隠し機能
Gitリポジトリ指定機能
ローカルテーマや画像に対応
http://myokoym.net/rab2pdf/git?url=https://github.com/user/repo
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf
Powered by Rabbit 2.1.2

Page: 25

デモ
http://myokoym.net/rab2pdf/
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf
Powered by Rabbit 2.1.2

Page: 26

使えるテーマ
Rabbit組み込みのテーマ
RubyGems.orgに
公開されているテーマ
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf
Powered by Rabbit 2.1.2

Page: 27

ソースコード
オープンソース(GPLv2+)
GitHubで公開
https://github.com/myokoym/rab2pdf
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf
Powered by Rabbit 2.1.2

Page: 28

トップページ
get "/" do
@params ||= {}
@params[:source] = slide_source
haml :index
end
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf
Powered by Rabbit 2.1.2

Page: 29

slide_source
= TITLE
: author
Your Name
: date
#{Time.now.strftime("%Y/%m/%d")}
= FIRST SLIDE
* ITEM 1
* ITEM 2
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf
Powered by Rabbit 2.1.2

Page: 30

フォーム(Haml)
%form{:action => url("/convert", false, true),
:method => "post"}
%p
%textarea{:name => "source",
:cols => 50,
:rows => 10}= @params[:source]
%p
%input{:type => "text",
:name => "filename",
:size => 30,
:value => @params[:filename]}
%p
%input{:type => "submit"}
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf
Powered by Rabbit 2.1.2

Page: 31

PDF生成
post "/convert" do
@download_url = convert(params[:source],
params[:filename])
@params = params
haml :index
end
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf
Powered by Rabbit 2.1.2

Page: 32

Rabbit.run
def convert(source, filename)
...
Tempfile.open(["rab2pdf", ".rab"]) do |tempfile|
tempfile.puts(source)
tempfile.flush
Rabbit::Command::Rabbit.run("--print",
"--output-filename",
pdf_path,
tempfile.path)
end
...
end
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf
Powered by Rabbit 2.1.2

Page: 33

Thank you
rab2pdfはあくまで入門用&緊急用
のツールなので、機能が少ないで
す。可能ならRabbitをインストールし
て使うことをおすすめします。 :-)
http://rabbit-shocker.org/
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf
Powered by Rabbit 2.1.2

Other slides