13
8

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.

Ruby(およびRails)で漢字、ひらがな、カタカナをローマ字に変換する

Last updated at Posted at 2017-12-05

#はじめに
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。

Gemfile
gem 'rjb'
gem 'kuromoji'
gem 'romaji'
gem 'zipang'
linux
$ 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を運営しています。
よろしければご利用ください。

13
8
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
13
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?