12
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Mac OS X MavericksへのKakasiのインストール

Last updated at Posted at 2014-03-10

#はじめに

Kakasiは、日本語をローマ字に変換するまたはその逆を行うUnixコマンドである。もはや古い部類に属するコマンドだが、たまに日本語名だらけのリソースをシステムが扱いやすいように変換したい場合、それらの処理を自動化したい場合に効果を発揮する。

ここでは、リマインダとして、kakasiをmavericksにインストールする方法とその運用方法についてまとめる。

インストール

以下のページから、kakasiの最新バージョンのtarballを持ってきて、解凍しビルドする。

ホストオプションをつけるのがポイント。現状で、2.3.5が最新だった。

$ tar xzf kakasi-2.3.5.tar.gz
$ cd kakasi-2.3.5
$ configure —host=powerpc-apple-bsd
$ make
$ sudo make install

運用

kakasiはeuc-jpの文字コードをサポートしているので、mac標準のutf8の文字列をnkfで変換してから与えないと、変な変換をする

悪い例

$ echo "あいうえお" | kakasi -Ha
?yu??うえお

良い例

$ echo "あいうえお" | nkf -e | kakasi -Ha
aiueo

nkfがインストールされていないなら、homebrewでさくっとインストールする

$ brew install nkf

オプション

入力の中のどの種の文字を変換するかは、前後二文字のオプションをつけて、指示する。それぞれの文字の意味は以下の通り

  • a: ascii
  • j: jisroman
  • g: graphic
  • k: kana (j,k defined in jisx0201)
  • E: kigou
  • K: katakana
  • H: hiragana
  • J: kanji(E,K,H,J defined in jisx0208)

上記の例では、ひらがなから、ローマ字(acciicode)に変換したかったので、-Haというオプションをつけた。漢字からローマ字の場合は、-Ja、カタカナからローマ字の場合は-Kaもつけること。

サンプル

以下、同じディレクトリにある日本語名のファイルをkakasiを使って、英語名にするためのスクリプト例

translate_and_move.py
#!/usr/bin/env python

import os
import commands
import logging
import traceback

logging.basicConfig(level=logging.DEBUG)

for root, dirs, files in os.walk('.'):
        for fname in files:
                inpath = os.path.join(root, fname)
                fname = fname.replace("\s", "_")
                fname = fname.replace(" ", "_")
                status, engfname = commands.getstatusoutput('echo "%s" | nkf -e | kakasi -Ha -ka -ja -Ja -Ka -Ea -ga' % fname)
                if status:
                        logging.error ("error: status: " + str(status))
                        continue
                outpath = os.path.join(root, engfname)
                logging.debug ('mv "%s" "%s"' % (inpath, outpath))
                status, output = commands.getstatusoutput('mv "%s" "%s"' % (inpath, outpath))
                if status:
                        logging.error ("error: status: " + str(status))
                        continue

homebrewを使ったインストール

Homebrewを使ってインストールしたい場合は以下で紹介されているタップを利用するといいらしい

12
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?