LC'99 抄録用原稿(1999年11月作成) 発表タイトル: 「FreeWnnの輝ける未来のために 〜FreeWnnの誕生までの歴史とFreeWnnの開発体制と現状〜」 発表者: 古川竜雄(FreeWnn Projectリーダー)、 吉田智子(FreeWnn Project広報担当) 発表日: 1999年12月18日 発表概要: FreeWnn(フリーうんぬ) は、各種UNIX系のOS上で稼働するフ リーのInput Methodで、日本語・中国語・韓国語といった複 数の言語に対応しています。Wnnは 1987年にフリーソフトウェ アとして誕生したものでしたが、1995年に商用のものもでき た結果、商用版とフリー版の両方が使われています。1999年 になって、そのうちのフリー版をGPLとしたのが FreeWnnで、 開発拠点は、FreeWnn Projectというユーザー主体の団体で す。 今回の発表では、FreeWnnの誕生およびProjectの運営につい ての紹介、および、現在のFreeWnn Projectの活動、特に、 新しい機能を追加したバージョンのリリースについて発表す る。 1. FreeWnn誕生までのWnnの歴史 以下に、 FreeWnn誕生までのWnnの歴史を紹介します(「図: Wnnの成長の歴史」参照)。 1.1 Wnnの誕生(1987年) Wnnの開発は、京都大学、オムロン(株)、(株)アステック によって、産学共同研究プロジェクトとしてスタートしまし た。ソースコードが無料公開されたのが1987年で、日本初の UNIX上の「かな漢字変換ソフトウェア」でした。Wnnという 名前は、Watashino Namaeha Nakanodesu(私の名前は中野で す)という文章の一括変換ができるシステムということで、 その文の各文節の頭文字をとって命名されています。 誕生当時のWnnには、以下の特徴がありました。 (1)文章一括変換の実現 (2)クライアント/サーバー方式の採用 (3)辞書の形式や内部構造はすべて公開 (4)C言語で記述することで各マシンへの移植を容易に (5)ソースコードを無料で提供 当時としては非常に珍しかった、クライアント/サーバー 方式、オープンソースという2つの特徴が、Wnnが息の長いソ フトウェアとして生き続けることを決定づけたわけです。 1.2 マルチリンガル対応に発展 (1990年〜) 1990年、Wnnには中国語変換システムの機能が追加され、 1991年には、ヨーロッパ言語、中国語、韓国語にも対応した 多言語変換システムとして、そのソースコードが、X11R5(X Window SystemのVer.11のRer.5)に含まれ、Wnn4は、マルチ リンガル入力システムとして世界デビューを果たしました。 しかし、マルチリンガル化や多機能化が進む中で、日本語 変換の進歩は停滞気味。その一方で、パソコン上のFEPは、 1980年代からは着実に進化しており、さらにはUNIX上のかな 漢字変換システムとして、素直な変換をする上に非力なマシ ン上でも動くCannaが、フリーソフトウェアとして登場したり で、1993年ごろの数年間、ユーザーのWnn離れが見られました。 1.3 商用版Wnnが「Wnn6」として誕生(1995年) 1995年4月、パソコン上のFEPと同等、あるいはそれ以上の 変換効率を誇るWnn6がオムロンから誕生した結果、Wnnには、 フリーのものと商用のものの両方が存在するようになりまし た。さらにオムロンは、1996年にはWindows95用のマルチリ ンガルWnnシリーズの販売も開始するなど、Wnnの商売を本格 的に開始。1997年には、PC-UNIX用の「Wnn6」の販売も開始 されました。 その後、1998年11月になって、Wnn6のクライアント作成用 ライブラリのソースコードが、全面的に公開されました。こ れは、Wnn6利用する各種のソフトウェア(Emacs、kinput2な ど)の開発に、この部分のソースコードが不可欠だったから です。この公開には、Linuxのディストリビューションの一 つであるDebianの日本語環境を作っているメンバー、Linux の日本語環境であるPJEのメンバー、そしてFreeBSD portsの メンバーからの強い要請があったからだと、オムロンソフト ウェアの山野惠一郎氏も語っています。 1.4 FreeWnnの誕生へ(1999年) フリーソフトウェアとしてのWnnは、Wnn2(1987年)、 Wnn3(1987年)、Wnn4.0(1989年)とバージョンアップを続け、 中国語変換のcWnnの機能を加えたWnn4.1が1991年に、韓国語 変換のkWnnの機能とX11R6対応の機能を加えたWnn4.2が1994 年10月にリリースされていました。しかし、1995年にWnn6が 誕生してからは、Wnn4の最終バージョンであるWnn4.2が、バー ジョンアップされずに放置されている状態が続いていました。 これに対して、当然、「オープンソースとしてのWnnの開 発を再開したい」という要望がユーザー側から高まっていま した。特に、wnn-users ML では、1997年の秋から、「Wnn4 再生計画 〜Wnn4 Strikes Back!!〜」が、スタートしていた のですが、「Wnnのライセンス形態がよくわからない。ユー ザーが勝手に手を加えてもいいのかな?」という問題があり ました。それに対処すべく、フリーのWnnの著作権者の一人 でもあるオムロンが、Wnn4.2をGNUの使用許諾条件(GPL)とし て、FreeWnn1.0という新しい名前で公開したのが、1999年3 月でした。 これは、Wnn4.2を、フリーのWnnの共同著作者の同意を得 た上でGNUの使用許諾条件(GPL)に則ったものに変更し、 FreeWnnという新たな名前で改めて配布することにしたもの です。そうすれば、ユーザーが自由に改変、配布、複製でき るようになるからです。 2. FreeWnn1.1リリース後の開発体制 1999年3月にリリースされたFreeWnn1.0では、Wnn4.2から FreeWnn1.0への変更点は、使用許諾条件のGPLへの変更のみ でしたが、7月7日にリリースされたFreeWnn1.1では、これま で発表されたアンオフィシャルパッチのうち、サーバー部分 のバグフィックスパッチをあてて、さらに、サーバー部分の みですが、configure対応の機能が追加された(対応機種は、 Linux数種とFreeBSD、そしてSolaris 2.6)ものが、 FreeWnn1.1として公開されました。 このFreeWnn1.1が、「FreeWnnプロジェクト」がユーザー 主体で育てていくフリーのWnnの出発点になりました。この、 ユーザー主体のFreeWnnの活動拠点がFreeWnn Projectです。 FreeWnn Projectは、FreeWnn1.1がリリースされるまでは、 「FreeWnn Project準備委員会」として活動のための体制作 りをスタートさせており、7月7日のFreeWnn1.1のリリースと 同時に、正式なプロジェクトとして活動を始めました。 8月には freewnn.org ドメインを取得して運用を開始し、 1999年8月4日以降、公式Webサイトと一次配布サイトは、下 のようになっています。 FreeWnn Project 公式ページ http://www.freewnn.org/ FreeWnn の配布サイト ftp://ftp.freewnn.org/pub/FreeWnn/ (一次配布サイト) | +-> ftp://etlport.etl.go.jp/pub/FreeWnn/ | +-> ftp://ftp.st.ryukoku.ac.jp/pub/japanese-im/FreeWnn | +-> ftp://ftp.kddlabs.co.jp/Japan/Wnn/FreeWnn/ | +-> ftp://ftp.tomo.gr.jp/pub/FreeWnn/ また、FreeWnn Projectの情報交換用MLとして、1999年11 月現在は、準備委員会の時から利用していた、 freewnn@tomo.gr.jp (freewnn ML) が利用されています。た だし、近いうちに、freewnn.orgでの運用に変更される予定 がありますので、MLへの参加方法は、FreeWnn Project公式 ページでご確認下さい。このMLに参加している人数は、170 名です(1999年11月24日現在)。 Wnn関連のMLには、wnn-users MLも存在しますので、切り 分けを以下のように決めています。 ・正式版リリースの案内 freewnn MLとwnn-usersML ・ベータ・テストの案内 freewnn MLとwnn-usersML ・アルファ・テストの呼かけ freewnn ML ・ユーザーの質問窓口 freewnn MLもしくはwnn-usersML ・ユーザーのバグ報告 freewnn ML ・パッチ提出先 freewnn ML 3. FreeWnnの新バージョンのリリースに向けて さて、現在のFreeWnn Projectの主な活動は、バグをフィッ クスしたパッチの公開と、新バージョンのリリースの準備と 公開です。新バージョンのリリースに向けて、具体的には、 以下の順番で作業を実施しています。 1. プログラムに関するパッチの収集 2. 最終テスト版リリース 3. いろいろなOSでのコンパイル&実行(メンバーが協力) 4. ドキュメントをまとめて(まとめられるものだけ) 5. リリース! FreeWnn1.1がユーザー主体の「FreeWnn Project」に移管 された1999年7月7日以降、パッチが第13弾まで内部リリース されました。それぞれのパッチの主な修正内容は、次の通り です。 ・1999年7月19日内部リリースのパッチ第1弾の主な内容 * Pubdic/Makefile.inを作成。 * SunOS4.*でのコンパイルのためにconfigureとconfigure.in修正 * strchr()のプロトタイプの修正 ・7月29日内部リリースのパッチ第2弾の主な内容 * configure, configure.in: BSD/OS 対応 * Wnn/jutil/wddel.c:main()にてgets()を使っていたのでfgets()に 変更 * Wnn/etc/msg.c:msg_get()にてローカル変数のアドレスを返してい る部分があったので修正 * main()関数の戻り値型がintになっていないのを修正 ・8月11日内部リリースのパッチ第3弾の主な内容 * OpenBSD/i386, HP-UX 9.X対応 * --prefix=dir を有効に。(今までは /usr/localで決めうち) * configure, configure.in: NetBSD対応 ・8月20日内部リリースのパッチ第4弾の主な内容 * HP-UX 11.0対応 * (元からあった)config.hをwnn_config.h に改名し、configureで config.hを作成するようにした(ただし中身は空)。 * Makefile.inから共通定義部分を括り出してmakerule.mkというファ イルにまとめた * コンパイルでエラーが出た時、その時点でmakeが止まるようにした * makerule.mk: WNNINCDIRとWNNLIBDIRをconfigureの定義に合わせ た(今までは /usr/X11R6以下に入るようになっていた) * install-sh を autoconfパッケージから持ってきた。これでinstall コマンドがないマシンでもFreeWnnのインストールが可能になった * Intel版BeOS対応 ・9月13日内部リリースのパッチ第5弾の主な内容 * ファイル CONTRIBUTORSを作成 * Wnn/include/Makefile.in: config.hをwnn_config.hに改名したが、 FreeWnn以外のクライアントは依然としてconfig.hをインクルードしよ うとするはずなので、インストール時に"ln -s wnn_config.h config.h" を実行するようにした。 * configure.in: CPPやCCOPTIONSなどの値の決定にOSの判定をして いるところがあるが、知らないOSでもとりあえずconfigureを続ける ようにした。 * AIX 対応(configure, configure.in) * cpp の出力に行番号情報(#line 1 "" というような感じ)が出る場合 でも正しく扱えるようにMakefile.in変更。 * Xsi/makerule.mk.in: SUBDIRが未定義の場合にエラーになるのを回避 ・9月16日内部リリースのパッチ第6弾の主な内容 * 〜/Makefile.in: 不要なライブラリを多数リンクしていたので、そ れを止めさせた。 * Wnn/include/Makefile.in: config.h -> wnn_config.hのシンボリック リンクで $DESTDIR を考慮するように修正。上書きインストールする際 にあらかじめシンボリックリンクをrmする必要があったので修正。 * cWnn/man/6.jutil/Makefile.in: wnntouch.manのターゲットがなかっ たので追加。 * make install.man でマニュアルがインストールされるようにした。 * makerule.mk.in: MANPATH が /usr/X11R6/man に決めうちになっている のを修正(→ @mandir@ にした)。 * 時々付属語ファイル関連でエラーが出ることがあるのを修正。 ・9月19日内部リリースのパッチ第7弾の主な内容 * cryptライブラリがリンクされないようになっていたためNetBSDでコ ンパイルできなくなっていたのを修正。 ・9月22日内部リリースのパッチ第8弾の主な内容 * configureをautoconf-1.13ベースに変更。(今までは 1.12ベース) * 辞書をPubdicからPubdic+に変更。 ・9月22日内部リリースのパッチ第9弾の主な内容 * configure.in: Intel版のSolarisに対応 * Wnn/etc/bdic.c: 内部関数 getnstr()の定義がncursesライブラリの 同名関数のプロトタイプ宣言と干渉を起こすため、名前をgetnstring() に変更。 * configure.in: AC_CHECK_LIBのチェック関数がmainになっていたの を各々ふさわしいものに変更。 ・9月24日内部リリースのパッチ第10弾の主な内容 * PubdicPlus/Makefile.in: コンパイラがgcc決めうちだったのを修正 ・9月24日内部リリースのパッチ第11弾の主な内容 * Wnn/jserver/de.c: NOFILE の再定義の不具合を修正。 * time((long*)0) を time(NULL) に修正。 * PubdicPlus/pod.c: 「static 変数の初期値が定数でない」 ところがあったので修正。 ・9月29日内部リリースのパッチ第12弾の主な内容 * gerodicがmakeおよびmake installの対象になるようにした。 * Wnn/jlib/js.c: BSD系のOSで SUN_LEN を正しく定義 * HAVE_DRAND48 および HAVE_RAND_MAX を導入。SRAND48は削除。 * Wnn/jserver/do_hindo_s.c (RAND): (1<<31) がintを越えていたので * Wnn/jserver/de.c: socklen_t 型を導入 * Wnn/jserver/error.c: time_t 型を導入 ・10月19日内部リリースのパッチ第13弾の主な内容 * Wnn/jserver/de.c: jserverがエラーで終了する時、perror()を呼ん で「何が原因で異常終了したのか」を表示するようにした。 * Wnn/jserver/do_hindo_s.c: drand48()のプロトタイプ宣言を追加 * Wnn/jserver/do_hindo_s.c: 1U → (unsigned)1 に変更。K&R でエラー が出るため。 * Wnn/jserver/de.c: acceptの引数のキャストを行ない、warningをな くした。 11月24日現在、新しいバージョン(FreeWnn-1.1.1)のリリー スに向けて、最終調整が行われています。 4. 発表の内容について 「FreeWnnの輝ける未来のために」と題するLinux Conference'99の発表では、次の順番で発表をすすめます。 (1) FreeWnnの誕生の背景およびWebやMLの運用について (2) FreeWnn-1.1.1のリリースについて (3) FreeWnn Projectの今後の活動方針と課題や苦労 (4) まとめと質疑応答  この発表を通じて、FreeWnn Projectの現状を多くの人に 伝えることで、このプロジェクトの協力者や理解者が増えて、 開発がより活発になることを望んでいます。日本語・中国語・ 韓国語といった複数の言語に対応しており、日本発の歴史あ るフリーのソフトウェアであるWnnの後継、FreeWnnの輝ける 未来のための皆様のご指導を、ご協力を、どうぞよろしくお 願いします。 参考文献: [1] freewnn MLで1999年5月から11月24日までに交換された 226通のメール内容 [2] 『FreeWnn Project公式ページ』http://www.freewnn.org/ [3] 『Wnn関係用語集 Ver.1.41(1999.8.16)』 http://www.tomo.gr.jp/wnn/wnn-yogo.html [4] 『よしだともこのルート訪問記 書籍版』(1999年9月、 ソフトバンクパブリッシング発行)の5章4節「Wnnの成長 と発展の歴史」