More Related Content
PDF
PDF
PDF
PDF
UZTextView, UZMultilayeredPopoverControllerの解説 PDF
ODP
PDF
ぼくのかんがえたさいきょうの Rails スタートダッシュ PDF
What's hot
PDF
PDF
【LT用前編】Rancherでマルチクラウド をやってみた PPTX
PDF
PDF
PDF
もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~ PDF
PDF
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略 PDF
はじめる Ember.js!! ~ Getting started with ember.js ~ PDF
PDF
PPTX
PDF
PDF
かなりすごい発表(かなり) at VimConf2014 PPTX
PDF
PPTX
PDF
PPTX
20200216 MacBook Proで姿勢検出 PDF
Raspberry Piの最新利用事例を拾い見たりたりしてみましょう(☝ ՞ਊ ՞)☝ Viewers also liked
PDF
京都発祥日本語入力「FreeWnn」は(今度こそ)どこまで賢くなれるか? PDF
スレッド単位で権限分離を行うWebサーバのアクセス制御アーキテクチャ PPTX
Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT) PPTX
尼崎から世界へ!モノタロウの海外展開を支えるDevOps基盤 (デブサミ関西2016) PDF
PPTX
社内勉強会を続けるには(2016.10.07 DevLove 関西) More from Masahiko Hashimoto
PDF
OSSかな漢字変換『Egoistic Lily』の紹介&今後の展望 PDF
DNNを使用した新しいかな漢字変換『EgoisticLily』 その仕組みとは? PDF
PDF
PDF
PDF
PDF
PDF
PDF
ホットな日本語入力技術のお勉強。〜 OSC 2016 Hamanako 編 〜 PDF
PDF
C++アプリをCmakeとEclipseで開発するお話 PDF
おーぷん万葉プロジェクトの進捗とIzumoのその後 PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
Recently uploaded
PDF
TomokaEdakawa_職種と講義の関係推定に基づく履修支援システムの基礎検討_HCI2026 PDF
20260119_VIoTLT_vol22_kitazaki_v1___.pdf PDF
自転車ユーザ参加型路面画像センシングによる点字ブロック検出における性能向上方法の模索 (20260123 SeMI研) PDF
ST2024_PM1_2_Case_study_of_local_newspaper_company.pdf PDF
maisugimoto_曖昧さを含む仕様書の改善を目的としたアノテーション支援ツールの検討_HCI2025.pdf PDF
Team Topology Adaptive Organizational Design for Rapid Delivery of Valuable S... 続・Cannaをフォークしてみた
- 1.
- 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.
- 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.
- 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.