‘未分類’ カテゴリーのアーカイブ

Xojo使い始めました

2016/03/24

 グレープシティさん開催の「Xojo の基本から実践まで学べるセミナー」に行ってきました。
 私が所属している会社ではこれまでEPUB制作用のツールをPerlにApplescript StudioでGUIを被せる形で作ってきたのですが、Applescript Studioを使うにはXcode3の環境の維持が必要で、XcodeはMac OSに強く紐付いたツールなので、OS Xの環境としては10.7の動作環境を維持する必要がありました。インストーラを加工して無理矢理10.9で動かす※1などの小細工でこれまでどうにか乗り切ってきたのですが、早晩マシンが壊れるなどすれば限界が来るのは見えていましたし、10.11ではXcode3のインストール時に相当深刻っぽいアラート画面が表示されたりもしましたので、代替環境として業界の先輩のものかのさんなどが使っていたXojoに目星をつけたわけです。
 当日は専門の開発者向けに結構高度なセッションも行われていたのですが、私のように数ヵ月に1回ツールを作る程度の人間には正直ちんぶんかんぷんだったりもしましたので、ここでは私のような非専業でアプリも作る程度の使い方の人間にとって有用そうな情報に絞って紹介します。

Xojoで作れるもの/ライセンス価格

 XojoはREALbasicの流れを汲むプログラム開発環境で、WindowsMaciOSLinuxRaspberry Pi のアプリの他、Webアプリも作れるようです。何故かAndroidが無いのですが、中の人に聞いてみたらOSのメジャーバージョンアップでコロコロ仕様が変わるためとのこと。
 ただ、各環境ごとにライセンスの購入は必要になります。料金表はこちら。Single Desktopあたりなら特に高くはないと思います。それ以外はある程度の期間開発に専念する境遇ならというところでしょうか。

Applescript Studioと比べてどこが良かったか

イベントハンドラにコードがぶら下がる

イベントハンドラにコードがぶら下がる

 EPUB制作ツールをいくつかXojoに移植した程度ですのでそこまで深いことはもちろん言えませんが、まずユーザーインターフェース的に各ボタンのイベントハンドラに動作させるコードをぶら下げる作りになっており、コードの管理はしやすいです。Applescript Studioでは「on clicked theObject」の中でオブジェクト名を名称判別してサブルーチンに飛ばすみたいな処理を自分で書く必要がありました。中でやってることは同じなんでしょうが、管理しやすいのはよいことです。
 それから、ほとんど英文ですがオンラインマニュアルが充実しており、使いたい機能名で検索すれば公式コードサンプルが大体すぐに出てきます。ユーザーコミュニティもそれなりに大きいようで、パワーユーザーによる新しめの情報にもアクセスしやすく、このあたりはもうとっくにレガシーなApplescript Studioとは雲泥の差がありました。
 また、内部で正規表現が使えるのも大きいです。Applescriptは正規表現使えないんでテキスト置換とかで泣けるんですよね※2
 あとはOSベンダーの都合で仕様がガンガン変わったりしないことでしょうか。Appleは割とバッサリ下位互換を切るところがありますので。

移行で苦労したところ

Perlのコードを呼び出して使う

Perlのコードを呼び出して使う

 AppleScriptもPerlも、変数の型をあまり意識しないで使えるスクリプト言語でしたので、きっちり型定義しないといけないところにはちょっと苦労しました。あとオブジェクト指向言語なのでオブジェクトのNil判定周りでちょっとコケてTwitterで教えてもらったりしましたが、まあそれくらいで、結構あっさり移植できた印象があります。ネット上にサンプルコードが豊富にあるとやはり強いです。それと有償ツールなので当然ではあるのですが、いざという時に公式サポートから助言がもらえるのは何と言っても心強いところです。

今後どう使っていくか

 何と言ってもマルチ環境対応が大きいです。ライセンス料のコストはかかりますが、直にJavascriptやPHPを書かなくても簡単なWebアプリのGUIならサクッと作れそうですので、例えば社内向けツールを簡単に作って社内サーバーで公開して使ってもらう外部の協力会社や発注者向けに情報共有ツールを作って提供するなど、いろいろとやれることがありそうです。
 また、PerlだけでなくAppleScriptも連携して動かせますので、InDesignなどを外部制御して動かすツールも作れます。まあその場合はもちろんMac専用になるわけですが。

 という感じで、弊社内でのツール開発目的での導入としては正解でした。今後ガンガン使っていきます。GUIがあるとないとでは使ってもらえる人の幅に大きな差が出ますので、結構こういうツールは重要です。Xojoはコードの書式がほぼVBに近いということですので、ExcelやAccessなどでVBAを動かしていた層のアップグレードとしても結構有用なんじゃないでしょうか。MSのアプリケーション環境にロックインされませんし、なんでもかんでもExcelマクロよりは明らかに筋は良いです。

※1 そのままインストールすると起動時にカーネルパニック画面が拝めます。

※2 AppleScript's text item delimitersでごにょごにょやるか、シェル経由でperlあたりに投げる必要があります。複雑な置換処理は外部シェル一択。

(2016.3.25)

電書ラボにて「電書ラボ制作仕様見出しテンプレート」が公開されました

2016/02/29

電書ラボのこちらのページにて、私も制作に協力した「電書ラボ制作仕様見出しテンプレート」が正式公開されました。

第一義的には「発注者が制作者に対して指示を入れるためのもの」

「電書ラボ制作仕様見出しテンプレート」は、リンク先の説明にもあるように、まず第一義的には発注者が見出しのスタイルを目視で確認しながら制作者に対して指示を入れるためのものとして作られたものです。

従来、紙の本の制作は、編集者がコンセプトや大まかなレイアウトを決め、それを製作者に伝達して製作を行うという形で進められてきました。ですが現状電子書籍の製作では、この形を引き継ぐことが必ずしもできてはいません。
これは現状のCSSの表現能力と紙のDTPのそれとの差といった側面もあるかとは思うのですが、発注者にとってわかりやすい指定方法が提供されてこなかったということにも一因があるのではないかと思っています。
「電書ラボ制作仕様見出しテンプレート」は、そういった点を踏まえ、発注者に必ずしもCSSについての知識がなくても意図したレイアウトの大まかな内容を製作者に伝達できるようにと考え、提供することとしたものです。

副次的には論理的なEPUBデータの作成を補助、促進

また、副次的には、より論理的(セマンティック)なEPUBデータの作成を補助、促進する意味もあるかと思っております。

ストアで販売されている電子書籍のソースコードを確認することはもちろんできませんので、はっきりとしたことはもちろんわからないのですが、現状おそらく相当数、以下のようなタグ付けが行われたリフローの電子書籍が存在しているのではないかと思われます。

<p><span class="bold"><span class="gfont"><span class="font-150per">見出しテキスト入る</span></span></span></p>
<p> 本文テキスト本文テキスト本文テキスト本文テキスト本文テキスト本文テキスト本文テキスト本文テキスト本文テキスト本文テキスト本文テキスト本文テキスト本文テキスト本文テキスト本文テキスト本文テキスト本文テキスト本文テキスト本文テキスト</p>

見出しに当たる部分を本文と同じ<p>タグでコーディングし、<span>タグで多重に囲って装飾指定を入れれば、確かに見た目としては「見出し」にはなりますが、例えばストア側が中身の見出しタグのテキストを自動抽出してそれぞれの本の概要を簡易表示させようとしても、これではどの部分が見出しでどの部分が本文なのかを機械判別できません。結果としてこういった形でコーディングされた電子書籍は、概要がよくわからず、「買ってみないとわからない」状態になりそうです。
また、制作時の修正作業にしても、例えば見出し文字サイズを150%から140%にする必要が生じた場合に、見出しが100箇所あれば100箇所すべてを修正する必要が生じてしまいます。当然修正ミスも出るでしょう。
困ったことに上記のような状態でも「電書協ガイド準拠」に違いないため、相当数が出回っていそうです。

本来これは、以下のような形でコーディングをするべきです。

<h3 class="naka-midashi">見出しテキスト入る</h3>
<p> 本文テキスト本文テキスト本文テキスト本文テキスト本文テキスト本文テキスト本文テキスト本文テキスト本文テキスト本文テキスト本文テキスト本文テキスト本文テキスト本文テキスト本文テキスト本文テキスト本文テキスト本文テキスト本文テキスト</p>

CSSファイルに以下のように指定

.hltr h3.naka-midashi {
font-weight: bold;
font-family: sans-serif-ja, sans-serif;
font-size: 150%;
}

この形であれば修正はごく簡単で、CSSのfont-sizeの値を修正すれば、見出しが何カ所あろうが全て一括で指定変更が反映されます。見出しをh3タグでコーディングしていますので、マシンリーダブルなデータにもなっています。

このあたりはWebの方から見ればごくごく初歩的な話かと思うのですが、紙印刷用のDTPのデータを元にした電子書籍の制作は、必ずしも論理性を考えずに作られたデータを、ごく短期間に「現物合わせ」で変換していく作業であるため、最初からデジタルネイティブで作られるデータほどきちんと論理的に作ることはそもそも現実的な理由で無理です。実際、電書協ガイドはそれを念頭に置いて作られたフォーマットだと思っています。

ただ、せめて見出しをhnタグでコーディングする程度の最低限の論理性は付加しておきませんと、後々の修正で制作者自身も大きな苦労を背負い込むことになるかとは思います。

「電書ラボ制作仕様見出しテンプレート」を用いることで、比較的現場に負荷をかけずにそれは実現可能かと思っており、ご活用いただければ幸いです。ご意見、ご要望などお待ちしております。

(2016.3.1)

EPUBの校正を考える

2015/12/15

 DTPデータからEPUB3データを作る際に避けて通れないのが、EPUB3データの校正作業です。もとのデータにあったテキストブロックや画像が飛んでしまっていてはコンテンツとして意味をなしませんし、制作過程においてルビや圏点、太字などの修飾要素が飛んでしまったり、縦組みで正立していた文字が横転してしまったりという事態も避けなければなりませんから、もとの紙の本と引き合わせての校正は避けられません。
 現状、この目的のための専用定番アプリ的なものはありませんので、既存のものを組み合わせてどうにかするしかありません。

引き合わせ校正を目的とした場合に最適なEPUBビューアの条件

 ということで、紙の底本との引き合わせ校正を目的とした場合のEPUB閲覧環境の条件を考えてみます。条件としては

1. 1行文字数をできるだけ底本のそれに合わせられるビューアがよい

2. 間違いがあった箇所をチェックするためのハイライト機能が欲しい

3. 通常のページネーションするEPUBビューアではカラ改行のチェックが難しいため、スクロール型ビューアがよい

4. 底本と横に並べて見比べたいので、タブレットで動くビューアがよい

iBooksでのハイライト、メモ

iBooksでのハイライト、メモ

 といったところかなと思います。1行文字数をできるだけ底本のそれに合わせたいというのは、できるだけ底本と版面を同じ状態に持っていくことで間違いを発見しやすくなりますので、経験上これは必須です。

 また、一人でチェックして修正するだけならその場ですぐ修正すればよいので必ずしもハイライト機能は要りませんが、組織で仕事をしている際に他の人に校正を頼むとなると、当然「要修正箇所を他の人に伝達する」機能が必要になってきます。

 ページネーションに関しては1にも絡むのですが、DTPの元データで「見出しの前に改行が入っていたり入っていなかったりバラバラ」というのは良く見るパターンですので、カラ改行が挿入されているかいないかをチェックするためにはスクロール型ビューアもしくはスクロールモードを持つビューアが良いです。

ハイライトの一覧表示

ハイライトの一覧表示

 という感じで条件を考えてみますと、現状ではどうもiOS版のiBooksがこれに近いかなと思っています。タブレットで動くビューアでサイドロード(外部EPUB読み込み)ができて、スクロールモードを持つのはiBooksくらいですので、現状これがよいかなと。

 ただ、iBooksは文字のサイズをそう細かく制御できないので、その意味ではKinoppyも悪くないです。こちらは細かく文字のサイズ調整が効きますので、底本の版面に1行文字数を合わせるのがかなりラクです。現状EPUBビューアではこのあたりを使い分ける感じかなと思います。

 iPadの画面上でEPUBの文字列にハイライトを入れるのは指では結構ツラいものがありますが、質のよいタッチペンを使ってちょっとコツを摑めばそうストレスはない感じです。結局この場合必要なのは修正が必要な箇所にちょっとハイライトチェックを入れる程度の話で、細かい指示が必要ならメモも記入できますので、社内での校正ならこれでなんとか行けそう。Apple Pencilなど質の良いタッチペンの新製品も出てきていますし、いろいろと試したいところです。

 iBooksにはハイライトを付けた部分を一覧表示して、タップすれば該当箇所に飛べる機能もありますので、このあたりは紙での校正より確実に便利でもあります。

外部で校正してもらうにはPDF化が必要

 さて、社内の内部校正目的なら上記の方法でiPadでハイライトをつけて、iPadごと作業者に渡せばどうにかなりますが、出版社など社外に出したデータを校正してもらう時に同じ手は残念ながら使えません(iPad本体はいくらなんでも送れません)。
 このため、私が勤めている会社では現状Mac版iBooksをスクリプト処理で全ページめくってスクリーンショットを取ってPDF化し、これをEPUBと一緒に送って見てもらうようにしています。
 現状プリントができるEPUBビューアは少ないため、致し方ないところですが、全ページ画像化してPDFにする話になりますので、PDFのファイルサイズが巨大になってしまうのと、作成に結構時間がかかるのが悩みどころです。

Vivliostyle Formatterを試してみた

 このため、何かないかなと探していたところ、Vivliostyleさんが現在ベータ版公開中のVivliostyle FormatterでEPUBからPDFへの変換をサポートしたということのようなので、ちょっと試してみました。

 説明にあるように、ターミナルで

 と入力するとPDFを出力してくれます。

 現状ページの境にルビがかかった際にレンダリングが乱れること、ページ数が多い際に版面が段々下がってしまい、やがて次ページにはみ出してしまうなどの不具合があるようですが(縦組みのみか?)、出力時間が短く、ファイルサイズが小さくて済むのはなかなかの利点です。まあベータ版ですし多少は致し方ないところ。製品版での修正に期待します。

 今すぐ全てを代替というわけにはいきそうにありませんが、ルビのないものなど、コンテンツによっては現状でも結構便利に使えるのではないでしょうか。外部スタイルシートが読み込めるのもマルです。一時的に特定のプロパティの色を変えて確認などというマネができます。

 あとは1行文字数をできるだけ底本のそれに合わせるために画面で確認してからPDF出力したいところですが、まあこれは今後いろいろ試してみたいと思います。外部読み込みスタイルシートにいろいろ仕込んだり、Vivliostyle.jsと連携すればできるかも。

 あらかじめVivliostyle FormatterをApplicationフォルダなど任意のフォルダにコピーしてインストールし、.bash_profileにVivliostyle Formatterのフォルダへのパスを設定しておく必要がありますが、なかなか便利に使えます。

column51_3 なお、最近使いはじめているXojoの練習を兼ねてMac用のVivliostyle Formatterフロントエンドを作ってみました。Vivliostyleの村上真雄さんのご許可をいただきましたので公開しておきます。

ダウンロードはこちら↓

 .bash_profileの追記はこちらなどを参考に。難しければこちらのアプリなどを使って不可視ファイルを一時的に見えるようにし、ユーザーのホームフォルダにある.bash_profileをテキストエディタで開いて

「export PATH=/Applications/vivliostyle-formatter-0.1.4-mac/vivliostyle:$PATH」

などと追記すれば大丈夫です(.bash_profileが見当たらなければ作りましょう)。

 なお、ここで目的としているのはあくまで「テキストがブロックごと飛んでいないか、画像が抜け落ちていないか、ルビが落ちていないか」といった点をチェックする目的の「校正」で、各ビューアの挙動に起因するような細かな表示の乱れの修正はまた話が別です。そちらは目視校正で追うのはだいぶ無理がありますので可能ならシステムで吸収したいところですが、ビューアのアップデートも早いためなかなか追いつけていないのが現状です。特に縦組みコンテンツでの挙動にトラブルが多いため、どうにかしたいところです。

 また、従来紙の底本の中で注意が必要な箇所に付箋を立て、それをもとに電子化作業を進めるフローもありますが、新刊の電子化などでは底本がないまま電子化作業を行わざるを得ないケースも増えています。プリント代もバカになりませんので、少なくとも比較的単純な読み物的なコンテンツについてはいずれタブレット等での代替を模索したいところです。こちらはPDFアノテーションでの対応ということになりそうかなと思っています。

(2015.12.15)

「Vivliostyle Formatter 2015.12 Beta」のバージョンで、PDF出力時にエラーが出て正常に出力ができない現象が確認されました。中の人には報告済みです。オプションの記法が変わった模様。合わせてツールを改訂しました。

(2016.1.8追記)

プロフィール
Jun Tajima

こちらにて、電子書籍&Web制作を担当しています。
このブログは、EPUB3をはじめとした電子書籍制作担当オペレータからの、「電子書籍の制作時にたとえばこんな問題が出てきていますよ」的な「現地レポート」です。少しでも早い段階で快適な電子書籍閲覧・制作環境が整うことを願って、現場からの声を発信していこうと目論んでおります。

当ブログ内の記事・資料は、私の所属しております組織の許諾を得て掲載していますが、内容は私個人の見解に基づくものであり、所属する組織の見解を代表するものではありません。また、本ブログの情報・ツールを利用したことにより、直接的あるいは間接的に損害や債務が発生した場合でも、私および私の所属する組織は一切の責任を負いかねます。