狠狠撸
Submit Search
続?颁补苍苍补をフォークしてみた
?
0 likes
?
719 views
Masahiko Hashimoto
Follow
1 of 20
Download now
Download to read offline
More Related Content
続?颁补苍苍补をフォークしてみた
1.
続?颁补苍苍补をフォークしてみた はしもとまさ@東海道らぐ In
KANSAI OPEN FORUM 2014 2014/11/8
2.
自己紹介 ● 東海道らぐ元名古屋案内人、ちびぎーこ保護者会所属
● 某大学日本文学文化学科卒 – …という理由から、最近日本語入力の研究に目覚めました。
3.
今回のお話。 ● Cannaをフォークしてみました!
● Cannaとは???? – 元はNECが作成していた日本語変換システム。 – その後、Canna Projectが開発を引き継いだ。 – …が、2004/5/20を最後にリリースされていない。 – サーバー&クライアント型。MITライセンス。 ● OSC東京で前半をお話ししたので、今日はその続き。
4.
CannaからIzumoへ ● 日本語変換システム「Izumo」
– https://github.com/hashimom/Izumo – よく聞かれるのが、「なぜいずも?」 ● とりあえず、Cannaを漢字にしてみよう! 余談)島根県では神無月ではなく神在月と呼ばれるらしい ● 主な変更点: 現状、特になし!(おいっ) – クライアントライブラリ、ツール群をざくっと削除してシンプルに – ビルド方法を変更(完了) – 辞書ファイルの見直し ←失敗中! ● uim-canna が利用できることを確認しています
5.
Canna で使っている imake
● 「xmkmf」ってコマンドを叩くと、 Imakefileの記述から、Makefileを作成します。 ● X Window SystemのX11R6.9(2005年)までは imakeを利用してビルドされていました。 – なので、imakeのことを調べるとそっち系のものばかり引っかかります。 ● 例) Cannaのビルド方法: $ xmkmf $ make canna
6.
imakeの欠点 「解説書: 非常に広く使用されているツールとしては、
imakeはいまだに異常なほど文章化されていません。 (中略) 多くのプログラマがimakeのさまざまな部分と 取り組んできましたが、X Windowシステムの配布のために 用意している風変わりな機能から汎用的な部分を抜き出して ツールとして分割することは誰もできませんでした。」 オライリー「make 改訂版」(2005年)より いろいろダメぽい???^^;
7.
Cannaのディレクトリ構造 ※各ディレクトリにImakefileが存在します。 (ROOT)
lib server cmd canna include dic misc クライアントやサーバーが使用する ライブラリ群 Cannaサーバー Canna停止や辞書作成時に 使用するコマンド群 注:コマンド毎にディレクトリは別 makeすると作成される! 各ディレクトリ内にある ヘッダファイルのシンボリックリンクが make実行時に「include」内に貼られる。 (ROOT) にあるCanna.confの内容と Imakefileの記述から Cannaconf.hを作成して、 include内に置かれる 共通ヘッダファイル置き場 辞書 設定ファイル等
8.
Izumo では これをまるっと
Cmake に置き換えます! Cmakeでのビルド方法: $ mkdir build && cd build $ cmake .. $ make $ sudo make install
9.
現在のIzumoのディレクトリ構成 (ROOT) lib
server include dic (ROOT) 一箇所にのみ CMakeLists.txtを配置する。 クライアントやサーバーが使用する ライブラリ群 Izumoサーバー 辞書と 辞書を作成するツール群 いっそヘッダーファイルは 全てここに置いてしまってもいい シンボリックリンクも不要 廃止ディレクトリ: ● cmd: コマンド廃止 & dicへ移動 ● canna: includeへ移動 めっちゃすっきり! ● misc: server へ(一部)移動
10.
それでは??? Izumo の
CmakeLists.txt の中を 覗いてみましょう!
11.
Izumo CMakelists.txt のヘッダー部
# Izumoが使用できる cmake のバージョン cmake_minimum_required(VERSION 2.8) # Izumoのプロジェクト設定(C言語) PROJECT(izumo C) # 1. 以下の設定を? SET(IZUMO_ACCESS_FILE "${CMAKE_INSTALL_PREFIX}/share/izumo/hosts.izumo") SET(IZUMO_DICHOME "${CMAKE_INSTALL_PREFIX}/share/izumo/dic") SET(IZUMO_ERRDIR "/var/log") SET(IR_UNIX_DIR "/tmp/.iroha_unix") SET(IR_UNIX_SOCKNAME "IROHA") # 2. ヘッダーファイル(include/config.h)に書いて出力します CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/include/config.h.in ${PROJECT_SOURCE_DIR}/include/config.h) # インクルードファイルのディレクトリ設定 INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/include) INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/include/RK)
12.
Izumo のサーバーライブラリ ●
対象: – RK – Rkindep # RKindep のビルド # →静的(=STATIC)ライブラリのビルド(=ADD_LIBRARY)を実行 ADD_LIBRARY(rkindep STATIC lib/RKindep/basename.c ?中略? lib/Rkindep/strops.c) # RK のビルド # →静的(=STATIC)ライブラリのビルド(=ADD_LIBRARY)を実行 ADD_LIBRARY(rk STATIC lib/RK/bits.c ?中略? lib/RK/util.c) # 実行ファイル(izumooyashiro)とリンク # →リンク(=TARGET_LINK_LIBRARIES)を実行 TARGET_LINK_LIBRARIES(izumooyashiro rkindep) TARGET_LINK_LIBRARIES(izumooyashiro rk) どちらもインストールしない 静的ライブラリ
13.
Izumo サーバー本体 ●
対象: – izumooyashiro # izumooyashiro のビルド # →実行ファイルのビルド(=ADD_EXECUTABLE)を実行 ADD_EXECUTABLE(izumooyashiro server/comm.c ?中略? server/wconvert.c) # インストール先の設定 # →実行ファイルのインストール先(=bin)へインストール(=INSTALL)を実行 INSTALL(TARGETS izumooyashiro DESTINATION bin) # →設定ファイルのインストール先(=share/izumo)へファイル(=FILES)をインストール INSTALL(FILES ${PROJECT_SOURCE_DIR}/server/hosts.izumo DESTINATION share/izumo)
14.
Cmake って??? ほら、簡単でしょ?
15.
だがしかし! 甘かった!!!
16.
Cannaの辞書ファイルのビルド まずは imake版(Imakefile)の場合を
ご確認ください。 CANNAROOT = ../../.. CANNACMDDIR = $(CANNAROOT)/cmd MERGE = $(CANNACMDDIR)/mergewd/mergeword IINCLUDES = -I$(CANNAROOT)/include TARGETS = iroha.t PUBDICS = a.p k.p s.p t.p n.p h.p m.p y.p r.p w.p x.p iroha.t: $(PUBDICS) ProgramTargetName(pod) cat $(PUBDICS) | ./pod - -p -i -2 > iroha.spl $(MERGE) < iroha.spl > iroha.t $(RM) iroha.spl もはやコマンドの羅列(>_<) これをCmakeで書こうとすると???
17.
Izumoの辞書ファイルのビルド Izumo の
CMakeLists.txt はこうなった???orz https://github.com/hashimom/Izumo をご覧ください。 ADD_CUSTOM_TARGET(iroha COMMAND cat ${PROJECT_SOURCE_DIR}/dic/ideo/pubdic/pubdic.p |(?後略) COMMAND ${PROJECT_BINARY_DIR}/mergewd <${PROJECT_BINARY_DIR}/ir(?後略) COMMAND rm ${PROJECT_BINARY_DIR}/iroha.spl COMMAND ${PROJECT_BINARY_DIR}/crxdic -D (?後略) COMMAND ${PROJECT_BINARY_DIR}/crfreq -div 512 -o iroha.cld iroha.cbd iroha.mwd COMMAND cat ${PROJECT_BINARY_DIR}/bushu.cbd >> (?後略) ) ADD_DEPENDENCIES(izumooyashiro iroha) この中は改行できへん??? こんなのが2箇所ほどあったりします???
18.
恐らく正解は??? 辞書を作成するスクリプトを 書いた方がよさそうですね(^^;
19.
今後のIzumoの予定 ● 11月: ?関西オープンフォーラム
– cmake対応 – 辞書ファイルの拡張 ←遅れ。 ● 大きめの辞書を作成しようとしたら「too long line」と怒られてます(笑) そういやぁ夏も似たような話(=FreeWnn)をしましたよね??? ● 12月: ?東海道らぐ名古屋オフ? – クライアントライブラリの作成 – ibus-izumo fcitx-izumo の作成 ● 来年以降: – サーバー?クライアント間の通信プロトコル追加(今はまだヒミツ!) – 形態素解析部の修正(←これいつたどり着ける???)
20.
ご清聴、ありがとうございました!
Download