ComicViewerJ2

概要, インストール, 動作環境, 起動方法, アンインストール, バージョンアップ,
使い方 ( メイン画面, 検索機能, 画像閲覧画面, 設定画面 )
できないこと, ライセンス, 外部ライブラリ, 連絡先


概要

このソフトウェアは、スキャナーで取り込んだ漫画をよむための画像ビューアです。

こんな人におすすめします。
・たくさんの本を50音順のディレクトリに分類して整理するのが面倒
・タイトルを検索する時に漢字変換するのが面倒

ComicViewerJ2なら本のタイトル(ディレクトリ名やファイル名)をIMEのON/OFFをせずにローマ字入力で探せます(
スクリーンショット)
(Migemoと同様の機能ですが、 形態素解析により単語区切りを大文字にしなくても検索できます)

全ての本を1つのディレクトリにまとめておき、適当に読みを入力すれば読みたい本がすぐに見つかります。
よって、分類や整理の作業は必要なくなります。
(1つのディレクトリの中に1万ディレクトリ(1万冊)くらいなら普通に動作します)

他にも以下の特徴があります。
・サブディレクトリ下の画像のサムネイル表示(スクリーンショット)
・ZIP、PDFファイルをフォルダと同等に扱う
・タブで複数のディレクトリを開く
・JPG、 BMP、 GIF、 PNG に対応
・画像の拡大、縮小、回転、2ページ表示 (スクリーンショット)
・画像の輪郭強調処理をして吹き出し文字を読みやすくする
・キー入力のカスタマイズ
・閲覧箇所のブックマーク
・ファイル整理作業時に使いやすいリスト表示にも対応
・ディレクトリやファイルのコピー、移動、削除、リネーム
・Java で作られているので、Windows と Linux の両方で動作する


インストール

Javaのインストール

Javaがインストールされていなければインストールしてください。 (
http://www.java.com/)

・Windows の場合
 上記サイトからファイルをダウンロードしてダブルクリック
 ※)http://www.java.com/ja/download/manual.jsp から"オフライン"インストーラーをダウンロードするのが一番簡単です。

・Ubuntu の場合
 コマンドプロンプトから、
 $ sudo apt-get install default-jre

・Fedora17 の場合
 コマンドプロンプトから、
 $ sudo yum install java-1.7.0-openjdk


アプリケーションのインストール

ダウンロードしたファイルをダブルクリックして適当なディレクトリに展開してください。

・Windows の場合
 ホームディレクトリや、C:/Program Files の下などに展開してから、
 ComicViewerJ2.exe を右クリックでデスクトップなどにドラッグしてショートカットを作ってください。
 (64bitのJavaをインストールした場合は、ComicViewerJ2_64bit.exe を使用してください)
 (拡張子を表示していない場合は、種類が "アプリケーション" になっているファイルです)
 あるいは、ComicViewerJ2.exe の右クリックでポップアップメニューを表示して "タスクバーにピン留め" などしてください。

・Linux の場合 (一般ユーザー権限でインストールする場合)
 ファイルブラウザーから install.sh をダブルクリックし、"端末内で実行する" を選択してインストーラーを起動します。
 デフォルト設定でインストールする場合は、全ての質問に [Enter]キーを押してください。
 (デフォルトでは、ホームディレクトリ下の local/ComicViewerJ2 にインストールされます)
 システムメニューの "グラフィックス" の中にアイコンが追加されます。(ログインしなおす必要があるかもしれません)

・Linux の場合 (管理者権限でインストールする場合)
 コマンドプロンプトを起動して、管理者権限で install.sh を起動します。
  例)
  $ cd [展開したディレクトリ]
  $ sudo ./install.sh
 デフォルトでは、/usr/local/ComicViewerJ2 にインストールされます。

※) Linuxの場合のインストールは、ディレクトリをまるごとコピーしてメニューにアイコンを登録しているだけです。
  展開したディレクトリの ComicViewerJ2.sh を実行しても起動できます。


動作環境

Java 1.6、1.7
空きメモリは500MB程度あれば動作します。
(PDFを見る場合や、大きな画像を見る場合は1GB以上あったほうがいいと思います)

動作確認をしたのは、以下の環境です。
・WindowsXP SP3 + Java 1.6.0_02
・Windows7 SP1 (32bit) + Java 1.6.0_32 (32bit)
・Windows7 SP1 (64bit) + Java 1.7.0_55 (64bit)
・Windows8.1 (64bit) + Java 1.7.0_55 (64bit)
・Ubuntu 12.04 (32bit) + OpenJDK 1.6.0_24
・Ubuntu 12.04 (64bit) + OpenJDK 1.7.0_55
・Fedora 17 (64bit) + OpenJDK 1.7.0_b147-icedtea

SWTを使用しているので他にMacOSXなど他のOSでも動作するかもしれませんが、
動作環境がないので確認していません。


起動方法

Windowsの場合は、作ったショートカットをダブルクリックするか ComicViewerJ2.exe を実行してください。
Linuxの場合は、メニューから起動するか ComicViewerJ2.sh を実行してください。

・起動できない場合はコマンドプロンプトを起動してから ComicViewerJ2.bat を実行してみてください。(Windows の場合)
 Linux の場合はターミナルから ComicViewerJ2.sh を実行してみてください。
 画面に起動できない原因が表示されるかもしれません。

・同時起動はできますが、後で起動したウインドウではタイトルバーに"(*)"がついて設定の変更などができません。
 (別の設定ディレクトリで起動すれば制限はありません)
 ブックマークの管理、サムネイルキャッシュファイルの参照は可能です。

コマンドラインパラメーター

ComicViewerJ2.exe [-p 設定ディレクトリ] [初期表示ディレクトリ...]

-p 設定ディレクトリ
  フルパスで指定してください。
  デフォルトは、ホームディレクトリの ".ComicViewerJ2" です。
初期表示ディレクトリ
  フルパスで指定してください

初期表示ディレクトリを指定しない場合は、前回終了時の状態を復元します


アンインストール

・Windows の場合
 展開したディレクトリを削除してください。
 レジストリなどは使用していません。

・Linux の場合 (一般ユーザー権限でインストールした場合)
 ファイルブラウザーから、インストールされたディレクトリの uninstall.sh をダブルクリックし、
 "端末内で実行する" を選択してアンインストーラーを起動します。
 デフォルト設定でインストールした場合は、全ての質問に [Enter]キーを押してください。

・Linux の場合 (管理者権限でインストールした場合)
 コマンドプロンプトを起動してインストールされたディレクトリに移動し、
 管理者権限で uninstall.sh を起動します。
  例)
  $ sudo /usr/local/ComicViewerJ2/uninstall.sh


バージョンアップ

古いアプリケーションをアンインストールしてからインストールしてください。
初回起動時に、設定ファイルが古いという警告がでて初期設定に戻すかどうか聞かれますが、大抵の場合は戻さなくても使えます。
調子が悪くなったら、設定ファイルの ComicViewerJ2.xml を消して再起動してみてください。


使い方

メイン画面

(リスト表示)


(サムネイル表示)


キー 動作
Backspace 親ディレクトリへ移動
Enter ディレクトリに入る、画像閲覧、OSの機能で開く
Alt+Enter OSの機能で開く(ディレクトリ、画像も開けます)
Alt+下右、Alt+上左 次、前の兄弟ディレクトリ(次、前の本)へジャンプ
ローマ字キー入力 ファイル、ディレクトリのインクリメンタル検索
Ctrl+N、Ctrl+P、F3、Shift+F3 次、前を検索
F5, Ctrl+R 表示更新
Ctrl+L リスト、サムネイル表示切り替え
Ctrl+(テンキーの+-) サムネイルサイズ切り替え
Ctrl+T タブを開く
Ctrl+W タブを閉じる
Ctrl+(PageUp,PageDown,Tab) タブの切り替え
Alt+1,2,3,4 ソート切り替え
Ctrl+1 選択したファイルをメモ帳で開く
Ctrl+2 カレントディレクトリでコマンドプロンプトを開く
Ctrl+3 選択したファイルをコマンドプロンプトで実行
Ctrl+4 ~ 0 その他の外部プログラムを実行

・ディレクトリに入ったとき、先頭のファイルが画像ファイルの場合は画像表示画面が開きます。
 (サムネイル表示の場合。この動作は設定で変更できます)
 ファイルの一覧に戻りたいときは、画像表示画面でEnterを押すとメイン画面に戻ります。
・ディレクトリ間を移動したときは、移動前のカーソル位置を内部で記憶して、戻ったときに復元します。
 (記憶する数は設定で変更できます)
・Enterで開く方法はOSの拡張子の結びつけに基づいているようです。
 起動するプログラムを変更したい時は、OSの設定画面から行ってください。
・WindowsでバッチファイルをEnterで起動しようとしても動作しないようです。
 また、Linuxで *.sh ファイルを実行しようとしてもエディターが起動するかもしれません。
 その場合は、Ctrl+3 を押してコマンドプロンプトの中で実行してください。

検索機能



・この画面は、メイン画面でリスト表示中に [n][e][k][o][d][e][a] とローマ字入力したところです。
・IMEをONにせずに漢字仮名まじりの名前を検索することができます。
 (サムネイル表示でも同様に検索できます)
・先頭に "/" を入力すると、先頭一致で検索します。
・カナ入力や漢字入力でも同様に検索できます。
・うまく検索できない時は、単語区切りをアルファベットの大文字にするといいかもしれません。
・検索結果に納得できない時は、ディレクトリを選択して Ctrl+C を押し、
 メニューの[ヘルプ]->[検索テスト]で検索機能の動作を確認できます。

(余談) 検索のしくみ
このアプリケーションの検索機能は、
Migemo形態素解析を組み合わせたものです。
(それぞれのまともな説明はリンク先を見てください。形態素解析にはlucene-gosenを使用しています)

すごく適当に説明すると、Migemoはキーボードから入力されたローマ字から漢字を推測し、
ディレクトリの中の全てのファイル名から漢字同士で一致するファイルを見つける技術です。
これとは逆に、形態素解析ではディレクトリの中の全ての漢字ファイル名の読みを解析してカナに変換し、
キーボードから入力されたローマ字をカナに変換してからカナ同士で一致するファイルを見つけます。

どちらもそれぞれに利点があり、形態素解析の場合はうまくカナ解析ができればスムーズに検索できますが
一般的でない単語を予想のできないカナに解析してしまうことがあり、そうなると検索できません。
Migemoの場合は、漢字に変換するために単語の区切りをアルファベットの大文字で始めなければなりませんが
ユーザーの意図するとうりの細かい検索指定ができます。

たとえば、上記のスクリーンショットの例では、「吾輩ハ猫デアル」->「ワガハイハネコデアル」と
形態素解析されているので、「nekodea」と入力すると「ネコデア」と一致してファイルが見つかります。
Migemoの場合は「nekoDea」と入力するとMigemoが「猫デア」と推測して、一致するファイルを探します。
このように、Migemoの場合は正しい漢字を推測するために単語区切りを大文字にする必要があります。

逆に、上記のスクリーンショットの例で「高浜虚子著『鶏頭』序」を検索しようとすると、
形態素解析で「タカハマキョシチョ『ケイトウ』ツイデ」と解析されます。
ここで「鶏頭」を「ケイトウ」ではなく「トリアタマ」で検索したいと思っても、
形態素解析では一致しないので見つかりません。
その場合は、Migemoで「toriAtama」と入力すると「鶏頭」と推測して見つけてくれます。

このように、それぞれの利点を把握すると効率的な検索ができます。
形態素解析とMigemoがどのように動作するのかは、メニューの[ヘルプ]->[検索テスト]で
詳しい動作を確認することができます。
以下の例では、「toriAtama」の入力に対して、Migemoでは「鶏頭」「鳥頭」の両方を見つけ、
形態素解析では「鳥頭」のみを見つけています。



(余談2) Migemo辞書による形態素解析の補完
形態素解析は一般的な文章には強いのですが、本のタイトルなどのひねりの効いた日本語は苦手です。
例えば、「吾輩は猫である」は「ワガハイ/ハ/ネコ/デ/アル」と期待どうりに解析できますが、
強殖装甲ガイバー」は 「[ツヨシ, ツトム]/殖/ソウコウ/ガイバー」と「強殖」の部分が解析できません。

Migemoの辞書は読みと漢字の一覧になっており、(例えば[ネコ]->[猫]、[ワガハイ]->[我輩,吾輩])
この辞書を逆方向に利用して形態素解析の結果を補完してやると、
「強殖」は「[ツヨシ, ツトム, ツヨ, アナガ, ヅヨ, キョウ, シ, ゴウ, コワ]/[フ, ショク]」となり、
「kyousyoku」と入力すると「キョウ/ショク」に一致して見つかるようになります。

ただし、この場合は形態素解析が「強殖」を「強」と「殖」に分割して解析したために
Migemoの辞書から「強」と「殖」それぞれに一致する読みを探すことができました。
もし、「強殖」に日本語としての本来の別の読みがあれば、形態素解析はその読みに変換し、
Migemoの辞書に「強殖」がなければ、「kyousyoku」では検索できなくなります。
(その場合は、「kyouSyoku」と1文字づつMigemoに漢字を推定させれば検索できます)

この補完の詳しい動作は設定画面から変更することができます。

(余談3) 新しい読みの辞書への登録
形態素解析とMigemoの組み合わせでかなりのタイトルを読めるようになりましたが、
聖闘士星矢(セイントセイヤ)」や 「疾風伝説 特攻の拓(カゼデンセツ ブッコミノタク)」は
ひねりが効きすぎていて通常の解析では対処できません。

そのような場合は、辞書に読みを登録します。
ComicViewerJ2 をインストールしたディレクトリの下に、lib/migemo-dict-add
というファイルがあるので、その中に読みと漢字を登録すると検索時に使用します。
(区切りにはタブを使用してください。)


画像閲覧画面



キー 動作
Alt+Enter、F11 フルスクリーンと通常画面の切替え
左、右 前、次の画像に移動
上、下 メイン画面での上の行、下の行の画像に移動
PageUp、 PageDown メイン画面での1画面前、先の画像に移動
Alt+下右、Alt+上左 次、前の兄弟ディレクトリ(次、前の本)へジャンプ
スペース 2枚表示
2枚表示の左右ページ入れ替え
テンキーの+- 拡大縮小
= (イコール) 画像をウインドウにフィットさせて表示
テンキーの 0 原寸表示
Shift+上下左右 画像スクロール (拡大中)
Enter 拡大縮小をやめて通常表示する (拡大縮小中)
Enter メイン画面に戻る (画像フィット表示中)
Backspace メイン画面に戻り、親ディレクトリに移動する
Alt+PageUp、Alt+PageDown 回転 (90度単位)
I (アイ) 画像情報表示

・画像閲覧中に、画像以外(テキストファイルやディレクトリなど)に移動するとメイン画面に戻ります。
・画像閲覧画面とメイン画面は連動しています。
 上下左右、PageUp、PageDown での移動はメイン画面で操作した場合の移動距離と同じになります。
 (つまり、メイン画面でリストモードになっていると 上下左右キーの移動距離はすべて 1 になります)
・画像閲覧画面ではタブのオープン/クローズはできません。
・タブの切り替えはできますが、表示できる画像のないタブに移動するとメイン画面に戻ります。
 (メイン画面でフォーカス位置に画像があればタブを移動してもメイン画面に戻りません)

設定画面

基本
システム
・アプリケーション最大使用メモリ
 メモリ不足のエラーが起きたら、設定してください。
 ComicViewerJ2のインストールディレクトリにある JAVA_MAX_MEM.TXTを書き換えるための設定です。
 直接手で書き換えても同じです。
・形態素解析時のMigemo辞書使用
 
検索機能の余談部分を参照
・確認なしで起動する拡張子
 メイン画面で[Enter]を押したときに確認画面を出さずにOSの機能で起動するファイルの拡張子を指定します。
・複数ファイル選択時に確認なしで起動する最大数
 たくさんのファイルがあるディレクトリで全て選択した状態で[Enter]が押された場合の安全策です。
メイン画面
・非表示にするファイル名……
 デフォルトでは、"." で始まる名前とWindowsのシステムディレクトリが指定されています。
 フルパスではなく、その要素の名前に完全一致した場合に非表示になります。
メイン画面2
・ファイル名ソート順
 * Unicodeの文字コード順
  利点: 高速
  欠点: 漢字の並びが読みと無関係になる
 * Javaの自然言語比較順
  利点: Javaのおすすめ?
  欠点: Unicodeの4倍遅い
 * カスタム比較
  利点: 細かい設定ができる
  欠点: Unicodeの2倍遅い
・サムネイル切り替え候補
 Ctrl+(テンキーの+-)を押したときに、ここに書かれた大きさでサムネイルサイズを切り替えます。
 順番に探すので、面積の小さい順に整列して書いてください。
 ※) Ctrl+(テンキーの+-)を押すと、基本設定のサムネイルサイズを自動的に書き換えます。
メイン画面3
・サムネイル先読み
 何画面先まで先読みするかを設定します。
 (つまり、大きいウインドウで表示していると先読み画像数が多くなります)
・検索キー入力タイムアウト
 何も入力せずにこの時間が経つと、次の入力は以前の入力の続きではなくなります。
・ファイル名にアイコンをつける
 アプリケーション組み込みのアイコンは、インストールしたディレクトリの icons です。
 フォントを大きくしたとき、OS標準のアイコンが汚いと思ったら組み込みのアイコンを試してみてください。
・ファイルリネーム後
 複数の並んだファイルを順番にリネームしようとしたときに、リネーム後のファイルにフォーカスが移動して
 元の場所にカーソル移動して戻るのが面倒だと思ったら、[選択行を移動しない]を選択してください。
画像表示画面
・画像表示タイミング制限
 キーを押しつづけた時に画像読み込みが間に合わないときに設定してください。
 先読み画像数を増やすと間に合わなくなる頻度が減るかもしれません。
 間に合わなくても構わなければ 0 にしてもいいと思います。
画像ロード
・画像ロード作業メモリの目安
 例えば、この値を100MBに設定して、ある大きな画像の読み込みに80MB必要とすると、
 次の40MB必要な読み込みは前の読み込みが終わるまで待たされます。
 ただし、120MB必要な画像の場合は他の画像が読み込まれていないときなら読み込めます。
・最大画像ファイルサイズ
 ファイルサイズがこれより大きいと、読み込みを行いません。
・最大画像ピクセルサイズ
 読み込もうとしている画像の面積がこの面積より大きいと、読み込みを行いません。
・PDF読み込み解像度(原寸表示時)
 PDFには画像サイズがないので、dpi(1インチあたりのピクセル数)で読み込む大きさを指定します。
・PDF読み込み倍率(画面フィット時)
 PDFファイルから画像に変換する時に、画面に表示する大きさの何倍で変換するかを指定します。
 (大きな倍率で画像にしてから縮小すると表示が綺麗になるかもしれないと思ってこの設定を作りました)
 (ただし、大きな倍率を指定するとメモリを大量に使用して、動作も遅くなります)
・画像ロード時の拡大率制限
 画像表示画面で拡大をしたときに、画面に表示する瞬間に拡大するのではなく、あらかじめ拡大して
 輪郭強調処理を行う場合に指定します。
 あまり大きい値は意味がないと思います。
画質
・サイズ変換方法
 倍率に関わらず、常に同じ変換法法を使用したい場合は、極端に大きい値か 0 を指定してください。
・輪郭強調パラメーター
 輪郭強調すると、モアレが目立つようになります。
入力(メイン画面)
 (Keypadというのは、テンキーのことです)
 (Arrow Left, Right, Up, Down というのは、カーソルキーのことです)
 (Alt+F4などのシステムで使用しているキーは設定できません)
入力(画像表示画面)
外部起動プログラム
・設定画面
 ${selected_files} は複数の引数に展開されます。
 ${selected_files} の行には他の文字は入れないでください。
細かい設定
 (基本的に、変更しなくてもいいと思います)
デバッグ
 (デバッグ用の設定です)



ComicViewerJ2にできないこと

ドライブ間でファイルやディレクトリの移動

Javaにはドライブ間やパーティションをまたいだファイルの移動機能がありません。
がんばって自分で作り込むよりは以下の対処法で十分と思い、この機能には対応しませんでした。

※) WindowやLinuxと同じように移動やコピーをしたいときは、
  1) ComicViewerJ2でディレクトリを選択し、
  2) CTRL+Enter でWindowsのエクスプローラーかLinuxのファイルブラウザーを開き、
  3) ComicViewerJ2からドラッグ&ドロップしてください。
  そうすれば、OSが自分の機能で移動やコピーをしてくれます。

ファイルコピーしている間に別の作業をする

"ドライブ間でのファイルやディレクトリの移動" の対処法と同様に、
OSのウインドウを開いてOSにコピーをさせてください。

※) Windowsでドラッグ&ドロップするときは、送り側と送り先の両方を別アプリで開いておかないと
  ファイルコピー中はComicViewerJ2の操作ができなくなります。
  Ctrl+Cでコピーしたときは問題ありません。

別のアプリケーションとの間での、ファイルの切り取り、貼り付け

Javaのクリップボード機能は、ファイルのコピー(CTRL+V)と切り取り(CTRL+X)の区別がつきません。
ComicViewerJ2同士なら自分の機能を使って区別していますが、別のアプリで
切り取りされたファイルは区別がつかないので、全てコピーされたものとして扱っています。
ComicViewerJ2で切り取られたファイルも他のアプリからはコピーされたように見えます。
(ドラッグ&ドロップなら、別のアプリケーションとの間でも移動とコピーの区別がつきます)

Windowsのエクスプローラーのようなツリー表示

開いたディレクトリの中の要素がファイルかディレクトリかを判別するのは比較的時間のかかる処理です。
たくさんのファイルのあるディレクトリを素早く開くために、この機能は搭載しませんでした。

※) リスト表示で、WindowsやLinuxのようにディレクトリを先頭に並べたいときは、
  ファイルサイズで昇順にソートしてください。
  ディレクトリにはサイズがないので先頭にきます。



ライセンス

GPL3
(オープンソースです。無料で使用できます)


外部ライブラリ

ComicViewerJ2を作成するのに、以下のソフトウェア、データを使用させていただきました。

Apache Commons CLI, Collections, Compress, IO, Lang
lib/commons-cli-1.2.jar
lib/commons-collections-3.2.1.jar
lib/commons-compress-1.4.jar
lib/commons-io-2.3.jar
lib/commons-lang3-3.1.jar

Apache PDFBox
lib/pdfbox-app-1.7.0.jar

Bat To Exe Converter
ComicViewerJ2.exe

Eclipse SWT, JFace
lib_swt/*

J/Migemo
lib/migemo.jar

lucene-gosen
lib/lucene-gosen-2.0.0-ipadic.jar

Migemo
lib/migemo-dict

Open Icon Library
ComicViewerJ2.png 以外の全てのアイコン



連絡先

メールアドレス: gooogle.tanaka+cvj@gmail.com