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

Rabbit on Sinatra

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Rabbit on Sinatra

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

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

横山昌史Rabbitショッカー勉強会@Sinatra札幌

2013/11/24

Page 2: Rabbit on Sinatra

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

自己紹介

ソフトウェア開発者

Webアプリの主戦場はSinatra

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

Rabbitコミッター札幌でRabbitにコミットしている

Page 3: Rabbit on Sinatra

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

宣伝

Page 4: Rabbit on Sinatra

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

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

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

Page 5: Rabbit on Sinatra

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

話すこと

Rabbitを

Sinatraで動かした話

Page 6: Rabbit on Sinatra

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

話すこと

Rabbitを

Sinatraで動かした話

Page 7: Rabbit on Sinatra

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

Powered by

Page 8: Rabbit on Sinatra

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

Rabbitとは

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

Page 9: Rabbit on Sinatra

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

Rabbitの特徴

文章はテキストで記述

RD、Wiki、Markdownなど

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

バージョン管理しやすい

Page 10: Rabbit on Sinatra

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

昨日機能が豊富

キーバインドの一部

一覧 情報 メニュー

i(小文字) I(大文字) 右クリックhttp://rabbit-shocker.org/ja/sample/rd/rabbit.html

Page 11: Rabbit on Sinatra

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

インストールも簡単

gem install rabbit

Page 12: Rabbit on Sinatra

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

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

Page 13: Rabbit on Sinatra

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

借りたPCで、そもそもRubyが入ってないとか、

そんなとき

Page 14: Rabbit on Sinatra

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

話すこと

Rabbitを

Sinatraで動かした話

Page 15: Rabbit on Sinatra

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

Rabbit + Sinatra = rab2pdfRabbit + Sinatra = rab2pdf

Page 16: Rabbit on Sinatra

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

rab2pdfとは

Webアプリケーション

RabbitのPDF生成機能を活用テキストからプレゼン用PDFを作成

Page 17: Rabbit on Sinatra

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

サーバーの仕事

Rabbitはインストール済み

リクエストはSinatraで処理

SinatraからRabbitを実行PDFを生成

Page 18: Rabbit on Sinatra

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

余談

RabbitはGUIアプリケーションですが、GUI環境がなくても動くように工夫されています。

なので、Webアプリケーションのバックグラウンドとしても使うことができます。

Page 19: Rabbit on Sinatra

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

本題本題

Page 20: Rabbit on Sinatra

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

作り方

テキストを書く1.

rab2pdfに送信2.

PDFをダウンロード3.

Page 21: Rabbit on Sinatra

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

1. テキストを書く

現在はRD形式のみ対応RabbitはWikiやMarkdownに対応

rab2pdfでも対応したい

Page 22: Rabbit on Sinatra

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

2. rab2pdfに送信

普通のフォーム普通のテキストエリア

普通の送信ボタン

Page 23: Rabbit on Sinatra

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

3. PDFをダウンロード

ダウンロードリンクが表示される

PDFはしばらくサーバーに残る

Page 24: Rabbit on Sinatra

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

隠し機能

Gitリポジトリ指定機能

ローカルテーマや画像に対応

http://myokoym.net/rab2pdf/git?url=https://github.com/user/repo

Page 25: Rabbit on Sinatra

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

デモ

http://myokoym.net/rab2pdf/

Page 26: Rabbit on Sinatra

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

使えるテーマ

Rabbit組み込みのテーマ

RubyGems.orgに公開されているテーマ

Page 27: Rabbit on Sinatra

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

ソースコード

オープンソース(GPLv2+)

GitHubで公開https://github.com/myokoym/rab2pdf

Page 28: Rabbit on Sinatra

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

トップページ

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

Page 29: Rabbit on Sinatra

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

slide_source

= TITLE

: authorYour Name: date#{Time.now.strftime("%Y/%m/%d")}

= FIRST SLIDE

* ITEM 1* ITEM 2

Page 30: Rabbit on Sinatra

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"}

Page 31: Rabbit on Sinatra

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 :indexend

Page 32: Rabbit on Sinatra

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

Page 33: Rabbit on Sinatra

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

Thank you

rab2pdfはあくまで入門用&緊急用のツールなので、機能が少ないです。可能ならRabbitをインストールして使うことをおすすめします。 :-)http://rabbit-shocker.org/