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
Rabbit + + Sinatra
Sinatra = = rab2pdf
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