SlideShare a Scribd company logo
1 of 33
Download to read offline
Rabbit on Sinatra
プレゼン用PDF作成ツールrab2pdf

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

Powered by Rabbit 2.1.2
自己紹介
ソフトウェア開発者
Webアプリの主戦場はSinatra

Rabbitショッカー
札幌でRabbitを使っている

Rabbitコミッター
札幌でRabbitにコミットしている
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf

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

Powered by Rabbit 2.1.2
札幌市中央区Ruby会議01
札幌市中央区Ruby会議01
2014年2月8日(土)
2014年2月8日(土)

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

Powered by Rabbit 2.1.2
話すこと

Rabbitを
Sinatraで動かした話

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

Powered by Rabbit 2.1.2
話すこと

Rabbitを
Sinatraで動かした話

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

Powered by Rabbit 2.1.2
Powered by

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

Powered by Rabbit 2.1.2
Rabbitとは

Rubyで書かれたプログラマー
向けのプレゼンテーションツール

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

Powered by Rabbit 2.1.2
Rabbitの特徴
文章はテキストで記述
RD、Wiki、Markdownなど

装飾(テーマ)はRubyで記述
RubyGemsで簡単に追加

バージョン管理しやすい
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf

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

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

Powered by Rabbit 2.1.2
インストールも簡単

gem install rabbit

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

Powered by Rabbit 2.1.2
だけど、インストールする
前に試してみたいとか

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

Powered by Rabbit 2.1.2
借りたPCで、そもそも
Rubyが入ってないとか、
そんなとき

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

Powered by Rabbit 2.1.2
話すこと

Rabbitを
Sinatraで動かした話

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

Powered by Rabbit 2.1.2
Rabbit + Sinatra = rab2pdf
Rabbit + Sinatra = rab2pdf

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

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

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

Powered by Rabbit 2.1.2
サーバーの仕事
Rabbitはインストール済み
リクエストはSinatraで処理
SinatraからRabbitを実行
PDFを生成

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

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

Powered by Rabbit 2.1.2
本題
本題

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

Powered by Rabbit 2.1.2
作り方
1. テキストを書く
2. rab2pdfに送信
3. PDFをダウンロード

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

Powered by Rabbit 2.1.2
1. テキストを書く

現在はRD形式のみ対応
RabbitはWikiやMarkdownに対応
rab2pdfでも対応したい

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

Powered by Rabbit 2.1.2
2. rab2pdfに送信

普通のフォーム
普通のテキストエリア
普通の送信ボタン

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

Powered by Rabbit 2.1.2
3. PDFをダウンロード

ダウンロードリンクが表示される
PDFはしばらくサーバーに残る

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

Powered by Rabbit 2.1.2
隠し機能

Gitリポジトリ指定機能
ローカルテーマや画像に対応
http://myokoym.net/rab2pdf/git?url=https://github.com/user/repo

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

Powered by Rabbit 2.1.2
デモ

http://myokoym.net/rab2pdf/

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

Powered by Rabbit 2.1.2
使えるテーマ

Rabbit組み込みのテーマ
RubyGems.orgに
公開されているテーマ

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

Powered by Rabbit 2.1.2
ソースコード

オープンソース(GPLv2+)
GitHubで公開
https://github.com/myokoym/rab2pdf

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

Powered by Rabbit 2.1.2
トップページ

get "/" do
@params ||= {}
@params[:source] = slide_source
haml :index
end

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

Powered by Rabbit 2.1.2
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
フォーム(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
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
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
Thank you
rab2pdfはあくまで入門用&緊急用
のツールなので、機能が少ないで
す。可能ならRabbitをインストールし
て使うことをおすすめします。 :-)
http://rabbit-shocker.org/

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

Powered by Rabbit 2.1.2

More Related Content

Similar to Rabbit on Sinatra

Building Static Website With Github And Jekyll
Building Static Website With Github And JekyllBuilding Static Website With Github And Jekyll
Building Static Website With Github And JekyllYoji Shidara
 
otomodachi-kakumei
otomodachi-kakumeiotomodachi-kakumei
otomodachi-kakumeiUchio Kondo
 
20091119_sinatraを使ってみた
20091119_sinatraを使ってみた20091119_sinatraを使ってみた
20091119_sinatraを使ってみたngi group.
 
コンテナホスティングサービス「jaisting」開発に至るまで
コンテナホスティングサービス「jaisting」開発に至るまでコンテナホスティングサービス「jaisting」開発に至るまで
コンテナホスティングサービス「jaisting」開発に至るまでTatsuya Yagi
 
Pythonでパケット解析
Pythonでパケット解析Pythonでパケット解析
Pythonでパケット解析euphoricwavism
 
[20110827 PyConJP 2011 LT]pythonでrdmaを・・・
[20110827 PyConJP 2011 LT]pythonでrdmaを・・・[20110827 PyConJP 2011 LT]pythonでrdmaを・・・
[20110827 PyConJP 2011 LT]pythonでrdmaを・・・wakadannacom
 
ぼちぼちぼっち開発 With raspberry pi アイデアソン 20141019
ぼちぼちぼっち開発 With raspberry pi アイデアソン 20141019ぼちぼちぼっち開発 With raspberry pi アイデアソン 20141019
ぼちぼちぼっち開発 With raspberry pi アイデアソン 20141019catmoney
 

Similar to Rabbit on Sinatra (11)

Building Static Website With Github And Jekyll
Building Static Website With Github And JekyllBuilding Static Website With Github And Jekyll
Building Static Website With Github And Jekyll
 
otomodachi-kakumei
otomodachi-kakumeiotomodachi-kakumei
otomodachi-kakumei
 
組込み向けRuby処理系mrubyの可能性
組込み向けRuby処理系mrubyの可能性組込み向けRuby処理系mrubyの可能性
組込み向けRuby処理系mrubyの可能性
 
Start-padrino
Start-padrinoStart-padrino
Start-padrino
 
Red Data Tools
Red Data ToolsRed Data Tools
Red Data Tools
 
20091119_sinatraを使ってみた
20091119_sinatraを使ってみた20091119_sinatraを使ってみた
20091119_sinatraを使ってみた
 
コンテナホスティングサービス「jaisting」開発に至るまで
コンテナホスティングサービス「jaisting」開発に至るまでコンテナホスティングサービス「jaisting」開発に至るまで
コンテナホスティングサービス「jaisting」開発に至るまで
 
Pythonでパケット解析
Pythonでパケット解析Pythonでパケット解析
Pythonでパケット解析
 
[20110827 PyConJP 2011 LT]pythonでrdmaを・・・
[20110827 PyConJP 2011 LT]pythonでrdmaを・・・[20110827 PyConJP 2011 LT]pythonでrdmaを・・・
[20110827 PyConJP 2011 LT]pythonでrdmaを・・・
 
ぼちぼちぼっち開発 With raspberry pi アイデアソン 20141019
ぼちぼちぼっち開発 With raspberry pi アイデアソン 20141019ぼちぼちぼっち開発 With raspberry pi アイデアソン 20141019
ぼちぼちぼっち開発 With raspberry pi アイデアソン 20141019
 
Hudson × Redmine
Hudson × RedmineHudson × Redmine
Hudson × Redmine
 

Rabbit on Sinatra