MacやiPhone/iPadアプリの開発者が多く集まるmosa で、6/24に
電子書籍アプリケーションを作る開発者向けのセミナーが開催されました。
開発者として、現時点でどこまでできるのか気になったので、参加してきました。
iBooks ではなく、専用アプリとして電子書籍を作るには、
プログラム側ではどう実装するか?という内容で、技術者向けのセミナーでした。
http://www.mosa.gr.jp/?p=3395
【中級】iPad開発セミナー~電子書籍アプリケーションを作る~
MOSAでは、iPad向けアプリ開発をお考えの方を対象に、
電子書籍アプリのプログラミング方法を解説する中級セミナーを開催いたします。
以下は私の気になった点を中心にした参加メモです。
【アジェンダ】
・概要
・CoreTextによるページネーション。文字サイズとリフロー。
・UIScrollViewによるページめくり。三面鏡。
・OpenGLによるページめくり。iBooksみたいなめくり方にしたい!
・コンテンツ管理、セキュリティ。COmmonCryptライブラリとNSDataの新しいメソッド
・ストア。InAppPurchase
それぞれサンプルコードあり。
【概要】
・標準フォーマット vs 独自フォーマット
・作者の思い通りに何でもできる。動画、インタラクティブ、iPadで出来る事なら何でも。
・将来も動作するという安心感を与えるべき(OSやハードウェアのバージョンアップに対応できるのか、などはあらかじめ検討しておく)
・電子書籍アプリの3大機能は、(1)ビューア、(2)コンテンツ管理(含セキュリティ)、(3)ストア(課金)
【CoreTextによるページネーション】
(1)タグ付きファイルから、NSXMLParserでテキストを取り出す
(2)NSAttributedStringオブジェクトで、フォントや行間や左寄せや単語で改行を指定する
(3)CTFrameで領域を決める
(4)領域内に表示する文字の範囲を得る
(5)DrawRect, (CTDrawRect?)で文字を描画する
(Q&Aより)
・禁則処理はデフォルトでサポートしているが、カスタマイズはできないようだ。
・ルビは自前で一行ずつ描画する。ルビ、本文、ルビ、本文、、、
・縦書きは、仕組みはあるが実用的ではない。
・・縦書き用のグリフに変換(カッコやアラビア数字など)
・・点の位置がおかしくなる(?)ので、範囲選択しようとするとおかしくなる。
・CoreGraphicsを使って、自分で描画エンジンを作るという方法もある。
【OpenGLによるページめくり】
・あるとないとでは、アプリの完成度が全く違う。
・UIViewAnimationTransitionCurlUpもあるが、細かい制御ができない
・CALayerでアフィン(線系)変換して積み重ねてもいいが、細かい部分が美しくできない。
・そこで、OpenGLで、描画領域全体を1つの画像にして、OpenGLのテクスチャとして扱い、ポリゴンとして(変形して見えるように)描画する。
・めくれて見える変換アルゴリズムは色々。3Dグラフィックの本を参照。
・ページの表面で円錐を転がす方法の解説。
【コンテンツのセキュリティ】
・ダウンロード型でも、ディスク上にキャッシュしたい。
・スクリーンショット撮影は禁止できない。
・利便性とセキュリティ強度の兼ね合い。説明してお客様と調整。
・Common Crypt ライブラリ。 /use/include/CommomCrypt AES128やRC4などメジャーな暗号をサポートしている。
・CCrypt関数に、NSDataや各パラメタを喰わせる。
・複合先のバッファは、サイズはそれほどかわらないと想定して少し多めに確保。各暗号のアルゴリズムによる。復号もいっしょ。
・NSData writeToFile:option:error: で、option: が増えた。
デモが多く、見ていて楽しかったです。
時間を作って、むかし作った写真集アプリ(サーバ配信型)をiPad対応したいなぁ。。。


[...] This post was mentioned on Twitter by kiko, シナジー・ソフトウェア (日本). シナジー・ソフトウェア (日本) said: iPad 開発セミナー ~電子書籍アプリケーションを作る~ 参加メモ http://bit.ly/9XRNft #denshi やっぱりiBooksすごい!と分かりました [...]