トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

日記/2011-4-23

キーワード

<< 前の日記  次の日記 >>

[日記]使い分け、切り捨て

最近、社内のGoogle AppsでSitesを使って仕事の情報を記録していたり、Salesforce.comのChatterが導入されたので使ったり、なんだかコミュニケーションチャネルが多すぎて、このサイトも含めて、ひとつひとつが薄くなってしまっている。

人によっては、社内ではマジメなこと、Twitterではプライベートなこと、みたいな使い分けがあるのかもしれないけども、僕の場合どこでも大してスタンスが変わらないので、単純に薄まることになる。

しばらく使ってみた結果、そもそも社内で情報や思いを発信していく意味があまりなさげなので、やっぱりここに注力することにしよう。

[コンピュータ]Ubuntuで英辞郎 + SDICを使う2011春

毎回、新しいデータを購入したり、OSを入れ替えるたびに手順がわからなくなって調べているので、いちどまとめておこう。

 英辞郎辞書データの入手

どうせLinux上で使うので、PDICアプリケーションや、体験談がついた書籍版はいらない。辞書データのダウンロード販売からその時の最新版を入手する。今回は、以前購入したバージョン125を使う。

 辞書データ形式の変換

英辞郎のプレインテキスト形式はそのままではSDICでは使えないので、適切な形式に変換する。SDICに付属のcontrib/eijirou.perlを、下記のような形で使って、SDIC用の辞書ファイルを作る。

$ cat EIJI-125.TXT RYAKU125.TXT REIJI125.TXT | perl ../sdic-2.1.3/contrib/eijirou.perl | nkf -wLu > eijirou.sdic
$ cat WAEI-125.TXT | perl ../sdic-2.1.3/contrib/eijirou.perl | nkf -wLu > waeijirou.sdic

さらに、より高速な検索をおこなうために、saryを使ってソート、インデックス化する。Web上ではsufaryを使う方法が多く紹介されているけど、Ubuntu 10.04 64bit版では、インストールしても、辞書の作成を分割しないと止まる、実際にSDICで検索しようとしても止まる、と不都合が多い。saryはUbuntuのレポジトリに入っているので、aptでインストールする。で、上で作った辞書ファイルをソート、インデックス化する。blog::2310 » Emacsからsdicとsaryを使用して英辞郎を高速検索を参考にした。

$ mksary -c UTF-8 eijirou.sdic
$ mksary -c UTF-8 waeijirou.sdic

できあがった辞書ファイル4つ(eijiro.sdic, eijiro.sdic.ary, waeijiro.sdic, waeijiro.sdic.ary)を/usr/local/share/dictあたりにインストールする。

 SDICのインストール

SDICのページからsdic-2.1.3.tar.gzをダウンロードする。展開し、configureのオプションで

./configure --with-eijirou=/usr/local/share/dict --with-waeijirou=/usr/local/share/dict

と辞書ファイルの場所を指定する。あとはmake, sudo make install。

 .emacsへの記述

僕の手元では、下記のような設定にしている。

;;; sdic-mode 用の設定
(autoload 'sdic-describe-word "sdic" "search word" t nil)
(global-set-key "\C-cw" 'sdic-describe-word)
(autoload 'sdic-describe-word-at-point "sdic" "カーソル位置の英単語の意味を調べる" t nil)
(global-set-key "\C-cW" 'sdic-describe-word-at-point)

;; ----- sdicが呼ばれたときの設定
(eval-after-load "sdic"
  '(progn
     ;; saryのコマンドをセットする
     (setq sdicf-array-command "/usr/bin/sary")
     ;; sdicファイルのある位置を設定し、arrayコマンドを使用するよう設定(現在のところ英和のみ)
     (setq sdic-eiwa-dictionary-list
           '((sdicf-client "/usr/local/share/dict/eijirou.sdic"
                           (strategy array)))
           sdic-waei-dictionary-list
           '((sdicf-client "/usr/local/share/dict/waeijirou.sdic"
                           (strategy array))))
     ;; saryを直接使用できるように sdicf.el 内に定義されているarrayコマンド用関数を強制的に置換
     (fset 'sdicf-array-init 'sdicf-common-init)
     (fset 'sdicf-array-quit 'sdicf-common-quit)
     (fset 'sdicf-array-search
           (lambda (sdic pattern &optional case regexp)
             (sdicf-array-init sdic)
             (if regexp
                 (signal 'sdicf-invalid-method '(regexp))
               (save-excursion
                 (set-buffer (sdicf-get-buffer sdic))
                 (delete-region (point-min) (point-max))
                 (apply 'sdicf-call-process
                        sdicf-array-command
                        (sdicf-get-coding-system sdic)
                        nil t nil
                        (if case
                            (list "-i" pattern (sdicf-get-filename sdic))
                          (list pattern (sdicf-get-filename sdic))))
                 (goto-char (point-min))
                 (let (entries)
                   (while (not (eobp)) (sdicf-search-internal))
                   (nreverse entries))))))
     ;; おまけ--辞書バッファ内で移動した時、常にバッファの一行目になるようにする
     (defadvice sdic-forward-item (after sdic-forward-item-always-top activate)
       (recenter 0))
     (defadvice sdic-backward-item (after sdic-backward-item-always-top activate)
       (recenter 0))))

(setq sdic-default-coding-system 'utf-8-unix)

あと、yatexと併用して使うために、

;; sdic 用に\C-cw を保存
(add-hook 'yatex-mode-load-hook
          (function
          (lambda ()
          (YaTeX-define-key "w" 'sdic-describe-word)
          (YaTeX-define-key "\C-w" 'YaTeX-switch-mode-menu))))

という設定を追加している。

こんな感じで、Emacsから快適に英辞郎を使うことができる。


[コンピュータ]Ubuntuで英辞郎 + StarDictを使う2011春

ついでに、Xウィンドウ上で辞書を引く時に便利な、StarDictの形式にも変換する方法を。英辞郎データは、上と同様ダウンロード版。

Design Recipe 別館 Blog - 英辞郎(Ver.127)を StarDict で使用する (on Ubuntu)を参考に、掲載されているスクリプト(下に引用)を使い、辞書データをタブ区切りに変換する。

$ cat EIJI-125.TXT | nkf -w8Lu | ruby makestardict.rb > eijirou.tab
$ cat WAEI-125.TXT | nkf -w8Lu | ruby makestardict.rb > waeijirou.tab
$ cat REIJI125.TXT | nkf -w8Lu | ruby makestardict.rb > reijirou.tab
$ cat RYAKU125.TXT | nkf -w8Lu | ruby makestardict.rb > ryakujirou.tab

# -*- coding: utf-8 -*-
ARGF.each do |line|
line.gsub!("■・", "<br />・")
line.gsub!(/■/, '')
attr = nil
line.sub!(/ \{(.+?)\}/) do |e|
attr = $1
''
end
key, content = line.split(' : ')
content = "【#{attr}】" << content if attr
puts [key, content].join("\t")
end
(http://blog.designrecipe.jp/2011/01/01/eijiro-stardict-memo/ より)

これで、各辞書の合計4つのタブ区切りファイルができたので、StarDictの変換ツール(Ubuntuではstardict-toolsパッケージ)でStarDict形式に変換する。

$ /usr/lib/stardict-tools/tabfile eijirou.tab
$ /usr/lib/stardict-tools/tabfile waeijirou.tab
$ /usr/lib/stardict-tools/tabfile reijirou.tab
$ /usr/lib/stardict-tools/tabfile ryakujirou.tab

すると、各辞書について、

  • *.dict.gz
  • *.idx
  • *.ifo

という3つのファイルができるので、それらをまとめて、/usr/share/stardict/dic/ 以下に、ディレクトリを作ってコピーする。

$ sudo mkdir /usr/share/stardict/dic/eijirou
$ sudo cp *.dict.gz *.idx *.ifo /usr/share/stardict/dic/eijirou

これで、あとはStarDictを起動して、メニューから辞書設定を適宜おこなえば、英辞郎を使うことができる。


コメントをどうぞ

計算:4×9= お名前: コメント:
最終更新時間:2011年04月25日 01時39分39秒

日記一覧へ