hishidaの開発blog

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

Microsoft Visual C++  再頒布可能パッケージのサポート期限切れへの対応

EBシリーズサポートページで配布しているWindows用のアプリケーション(EBWin4,EBStudio2,KWIC Finder4,xdoc2txt2)はMicrosoft Visual Studio で開発しているが、Visual C++ で開発したアプリを配布する場合は、「Microsoft Visual C++ 再頒布可能パッケージ」のインストールが別途必要になる。

この再配布可能パッケージはVisual Studio のバージョン毎に異なっており、それぞれ互換性がない。EBシリーズでは、利用者の混乱を避けるため、全ての製品で Visual C++ 2010 にバージョンを固定していた。

ところで、Windows本体やMicrosoft Officeにサポート期限があるように、この再頒布可能パッケージにもMicrosoftのサポート期間があり、Visual Studio 2010 再配布可能パッケージは2020年7月14日で延長サポートを終了してしまう。

forest.watch.impress.co.jp

 Visual Studio 2017(VC++ 15.0)

  • メインストリームサポートの終了日:2022年4月12日
  • 延長サポートの終了日:2027年4月13日

Visual Studio 2015(VC++ 14.0)

  • メインストリームサポートの終了日:2020年10月13日
  • 延長サポートの終了日:2025年10月14日

Visual Studio 2013(VC++ 12.0、msvcr120.dll)

  • メインストリームサポートの終了日:2019年4月9日
  • 延長サポートの終了日:2024年4月9日

Visual Studio 2012(VC++ 11.0、msvcr110.dll)

  • メインストリームサポートの終了日:2018年1月9日
  • 延長サポートの終了日:2023年1月10日

Visual Studio 2010(VC++ 10.0、msvcr100.dll)

  • メインストリームサポートの終了日:2015年7月14日
  • 延長サポートの終了日:2020年7月14日

そこでMicrosoft Visual Studio のバージョンを2017まで上げ、再配布可能パッケージのサポート期限を延ばすことにした。

なお、Visual Studio 2015以降2017,2019は再配布可能パッケージが共通化されている。Surfaceの現行モデルやWindows Server 2019にはプリインストールされているので、再配布可能パッケージを追加導入しなくてもアプリが利用できるようになるというメリットもある。

現在動作検証を行っており、6月中には全製品を「Visual Studio 2015、2017、および 2019 用 Microsoft Visual C++ 再頒布可能パッケージ」対応に変更する予定である。

 

EBPocket Pro for iOS dsl辞書サポート

EBpocket pro for iOS も、dsl辞書対応が終わり、AppStoreで無事公開できた。

f:id:hishida:20200129123039p:plain

f:id:hishida:20200129123101p:plain

ただし、iOS版のみ、dslのインデックスを作る機能がないので、母艦のEBMacまたはEBWin4で作成されるインデックス(.dsl.ebd)を、dsl辞書と一緒に転送してほしい。

EBPocket for iOSに辞書を転送して使用するには、母艦のMacかPCが必須なので、大きな制約ではないと 思う。

 

なお、今回の2.43では、非EPWING系辞書(PDIC、StarDict、MDict)のブックマーク・履歴にも対応した。これで昔年の課題が一つ解決した。

 

EBMac dsl 辞書サポート

昨年からEBシリーズのdsl形式辞書対応を進めているが、MacOS X版のEBMacも1.45.0でdsl対応ができた。

.dslまたは.dsl.dzファイルを辞書に追加すると、自動的にインデックスを作成して検索可能になる。

f:id:hishida:20200126134851p:plain

最近、利用者の方からテスト用のdsl辞書を提供していただき、画像や音声ファイルを.dsl.dz.files.zipというファイル名で圧縮する方法があることがわかった。ABBYY Lingvo の辞書フォーマットの解説にはないので、ひょっとするとGoldenDictの仕様なのかもしれない。普及しているかもしれないので、EBシリーズでも対応することにした。ただし10万件近くのファイルをzipした場合、ページの表示に若干の時間がかかる。

他にいくつか変更点がある。

1. EBMacではこれまで非EPWING系の辞書(PDIC,StarDict,MDict)でブックマークや履歴が登録できないという問題があったが、今回から登録できるようになった。

2. 前回の1.44からSandbox化を行ったが、いろいろと弊害もあるので、1.45では再びSandbox非対応とした。

Sandbox化すると、ファイルダイアログで選択したディレクトリかファイルしかアクセス権がないので、EPWINGの場合CATALOGSを選択しても、同じ階層にある辞書ディレクトリにアクセスができない。CATALOGSの一つ上のディレクトリを選択すると、選択したディレクトリ以下のファイルはアクセス許可があるので、辞書ディレクトリもアクセスできる。これでは操作が難しいので、結局Sandbox化を諦めることにした。

もともとAppStoreに登録するためにSandbox化を行ったが、AppStoreに登録しなくてもAppleからの公証を受ければ配布できることが分かったので、実害はないと思う。

 

あとはEBPocket for iOSdsl対応を行えば一連の作業を終えられる。1~2ヶ月で対応できる予定。

その後は何か新しい課題を考えることになると思う。

EBPocket for Android で dsl 辞書サポート

EBシリーズの dsl 対応が少し進み、EBPocket professional for Android 1.46.0 でアプリ単体でdslのインデクスが作れるようになった。
dsl形式の辞書を追加すると、自動的に拡張子 .dsl.ebd という名前のインデックスを作成する。
ただし、外部SDカードにdsl辞書を置いた場合には書き込みができないので、内部ストレージに辞書を置くか、EBWin4で作ったインデックスをdslと一緒に転送する必要がある。

iOSMac OS Xも、EBWin4で作ったインデックスをdslと一緒に転送すれば使用できるところまではできているが、単独でインデックスを作成できるようになってからリリースしたい。

 

EBWin4.7.4 で .dsl 暫定サポート

ABBYY Lingvoの辞書形式 .dsl .dsl.dzに対応したEBWin4.7.4を、暫定公開しました。

http://ebstudio.info/manual/EBWin4/EBWin4.html

.dslまたは.dsl.dz形式の辞書を追加すると、自動的にインデックスを作成して利用可能になります。

下記のURLで公開されている辞書で検証しています。

github.com

 

dadako.narod.ru

本格的な大規模辞書での検証が行えていないため、当面は暫定公開とします。

他のプラットフォームへの展開はこれからですが、Android 版の EBPocket Professional 1.45.3では、母艦のEBWin4で作成したインデックス( .dsl.ebd )を.dslと一緒に転送すれば、検索が可能です。

 

EBシリーズのdsl対応進捗

前回、EBシリーズでdslフォーマットの対応を検討していることを報告した。
ebstudio.hatenablog.com

その後の進捗だが、フェーズ1(ユーザ辞書へのコンバート)とフェーズ2(dslにインデックスを作成)の両方を同時に進めている。とりあえず、EBWin4とEBPocket for Android ではそれらしく検索および表示できるようになってきた。

.dslと .dsl.dz に対応している。.dsl.dzというのは、dictzipユーティリティで圧縮した形式であり、gzip互換だがランダムアクセスがしやすいように拡張されている。7zipを使うと.dsl.dzを.dslに展開できる。.dsl.dzで辞書を公開しているサイトがあってかなりポピュラーなので、対応することにした。

EBWin4に .dsl または.dsl.dzを追加しようとすると、自動的にインデックスを作成する。母艦で作成したインデックスは、モバイル版に転送して使用できる。

下記URLのサンプルの abandon の項目例と比較してみて欲しい。

Sample Entries in DSL | ABBYY Lingvo

f:id:hishida:20191221185807p:plain

 

下記サイトからGoogle Translate (Eng-Rus) 辞書をダウンロードしたもの。

бумакопанiя

f:id:hishida:20191221185821p:plain

同じ辞書をEBPocket for Androidで表示。

f:id:hishida:20191221185841p:plain

f:id:hishida:20191221185853p:plain

インデックス作成を母艦で行う必要があるのがネックだが、この段階でリリースしたとして、ユーザのみなさんに使っていただけるだろうか。モバイル版でもインデックス作成を行えるようにしようとは考えている。

iOS版とMac版がまだ手つかずだが、フェーズ1,フェーズ2までなら、来年初にはリリースできる予定。

EBシリーズのDSL形式への対応方針について

数年前から進めていた既存アプリのリニューアル(KWIC Finder4、EBStudio2、EBWin4のタブ化等)が一段落し、モバイルアプリのダークモード対応もできたので、次なるお題を考える余裕ができてきた。

以前から要望があるdslフォーマット(ABBYY Lingvoの辞書フォーマット)の検討を再開したいと思う。
dslはテキスト形式の辞書のソースで、dsl compilerによってコンパイルしたバイナリ形式がlsdである。

lingvo.helpmax.net


lsdの構造は非公開だが、lsdからdslに変換するツールがいくつかあるので、リバースエンジニアリングを行えば対応は不可能ではない。だが作業時間は膨大になることが予想される。

github.com


そこで、段階的に対応することを考えた。

フェーズ1 EBWinのユーザ辞書形式に変換する

一番簡単なのは、dslからEBWinのユーザ辞書に変換することである。これでdslのパーサーと、dsl形式の辞書の内容の表示ルーチンができあがる。
変換の手間はあるが、公開されているdslを(モバイルも含めて)EBシリーズで利用することができる、
(作業工数1~2カ月)

フェーズ2 dslに対してインデックスを作成する

次は、dslのソースをそのまま辞書ファイルとして利用し、インデックスだけ作成してEBシリーズで利用することである。モバイルでインデックスをつくると辞書のサイズによっては長考状態になるので、母艦でインデックスを作成してdslと一緒に転送してもよいようにする。
(パーサーとdsl形式の表示ルーチンはフェーズ1で開発済みということになる)
(作業工数1~2カ月)

フェーズ3 lsdのネイティブサポート

最後に、リバースエンジニアリングによってlsdを解析し、直接参照できるようにする。
ただし、膨大な作業時間が予想されるので、フェーズ2までで終わる可能性が高い。あまり過度な期待はいだかないでほしい。
可能性として書いているだけで、着手できるかどうかもわからない。

現在フェーズ1の途中であり、整形していないdslの生データが検索出来ているところまでのスクリーンショットを掲載しておく。あとはテキストを整形して表示できるようにすれば、フェーズ1までは実現することになる。

 

f:id:hishida:20191207143645p:plain