#はじめに
Ruby(およびRails)で漢字、ひらがな、カタカナをローマ字に変換するのに便利なgemとその使い方を紹介します。
本稿が少しでもみなさまの参考になれば幸いです。
#検証環境
・Ruby 2.4.2
・Rails 5.1.4
・Java 1.8.0_151
#使用するgem
1.gem 'rjb'
Javaのライブラリを使うためのgem。
kuromojiで必要。
2.gem 'kuromoji'
Javaで作成されたオープンソースの日本語形態素解析エンジンkuromojiを使うためのgem。
zipangで必要。
3.gem 'romaji'
ローマ字とカナを相互変換するライブラリを使うためのgem。
zipangで必要。
4.gem 'zipang'
日本語をURL用ローマ字に変換するgem。
漢字仮名交じりの文字列からでもローマ字化できる。
#使用方法
Ruby on railsとJavaが動作する環境になっていることを前提としています。
###1.gemをインストール
Gemfileに以下の内容を記述して、bundle install。
gem 'rjb'
gem 'kuromoji'
gem 'romaji'
gem 'zipang'
$ bundle install
###2.gemの使い方
Zipangのto_slugメソッドを使って、漢字をローマ字に変換します。
Zipang.to_slug "日本語のタイトル"
=> "nihonngo-no-taitoru"
数字やローマ字などを全角のまま、Zipangで変換すると、以下のように日本語読みで出力されてしまいます。
Zipang.to_slug "01ABひらカタ漢字"
=> "zero-ichi-ei-bi-hira-kata-kanji"
数字は数字、ローマ字はローマ字のまま変換したい場合は、trメソッドによる処理をはさみます。
Zipang.to_slug "01ABひらカタ漢字".tr('0-9a-zA-Z ', '0-9a-zA-Z ')
=> "01-ab-hira-kata-kanji"
"-"はいらないという場合は、gsubメソッドで取り除きます。
(Zipang.to_slug "01ABひらカタ漢字".tr('0-9a-zA-Z ', '0-9a-zA-Z ')).gsub(/\-/, '')
=> "01abhirakatakanji"
ここまでで、Zipangでもほとんどの文字は適切に処理できますが、一部うまく変換できないものがあります。
(Zipang.to_slug "カービィー".tr('0-9a-zA-Z ', '0-9a-zA-Z ')).gsub(/\-/, '')
=> ""
そこで、romajiによる変換処理をはさみます。
require "romaji/core_ext/string"
(Zipang.to_slug "カービィー".tr('0-9a-zA-Z ', '0-9a-zA-Z ').romaji).gsub(/\-/, '')
=> "kabi"
#まとめ
数字は数字、ローマ字はローマ字のまま、"-"はいらない場合、以下のようにして、漢字、ひらがな、カタカナをローマ字へと適切に変換することが出来ます。
require "romaji/core_ext/string"
(Zipang.to_slug "01ABひらカタ漢字カービィー".tr('0-9a-zA-Z ', '0-9a-zA-Z ').romaji).gsub(/\-/, '')
=> "01abhirakatakanjikabi"
何か不具合などありましたら、コメントなどで教えていただけるとありがたいです。
参考:
日本語をURL用ローマ字に変換するgem Zipangを作った
最後に
オリジナル音楽の投稿配信サービスMicstackを運営しています。
よろしければご利用ください。