Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
RubyでPDFを作りたくなったら Kyobashi.rb #13 資料
Search
Shun Nishitani
August 17, 2026
Programming
94
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
RubyでPDFを作りたくなったら Kyobashi.rb #13 資料
Kyobashi.rb #13 資料
Shun Nishitani
August 17, 2026
More Decks by Shun Nishitani
See All by Shun Nishitani
技術書同人誌を出す - for Those Who Don't Usually Output- 第92回Ruby関西勉強会
nisshy82
0
240
「盛り上がってるチケットを見たい」- Redmine Issue Trending プラグイン- Redmine Japan vol.5 ショートスピーチ 登壇資料
nisshy82
0
37
Other Decks in Programming
See All in Programming
Security issues being discussed on Web Platforms
petamoriken
0
1.4k
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
420
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
880
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
1
330
mrbgem 三角測量 開発
ogom
0
190
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
140
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
20
20k
Simple Storage Service(S3) is not simple
iwatsukayura
0
130
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
440
setup-vp GitLab対応の裏側
naokihaba
0
150
Agents on Rails - Rails at Scale 2026
irinanazarova
0
320
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
1.1k
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
331
22k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
66k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.1k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
920
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
610
Claude Code のすすめ
schroneko
67
230k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
68
58k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
390
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Building Applications with DynamoDB
mza
96
7.2k
Transcript
RubyでPDFを 作りたくなったら Kyobashi.rb #13 にっしー @nisshy82 1
自己紹介 • 名前 ◦ にっしー • Twitter(𝕏) ◦ @nisshy82 •
ソフトウェアエンジニア歴 ◦ 2年 • おしごと ◦ Redmineのプラグインを開発しています ◦ Ruby on Rails / React ◦ Claude Code 2
技書博に出ることにしました! テーマ: Redmineプラグインの作り方 • • • • 既存のRedmineへ、どう処理を差し込むか メンテナビリティの高いプラグインをどう作るか React
/ RSpec 実際にプラグインを作って詰まったところ など……… 3
経緯 8/1 きのこ関西 → 8/5 申込 → 9/13 本番 まだ1ページも書けてない
4
本を作るなら、 最初に思い浮かぶのは ……LaTeX 5
マジでLaTeXでやりたくない なぜか通らないビルド 思い通りのところに入らない画像 6
Markdown + CSSで作れたらうれしい • 書き慣れた Markdown で執筆したい • CSSもAIになら書かせられる ◦
し、最悪フォント指定なども読めて理解 できる 7
本を組むための選択肢 Vivliostyle Typst JavaScript / Node.js Rust Markdown / HTML
+ CSS → 出版向けPDF 独自のマークアップ → PDF • 目次・表紙・テーマ • Web標準のCSS組版 • 組版システムとして完 結 • コンパイルが速い 8
結論 組版システムはややこしいので この2つのどちらかを使おう! • 長いものに巻かれたほうが良さそう ◦ Vivliostyle: 2015年〜 ◦ Typst:
2019年〜 8
…………せっかくなら Rubyで書けたらいいな 9
「Rubyで本≒PDFを作る」 請求書 帳票 Web画面 技術文書 同じPDFでも、必要なレイアウトと組版が違う 10
既存のPDFに対応した gem Prawn HexaPDF Asciidoctor PDF Ferrum Kitabu prawn-html /
prawn-markup 多種多様な gem 12
Prawn Rubyのコード → PDF • Rubyから文字・表・図 形を配置する • 帳票や請求書など、形 が決まったPDFに向く
• レイアウトは自分で組 む 13
HexaPDF PDFの読み書き・編集 + 文書レイアウト → PDF • PDFそのものを読み書き・編集できる • 自動文書レイアウト機能も持っている
• HTML / CSSの組版エンジンではない 14
Asciidoctor PDF AsciiDoc + YAMLテーマ → PDF • Ruby製で、構造化された技術文書を組め る
• 標準テーマがあり、すぐPDFにできる • スタイル指定はCSSではなくテーマ言語 15
Ferrum + Chrome HTML + CSS → Chromeで描画 → PDF
• 既存のWeb画面とCSSを使える • Chromeの印刷機能へ任せられる 16
Kitabu Markdown + CSS → Prince → PDF • Ruby製の電子書籍フレームワーク
• 章構成・目次・シンタックス ハイライト、EPUB / HTML出力 • ちょっとライセンス料がかかります よ〜 17
どれを選ぶ? Prawn 固定レイアウトの帳票・請求書 HexaPDF PDF操作と文書レイアウト Asciidoctor PDF 構造化された技術文書 Ferrum +
Chrome 既存のWeb画面 Kitabu RubyでMarkdown+CSSの電子書籍 18
RubyでPDFを作る 選択肢は様々ある 19
自作オレオレ gemの紹介 ※未完成 Rubihan Markdown + CSS → PDFを、Rubyだけで、それなりに。 26
本の構成を Rubyで書ける 28
目次の作り方も、 Rubyで差し替え可能 29
今回ほしかったもの • 本文はMarkdown、紙面はCSS • ChromeやPrinceなどの外部レンダラを使わない • 文章が次のページへ流れる、一般文書 • Rubyだけで動く 「PDFを出す」だけではなく、「本を組む」が必要
20
「PDFを作る」と「文書を組む」は違う PDFを作る 文書を組む 座標・文字・図形 ↓ PDFへ描く 文章・構造・スタイル ↓ 行とページを決める ↓
PDFへ描く 21
組版システムが担当すること Markdown 文章を読む → 文書構造 見出し・段落 → CSS 見た目を決める →
レイアウト → 行・ページ・目次 PDF 結果を書き出す フォント、改行、禁則処理、改ページ、ヘッダー、ページ番号 …… 22
1行を決めるにもフォント情報が必要 文字幅が分からない → どこで改行するか 決められない 日本語では、行頭・行末に置けない文字がある(禁則処理) ex. 拗音(ゃゅょ)・撥音(っ)・句読点・カギ括弧 23
目次+ページ番号問題 本文を組む → ページ番号が分かる → 目次を入れる → ページが動く 安定するまで、ループする LaTeXで何度も見た光景
24
PDF/組版、 やっぱり大変 25
おわりに • RubyでPDFを作る選択肢は様々 • 作りたい文書と、組版のリッチさで選ぶ • PDFを作ることと、組版システムで文書を組むことは違う 30