はじめに
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を運営しています。
よろしければご利用ください。