hishidaの開発blog

EBシリーズ(EBPocket,EBWin,EBMac,EBStudio),KWIC Finder,xdoc2txt,読書尚友の開発者ブログ

StarDict 計画 進捗(4)

StarDict 対応について

EBシリーズのStarDict対応は、EBWin4とEBPocket for Android をリリースした。EBMacは1WぐらいでVectorダウンロードで公開予定。iOS版は手元では対応が終わっているが、iOS9対応の調査を並行して行っているので、リリースは遅れる予定。
今回、インデックスファイルをメモリに展開するのにメモリマップドファイルを使用し、検索に二分探索を使用している。メモリマップドファイルはWindowsではMapViewOfFile、Unix系ではmmapを使用する。Mac OS XiOSではmmapは期待通り動作する。AndroidのNDKにもmmapは存在するが、マッピングできるメモリの上限が256KB程度のようで、少し大きなStarDict辞書だとメモリにインデックスを展開できない。しかたないので、Android版だけmmapを使用せずに単純にメモリ上にmallocで確保している。10万語規模の辞書でもインデックスのサイズは1〜2MB程度なので、現在のAndroidなら問題ない。
既存のStarDictクライアントに比べても機能的に引けを取らないと思うが、DICTプロトコルに対応していないところが見劣りする可能性はある。他のアプリと併用すればいいのだが、将来の課題としたい。

iOS9について

ご存知のように、iOS9の開発者プレビューが公開されている。現在AppStoreに上がっているEBPocketはXCode6でiOS8.x用にビルドしたものなので、このバイナリがiOS9で使用できないと大クレームになる。そこでiPad mini2 32GBを購入してiOS9 betaを入れて実験してみた。
結果的にはiOS9で問題なく使用できる。ただし、iOS9のマルチタスク機能の画面分割は使用できない。画面分割を使用するには、XCode7のSDKコンパイルし、かついくつかの条件を満たす必要がある。
せめて画面分割ぐらいはサポートしたいので、水面下で修正中。MGSplitViewControllerというサードバーティのライブラリからUISplitViewControllerへ切り替えることが大前提になるが、こちらの作業はほぼ終わった。iOS9対応は時間の問題だと思うが、過去互換性がどこまで保てるかが一つの課題。

iPad mini2 32GB

iPadは、初代iPad,iPad2,iPad mini 16GBと購入してきたが、それぞれ売却している。手元に残していない理由は、手持ちのモバイル機器が多すぎるので、使用頻度の低い機器はなるべく整理したいため(なにしろSigmarion2,3やW-ZERO3などもまだ動体保存している)。今回のiPad mini2 32GBは、4台目のiPadになる。
iOS9のマルチタスク機能のうち、Slide OverはiPad Air / iPad mini2 以降で使用できるが、Slide View(2分割)はiPad Air 2のみとなる。おそらく将来の12インチ以上のiPadへの布石だろうが、ちょっと残念。Slide Viewはエミュレータで試すことにする。
iPad mini2 32GBを再度購入した理由の一つは、写真撮影時にMacbook Proの代わりに携行して、撮影した写真をその場で確認したいため。SDカードリーダーも購入済み。こちらはそのうち写真ブログのほうで紹介できると思う。(E-M1とPROレンズ2本は結構肩にきます)