‘Xojo’ タグのついている投稿

OMUSUBI EPUBMAKER 2.0リリースです

2016/10/17

OMUSUBI EPUBMAKER

 以前に発表しました、フィックス型EPUB作成アプリ「OMUSUBI EPUBMAKER」の改訂作業がやっと終わりました。「OMUSUBI EPUBMAKER 2.0」です。今回の改訂の一番の目玉は、UI部分をAppleScript StudioベースからXojoベースで作り直した点ですので、機能的にはそこまで大きな変更はありませんが、いくつか以前からご要望をいただいていた点、実装が不十分だった点を修正しました。今回の改訂の機能的な追加ポイントは以下になります。

  • 論理目次項目の外部読み込みに対応
  • Finderのソート順通りに画像が並ばないケースがあった点の修正(自然順ソート対応)
  • 「ImageMagickでの画像変換を行わない」オプションの追加
  • ImageMagickインストール先フォルダ指定をウィンドウ内でパスの書き換えが可能な仕様に変更
  • デフォルトの画像サイズを長辺2000pxに変更
  • その他EPUBのメタデータを若干変更

 コミックなどで使われる、画像をまとめてEPUBのパッケージの形にした「フィックス型」EPUB作成用のアプリはコマンドラインツールとしては例えばWakuFactoryさん(お世話になってます!)の「mkepub 1.4」などがありましたし、GUIを備えたものとしてはVOYAGERさんの「Romancer」に固定型EPUBの作成機能もあったりしますので、既にそれなりに環境が整ってきてはいるのですが、オフライン環境で使えるGUIアプリの需要もまだないわけではないだろうと思いましたので、こちらをリリースすることとしました。

 ごく単純なEPUBパッケージアプリで、高度なことはなにも出来ませんが、気軽にフィックス型のEPUBを作りたいという要望には応えられると思っています。また、インタラクティブなEPUB作りのためのベース生成用としても使えると思います。ソフト名は、ごはんを握っておむすびを作るように、画像の束から手軽にEPUBを作れるアプリというようなところから付けました。もっとカジュアルに、それこそPDFの代わりくらいの感覚でEPUBを使ってほしいなという願いを込めております。

 こちらのアプリはフリーで提供させていただきますので、ご自由にお使いください。書誌情報内にメタ情報でクレジットが入りますが、それ以外の制限はありません。
 ただし、個人向けということでISBNやJP-eコードなどの出版社向けID情報の入力機能は外しています(出版社ごとに要件が異なるためカスタムにせざるを得ません)。

 ビジネス利用のために必要な場合などのカスタマイズは別途こちらの窓口からご依頼下さい。私の所属する組織で承らせていただきます。

使い方

column58_2このアプリは画像サイズの取得およびサイズ変換にフリーの画像操作・変換ソフト「ImageMagick」を使用します。こちらなどからMac用パッケージを取得し、あらかじめインストールをしておいて下さい。その後「OMUSUBI EPUBMAKER」を立ち上げ、「設定」タブを開いてインストールフォルダを指定します。デフォルトでは“/opt/ImageMagick/”にインストールされるはずで、この状態であれば設定の必要はありません。

1 変換元画像の準備

 任意のフォルダに素材として使う画像を準備しておきます。形式はjpgもしくはpng、カラーモデルはRGBにしてください(jpg/png形式以外の画像はパッケージ化されません)。Finder上で画像をリネームし、ページ順に並ぶようにしておきます。連番がラクだと思います。なお、1番目の画像を自動的にカバー画像として設定します。全画像の縦横のピクセル数を統一しておくのが望ましいです。

2 書誌情報の入力

column58_3 アプリを起動し、各種書誌情報を入力します。制作者名は3名まで対応しています。出版者名は任意入力です。「カナ(整列用)」には読みのカタカナを入力してください。

3 目次情報の入力

column58_4 目次が必要な場合は情報を入力します。なお、ここで言う目次はコンテンツ内にページとして表示される目次ではなく、ビューアのメニューから呼び出せる「論理目次」です。
 目次として項目設定したいページの変換元画像のファイル名を表の「設定する画像名(拡張子込み)」に拡張子込みで記入し、目次に表示したいテキストを「目次表示テキスト」に記入していけばOKです。項目を入力するには、「+」ボタンを押して行を増やし、順次項目を入力してください。「−」ボタンを押すと最後の1行が消去されます。

 今回のバージョンから、外部テキストからのデータ読み込みにも対応いたしました。設定画像名と目次表示テキストの間をタブで区切ったタブ区切りテキストを「読込」ボタンで指定することで情報を読み込むことができます。なお、読み込めるテキストの文字コードはBOMなしのUTF-8のみとなります。同梱する倫理目次指定用テキストのサンプルをご参照ください。
 目次を全く指定しなかった場合、「表紙」の項目だけが目次に入ります。

4 綴じ方向の選択

column58_5 「右綴じ」「左綴じ」のいずれかを選択してください。通常縦書き文書は右綴じ、横書き文書は左綴じです。EPUB3では綴じ方向の混在はできませんので、必ずいずれかを選んでください。デフォルトでは「右綴じ」が選択されています。

5 見開き/単ページの選択

column58_6 「見開き」「単ページ」のいずれかを選択してください。EPUB3にはページ配置の指定項目(page-spread)があり、これを各ページに指定することで見開きレイアウトが実現できます。単ページを指定した場合は画面中央に各ページが配置されます(rendition:page-spread-center)。ただし、iBooksなどまだ指定を反映しないビューアも数多くあります。Readium等ではページ指定が反映されて表示可能です。デフォルトでは「見開き」が選択されています。

6 元画像のフォルダを選択

column58_9 変換元画像のフォルダを選択し、指定します。

7 リサイズ画像サイズ/画質を指定

column58_7 このアプリは画像のサイズを自動的にリサイズし、パッケージ化しますが、リサイズの際の画像サイズ(長辺)を指定することもできます。変更が必要なら「設定」タブをクリックしてドロワーを展開し、数値入力を行ってください。数値の上限などはありませんが、iBookStoreなどEPUB内使用画像のサイズに制限を設けているストアもありますので、ケースに応じて適切な値を入力するようにしてください。2016年10月現在では、上限2000程度に止めておくのが無難です。
 同じく、JPEG圧縮時の画質も1〜100の間で指定できます。数字が大きいほど高画質ですが、その分ファイルサイズも大きくなります。デフォルトの画質は70です。
 PNG圧縮の画質は、減色をするかどうかを選択出来る他、減色時の色数を2〜256色で選択できます。デフォルトの色数は256色です。
 画像サイズ/画質はツールが前回の設定値を記憶します。また、「デフォルトに戻す」ボタンで既定値に戻すことができます。

column58_8 なお、「ImageMagickでの画像変換を行わない」オプションがチェックされていた場合には、画像のリサイズ処理を行わず、指定した画像をそのままパッケージ化します。Photoshopなど外部アプリでリサイズ処理した画像をそのままEPUB化したい場合にご利用ください。

8 EPUBパッケージの作成

column58_10 「作成」ボタンを押すと、EPUBパッケージが元画像のフォルダと同じ階層の「タイトル名」フォルダ内に作成されます。ファイル名は作成年月日/時刻+「.epub」です。

ダウンロードはこちら
>>OMUSUBI EPUBMAKER
Mac OS X 10.9/10.11にて動作確認済みです

※10.7以降で搭載されたセキュリティ機能「GateKeeper」により、アプリを実行出来ない場合があります。その場合はこちらのページの「未確認の開発元からのAppを開き、そのAppをGatekeeperの監視の対象外にする方法」を参考に設定を変更することで起動できます。

ImageMagickはこちらより入手できます。また、homebrewなどを利用して入れることもできるようです。

 なお、こちらのアプリを利用したことによる損害等につきまして私として責任は負いかねますので、あくまで自己責任にてご利用ください。

(2016.10.18)

Kindleでの見開き位置指定が正しく記述されない問題などを修正したバージョン2.0.2をリリースしました。その他のアップデート内容は同梱のReadme.txtをご覧下さい。

(2017.1.27追記)

論理目次強制ソート機能を追加したバージョン2.2.0をリリースしました。EPUBCheck4.2でチェック項目が追加されたことに伴う修正です。また、(BiB/i’dはもう稼働していないようなので)プレビュー関係の記述を削除しました。

(2019.5.27追記)

「自然順ソート」あれこれ

2016/09/20

 最近ちょっとしたツールを作っていて、スクリプト内で「Finderの表示順にファイルをソート(整列)させたい」という要件がありまして、なかなかに手こずったので今後のために備忘録としてまとめておきます。

Finderでのソート順って?

 まず、Finderでのソート順って何かっていいますと、

ファイル1,ファイル2,ファイル3…ファイル10,ファイル11,ファイル12

 となるようなソート方法のことです。文字列の後に数字が来るような場合でも数値順にソートさせたい。
 perlなどで普通に文字列順にソートさせても数値でソートさせても

ファイル1,ファイル10,ファイル11,ファイル12,ファイル2,ファイル3…

 となってしまい、思ったような処理ができません。

 Finderでのソート順については、降りてきた天の声によると

 とのことらしく。ありがとうございます@ogwataさん。

 なお、どうやらJIS X 4061 照合順番で定義されてるようなソート方法を「自然順ソート」と言うらしいのですが、PerlだとSort::Naturallyあたりのモジュールを利用すればできる模様(参考)。ただ今回は配布ツールでの使用を考えているので、CPANからモジュールを入れる的な話はできれば避けたく、いろいろと違う方向性を模索していたわけです。

Xojo内でCocoaのライブラリを呼び出してソート

 フロントエンドのツールはXojoなので、Xojo内でできればなと思って、過去にQiitaにされていたアップされていたこちらの神エントリをもとにどうにかソートできるようにしたのが以下。さすがです@monokanoさん。

 Xojo内でモジュール化しておいて元の配列を投げ、ソート後の配列を得る、みたいな使い方です。今回の目的としてはFinderのソート順の再現なので、Finderと同じエンジンを使うこちらが一番目的に叶いそうです。ただもちろんCocoaのライブラリを呼び出している以上Mac専用にはなります。

Applescriptでの自然順ソート

 AppleScriptでもできそうかなということでこちらの投稿をもとに作ってみたのが以下。

 他の処理系に投げるので一回文字列に結合して引数として投げ、ソートした後に再結合した文字列を得ます。でそれをまた分解して配列に。
 AppleScriptはテキストアイテムデリミタでの文字列の分解結合処理がいつもながらややこしいのですが、そのあたりはまあご愛敬ということで。こちらもAppleScriptを使う以上Mac専用です。まあそのうちAppleScriptで自然順ソートさせなきゃならないケースも出てくるかも知れないし。

PHPのnatsort関数でソート

 PHPには自然順ソートができるnatsortという関数がデフォルトで入っているとのことなのでやってみたのが以下。

 一番簡単かも。Mac環境に依存しないのでそういう意味での使い出もありそうです。

 3種類の自然順ソートを収録したXojoのファイルを

に置いておきます。

 で、ブログにまとめてたら最後になんかPerlでモジュールを使わずにできそうなサンプルを発見してしまった。最初に出てきて欲しかった(汗)。

(2016.9.20)

追加情報メモ。
・ApplescriptならFinderにtellしてsort by nameで並べ替えちゃうのが手っ取り早いと。ただし処理は遅いから大量のファイル処理には向かないとのこと。
・OS Xでもバージョンによって微妙にソート結果が変わったりするらしい。なので確実にFinderのソート順通りのソート結果が欲しければApplescript上からFinderを呼び出して値を取得するか、Cocoaのライブラリを呼び出してソートさせるかするしかない。
・対象がファイル名ならPerl内からosascriptでApplescript呼んでFinderに聞くのが手っ取り早いんじゃないのと言われたのでちょい試しました。以下コードをメモ。

行けますね。楽でいいかも。

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)

プロフィール
Jun Tajima

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

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