【告知】Windows 64ビット版にMECAB.DLLが含まれない件

パートナー向けにリリースされているNightly BuildおよびHotfixですが,特定のビルド番号以降,4D Server Windows 64ビット版のインストーラーにMECAB.DLLが含まれていないことが判明しました。MECABは,日本語全文検索およびキーワード分解に必要なモジュールです。

プラットフォーム:Windows(64ビット版)
プロダクト:4D Server
問題:新規DB作成直後および既存DBの初回起動でエラーメッセージが表示される(ACI0097124)
エラーメッセージ:指定されたモジュールが見つかりません(1010)
原因:MECAB.DLLがインストールされないため
備考:2回目以降の起動では表示されません

MECABが含まれる最後のビルド:15.4.211902(2017年5月18日)
MECABが含まれない最初のビルド:15.4.211968(2017年5月19日)

つまり,15.4 Hotfix 2以前は問題がなく,15.4 Hotfix 3で問題があります。

解決策

15.4 Hotfix 2以前の4D Server Windows 64ビット版のコピーがあれば,MECAB.DLLをコピーしてください。今回の問題は,アプリケーションおよびDLLのビルドではなく,インストーラーのファイルコピースクリプトが原因です。別バージョンのDLL(あるいはMECABフォルダー全体)をそのまま使用することができます。

MECAB.DLL単体のダウンロードリンク:
http://forums.4d.com/4DBB_Main/x_User/298210/files/20268424.zip

備考

MECABは,遅延ローディングされるDLLです。4Dは,http://doc.4d.com/4Dv16/4D/16.1/DatabaseData-storage-page.300-3373273.ja.htmlデータベース設定>で下記の条件が満たされる場合に限り,MECABをサーチします。

「データベース言語」が「日本語」
「旧バージョン互換の文字列比較を使用する」が「有効」
「非文字・非数字のみをキーワード区切り文字とする」が「無効」

これらの条件が満たされている場合,4Dのhttp://doc.4d.com/4Dv16/4D/16.1/Creating-and-modifying-indexes.300-3373386.ja.htmlキーワードインデックス>およびキーワード分解(http://doc.4d.com/4Dv16/4D/16.1/GET-TEXT-KEYWORDS.301-3374766.ja.htmlGET TEXT KEYWORDS>およびhttp://doc.4d.com/4Dv16/4D/16.1/Comparison-Operators.300-3375333.ja.htmlクエリ演算子「%」>)には,日本語の形態素解析モジュールが使用され,動詞・名詞・形容詞など,キーワードとして意味のある文字列に接頭辞や接尾辞を付けたものがキーワードとして抽出され,インデックスが作られます。

参考:https://www.slideshare.net/kmiyako/tkeyword-index

いずれかの条件が満たされない場合,キーワードインデックスおよびキーワード分解は単純な区切り文字(句読点やスペースなど)で分解されるか,ワードブレイク(文章をダブルクリックしたときにハイライト選択される範囲)の基準に基づいて処理されます。この場合,MECAB.DLLはロードされないため,存在しなかったとしてもエラーにはなりません。

MECABは,アプリケーションパッケージ内の所定のフォルダーにインストールされている必要があります。エラーメッセージ:指定されたモジュールが見つかりません(1010)は,この場所に目的のライブラリがみつからない,という意味です。

Resources/mecab/mecab.bundleまたはmecab.dll

注記:MECABは,日本語版のディスクイメージ(Mac)を使用するか,インストーラーで言語に日本語を含めれば(Windows),自動的にインストールされます。他言語版のディスクイメージ(Mac)を使用したり,インストーラーで言語に日本語を含めなかった場合(Windows),MECABのインストールは省略されます。

MECABが必要な設定なのに,MECABがみつからなかった場合,つまり,エラーメッセージ:指定されたモジュールが見つかりません(1010)が表示された場合,そのアプリケーションはMECABを使用しない設定に変更されるため,以後,エラーメッセージは表示されなくなります。しかし,当然のことながら,キーワードインデックスおよびキーワード分解には日本語の形態素解析モジュールが使用されないことになります。

注記:キーワードインデックスおよびキーワード分解の設定は,ストラクチャの書き出しで確認することができます。http://doc.4d.com/4Dv16/4D/16.1/Exporting-and-importing-structure-definitions.300-3373376.ja.htmlストラクチャエディター定義でXML形式でエクスポート>するか,http://doc.4d.com/4Dv16/4D/16/EXPORT-STRUCTURE.301-3036689.ja.htmlEXPORT STRUCTURE>コマンドを使用すると,最後のほうに下記のような要素が含まれおり,使用したモジュールの名称(ICUまたはMECAB)・バージョン・辞書の名称とバージョンを確認することができます。

<base_extra __stringCompHash=“icu:4.8.0” __keywordBuildingHash=“mecab:0.996;sys.dic:102;” package_name="{name}" structure_file_name="{name}" data_file_path=":{name}.4DD"/>