「青空文庫を読む」iOS無料アプリ バージョンアップ(ver1.5) リリースノート

http://aozorareader.appspot.com/ Ver1.0リリース後、多くのユーザーの方々のフィードバックを有意義に参考とさせて頂きました。この場をお借りして御礼申し上げます。 Ver1.5リリースは、1週間ほどを見ています。
2
岡部 健 / Ken OKABE @kenokabe

「青空文庫を読む」iOS無料アプリを初期バージョン(Ver1.0)から大幅にアップデート完了(Ver1.5)してAppleに提出しました。多くの方からのフィードバックを有意義に参考にさせていただきました。 http://t.co/tfJ6IAyd #aozorayomu  

2012-01-29 11:49:16
岡部 健 / Ken OKABE @kenokabe

現在Appストアに登録されている「青空文庫を読む」ver.1.0は、ver.1.5が審査終了しリリースされるまでの間、暫定的に非公開にします。 http://t.co/tfJ6IAyd #aozorayomu

2012-01-29 11:51:30
岡部 健 / Ken OKABE @kenokabe

Ver1.5(<-- 1.0)のリリースノート: 【明らかなバグ修正】 橋本 進吉『古代国語の音韻に就いて』その他、特殊文字の画像が表示されなかったバグを修正。 http://t.co/tfJ6IAyd #aozorayomu

2012-01-29 11:58:34
岡部 健 / Ken OKABE @kenokabe

Ver1.5(<-- 1.0)のリリースノート: 【明らかなバグ修正】 岡本かの子『取返し物語』その他、レイアウトが画面上にはみ出して切れる問題を修正。作品ファイルのスタイルシート指定が原因なので除去しました。 http://t.co/tfJ6IAyd #aozorayomu

2012-01-29 12:01:31
岡部 健 / Ken OKABE @kenokabe

Ver1.5(<-- 1.0)のリリースノート: 【明らかなバグ修正】 iPodTouchが起動時バージョンチェックでメイン画面に進めず、使用不能の問題を修正。 http://t.co/tfJ6IAyd #aozorayomu

2012-01-29 12:02:56
岡部 健 / Ken OKABE @kenokabe

Ver1.5(<-- 1.0)のリリースノート: 【ユーザーインターフェイスの使用感と応答性の向上】 「この作品を読む」のボタンをよりストレスなく押せる場所へ配置換え。 http://t.co/tfJ6IAyd #aozorayomu

2012-01-29 12:05:00
岡部 健 / Ken OKABE @kenokabe

Ver1.5(<-- 1.0)のリリースノート: 【ユーザーインターフェイスの使用感と応答性の向上】 「青空文庫総合インデックス」のフォントをデバイスに応じて、CSS指定でかなり大きくして、視認性操作性向上。 http://t.co/tfJ6IAyd #aozorayomu

2012-01-29 12:06:20
岡部 健 / Ken OKABE @kenokabe

Ver1.5(<-- 1.0)のリリースノート: 【ユーザーインターフェイスの使用感と応答性の向上】 ページ内ローカルリンクが機能するように改善し、ページ内ローカルリンクを強調してナビゲートしやすくした。 http://t.co/tfJ6IAyd #aozorayomu

2012-01-29 12:07:12
岡部 健 / Ken OKABE @kenokabe

Ver1.5(<-- 1.0)のリリースノート: 【ユーザーインターフェイスの使用感と応答性の向上】 読書画面への作品表示待機時間を従来の固定でなく、作品分量に応じて可変とし、平均的に表示時間が大幅に短縮した。 http://t.co/tfJ6IAyd #aozorayomu

2012-01-29 12:09:25
岡部 健 / Ken OKABE @kenokabe

ver1.5リリースノート: 【ユーザーインターフェイスの使用感と応答性の向上】 読書画面上部タップの反応性の悪さを改善。読書画面のタップ認識手法をすべて変更。WebベースでなくネイティブUIのメニューとした。 http://t.co/tfJ6IAyd #aozorayomu

2012-01-29 12:11:56
岡部 健 / Ken OKABE @kenokabe

ver1.5リリースノート: 【ユーザーインターフェイスの使用感と応答性の向上】 ピンチジェスチャーによるフォントサイズ変更も作品分量に応じた待機時間とし、アラート表示を廃止。操作性が大幅に向上した。 http://t.co/tfJ6IAyd #aozorayomu

2012-01-29 12:14:16
岡部 健 / Ken OKABE @kenokabe

ver1.5リリースノート: 【UI向上+新機能】 画面左、右半分タップで、ページ送り自動スクロール機能を新たに実装。自由なスクロールと併用して利用可能。 http://t.co/tfJ6IAyd #aozorayomu

2012-01-29 12:15:48
岡部 健 / Ken OKABE @kenokabe

ver1.5リリースノート: 【わかりやすさ】 初回起動の際のWelcomeドキュメント表示を追加。アプリケーションの基本コンセプトと「書庫」の新UIのコンセプトと採用の合理的理由、操作方法紹介。 http://t.co/tfJ6IAyd #aozorayomu

2012-01-29 12:18:53
岡部 健 / Ken OKABE @kenokabe

今回の大幅な機能操作性改善のために、デバイスの挙動とコードを精査したのだけど、長い作品をスムースに表示するのに苦労する理由が判明した。

2012-01-29 12:38:30
岡部 健 / Ken OKABE @kenokabe

夏目漱石『吾輩は猫である』は約100万文字あり、かなり長い作品の部類で、iOSのSafari縦組み(Webkit2/CSS3)レンダリングしてスムースにスクロールできるようにまでは10秒弱も要する。そしてこの間、Safariはこれに「つきっきり」でコードは内部でフリーズしている。

2012-01-29 12:41:25
岡部 健 / Ken OKABE @kenokabe

このレンダリング完了していない間に、ユーザがUIタッチイベントを送ると、一切反応しないばかりか、そのキューが溜まっていき、応答した瞬間にたとえばユーザがイライラした10回タップしていると、1気に10回分のイベント処理がはじまり、レンダリングフリーズに再突入する。

2012-01-29 12:43:30
岡部 健 / Ken OKABE @kenokabe

回避策として、UIイベントは最低限のイベントフラグだけ取得しておき、内部で100ミリセカンドインターバルのタイマーを回しておく。レンダリングフリーズ中はタイマーさえ回っておらず、フリーズ抜けのタイマーループで、キューの最後にあるイベント1回だけ処理させる。

2012-01-29 12:45:52
岡部 健 / Ken OKABE @kenokabe

HTML5時代のJavaScriptというか現行WebKitエンジンでは、Webワーカーというマルチスレッド処理が可能で、これをいよいよ使う局面なのか?と一瞬考えたが、そもそも、バックグラウンドで処理する内容などなく、ただUIイベントに呼応したUIアウトプットなので無駄だと再考。

2012-01-29 12:47:55
岡部 健 / Ken OKABE @kenokabe

ぶっちゃけ今回のWebハイブリッドアプリ開発は、そのスマートフォン内蔵のブラウザの処理能力の限界内で、実現可能かどうかさえも不明で、まったく手探りの状態での開発であったので、最後にやっぱりこのレベルは具現化不可能でした、ってすべて徒労になることをかなり恐れていた。

2012-01-29 12:54:38
岡部 健 / Ken OKABE @kenokabe

同じWebブラウザフレームワークであっても、PCのブラウザであると、その辺の限界を力技で押し切る富豪コーディングが自然と実現しており、問題がまったく露呈しないのだけど、iOS実機に展開してみると、フリーズしまくり。こういう局面が多分100回くらいあった。誇張じゃないよ100回だ。

2012-01-29 12:57:09
岡部 健 / Ken OKABE @kenokabe

この青空文庫アプリは、縦組み表示CSS3搭載のiOS5だから実現できた、という理由があるが、そもそもiPhone3以前の旧機種であると、レンダリング処理しきれず具現化が不可能であろう、と強く思う。

2012-01-29 12:59:28
岡部 健 / Ken OKABE @kenokabe

iOS自体もそうで僕は初代iPodTouchをいち早く入手したギークなんだけども、すでに現行iOSではサポート外とされている。所詮スマホのOSだろうと思いがちで、同じUNIXコア、同じOSX兄弟と思うのだけど、これはおそらくiOSがハード相応に重くなってるんだろう。載せられない。

2012-01-29 13:01:34
岡部 健 / Ken OKABE @kenokabe

ハードウェアの進化がソフトウェアの進化を担保する。 このアルゴリズムで、この計算量で、処理量で、ってそれを文字通りアプリケーションにするには、必ずハードウェアのパワーを見極めながら開発していくことになる。

2012-01-29 13:03:28
岡部 健 / Ken OKABE @kenokabe

たかだか電子書籍1作品を縦組みで表示させるだけなんだけども、僕が実装したいように、ページごと表示でなく、全作品を1画面に流しこんで、全部スクロールさせる、っていうのは、現行最新機種でギリギリの仕事だったと思う。これ以前ではCSS3搭載とかいう以前に処理能力の観点で不可能。

2012-01-29 13:04:41
岡部 健 / Ken OKABE @kenokabe

iOS5のスクロール関連でいうと、DIVボックス内でのコンテンツオバーフローをスクロールさせるというのは、iOS4シリーズ以前ではできなかった。無理やりJSでハックして実現することは可能なんだけど、少なくとも『吾輩は猫である』クラスのコンテンツを処理するには実用的でない。

2012-01-29 13:08:48