skk の辞書を追加したいばかりに glib2 を install してたらスクリプト書いてた

skk の辞書にはあまり思い入れがなかった。
skkserv を使ってたのも随分前の話だし、今では SKK-JISYO.L だけでまったく困ってないし。

でも、「はてなダイアリーキーワードふりがなリスト」をSKKの辞書に変換 - znzの日記 - Rubyistを見てちょっとやりたくなった。
さっそくIndex of /skk/toolsから targz を取得して make install。
が、skkdic-expr2 がコンパイルできない。

mac-mini% make skkdic-expr2
gcc -I. -I. -I. -g -O2  -o skkdic-expr2 ./skkdic-expr2.c  
./skkdic-expr2.c:34:18: error: glib.h: No such file or directory
...

MacOSX には glib2 が入ってないことに初めて気付いた瞬間です。

とりあえず search する。入れててよかった MacPort。

mac-mini% port search glib
taglib                         audio/taglib   1.5          TagLib Audio Meta-Data Library
dbus-glib                      devel/dbus-glib 0.74         Glib bindings for the dbus message bus system.
glib1                          devel/glib1    1.2.10       Library with data structure functions and other constructs
glib2                          devel/glib2    2.16.3       Library with data structure functions and other constructs
glib2-devel                    devel/glib2-devel 2.15.6       Library with data structure functions and other constructs
glibmm                         devel/glibmm   2.16.1       C++ interface to glib
sglib                          devel/sglib    1.0.0        useful macros for manipulating common data structures
cglib                          java/cglib     2.2_beta1    cglib - a code generation library for java byte code.
jakarta-taglibs-standard-11    java/jakarta-taglibs-standard-11 1.1.2        Jakarta JSP Standard Tag Library (JSTL) v1.1
jakarta-taglibs-string         java/jakarta-taglibs-string 1.1.0        Jakarta Strings Taglib -- taglib for manipulating Java strings
p5-glib                        perl/p5-glib   1.181        Access to GLib and GObject
rb-mp3taglib                   ruby/rb-mp3taglib 0.6          mp3taglib is an id3v1/id3v2 tagging library for ruby based on id3lib
mac-mini% port search glib2
glib2                          devel/glib2    2.16.3       Library with data structure functions and other constructs
glib2-devel                    devel/glib2-devel 2.15.6       Library with data structure functions and other constructs

いるけどちゃんと動くかどうかとか不明。
gnome プロダクトを動かしてる人がいるみたいだから、きっと大丈夫だろう。

mac-mini% port install glib2

で、最初に戻って skktools を make && make install。無事に skkdic-expr2 が使えるようになりました。

追記

ついでといってはあれだけど、キーワード生成スクリプトをなんだか調整してみました。

mac-mini% diff -c keywordlist_furigana2skkdic.rb.org keywordlist_furigana2skkdic.rb
*** keywordlist_furigana2skkdic.rb.org	2008-06-08 03:15:21.000000000 +0900
--- keywordlist_furigana2skkdic.rb	2008-06-08 03:15:50.000000000 +0900
***************
*** 1,14 ****
! #!/usr/local/bin/ruby -Ke
  # はてなダイアリーキーワードふりがなリストをSKKの辞書に変換
  #
  # 使い方:
! #  wget http://d.hatena.ne.jp/images/keyword/keywordlist_furigana.csv
! #  ruby keywordlist_furigana2skkdic.rb keywordlist_furigana.csv > tmp.skkdic
! #  skkdic-expr2 -o keywordlist_furigana.skkdic tmp.skkdic
  #
- # 同一の読みをまとめたりはしていないので、一度skkdic-expr2を通してください。
  
  require 'nkf'
  
  class String
    # borrowed from http://openlab.jp/skk/skk/tools/filters/skkdictools.rb
--- 1,13 ----
! #!/usr/bin/env ruby -Ke
! # -*- coding: utf-8 -*-
  # はてなダイアリーキーワードふりがなリストをSKKの辞書に変換
  #
  # 使い方:
! #  ruby keywordlist_furigana2skkdic.rb | skkdic-expr2 -o keywordlist_furigana.skkdic
  #
  
  require 'nkf'
+ require 'open-uri'
  
  class String
    # borrowed from http://openlab.jp/skk/skk/tools/filters/skkdictools.rb
***************
*** 25,38 ****
  
  # http://d.hatena.ne.jp/hatenadiary/20060922/1158908401
  # http://d.hatena.ne.jp/images/keyword/keywordlist_furigana.csv
! ARGF.each do |line|
!   line.chomp!
!   furigana, keyword = line.split(/\t/, 2)
!   if furigana == keyword
!     next # ひらがなだけのキーワードを無視
!   end
!   if furigana == NKF.nkf('-Ee -m0 --hiragana', keyword)
!     next # カタカナ語は無視
!   end
!   puts "#{furigana} /#{keyword.gsub(/&/, '&').concatify}/"
! end
--- 24,40 ----
  
  # http://d.hatena.ne.jp/hatenadiary/20060922/1158908401
  # http://d.hatena.ne.jp/images/keyword/keywordlist_furigana.csv
! #ENV['http_proxy'] = 'http://127.0.0.1:8123'
! open("http://d.hatena.ne.jp/images/keyword/keywordlist_furigana.csv") {|f|
!   f.each_line {|line|
!     line.chomp!
!     furigana, keyword = line.split(/\t/, 2)
!     if furigana == keyword
!       next # ひらがなだけのキーワードを無視
!     end
!     if furigana == NKF.nkf('-Ee -m0 --hiragana', keyword)
!       next # カタカナ語は無視
!     end
!     puts "#{furigana} /#{keyword.gsub(/&/, '&').concatify}/"
!   }
! }