SlideShare uma empresa Scribd logo
1 de 20
Baixar para ler offline
続・Cannaをフォークしてみた 
はしもとまさ@東海道らぐ 
In KANSAI OPEN FORUM 2014 
2014/11/8
自己紹介 
● 東海道らぐ元名古屋案内人、ちびぎーこ保護者会所属 
● 某大学日本文学文化学科卒 
– …という理由から、最近日本語入力の研究に目覚めました。
今回のお話。 
● Cannaをフォークしてみました! 
● Cannaとは・・・? 
– 元はNECが作成していた日本語変換システム。 
– その後、Canna Projectが開発を引き継いだ。 
– …が、2004/5/20を最後にリリースされていない。 
– サーバー&クライアント型。MITライセンス。 
● OSC東京で前半をお話ししたので、今日はその続き。
CannaからIzumoへ 
● 日本語変換システム「Izumo」 
– https://github.com/hashimom/Izumo 
– よく聞かれるのが、「なぜいずも?」 
● とりあえず、Cannaを漢字にしてみよう! 
余談)島根県では神無月ではなく神在月と呼ばれるらしい 
● 主な変更点: 現状、特になし!(おいっ) 
– クライアントライブラリ、ツール群をざくっと削除してシンプルに 
– ビルド方法を変更(完了) 
– 辞書ファイルの見直し ←失敗中! 
● uim-canna が利用できることを確認しています
Canna で使っている imake 
● 「xmkmf」ってコマンドを叩くと、 
Imakefileの記述から、Makefileを作成します。 
● X Window SystemのX11R6.9(2005年)までは 
imakeを利用してビルドされていました。 
– なので、imakeのことを調べるとそっち系のものばかり引っかかります。 
● 例) Cannaのビルド方法: 
$ xmkmf 
$ make canna
imakeの欠点 
「解説書: 
非常に広く使用されているツールとしては、 
imakeはいまだに異常なほど文章化されていません。 
 (中略) 
多くのプログラマがimakeのさまざまな部分と 
取り組んできましたが、X Windowシステムの配布のために 
用意している風変わりな機能から汎用的な部分を抜き出して 
ツールとして分割することは誰もできませんでした。」 
オライリー「make 改訂版」(2005年)より 
いろいろダメぽい・・・^^;
Cannaのディレクトリ構造 
※各ディレクトリにImakefileが存在します。 
(ROOT) lib 
server 
cmd 
canna 
include 
dic 
misc 
クライアントやサーバーが使用する 
ライブラリ群 
Cannaサーバー 
Canna停止や辞書作成時に 
使用するコマンド群 
注:コマンド毎にディレクトリは別 
makeすると作成される! 
各ディレクトリ内にある 
ヘッダファイルのシンボリックリンクが 
make実行時に「include」内に貼られる。 
(ROOT) にあるCanna.confの内容と 
Imakefileの記述から 
Cannaconf.hを作成して、 
include内に置かれる 
共通ヘッダファイル置き場 
辞書 
設定ファイル等
Izumo では 
これをまるっと Cmake に置き換えます! 
Cmakeでのビルド方法: 
$ mkdir build && cd build 
$ cmake .. 
$ make 
$ sudo make install
現在のIzumoのディレクトリ構成 
(ROOT) lib 
server 
include 
dic 
(ROOT) 一箇所にのみ 
CMakeLists.txtを配置する。 
クライアントやサーバーが使用する 
ライブラリ群 
Izumoサーバー 
辞書と 
辞書を作成するツール群 
いっそヘッダーファイルは 
全てここに置いてしまってもいい 
シンボリックリンクも不要 
廃止ディレクトリ: 
● cmd: コマンド廃止 & dicへ移動 
● canna: includeへ移動 
めっちゃすっきり! ● misc: server へ(一部)移動
それでは・・・ 
Izumo の CmakeLists.txt の中を 
覗いてみましょう!
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)
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) 
どちらもインストールしない 
静的ライブラリ
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)
Cmake って・・・ 
ほら、簡単でしょ?
だがしかし! 
甘かった!!!
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で書こうとすると・・・
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箇所ほどあったりします・・・
恐らく正解は・・・ 
辞書を作成するスクリプトを 
書いた方がよさそうですね(^^;
今後のIzumoの予定 
● 11月: 〜関西オープンフォーラム 
– cmake対応 
– 辞書ファイルの拡張 ←遅れ。 
● 大きめの辞書を作成しようとしたら「too long line」と怒られてます(笑) 
そういやぁ夏も似たような話(=FreeWnn)をしましたよね??? 
● 12月: 〜東海道らぐ名古屋オフ? 
– クライアントライブラリの作成 
– ibus-izumo fcitx-izumo の作成 
● 来年以降: 
– サーバー・クライアント間の通信プロトコル追加(今はまだヒミツ!) 
– 形態素解析部の修正(←これいつたどり着ける???)
ご清聴、ありがとうございました!

Mais conteúdo relacionado

Mais procurados

2017年3月13日勉強会発表資料
2017年3月13日勉強会発表資料2017年3月13日勉強会発表資料
2017年3月13日勉強会発表資料shogo yamada
 
【LT用前編】Rancherでマルチクラウド をやってみた
【LT用前編】Rancherでマルチクラウド をやってみた【LT用前編】Rancherでマルチクラウド をやってみた
【LT用前編】Rancherでマルチクラウド をやってみたShinya Mori (@mosuke5)
 
はじめませんか? Bash on Windows
はじめませんか? Bash on Windowsはじめませんか? Bash on Windows
はじめませんか? Bash on WindowsHideaki Aoyagi
 
快適な朝を実現するソリューションのご紹介
快適な朝を実現するソリューションのご紹介快適な朝を実現するソリューションのご紹介
快適な朝を実現するソリューションのご紹介Akira Ouchi
 
CD-ROMドライブ魔改造大作戦
CD-ROMドライブ魔改造大作戦CD-ROMドライブ魔改造大作戦
CD-ROMドライブ魔改造大作戦Akira Ouchi
 
もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~
もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~
もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~Ryunosuke SATO
 
最近のEjectダイジェスト
最近のEjectダイジェスト最近のEjectダイジェスト
最近のEjectダイジェストAkira Ouchi
 
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略Teppei Sato
 
はじめる Ember.js!! ~ Getting started with ember.js ~
はじめる Ember.js!! ~ Getting started with ember.js ~はじめる Ember.js!! ~ Getting started with ember.js ~
はじめる Ember.js!! ~ Getting started with ember.js ~Ryunosuke SATO
 
ejectLT @ NT金沢
ejectLT @ NT金沢ejectLT @ NT金沢
ejectLT @ NT金沢ahiru3
 
Ruby on Rails 入門
Ruby on Rails 入門Ruby on Rails 入門
Ruby on Rails 入門Yasuko Ohba
 
かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014Sugoi Kanari
 
Railsのフロントエンド開発を考える
Railsのフロントエンド開発を考えるRailsのフロントエンド開発を考える
Railsのフロントエンド開発を考えるHirata Tomoko
 
Sprocketsを捨てたい
Sprocketsを捨てたいSprocketsを捨てたい
Sprocketsを捨てたいMasato Noguchi
 
超簡単になった EC-CUBE3 のインストール
超簡単になった EC-CUBE3 のインストール超簡単になった EC-CUBE3 のインストール
超簡単になった EC-CUBE3 のインストールKentaro Ohkouchi
 
MySQLの系譜について少々
MySQLの系譜について少々MySQLの系譜について少々
MySQLの系譜について少々yoku0825
 
20200216 MacBook Proで姿勢検出
20200216 MacBook Proで姿勢検出20200216 MacBook Proで姿勢検出
20200216 MacBook Proで姿勢検出Kenichi Kinoshita
 
Raspberry Piの最新利用事例を拾い見たりたりしてみましょう(☝ ՞ਊ ՞)☝
Raspberry Piの最新利用事例を拾い見たりたりしてみましょう(☝ ՞ਊ ՞)☝Raspberry Piの最新利用事例を拾い見たりたりしてみましょう(☝ ՞ਊ ՞)☝
Raspberry Piの最新利用事例を拾い見たりたりしてみましょう(☝ ՞ਊ ՞)☝Akira Ouchi
 

Mais procurados (20)

2017年3月13日勉強会発表資料
2017年3月13日勉強会発表資料2017年3月13日勉強会発表資料
2017年3月13日勉強会発表資料
 
【LT用前編】Rancherでマルチクラウド をやってみた
【LT用前編】Rancherでマルチクラウド をやってみた【LT用前編】Rancherでマルチクラウド をやってみた
【LT用前編】Rancherでマルチクラウド をやってみた
 
はじめませんか? Bash on Windows
はじめませんか? Bash on Windowsはじめませんか? Bash on Windows
はじめませんか? Bash on Windows
 
快適な朝を実現するソリューションのご紹介
快適な朝を実現するソリューションのご紹介快適な朝を実現するソリューションのご紹介
快適な朝を実現するソリューションのご紹介
 
CD-ROMドライブ魔改造大作戦
CD-ROMドライブ魔改造大作戦CD-ROMドライブ魔改造大作戦
CD-ROMドライブ魔改造大作戦
 
もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~
もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~
もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~
 
最近のEjectダイジェスト
最近のEjectダイジェスト最近のEjectダイジェスト
最近のEjectダイジェスト
 
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
 
はじめる Ember.js!! ~ Getting started with ember.js ~
はじめる Ember.js!! ~ Getting started with ember.js ~はじめる Ember.js!! ~ Getting started with ember.js ~
はじめる Ember.js!! ~ Getting started with ember.js ~
 
ejectLT @ NT金沢
ejectLT @ NT金沢ejectLT @ NT金沢
ejectLT @ NT金沢
 
Submitwordpresspy
SubmitwordpresspySubmitwordpresspy
Submitwordpresspy
 
EC-CUBE はいいぞ
EC-CUBE はいいぞEC-CUBE はいいぞ
EC-CUBE はいいぞ
 
Ruby on Rails 入門
Ruby on Rails 入門Ruby on Rails 入門
Ruby on Rails 入門
 
かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014
 
Railsのフロントエンド開発を考える
Railsのフロントエンド開発を考えるRailsのフロントエンド開発を考える
Railsのフロントエンド開発を考える
 
Sprocketsを捨てたい
Sprocketsを捨てたいSprocketsを捨てたい
Sprocketsを捨てたい
 
超簡単になった EC-CUBE3 のインストール
超簡単になった EC-CUBE3 のインストール超簡単になった EC-CUBE3 のインストール
超簡単になった EC-CUBE3 のインストール
 
MySQLの系譜について少々
MySQLの系譜について少々MySQLの系譜について少々
MySQLの系譜について少々
 
20200216 MacBook Proで姿勢検出
20200216 MacBook Proで姿勢検出20200216 MacBook Proで姿勢検出
20200216 MacBook Proで姿勢検出
 
Raspberry Piの最新利用事例を拾い見たりたりしてみましょう(☝ ՞ਊ ՞)☝
Raspberry Piの最新利用事例を拾い見たりたりしてみましょう(☝ ՞ਊ ՞)☝Raspberry Piの最新利用事例を拾い見たりたりしてみましょう(☝ ՞ਊ ՞)☝
Raspberry Piの最新利用事例を拾い見たりたりしてみましょう(☝ ՞ਊ ՞)☝
 

Destaque

京都発祥日本語入力「FreeWnn」は(今度こそ)どこまで賢くなれるか?
京都発祥日本語入力「FreeWnn」は(今度こそ)どこまで賢くなれるか?京都発祥日本語入力「FreeWnn」は(今度こそ)どこまで賢くなれるか?
京都発祥日本語入力「FreeWnn」は(今度こそ)どこまで賢くなれるか?Masahiko Hashimoto
 
スレッド単位で権限分離を行うWebサーバのアクセス制御アーキテクチャ
スレッド単位で権限分離を行うWebサーバのアクセス制御アーキテクチャスレッド単位で権限分離を行うWebサーバのアクセス制御アーキテクチャ
スレッド単位で権限分離を行うWebサーバのアクセス制御アーキテクチャRyosuke MATSUMOTO
 
Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)
Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)
Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)株式会社MonotaRO Tech Team
 
尼崎から世界へ!モノタロウの海外展開を支えるDevOps基盤 (デブサミ関西2016)
尼崎から世界へ!モノタロウの海外展開を支えるDevOps基盤 (デブサミ関西2016)尼崎から世界へ!モノタロウの海外展開を支えるDevOps基盤 (デブサミ関西2016)
尼崎から世界へ!モノタロウの海外展開を支えるDevOps基盤 (デブサミ関西2016)株式会社MonotaRO Tech Team
 
社内勉強会を続けるには(2016.10.07 DevLove 関西)
社内勉強会を続けるには(2016.10.07 DevLove 関西)社内勉強会を続けるには(2016.10.07 DevLove 関西)
社内勉強会を続けるには(2016.10.07 DevLove 関西)株式会社MonotaRO Tech Team
 

Destaque (6)

京都発祥日本語入力「FreeWnn」は(今度こそ)どこまで賢くなれるか?
京都発祥日本語入力「FreeWnn」は(今度こそ)どこまで賢くなれるか?京都発祥日本語入力「FreeWnn」は(今度こそ)どこまで賢くなれるか?
京都発祥日本語入力「FreeWnn」は(今度こそ)どこまで賢くなれるか?
 
スレッド単位で権限分離を行うWebサーバのアクセス制御アーキテクチャ
スレッド単位で権限分離を行うWebサーバのアクセス制御アーキテクチャスレッド単位で権限分離を行うWebサーバのアクセス制御アーキテクチャ
スレッド単位で権限分離を行うWebサーバのアクセス制御アーキテクチャ
 
Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)
Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)
Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)
 
尼崎から世界へ!モノタロウの海外展開を支えるDevOps基盤 (デブサミ関西2016)
尼崎から世界へ!モノタロウの海外展開を支えるDevOps基盤 (デブサミ関西2016)尼崎から世界へ!モノタロウの海外展開を支えるDevOps基盤 (デブサミ関西2016)
尼崎から世界へ!モノタロウの海外展開を支えるDevOps基盤 (デブサミ関西2016)
 
モノタロウの商品データ連携について
モノタロウの商品データ連携についてモノタロウの商品データ連携について
モノタロウの商品データ連携について
 
社内勉強会を続けるには(2016.10.07 DevLove 関西)
社内勉強会を続けるには(2016.10.07 DevLove 関西)社内勉強会を続けるには(2016.10.07 DevLove 関西)
社内勉強会を続けるには(2016.10.07 DevLove 関西)
 

Semelhante a 続・Cannaをフォークしてみた

IPv6 最新動向 〜世界共通語で最適化が進むインターネット〜
IPv6 最新動向 〜世界共通語で最適化が進むインターネット〜IPv6 最新動向 〜世界共通語で最適化が進むインターネット〜
IPv6 最新動向 〜世界共通語で最適化が進むインターネット〜Akira Nakagawa
 
RubyKaigi2011講演資料「日本の図書館はどのようにRubyを使っているか」
RubyKaigi2011講演資料「日本の図書館はどのようにRubyを使っているか」RubyKaigi2011講演資料「日本の図書館はどのようにRubyを使っているか」
RubyKaigi2011講演資料「日本の図書館はどのようにRubyを使っているか」Kosuke Tanabe
 
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerRubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerTakuro Sasaki
 
PDP-11のインタプリタを作った話
PDP-11のインタプリタを作った話PDP-11のインタプリタを作った話
PDP-11のインタプリタを作った話kanorimon
 
Tokyor13 - YjdnJlpパッケージとTokyo.R翻訳プロジェクトの紹介
Tokyor13 - YjdnJlpパッケージとTokyo.R翻訳プロジェクトの紹介Tokyor13 - YjdnJlpパッケージとTokyo.R翻訳プロジェクトの紹介
Tokyor13 - YjdnJlpパッケージとTokyo.R翻訳プロジェクトの紹介Yohei Sato
 
CRDF2011(20110225)
CRDF2011(20110225)CRDF2011(20110225)
CRDF2011(20110225)真 岡本
 
SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用Takuya Iwatsuka
 
【ScalaMatsuri2016】関西のScalaコミュニティ紹介
【ScalaMatsuri2016】関西のScalaコミュニティ紹介【ScalaMatsuri2016】関西のScalaコミュニティ紹介
【ScalaMatsuri2016】関西のScalaコミュニティ紹介Asami Abe
 
PlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.keyPlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.key泰 増田
 
OpenStack ナウ (5周年企画)
OpenStack ナウ (5周年企画)OpenStack ナウ (5周年企画)
OpenStack ナウ (5周年企画)Toru Makabe
 
Oktavia全文検索エンジン - SphinxCon JP 2014
Oktavia全文検索エンジン - SphinxCon JP 2014Oktavia全文検索エンジン - SphinxCon JP 2014
Oktavia全文検索エンジン - SphinxCon JP 2014Yoshiki Shibukawa
 
20100828 code4 lib_japan_事業説明(全事業)
20100828 code4 lib_japan_事業説明(全事業)20100828 code4 lib_japan_事業説明(全事業)
20100828 code4 lib_japan_事業説明(全事業)Code4Lib JAPAN
 
ドキュメントの継続的改善―Sphinxを使いながら
ドキュメントの継続的改善―Sphinxを使いながらドキュメントの継続的改善―Sphinxを使いながら
ドキュメントの継続的改善―Sphinxを使いながらsoishino
 
Testing in Sinatra
Testing in SinatraTesting in Sinatra
Testing in SinatraUchio Kondo
 
20090704rubyist九州
20090704rubyist九州20090704rubyist九州
20090704rubyist九州koki_h
 
図書館でのSolrの使い方
図書館でのSolrの使い方図書館でのSolrの使い方
図書館でのSolrの使い方Kosuke Tanabe
 
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Spring I/O 2016 報告 Test / Cloud / Other Popular SessionsSpring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Spring I/O 2016 報告 Test / Cloud / Other Popular SessionsTakuya Iwatsuka
 

Semelhante a 続・Cannaをフォークしてみた (20)

IPv6 最新動向 〜世界共通語で最適化が進むインターネット〜
IPv6 最新動向 〜世界共通語で最適化が進むインターネット〜IPv6 最新動向 〜世界共通語で最適化が進むインターネット〜
IPv6 最新動向 〜世界共通語で最適化が進むインターネット〜
 
RubyKaigi2011講演資料「日本の図書館はどのようにRubyを使っているか」
RubyKaigi2011講演資料「日本の図書館はどのようにRubyを使っているか」RubyKaigi2011講演資料「日本の図書館はどのようにRubyを使っているか」
RubyKaigi2011講演資料「日本の図書館はどのようにRubyを使っているか」
 
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerRubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawler
 
PDP-11のインタプリタを作った話
PDP-11のインタプリタを作った話PDP-11のインタプリタを作った話
PDP-11のインタプリタを作った話
 
Tokyor13 - YjdnJlpパッケージとTokyo.R翻訳プロジェクトの紹介
Tokyor13 - YjdnJlpパッケージとTokyo.R翻訳プロジェクトの紹介Tokyor13 - YjdnJlpパッケージとTokyo.R翻訳プロジェクトの紹介
Tokyor13 - YjdnJlpパッケージとTokyo.R翻訳プロジェクトの紹介
 
OpenStack Now!
OpenStack Now!OpenStack Now!
OpenStack Now!
 
CRDF2011(20110225)
CRDF2011(20110225)CRDF2011(20110225)
CRDF2011(20110225)
 
SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用
 
【ScalaMatsuri2016】関西のScalaコミュニティ紹介
【ScalaMatsuri2016】関西のScalaコミュニティ紹介【ScalaMatsuri2016】関西のScalaコミュニティ紹介
【ScalaMatsuri2016】関西のScalaコミュニティ紹介
 
PlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.keyPlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.key
 
OpenStack ナウ (5周年企画)
OpenStack ナウ (5周年企画)OpenStack ナウ (5周年企画)
OpenStack ナウ (5周年企画)
 
Oktavia全文検索エンジン - SphinxCon JP 2014
Oktavia全文検索エンジン - SphinxCon JP 2014Oktavia全文検索エンジン - SphinxCon JP 2014
Oktavia全文検索エンジン - SphinxCon JP 2014
 
らくちん Go言語
らくちん Go言語らくちん Go言語
らくちん Go言語
 
20100828 code4 lib_japan_事業説明(全事業)
20100828 code4 lib_japan_事業説明(全事業)20100828 code4 lib_japan_事業説明(全事業)
20100828 code4 lib_japan_事業説明(全事業)
 
ドキュメントの継続的改善―Sphinxを使いながら
ドキュメントの継続的改善―Sphinxを使いながらドキュメントの継続的改善―Sphinxを使いながら
ドキュメントの継続的改善―Sphinxを使いながら
 
Testing in Sinatra
Testing in SinatraTesting in Sinatra
Testing in Sinatra
 
Web API入門
Web API入門Web API入門
Web API入門
 
20090704rubyist九州
20090704rubyist九州20090704rubyist九州
20090704rubyist九州
 
図書館でのSolrの使い方
図書館でのSolrの使い方図書館でのSolrの使い方
図書館でのSolrの使い方
 
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Spring I/O 2016 報告 Test / Cloud / Other Popular SessionsSpring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
 

Mais de Masahiko Hashimoto

OSSかな漢字変換『Egoistic Lily』の紹介&今後の展望
OSSかな漢字変換『Egoistic Lily』の紹介&今後の展望OSSかな漢字変換『Egoistic Lily』の紹介&今後の展望
OSSかな漢字変換『Egoistic Lily』の紹介&今後の展望Masahiko Hashimoto
 
DNNを使用した新しいかな漢字変換『EgoisticLily』 その仕組みとは?
DNNを使用した新しいかな漢字変換『EgoisticLily』 その仕組みとは?DNNを使用した新しいかな漢字変換『EgoisticLily』 その仕組みとは?
DNNを使用した新しいかな漢字変換『EgoisticLily』 その仕組みとは?Masahiko Hashimoto
 
Dockerいろいろ使って思うこと
Dockerいろいろ使って思うことDockerいろいろ使って思うこと
Dockerいろいろ使って思うことMasahiko Hashimoto
 
自作かな漢字変換「Genji」をつくったよ
自作かな漢字変換「Genji」をつくったよ自作かな漢字変換「Genji」をつくったよ
自作かな漢字変換「Genji」をつくったよMasahiko Hashimoto
 
かな漢字変換ソフト「Genji」をつくってみた
かな漢字変換ソフト「Genji」をつくってみたかな漢字変換ソフト「Genji」をつくってみた
かな漢字変換ソフト「Genji」をつくってみたMasahiko Hashimoto
 
あひるに焼かれた話と今後のおーぷん万葉について
あひるに焼かれた話と今後のおーぷん万葉についてあひるに焼かれた話と今後のおーぷん万葉について
あひるに焼かれた話と今後のおーぷん万葉についてMasahiko Hashimoto
 
ホットな日本語入力技術のお勉強。〜 OSC 2016 Hamanako 編 〜
ホットな日本語入力技術のお勉強。〜 OSC 2016 Hamanako 編 〜ホットな日本語入力技術のお勉強。〜 OSC 2016 Hamanako 編 〜
ホットな日本語入力技術のお勉強。〜 OSC 2016 Hamanako 編 〜Masahiko Hashimoto
 
おーぷん万葉プロジェクトとは
おーぷん万葉プロジェクトとはおーぷん万葉プロジェクトとは
おーぷん万葉プロジェクトとはMasahiko Hashimoto
 
C++アプリをCmakeとEclipseで開発するお話
C++アプリをCmakeとEclipseで開発するお話C++アプリをCmakeとEclipseで開発するお話
C++アプリをCmakeとEclipseで開発するお話Masahiko Hashimoto
 
おーぷん万葉プロジェクトの進捗とIzumoのその後
おーぷん万葉プロジェクトの進捗とIzumoのその後おーぷん万葉プロジェクトの進捗とIzumoのその後
おーぷん万葉プロジェクトの進捗とIzumoのその後Masahiko Hashimoto
 
ホットな日本語技術の(ちょっとした)お勉強。
ホットな日本語技術の(ちょっとした)お勉強。ホットな日本語技術の(ちょっとした)お勉強。
ホットな日本語技術の(ちょっとした)お勉強。Masahiko Hashimoto
 
C言語なWebSocketの遊び方。
C言語なWebSocketの遊び方。C言語なWebSocketの遊び方。
C言語なWebSocketの遊び方。Masahiko Hashimoto
 
アヒルヤキを変換してみよう
アヒルヤキを変換してみようアヒルヤキを変換してみよう
アヒルヤキを変換してみようMasahiko Hashimoto
 
Nginxで日本語入力を遊んでみよう!
Nginxで日本語入力を遊んでみよう!Nginxで日本語入力を遊んでみよう!
Nginxで日本語入力を遊んでみよう!Masahiko Hashimoto
 
秘伝:クラウドに開発環境をえいっ!と構築する方法
秘伝:クラウドに開発環境をえいっ!と構築する方法秘伝:クラウドに開発環境をえいっ!と構築する方法
秘伝:クラウドに開発環境をえいっ!と構築する方法Masahiko Hashimoto
 
AzureとSUSE Studioのあつ~い関係
AzureとSUSE Studioのあつ~い関係AzureとSUSE Studioのあつ~い関係
AzureとSUSE Studioのあつ~い関係Masahiko Hashimoto
 
X window managerで遊んでみた
X window managerで遊んでみたX window managerで遊んでみた
X window managerで遊んでみたMasahiko Hashimoto
 

Mais de Masahiko Hashimoto (20)

OSSかな漢字変換『Egoistic Lily』の紹介&今後の展望
OSSかな漢字変換『Egoistic Lily』の紹介&今後の展望OSSかな漢字変換『Egoistic Lily』の紹介&今後の展望
OSSかな漢字変換『Egoistic Lily』の紹介&今後の展望
 
DNNを使用した新しいかな漢字変換『EgoisticLily』 その仕組みとは?
DNNを使用した新しいかな漢字変換『EgoisticLily』 その仕組みとは?DNNを使用した新しいかな漢字変換『EgoisticLily』 その仕組みとは?
DNNを使用した新しいかな漢字変換『EgoisticLily』 その仕組みとは?
 
Dockerいろいろ使って思うこと
Dockerいろいろ使って思うことDockerいろいろ使って思うこと
Dockerいろいろ使って思うこと
 
自作かな漢字変換「Genji」をつくったよ
自作かな漢字変換「Genji」をつくったよ自作かな漢字変換「Genji」をつくったよ
自作かな漢字変換「Genji」をつくったよ
 
BrowserMob-Proxyのお話
BrowserMob-Proxyのお話BrowserMob-Proxyのお話
BrowserMob-Proxyのお話
 
DeepLearning入門以前
DeepLearning入門以前DeepLearning入門以前
DeepLearning入門以前
 
かな漢字変換ソフト「Genji」をつくってみた
かな漢字変換ソフト「Genji」をつくってみたかな漢字変換ソフト「Genji」をつくってみた
かな漢字変換ソフト「Genji」をつくってみた
 
あひるに焼かれた話と今後のおーぷん万葉について
あひるに焼かれた話と今後のおーぷん万葉についてあひるに焼かれた話と今後のおーぷん万葉について
あひるに焼かれた話と今後のおーぷん万葉について
 
ホットな日本語入力技術のお勉強。〜 OSC 2016 Hamanako 編 〜
ホットな日本語入力技術のお勉強。〜 OSC 2016 Hamanako 編 〜ホットな日本語入力技術のお勉強。〜 OSC 2016 Hamanako 編 〜
ホットな日本語入力技術のお勉強。〜 OSC 2016 Hamanako 編 〜
 
おーぷん万葉プロジェクトとは
おーぷん万葉プロジェクトとはおーぷん万葉プロジェクトとは
おーぷん万葉プロジェクトとは
 
C++アプリをCmakeとEclipseで開発するお話
C++アプリをCmakeとEclipseで開発するお話C++アプリをCmakeとEclipseで開発するお話
C++アプリをCmakeとEclipseで開発するお話
 
おーぷん万葉プロジェクトの進捗とIzumoのその後
おーぷん万葉プロジェクトの進捗とIzumoのその後おーぷん万葉プロジェクトの進捗とIzumoのその後
おーぷん万葉プロジェクトの進捗とIzumoのその後
 
ホットな日本語技術の(ちょっとした)お勉強。
ホットな日本語技術の(ちょっとした)お勉強。ホットな日本語技術の(ちょっとした)お勉強。
ホットな日本語技術の(ちょっとした)お勉強。
 
TrieとLOUDS??
TrieとLOUDS??TrieとLOUDS??
TrieとLOUDS??
 
C言語なWebSocketの遊び方。
C言語なWebSocketの遊び方。C言語なWebSocketの遊び方。
C言語なWebSocketの遊び方。
 
アヒルヤキを変換してみよう
アヒルヤキを変換してみようアヒルヤキを変換してみよう
アヒルヤキを変換してみよう
 
Nginxで日本語入力を遊んでみよう!
Nginxで日本語入力を遊んでみよう!Nginxで日本語入力を遊んでみよう!
Nginxで日本語入力を遊んでみよう!
 
秘伝:クラウドに開発環境をえいっ!と構築する方法
秘伝:クラウドに開発環境をえいっ!と構築する方法秘伝:クラウドに開発環境をえいっ!と構築する方法
秘伝:クラウドに開発環境をえいっ!と構築する方法
 
AzureとSUSE Studioのあつ~い関係
AzureとSUSE Studioのあつ~い関係AzureとSUSE Studioのあつ~い関係
AzureとSUSE Studioのあつ~い関係
 
X window managerで遊んでみた
X window managerで遊んでみたX window managerで遊んでみた
X window managerで遊んでみた
 

Último

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 

Último (9)

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

続・Cannaをフォークしてみた

  • 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)
  • 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箇所ほどあったりします・・・
  • 19. 今後のIzumoの予定 ● 11月: 〜関西オープンフォーラム – cmake対応 – 辞書ファイルの拡張 ←遅れ。 ● 大きめの辞書を作成しようとしたら「too long line」と怒られてます(笑) そういやぁ夏も似たような話(=FreeWnn)をしましたよね??? ● 12月: 〜東海道らぐ名古屋オフ? – クライアントライブラリの作成 – ibus-izumo fcitx-izumo の作成 ● 来年以降: – サーバー・クライアント間の通信プロトコル追加(今はまだヒミツ!) – 形態素解析部の修正(←これいつたどり着ける???)