Web辞書検索システム

ローカルで内容を編集する辞書向けのシステム

システムについて

概要

弊社の「Web辞書検索システム」に興味をもっていただき、ありがとうございます。

このシステムは、日本を代表するネット辞書サイト、通信用語の基礎知識で採用されている、Web辞書システムです。

公開専用に特化

Webで内容を編集できるものは、現在はWikiが存在し、特に名を挙げるまでもなく有名な百科事典サイトが実在します。

弊社のこのシステムは、そういったWebから誰でも編集できるものではなく、閉じた環境で編集作業などをし、そうして作られた辞書を世界に公開するために設計されています。

従って本システム自体には編集作業に関する機能は何一つありませんが、辞書を公開するにあたり必要となる数多くの機能を持っています。

開発経緯

スクリプトである必要性

まず弊社は、Webアプリケーションの開発に、必ずしもスクリプト言語を使う必要はないのではないか、と考えました。

Webブラウザーで動作させるのであれば、JavaScriptしか選択肢はありませんが、HTMLを吐き出すサーバー側処理なら、普通のプログラミング言語で書くことができます。つまり、必ずしもスクリプト言語で書く必要はないのです。

結論

結論として、サーバー側の処理は、C++で書くのが最適であると判断しました。

開発効率、メンテナンス性、開発技術者の確保しやすさなど、全てにおいて優れています。

実証

そこで弊社はこれを実証するため、実際にC++を用いてのWebアプリケーションの開発に着手しました。なお、これは実験ですので、アクセス数は少なすぎず多すぎず、また規模も、小さすぎず大きすぎない、程ほどの規模であることが理想的でした。

そこで、通信用語の基礎知識の検索システムに着目し、取り組むこととしました。

これは資金難かつ人的リソース不足の辞書プロジェクトがソフトウェアを欲していたことと、弊社が必要としていたWebアプリケーション開発の実績確保という、相互の利害が一致したことによります。

使ってみていかがでしたか?

性能、使いやすさなどはいかがでしたでしょうか。

「画面が古くさい」「ダサイ」は、弊社の管轄ではなく、もともとそういったデザインだった古い検索システムにデザインを合わせたためこうなっており、ユーザー側にリデザインの資金があればデザインは幾らでも変更が可能です。

システムの特徴

言語はC++

C++とSTLを用いて書かれています。

これが、このシステムの開発目的です。

開発効率と性能およびメンテナンス性が優れています。

CGIです

C++のプログラムをCGIで動作させます。サーバーサイド・スクリプトではありません。

これも、このシステムの開発目的です。

ですのでサーバーに負荷を掛けません。

つまり、Webサーバーは必ずしもApacheなどである必要はなく、もっとシンプルでコンパクトなWebサーバーを使って簡単に動かせます。

FreeBSD/Windows兼用

開発はWindows、実際に稼働させるサーバーはFreeBSDですので、その双方でビルドでき、動作するように作られています。

WindowsではVisual C++、FreeBSDではClang/LLVMでビルドすることが想定されています。

Webシステムは双方のOSで動作するよう作られていますが、以下に説明する辞書のコンパイラーなどはWindows専用です。

オフライン開発専用

本システムの対象となった「通信用語の基礎知識」という辞書は、オフラインで原稿を用意してそれをサーバーにアップロードするスタイルの開発プロジェクトです。

そこで本システムは、そのスタイルに特化し、そのスタイルを効率的に実現できるようシステムを設計しました。

Web上で開発するものはWikiが既にありますが、本システムはローカルで開発するものとして、それらとは一線を画すものとなっています。

RDBSを使っていません

RDBSは使われていません。SQLiteなどを使っての機能拡張なども想定はしていますが、現時点では使用していません。ですので、システムはわりと簡単にサーバーで稼働させられます。

検索機能自体は、キーワード検索を前提としていますが、必要十分な性能を、充分な速度で実行します。

コンパイル方式

本システムの対象となった「通信用語の基礎知識」という辞書は、通信用語の基礎知識編纂委員会が開発し採用した「V6フォーマット」としている書式で記述しています。これは人間の読み書きと、コンピューター処理との兼ね合いを考慮して設計されています。

ですのでこのフォーマットそのものをサーバー側で処理しても良いのですが、それは効率的ではありません。せっかくのオフライン開発専用システムですので、コンパイルして中間言語に変換する方式としました。

サーバーには、コンパイルによって作られた中間言語と関連情報ファイルをアップロードします。サーバー側処理は、この中間言語を動かすためのインタープリターとして機能します。

つまりサーバー側処理としては、中間言語から、指定した単語部分を検索し、その内容をインタープリターによってHTML化して画面に表わします。従って表示時の解析処理が大幅に省けるため、高速軽量な動作が可能となっています。

LINT

ローカルで処理するので、ローカルでコンパイルする際に書式にエラーがないかどうかを確認するツールを用意しています。

  1. 書式にミスがないかを確認するフォーマットチェッカー
  2. 単語間リンクに不正がないかを確認するリンクチェッカー
  3. 指定したディレクトリに不正がないかを確認するディレクトリチェッカー

これらは、通信用語の基礎知識の開発プロジェクトに提供しており、プロジェクト参加者が利用できます。その他には現在、頒布していません。

システム構成

システム

現在、Web辞書検索システムを構成する、サーバー側ソフトウェアは次の通りです。

  1. 検索機能 (WDIC Voyager)
  2. 結果表示機能 (WDIC Explorer)
  3. ディレクトリ機能 (WDIC Navigator)
  4. 辞書グループ一覧 (WDIC Kepler)
  5. 辞書ファイル一覧 (WDIC Galilei)
  6. プラグイン情報表示機能 (WDIC Giotto)
  7. 更新情報表示機能 (WDIC Discovery)
  8. 人気検索語表示機能 (WDIC Pioneer)
  9. 索引検索機能 (WDIC Cassini)
  10. おまかせ検索機能 (WDIC Viking)
  11. 今日の用語機能 (WDIC Surveyor)

特色

本製品の特色は、辞書・辞典という特定分野に処理を限定することで、高速かつ適切な検索性能、UnicodeとJISの優秀な変換性能などがあります。

特に、UnicodeとJISの変換処理には弊社開発製品の技術が使われており、この技術は弊社の他の製品開発にも生かされています。

補足

辞書内容には関知していません

弊社が担当したのは「Web辞書検索システム」です。

本システムが対象とするものは誰でも作ることができる辞書であり、通信用語の基礎知識は、弊社システムのユーザー様です。

以前より、辞書内容に関してのクレームや、あるいはステマ記事掲載依頼などのメールが舞い込んでおり、そのたびに転送をさせていただいておりました。しかしそれが後を絶たないこと、そもそもここに書かれている説明をきちんと読めないような方への配慮は不要と判断し、現在はそういったメールは全て無視することにしております。

通信用語の基礎知識にご入り用の方は、直接、通信用語の基礎知識にお問い合わせください。