Enviar pesquisa
Carregar
続・Cannaをフォークしてみた
•
0 gostou
•
716 visualizações
Masahiko Hashimoto
Seguir
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 20
Baixar agora
Baixar para ler offline
Recomendados
Cannaをフォークしてみた
Cannaをフォークしてみた
Masahiko Hashimoto
CD-ROMドライブを身につけよう
CD-ROMドライブを身につけよう
Akira Ouchi
Ember コミュニティとわたし
Ember コミュニティとわたし
Ryunosuke SATO
UZTextView, UZMultilayeredPopoverControllerの解説
UZTextView, UZMultilayeredPopoverControllerの解説
Yuichi Yoshida
Railsチュートリアル(second)を終えて
Railsチュートリアル(second)を終えて
Hirata Tomoko
@nukokusa_botを支える技術
@nukokusa_botを支える技術
Joe_noh
ぼくのかんがえたさいきょうの Rails スタートダッシュ
ぼくのかんがえたさいきょうの Rails スタートダッシュ
Kenji Mori
JavascriptでRubyの作り方
JavascriptでRubyの作り方
Shuyo Nakatani
Recomendados
Cannaをフォークしてみた
Cannaをフォークしてみた
Masahiko Hashimoto
CD-ROMドライブを身につけよう
CD-ROMドライブを身につけよう
Akira Ouchi
Ember コミュニティとわたし
Ember コミュニティとわたし
Ryunosuke SATO
UZTextView, UZMultilayeredPopoverControllerの解説
UZTextView, UZMultilayeredPopoverControllerの解説
Yuichi Yoshida
Railsチュートリアル(second)を終えて
Railsチュートリアル(second)を終えて
Hirata Tomoko
@nukokusa_botを支える技術
@nukokusa_botを支える技術
Joe_noh
ぼくのかんがえたさいきょうの Rails スタートダッシュ
ぼくのかんがえたさいきょうの Rails スタートダッシュ
Kenji Mori
JavascriptでRubyの作り方
JavascriptでRubyの作り方
Shuyo Nakatani
2017年3月13日勉強会発表資料
2017年3月13日勉強会発表資料
shogo yamada
【LT用前編】Rancherでマルチクラウド をやってみた
【LT用前編】Rancherでマルチクラウド をやってみた
Shinya Mori (@mosuke5)
はじめませんか? Bash on Windows
はじめませんか? Bash on Windows
Hideaki Aoyagi
快適な朝を実現するソリューションのご紹介
快適な朝を実現するソリューションのご紹介
Akira Ouchi
CD-ROMドライブ魔改造大作戦
CD-ROMドライブ魔改造大作戦
Akira Ouchi
もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~
もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~
Ryunosuke SATO
最近のEjectダイジェスト
最近のEjectダイジェスト
Akira Ouchi
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 ~
Ryunosuke SATO
ejectLT @ NT金沢
ejectLT @ NT金沢
ahiru3
Submitwordpresspy
Submitwordpresspy
Tetsuo Mitsuda
EC-CUBE はいいぞ
EC-CUBE はいいぞ
Kentaro Ohkouchi
Ruby on Rails 入門
Ruby on Rails 入門
Yasuko Ohba
かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014
Sugoi Kanari
Railsのフロントエンド開発を考える
Railsのフロントエンド開発を考える
Hirata Tomoko
Sprocketsを捨てたい
Sprocketsを捨てたい
Masato Noguchi
超簡単になった EC-CUBE3 のインストール
超簡単になった EC-CUBE3 のインストール
Kentaro Ohkouchi
MySQLの系譜について少々
MySQLの系譜について少々
yoku0825
20200216 MacBook Proで姿勢検出
20200216 MacBook Proで姿勢検出
Kenichi Kinoshita
Raspberry Piの最新利用事例を拾い見たりたりしてみましょう(☝ ՞ਊ ՞)☝
Raspberry Piの最新利用事例を拾い見たりたりしてみましょう(☝ ՞ਊ ՞)☝
Akira Ouchi
京都発祥日本語入力「FreeWnn」は(今度こそ)どこまで賢くなれるか?
京都発祥日本語入力「FreeWnn」は(今度こそ)どこまで賢くなれるか?
Masahiko Hashimoto
スレッド単位で権限分離を行うWebサーバのアクセス制御アーキテクチャ
スレッド単位で権限分離を行うWebサーバのアクセス制御アーキテクチャ
Ryosuke MATSUMOTO
Mais conteúdo relacionado
Mais procurados
2017年3月13日勉強会発表資料
2017年3月13日勉強会発表資料
shogo yamada
【LT用前編】Rancherでマルチクラウド をやってみた
【LT用前編】Rancherでマルチクラウド をやってみた
Shinya Mori (@mosuke5)
はじめませんか? Bash on Windows
はじめませんか? Bash on Windows
Hideaki Aoyagi
快適な朝を実現するソリューションのご紹介
快適な朝を実現するソリューションのご紹介
Akira Ouchi
CD-ROMドライブ魔改造大作戦
CD-ROMドライブ魔改造大作戦
Akira Ouchi
もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~
もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~
Ryunosuke SATO
最近のEjectダイジェスト
最近のEjectダイジェスト
Akira Ouchi
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 ~
Ryunosuke SATO
ejectLT @ NT金沢
ejectLT @ NT金沢
ahiru3
Submitwordpresspy
Submitwordpresspy
Tetsuo Mitsuda
EC-CUBE はいいぞ
EC-CUBE はいいぞ
Kentaro Ohkouchi
Ruby on Rails 入門
Ruby on Rails 入門
Yasuko Ohba
かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014
Sugoi Kanari
Railsのフロントエンド開発を考える
Railsのフロントエンド開発を考える
Hirata Tomoko
Sprocketsを捨てたい
Sprocketsを捨てたい
Masato Noguchi
超簡単になった EC-CUBE3 のインストール
超簡単になった EC-CUBE3 のインストール
Kentaro Ohkouchi
MySQLの系譜について少々
MySQLの系譜について少々
yoku0825
20200216 MacBook Proで姿勢検出
20200216 MacBook Proで姿勢検出
Kenichi Kinoshita
Raspberry Piの最新利用事例を拾い見たりたりしてみましょう(☝ ՞ਊ ՞)☝
Raspberry Piの最新利用事例を拾い見たりたりしてみましょう(☝ ՞ਊ ՞)☝
Akira Ouchi
Mais procurados
(20)
2017年3月13日勉強会発表資料
2017年3月13日勉強会発表資料
【LT用前編】Rancherでマルチクラウド をやってみた
【LT用前編】Rancherでマルチクラウド をやってみた
はじめませんか? Bash on Windows
はじめませんか? Bash on Windows
快適な朝を実現するソリューションのご紹介
快適な朝を実現するソリューションのご紹介
CD-ROMドライブ魔改造大作戦
CD-ROMドライブ魔改造大作戦
もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~
もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~
最近のEjectダイジェスト
最近のEjectダイジェスト
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
はじめる Ember.js!! ~ Getting started with ember.js ~
はじめる Ember.js!! ~ Getting started with ember.js ~
ejectLT @ NT金沢
ejectLT @ NT金沢
Submitwordpresspy
Submitwordpresspy
EC-CUBE はいいぞ
EC-CUBE はいいぞ
Ruby on Rails 入門
Ruby on Rails 入門
かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014
Railsのフロントエンド開発を考える
Railsのフロントエンド開発を考える
Sprocketsを捨てたい
Sprocketsを捨てたい
超簡単になった EC-CUBE3 のインストール
超簡単になった EC-CUBE3 のインストール
MySQLの系譜について少々
MySQLの系譜について少々
20200216 MacBook Proで姿勢検出
20200216 MacBook Proで姿勢検出
Raspberry Piの最新利用事例を拾い見たりたりしてみましょう(☝ ՞ਊ ՞)☝
Raspberry Piの最新利用事例を拾い見たりたりしてみましょう(☝ ՞ਊ ՞)☝
Destaque
京都発祥日本語入力「FreeWnn」は(今度こそ)どこまで賢くなれるか?
京都発祥日本語入力「FreeWnn」は(今度こそ)どこまで賢くなれるか?
Masahiko Hashimoto
スレッド単位で権限分離を行うWebサーバのアクセス制御アーキテクチャ
スレッド単位で権限分離を行うWebサーバのアクセス制御アーキテクチャ
Ryosuke MATSUMOTO
Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)
Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)
株式会社MonotaRO Tech Team
尼崎から世界へ!モノタロウの海外展開を支えるDevOps基盤 (デブサミ関西2016)
尼崎から世界へ!モノタロウの海外展開を支えるDevOps基盤 (デブサミ関西2016)
株式会社MonotaRO Tech Team
モノタロウの商品データ連携について
モノタロウの商品データ連携について
株式会社MonotaRO Tech Team
社内勉強会を続けるには(2016.10.07 DevLove 関西)
社内勉強会を続けるには(2016.10.07 DevLove 関西)
株式会社MonotaRO Tech Team
Destaque
(6)
京都発祥日本語入力「FreeWnn」は(今度こそ)どこまで賢くなれるか?
京都発祥日本語入力「FreeWnn」は(今度こそ)どこまで賢くなれるか?
スレッド単位で権限分離を行うWebサーバのアクセス制御アーキテクチャ
スレッド単位で権限分離を行うWebサーバのアクセス制御アーキテクチャ
Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)
Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)
尼崎から世界へ!モノタロウの海外展開を支えるDevOps基盤 (デブサミ関西2016)
尼崎から世界へ!モノタロウの海外展開を支えるDevOps基盤 (デブサミ関西2016)
モノタロウの商品データ連携について
モノタロウの商品データ連携について
社内勉強会を続けるには(2016.10.07 DevLove 関西)
社内勉強会を続けるには(2016.10.07 DevLove 関西)
Semelhante a 続・Cannaをフォークしてみた
IPv6 最新動向 〜世界共通語で最適化が進むインターネット〜
IPv6 最新動向 〜世界共通語で最適化が進むインターネット〜
Akira Nakagawa
RubyKaigi2011講演資料「日本の図書館はどのようにRubyを使っているか」
RubyKaigi2011講演資料「日本の図書館はどのようにRubyを使っているか」
Kosuke Tanabe
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawler
Takuro Sasaki
PDP-11のインタプリタを作った話
PDP-11のインタプリタを作った話
kanorimon
Tokyor13 - YjdnJlpパッケージとTokyo.R翻訳プロジェクトの紹介
Tokyor13 - YjdnJlpパッケージとTokyo.R翻訳プロジェクトの紹介
Yohei Sato
OpenStack Now!
OpenStack Now!
Hideki Saito
CRDF2011(20110225)
CRDF2011(20110225)
真 岡本
SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用
Takuya Iwatsuka
【ScalaMatsuri2016】関西のScalaコミュニティ紹介
【ScalaMatsuri2016】関西のScalaコミュニティ紹介
Asami Abe
PlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.key
泰 増田
OpenStack ナウ (5周年企画)
OpenStack ナウ (5周年企画)
Toru Makabe
Oktavia全文検索エンジン - SphinxCon JP 2014
Oktavia全文検索エンジン - SphinxCon JP 2014
Yoshiki Shibukawa
らくちん Go言語
らくちん Go言語
株式会社YEBIS.XYZ
20100828 code4 lib_japan_事業説明(全事業)
20100828 code4 lib_japan_事業説明(全事業)
Code4Lib JAPAN
ドキュメントの継続的改善―Sphinxを使いながら
ドキュメントの継続的改善―Sphinxを使いながら
soishino
Testing in Sinatra
Testing in Sinatra
Uchio Kondo
Web API入門
Web API入門
Masao Takaku
20090704rubyist九州
20090704rubyist九州
koki_h
図書館でのSolrの使い方
図書館でのSolrの使い方
Kosuke Tanabe
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Takuya Iwatsuka
Semelhante a 続・Cannaをフォークしてみた
(20)
IPv6 最新動向 〜世界共通語で最適化が進むインターネット〜
IPv6 最新動向 〜世界共通語で最適化が進むインターネット〜
RubyKaigi2011講演資料「日本の図書館はどのようにRubyを使っているか」
RubyKaigi2011講演資料「日本の図書館はどのようにRubyを使っているか」
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawler
PDP-11のインタプリタを作った話
PDP-11のインタプリタを作った話
Tokyor13 - YjdnJlpパッケージとTokyo.R翻訳プロジェクトの紹介
Tokyor13 - YjdnJlpパッケージとTokyo.R翻訳プロジェクトの紹介
OpenStack Now!
OpenStack Now!
CRDF2011(20110225)
CRDF2011(20110225)
SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用
【ScalaMatsuri2016】関西のScalaコミュニティ紹介
【ScalaMatsuri2016】関西のScalaコミュニティ紹介
PlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.key
OpenStack ナウ (5周年企画)
OpenStack ナウ (5周年企画)
Oktavia全文検索エンジン - SphinxCon JP 2014
Oktavia全文検索エンジン - SphinxCon JP 2014
らくちん Go言語
らくちん Go言語
20100828 code4 lib_japan_事業説明(全事業)
20100828 code4 lib_japan_事業説明(全事業)
ドキュメントの継続的改善―Sphinxを使いながら
ドキュメントの継続的改善―Sphinxを使いながら
Testing in Sinatra
Testing in Sinatra
Web API入門
Web API入門
20090704rubyist九州
20090704rubyist九州
図書館でのSolrの使い方
図書館でのSolrの使い方
Spring 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』の紹介&今後の展望
Masahiko Hashimoto
DNNを使用した新しいかな漢字変換『EgoisticLily』 その仕組みとは?
DNNを使用した新しいかな漢字変換『EgoisticLily』 その仕組みとは?
Masahiko Hashimoto
Dockerいろいろ使って思うこと
Dockerいろいろ使って思うこと
Masahiko Hashimoto
自作かな漢字変換「Genji」をつくったよ
自作かな漢字変換「Genji」をつくったよ
Masahiko Hashimoto
BrowserMob-Proxyのお話
BrowserMob-Proxyのお話
Masahiko Hashimoto
DeepLearning入門以前
DeepLearning入門以前
Masahiko Hashimoto
かな漢字変換ソフト「Genji」をつくってみた
かな漢字変換ソフト「Genji」をつくってみた
Masahiko Hashimoto
あひるに焼かれた話と今後のおーぷん万葉について
あひるに焼かれた話と今後のおーぷん万葉について
Masahiko Hashimoto
ホットな日本語入力技術のお勉強。〜 OSC 2016 Hamanako 編 〜
ホットな日本語入力技術のお勉強。〜 OSC 2016 Hamanako 編 〜
Masahiko Hashimoto
おーぷん万葉プロジェクトとは
おーぷん万葉プロジェクトとは
Masahiko Hashimoto
C++アプリをCmakeとEclipseで開発するお話
C++アプリをCmakeとEclipseで開発するお話
Masahiko Hashimoto
おーぷん万葉プロジェクトの進捗とIzumoのその後
おーぷん万葉プロジェクトの進捗とIzumoのその後
Masahiko Hashimoto
ホットな日本語技術の(ちょっとした)お勉強。
ホットな日本語技術の(ちょっとした)お勉強。
Masahiko Hashimoto
TrieとLOUDS??
TrieとLOUDS??
Masahiko Hashimoto
C言語なWebSocketの遊び方。
C言語なWebSocketの遊び方。
Masahiko Hashimoto
アヒルヤキを変換してみよう
アヒルヤキを変換してみよう
Masahiko Hashimoto
Nginxで日本語入力を遊んでみよう!
Nginxで日本語入力を遊んでみよう!
Masahiko Hashimoto
秘伝:クラウドに開発環境をえいっ!と構築する方法
秘伝:クラウドに開発環境をえいっ!と構築する方法
Masahiko Hashimoto
AzureとSUSE Studioのあつ~い関係
AzureとSUSE Studioのあつ~い関係
Masahiko Hashimoto
X window managerで遊んでみた
X window managerで遊んでみた
Masahiko Hashimoto
Mais de Masahiko Hashimoto
(20)
OSSかな漢字変換『Egoistic Lily』の紹介&今後の展望
OSSかな漢字変換『Egoistic Lily』の紹介&今後の展望
DNNを使用した新しいかな漢字変換『EgoisticLily』 その仕組みとは?
DNNを使用した新しいかな漢字変換『EgoisticLily』 その仕組みとは?
Dockerいろいろ使って思うこと
Dockerいろいろ使って思うこと
自作かな漢字変換「Genji」をつくったよ
自作かな漢字変換「Genji」をつくったよ
BrowserMob-Proxyのお話
BrowserMob-Proxyのお話
DeepLearning入門以前
DeepLearning入門以前
かな漢字変換ソフト「Genji」をつくってみた
かな漢字変換ソフト「Genji」をつくってみた
あひるに焼かれた話と今後のおーぷん万葉について
あひるに焼かれた話と今後のおーぷん万葉について
ホットな日本語入力技術のお勉強。〜 OSC 2016 Hamanako 編 〜
ホットな日本語入力技術のお勉強。〜 OSC 2016 Hamanako 編 〜
おーぷん万葉プロジェクトとは
おーぷん万葉プロジェクトとは
C++アプリをCmakeとEclipseで開発するお話
C++アプリをCmakeとEclipseで開発するお話
おーぷん万葉プロジェクトの進捗とIzumoのその後
おーぷん万葉プロジェクトの進捗とIzumoのその後
ホットな日本語技術の(ちょっとした)お勉強。
ホットな日本語技術の(ちょっとした)お勉強。
TrieとLOUDS??
TrieとLOUDS??
C言語なWebSocketの遊び方。
C言語なWebSocketの遊び方。
アヒルヤキを変換してみよう
アヒルヤキを変換してみよう
Nginxで日本語入力を遊んでみよう!
Nginxで日本語入力を遊んでみよう!
秘伝:クラウドに開発環境をえいっ!と構築する方法
秘伝:クラウドに開発環境をえいっ!と構築する方法
AzureとSUSE Studioのあつ~い関係
AzureとSUSE Studioのあつ~い関係
X window managerで遊んでみた
X window managerで遊んでみた
Último
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
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
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
続・Cannaをフォークしてみた
1.
続・Cannaをフォークしてみた はしもとまさ@東海道らぐ 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.
ご清聴、ありがとうございました!
Baixar agora