漫画ビューアー用のカスタムビュー「MangaView」をオープンソースで公開しました。

 MangaViewを使えば、複数枚の画像(ページ)を並べて表示して、ピンチイン・ピンチアウトで拡大率を変えたり、スワイプでスクロールしたりできます。

mangaview1

 また一画面に見開きで表示可能なので、横画面の時だけ見開き表示。といった使い方もできます。

mangaview1

7月末でメインにしていた仕事の一角が終了したので、8月以降はそれなりに暇になりました。

 次の仕事を探そうにも新型コロナウイルスでリモートワークのこの時期、ほいほいと東京に行ける状況ではありません。

 まぁ、夏休みをもらったとでも思うかな。と、数日の間はベッドに寝転がりながら、ダウンロードした無料漫画アプリで作品を読んだりして過ごしていたのですが、作品を読む書籍ビューアーのユーザビリティがそれぞれのアプリで驚くほど違うことに驚きました。

 拡大中にスワイプすると加速度がついてスクロールするアプリ。スワイプには反応せずスクロールのみに反応するアプリ。拡大中にスワイプすると(どこにいても)ページ遷移をする(してしまう)アプリ。ページを切り替える時に拡大率をリセットするアプリ、リセットせず、拡大率を維持するアプリ。

 せっかくいい作品を配信しているのに、ビューアーが使いづらいと悲しい気持ちになります。

 確かにビューアー開発には難しい要素が多いと思います。実際、いくつかのビューアーアプリを仕事で作ってきた経験では、かなりの開発リソースをビューアーに投じなければなりませんでした。しかし、そもそもビューアーに開発リソースを投じて、ビューアーの使いやすさが他社に対する競争力になるというのは、コンテンツプロバイダーとしては本末転倒な感じがあります(個人の感想です)。

 そもそも、アプリごとに使い勝手が違うのはユーザー(読者)にとって利はありません。ユーザーとしては、単純に「ストレスなくコンテンツを見たい」だけなのです。

 ならばぼくが、いい感じに動くビューアーを作って、すべての会社がそれを使えるようにオープンソースで公開すればいいじゃないか。

 そう考えたぼくが、夏休みの自由研究という位置づけで今回開発したのが「MangaView」です。


 「MangaView」はアプリではありません(MangaViewerではありません)。Androidのアプリに組み込んで使う画面の部品で「カスタムビュー」と呼ばれるものです。

 MangaViewは、EPUBやPDFなどの電子書籍に使われるファイル形式を直接表示するものではありません。画像(Bitmap)を画面に配置して拡大・縮小・スクロール・ページ切り替えと言ったプリミティブな操作を「いい感じ」に行うことに特化しています(別途、EPUBやPDFのレンダリングエンジンのを組み込めばMangaViewに表示することはできます)

 「MangaView」は、OpenGLを使っていません。Androidのもっとも原始的な描画方法である「Canvas」にBitmapを描画しています(最近のAndroidは、ViewのCanvas描画にも標準でハードウェアアクセラレーションが効きます。もちろん、端末が対応していればですが)。

 MangaViewはViewを継承しています。ViewPagerでもRecyclerViewでもありません。 これまで関わった仕事では、ViewPagerやRecyclerViewを使っていました。納期と品質のバランスと、納品後に自分以外がメンテナンスすることも考えての選択でしたが、個人的にはそれらを使わず、Viewを継承して作りたいとずっと考えていました。

 MangaViewを使えば、コンテンツ配信各社は、ビューアー開発に個別にリソースを投入する必要がなくなり、ビューアー以外の部分にリソースを投入できると考えます。本来の競争ドメインであるコンテンツの拡充やリコメンデーション、ビュアー以外の使いやすさの整備に注力できるようになることを期待しています。


 MangaViewの利用サンプルアプリは、次のURLからダウンロードできます。

また、deploygateでも配信しています。


最後になりましたが、9月からも週n日ほど空いている状況です。 何かご協力できることがあればTwiter(やってない)やFacebookなどでなんなりとお声がけください。