SlideShare uma empresa Scribd logo
1 de 25
EPUBの構造を詳細に見てみる
(株)三陽社 メディア開発室
田嶋 淳
http://densyodamasii.com/
http://densyodamasii.com/
会社でのおしごと
• 主にDTPデータからのEPUB作成(オーダーメイド
的な案件が多い)
• マニュアル作成/社内EPUB作成業務用アプリ制作
• 外部での宣伝活動etc
本日の概要
• EPUBの内容を詳細に見てみる
• EPUBを解凍してみる
• OPFの内容を見てみる
• InDesignデータからのXML→XHTMLの生成
• XHTMLファイルを効率的に編集する
• テキストエディタでの正規表現
• Perlを利用した置換処理
EPUBの内容を詳細に見てみる
zip -0 -X ../出力ファイル名.epub mimetype;zip -r ../出力ファイ
ル名.epub * -x mimetype */.DS_Store */*/.DS_Store
*/*/*/.DS_Store';
EPUBは解凍は簡単だが圧縮して作成するのはちょっと大変
ターミナルでのEPUB圧縮コマンド例は以下
電書協ガイド仕様のEPUBのファイル構成
itemフォルダの内容
OPF内部の構成
ヘ
ッ
ダ
書
誌
情
報
ManifestSpine
実験① manifestの項目をひとつ消したらどうなるか
実験② spineの並び順を変えたらどうなるか
InDesignデータからの
XML→XHTMLの生成
作業フロー全体の中のここ
→デモをご覧ください
XHTMLファイルを効率的に編集する
テキストエディタでの正規表現
基礎的な正規表現パターンマッチの例
font-[0-9][0-9][0-9]per
「font-085per」「font-050per」「font-100per」
など「font-」「per」で挟まれた3桁の数字のパターン全てにマッチする
見出しの体裁を正規表現で一括変更
検索文字列:>([0-9]).([0-9]).([0-9]) (.*?)</h3>
置換文字列:>$1-$2-$3<span class="font-120per mfont">▶$4</span></h3>
検索文字列のそれぞれの「(〜)」でマッチした部分を記憶しておき(
キャプチャ)、置換文字列の「$1〜$4」に代入。
一括で同様の<h3>見出しのテキスト全てが置き換わる
↓
正規表現の肯定/否定先読み
[0-9]+(?=[年月日])
肯定先読み:連続する半角数字のうち直後に「年/月/日」があるものにマッチ
[0-9]+(?![年月日])
否定先読み:連続する半角数字のうち直後に「年/月/日」がないものにマッチ
直前に指定の文字列があるもの/ないものにマッチさせる記法(後読
み)もあるが、miは非対応。Perlなどの中では使える。
miの「マルチファイル検索」
検索結果が下に一覧で出る。クリックでファイルを開き、該当箇所に飛ぶ
Perlを利用した置換処理
Perlを使った相互リンクの注の連番処理記述例
my $num = 1;
while (/<a class="cyu" href="#ref-c1-2-XX"><span class="key" id="key-c1-2-XX">
[▶XX]/){
my $mynum = sprintf("%02d", $num);
s/<a class="cyu" href="#ref-c1-2-XX"><span class="key" id="key-c1-2-XX">[▶XX
]/<a class="cyu" href="#ref-c1-2-$mynum"><span class="key" id="key-c1-2-
$mynum">[▶$mynum]/;
$num++;
}
my $num = 1;
while (/<p id="ref-c1-2-XX"><a class="cyu" href="#key-c1-2-XX">[▶XX]/){
my $mynum = sprintf("%02d", $num);
s/<p id="ref-c1-2-XX"><a class="cyu" href="#key-c1-2-XX">[▶XX]/<p id="ref-
c1-2-$mynum"><a class="cyu" href="#key-c1-2-$mynum">[▶$mynum]/;
$num++;
}
Perlのtr構文を使った「禁じられた遊び」
tr/ぁ-ん/ァ-ン/;
tr構文の実用的な使用例
Pro書体などJIS90字形のものにInDesignの「印刷標準字体」の機能で
字形補正をかけているパターンの補正用。BMP内の置換のみ。
tr/侠倶剥呑唖嘘噛嚢填屏屡幷痩繋漣煉溺/俠俱剝吞啞噓嚙囊塡屛屢幷瘦繫漣煉溺/;
ご静聴ありがとうございました

Mais conteúdo relacionado

Mais procurados

Drupalテーマとthemingの基礎
Drupalテーマとthemingの基礎Drupalテーマとthemingの基礎
Drupalテーマとthemingの基礎Kenji Shirane
 
D8でコンテンツをレイアウトする手法について
D8でコンテンツをレイアウトする手法についてD8でコンテンツをレイアウトする手法について
D8でコンテンツをレイアウトする手法についてKenji Shirane
 
Drupal のコア要素を知る ~構築を支える道具立て~
Drupal のコア要素を知る ~構築を支える道具立て~Drupal のコア要素を知る ~構築を支える道具立て~
Drupal のコア要素を知る ~構築を支える道具立て~Kenji Shirane
 
Drupal、group、quiz、webformを利用したeラーニングサイト「sqt」
Drupal、group、quiz、webformを利用したeラーニングサイト「sqt」Drupal、group、quiz、webformを利用したeラーニングサイト「sqt」
Drupal、group、quiz、webformを利用したeラーニングサイト「sqt」Kenji Shirane
 
JSON:APIについてざっくり入門
JSON:APIについてざっくり入門JSON:APIについてざっくり入門
JSON:APIについてざっくり入門iPride Co., Ltd.
 
DrupalにおけるJSON:APIの注意点
DrupalにおけるJSON:APIの注意点DrupalにおけるJSON:APIの注意点
DrupalにおけるJSON:APIの注意点iPride Co., Ltd.
 
CMSMix Sapporo vol.3 (Drupal の回)
CMSMix Sapporo vol.3 (Drupal の回)CMSMix Sapporo vol.3 (Drupal の回)
CMSMix Sapporo vol.3 (Drupal の回)Kenji Shirane
 
Html5でword pressテーマを作るよ!
Html5でword pressテーマを作るよ!Html5でword pressテーマを作るよ!
Html5でword pressテーマを作るよ!Muyuu Fujita
 
DBFluteハンズオンで学んだこと etc.
DBFluteハンズオンで学んだこと etc.DBFluteハンズオンで学んだこと etc.
DBFluteハンズオンで学んだこと etc.Masato Tokuda
 
ゼロからつくるWord pressテーマ第5回 後編
ゼロからつくるWord pressテーマ第5回 後編ゼロからつくるWord pressテーマ第5回 後編
ゼロからつくるWord pressテーマ第5回 後編Hitsuji
 
LibreOfficeで電子書籍を創ろう
LibreOfficeで電子書籍を創ろうLibreOfficeで電子書籍を創ろう
LibreOfficeで電子書籍を創ろうMasahisa Kamataki
 

Mais procurados (15)

20121024 sakai epubsem_accessibility
20121024 sakai epubsem_accessibility20121024 sakai epubsem_accessibility
20121024 sakai epubsem_accessibility
 
Drupalテーマとthemingの基礎
Drupalテーマとthemingの基礎Drupalテーマとthemingの基礎
Drupalテーマとthemingの基礎
 
D8でコンテンツをレイアウトする手法について
D8でコンテンツをレイアウトする手法についてD8でコンテンツをレイアウトする手法について
D8でコンテンツをレイアウトする手法について
 
Drupal のコア要素を知る ~構築を支える道具立て~
Drupal のコア要素を知る ~構築を支える道具立て~Drupal のコア要素を知る ~構築を支える道具立て~
Drupal のコア要素を知る ~構築を支える道具立て~
 
Drupal、group、quiz、webformを利用したeラーニングサイト「sqt」
Drupal、group、quiz、webformを利用したeラーニングサイト「sqt」Drupal、group、quiz、webformを利用したeラーニングサイト「sqt」
Drupal、group、quiz、webformを利用したeラーニングサイト「sqt」
 
[BurpSuiteJapan]HTTP基礎入門
[BurpSuiteJapan]HTTP基礎入門[BurpSuiteJapan]HTTP基礎入門
[BurpSuiteJapan]HTTP基礎入門
 
JSON:APIについてざっくり入門
JSON:APIについてざっくり入門JSON:APIについてざっくり入門
JSON:APIについてざっくり入門
 
DrupalにおけるJSON:APIの注意点
DrupalにおけるJSON:APIの注意点DrupalにおけるJSON:APIの注意点
DrupalにおけるJSON:APIの注意点
 
CMSMix Sapporo vol.3 (Drupal の回)
CMSMix Sapporo vol.3 (Drupal の回)CMSMix Sapporo vol.3 (Drupal の回)
CMSMix Sapporo vol.3 (Drupal の回)
 
Html5でword pressテーマを作るよ!
Html5でword pressテーマを作るよ!Html5でword pressテーマを作るよ!
Html5でword pressテーマを作るよ!
 
DBFluteハンズオンで学んだこと etc.
DBFluteハンズオンで学んだこと etc.DBFluteハンズオンで学んだこと etc.
DBFluteハンズオンで学んだこと etc.
 
ゼロからつくるWord pressテーマ第5回 後編
ゼロからつくるWord pressテーマ第5回 後編ゼロからつくるWord pressテーマ第5回 後編
ゼロからつくるWord pressテーマ第5回 後編
 
How to-write-book-by-markdown
How to-write-book-by-markdownHow to-write-book-by-markdown
How to-write-book-by-markdown
 
Web 09
Web 09Web 09
Web 09
 
LibreOfficeで電子書籍を創ろう
LibreOfficeで電子書籍を創ろうLibreOfficeで電子書籍を創ろう
LibreOfficeで電子書籍を創ろう
 

Destaque

Webと出版と、CSSの未来の話
Webと出版と、CSSの未来の話Webと出版と、CSSの未来の話
Webと出版と、CSSの未来の話Shinyu Murakami
 
8 29 slide_tajima
8 29 slide_tajima8 29 slide_tajima
8 29 slide_tajimaJun Tajima
 
ツイートボタンから画像付きツイートをツイートさせる方法
ツイートボタンから画像付きツイートをツイートさせる方法ツイートボタンから画像付きツイートをツイートさせる方法
ツイートボタンから画像付きツイートをツイートさせる方法Akira Fukuoka
 
IMS/GLC 2015 東京セミナー報告とCaliper 1.0
IMS/GLC 2015 東京セミナー報告とCaliper 1.0IMS/GLC 2015 東京セミナー報告とCaliper 1.0
IMS/GLC 2015 東京セミナー報告とCaliper 1.0Hiroshi Takase
 
でんでんコンバーターによるEPUB制作
でんでんコンバーターによるEPUB制作でんでんコンバーターによるEPUB制作
でんでんコンバーターによるEPUB制作Hiroshi Takase
 

Destaque (7)

Webと出版と、CSSの未来の話
Webと出版と、CSSの未来の話Webと出版と、CSSの未来の話
Webと出版と、CSSの未来の話
 
8 29 slide_tajima
8 29 slide_tajima8 29 slide_tajima
8 29 slide_tajima
 
EDUPUB Profile解説
EDUPUB Profile解説EDUPUB Profile解説
EDUPUB Profile解説
 
IMS/GLC Caliper
IMS/GLC CaliperIMS/GLC Caliper
IMS/GLC Caliper
 
ツイートボタンから画像付きツイートをツイートさせる方法
ツイートボタンから画像付きツイートをツイートさせる方法ツイートボタンから画像付きツイートをツイートさせる方法
ツイートボタンから画像付きツイートをツイートさせる方法
 
IMS/GLC 2015 東京セミナー報告とCaliper 1.0
IMS/GLC 2015 東京セミナー報告とCaliper 1.0IMS/GLC 2015 東京セミナー報告とCaliper 1.0
IMS/GLC 2015 東京セミナー報告とCaliper 1.0
 
でんでんコンバーターによるEPUB制作
でんでんコンバーターによるEPUB制作でんでんコンバーターによるEPUB制作
でんでんコンバーターによるEPUB制作
 

Semelhante a 電書ラボ公開セミナー2016年10月「EPUBの構造を詳細に見てみる」

ドキュメントの継続的改善―Sphinxを使いながら
ドキュメントの継続的改善―Sphinxを使いながらドキュメントの継続的改善―Sphinxを使いながら
ドキュメントの継続的改善―Sphinxを使いながらsoishino
 
JEPA 4月度定例会資料 0412
JEPA 4月度定例会資料 0412JEPA 4月度定例会資料 0412
JEPA 4月度定例会資料 0412Takuya Hayashi
 
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」ericsagnes
 
JEPA 4月度定例会資料0409a
JEPA 4月度定例会資料0409aJEPA 4月度定例会資料0409a
JEPA 4月度定例会資料0409aTakuya Hayashi
 
OSS開発勉強会-01B
OSS開発勉強会-01BOSS開発勉強会-01B
OSS開発勉強会-01BKohei KaiGai
 
レンタルサーバで今すぐ始めるWEB開発
レンタルサーバで今すぐ始めるWEB開発レンタルサーバで今すぐ始めるWEB開発
レンタルサーバで今すぐ始めるWEB開発Naoyuki Kataoka
 
Sphinxの使い方事例
Sphinxの使い方事例Sphinxの使い方事例
Sphinxの使い方事例Go Yamada
 
ReVIEWを用いたPDFとEPUBへの変換について
ReVIEWを用いたPDFとEPUBへの変換についてReVIEWを用いたPDFとEPUBへの変換について
ReVIEWを用いたPDFとEPUBへの変換についてmasayoshi takahashi
 
Ocs2012 tokyo/spring plone
Ocs2012 tokyo/spring plone Ocs2012 tokyo/spring plone
Ocs2012 tokyo/spring plone Manabu Terada
 
達人出版会のご紹介(技術編)
達人出版会のご紹介(技術編)達人出版会のご紹介(技術編)
達人出版会のご紹介(技術編)masayoshi takahashi
 
動的なILの生成と編集
動的なILの生成と編集動的なILの生成と編集
動的なILの生成と編集terurou
 
Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践Kazuto Kusama
 
Ocs2013 tokyo spring_plone
Ocs2013 tokyo spring_ploneOcs2013 tokyo spring_plone
Ocs2013 tokyo spring_ploneManabu Terada
 
達人出版会からPHPの本を出版しよう
達人出版会からPHPの本を出版しよう達人出版会からPHPの本を出版しよう
達人出版会からPHPの本を出版しようkenjis
 
ユーザ・デザイナーから見たPlone CMSのアピールポイント
ユーザ・デザイナーから見たPlone CMSのアピールポイントユーザ・デザイナーから見たPlone CMSのアピールポイント
ユーザ・デザイナーから見たPlone CMSのアピールポイントMasaki NIWA
 
2011年10月21日
2011年10月21日2011年10月21日
2011年10月21日nukaemon
 
OSSとクラウドによるコンピューティングモデルの変化
OSSとクラウドによるコンピューティングモデルの変化OSSとクラウドによるコンピューティングモデルの変化
OSSとクラウドによるコンピューティングモデルの変化Nobuyori Takahashi
 
Koedooff20100710(第95回) - Linux でePub ファイルの作成、閲覧 -
Koedooff20100710(第95回) - Linux でePub ファイルの作成、閲覧 -Koedooff20100710(第95回) - Linux でePub ファイルの作成、閲覧 -
Koedooff20100710(第95回) - Linux でePub ファイルの作成、閲覧 -Kenichiro MATOHARA
 

Semelhante a 電書ラボ公開セミナー2016年10月「EPUBの構造を詳細に見てみる」 (20)

ドキュメントの継続的改善―Sphinxを使いながら
ドキュメントの継続的改善―Sphinxを使いながらドキュメントの継続的改善―Sphinxを使いながら
ドキュメントの継続的改善―Sphinxを使いながら
 
JEPA 4月度定例会資料 0412
JEPA 4月度定例会資料 0412JEPA 4月度定例会資料 0412
JEPA 4月度定例会資料 0412
 
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
 
JEPA 4月度定例会資料0409a
JEPA 4月度定例会資料0409aJEPA 4月度定例会資料0409a
JEPA 4月度定例会資料0409a
 
OSS開発勉強会-01B
OSS開発勉強会-01BOSS開発勉強会-01B
OSS開発勉強会-01B
 
レンタルサーバで今すぐ始めるWEB開発
レンタルサーバで今すぐ始めるWEB開発レンタルサーバで今すぐ始めるWEB開発
レンタルサーバで今すぐ始めるWEB開発
 
DevLOVE iPhoneアプリ勉強会
DevLOVE iPhoneアプリ勉強会DevLOVE iPhoneアプリ勉強会
DevLOVE iPhoneアプリ勉強会
 
Sphinxの使い方事例
Sphinxの使い方事例Sphinxの使い方事例
Sphinxの使い方事例
 
ReVIEWを用いたPDFとEPUBへの変換について
ReVIEWを用いたPDFとEPUBへの変換についてReVIEWを用いたPDFとEPUBへの変換について
ReVIEWを用いたPDFとEPUBへの変換について
 
Ocs2012 tokyo/spring plone
Ocs2012 tokyo/spring plone Ocs2012 tokyo/spring plone
Ocs2012 tokyo/spring plone
 
Products.PloneOrg
Products.PloneOrgProducts.PloneOrg
Products.PloneOrg
 
達人出版会のご紹介(技術編)
達人出版会のご紹介(技術編)達人出版会のご紹介(技術編)
達人出版会のご紹介(技術編)
 
動的なILの生成と編集
動的なILの生成と編集動的なILの生成と編集
動的なILの生成と編集
 
Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践
 
Ocs2013 tokyo spring_plone
Ocs2013 tokyo spring_ploneOcs2013 tokyo spring_plone
Ocs2013 tokyo spring_plone
 
達人出版会からPHPの本を出版しよう
達人出版会からPHPの本を出版しよう達人出版会からPHPの本を出版しよう
達人出版会からPHPの本を出版しよう
 
ユーザ・デザイナーから見たPlone CMSのアピールポイント
ユーザ・デザイナーから見たPlone CMSのアピールポイントユーザ・デザイナーから見たPlone CMSのアピールポイント
ユーザ・デザイナーから見たPlone CMSのアピールポイント
 
2011年10月21日
2011年10月21日2011年10月21日
2011年10月21日
 
OSSとクラウドによるコンピューティングモデルの変化
OSSとクラウドによるコンピューティングモデルの変化OSSとクラウドによるコンピューティングモデルの変化
OSSとクラウドによるコンピューティングモデルの変化
 
Koedooff20100710(第95回) - Linux でePub ファイルの作成、閲覧 -
Koedooff20100710(第95回) - Linux でePub ファイルの作成、閲覧 -Koedooff20100710(第95回) - Linux でePub ファイルの作成、閲覧 -
Koedooff20100710(第95回) - Linux でePub ファイルの作成、閲覧 -
 

電書ラボ公開セミナー2016年10月「EPUBの構造を詳細に見てみる」