• ベストアンサー

Macでピンイン変換アプリを作りたい

Macで中国語をピンインに変換してくれるアプリを作りたいのですが、 具体的にどうすればいいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • ki073
  • ベストアンサー率77% (491/634)
回答No.2

No.1です。 作り方をざっと説明します。 1) TerminalでRuby用のライブラリをインストール まず最新のrubygemsにアップデート sudo gem update sudo gem update --system ここではstring_to_pinyinを使うことに(これはChinese simplified対応です) sudo gem install string_to_pinyin 2) Automatorでサービスを作成 Automator.appを起動し、サービスを選ぶ 「選択されたテキストを置き換える」をチェック 「シェルスクリプトを実行」を右のペインにドラッグ シェル:を「/usr/bin/ruby」に スクリプトを下記のものに #---------------------- require "jcode" require "rubygems" require "string_to_pinyin" $KCODE='u' ARGF.each do |f| puts f.to_pinyin end #---------------------- 保存(例えばto_pinyinなどの名称で) 以上で出来上がりです。 適当なアプリケーション(テキストエディットなど)に書き込み、文字を選択後、サービスメニューより選べばpinyin変換できます。 サービスメニューはアプリケーション名のメニューの中にあります。 もし、ビルド中でしたらターミナルで /System/Library/CoreServices/pbs を実行すれば大丈夫なようです

tag-mamire
質問者

お礼

出来ました!! とても丁寧にありがとうございます! まさかこんなに簡単にできるとは思いませんでした。 これで作業の効率化が図れるので、個人的にがんがん使い込みたいと思います。 本当にありがとうございました!

その他の回答 (2)

  • ki073
  • ベストアンサー率77% (491/634)
回答No.3

string_to_pinyinの中身は、 /Library/Ruby/Gems/1.8/gems の中にあります。至って単純なライブラリで変換テーブルファイルをgrepで一文字ずつ検索して変換しています。どうりで遅いはずです。 gem list -rd ".*pinyin.*" で他のライブラリも調べられますので気に入ったもので置き換えてみてください。 それと作ったサービスは ~/Library/Services にありますので不要になれば取り除いてください。

  • ki073
  • ベストアンサー率77% (491/634)
回答No.1

どの程度のアプリケーションを作りたいのかはっきりしないので回答しにくいのですが。 OSを10.6か10.7だとして回答します。 GUIを備えた本格的なアプリケーションだとすると、まずObjective-Cを勉強して作ってくださいという回答になりますが、手軽に作りたいのであればRubyやPythonでもXcodeを使って可能です。Mac用として本格的なGUIが必要なければ他の言語でも構いません。 もっと手軽に変換機能を実現したいのであれば、標準で入っているAutomatorを使って変換ソフトを作ってします方法があります。一つの方法として、「サービス」機能を作ってしまう方法があります。実際に作って見ましたが2,3分でできあがりました。 それは既存のワープロやテキストエディタから使えるものですが、変換したい部分を選択して、サービスメニューから作った「サービス」選ぶと、選択した部分がpinyinに変換されるというものです。Ruby書いたものがありますのでもし興味がありましたら作り方お教えします。 中国語からpinyinに変換してくれるライブラリがあり、それを使うと実質1行で実現できます。(宣言とか入れて数行です)

tag-mamire
質問者

補足

回答していただきありがとうございます。 いろいろと説明不足ですみません。OSは10.7です。 Objective-Cを使って、テキストフィールドに入力された中国語をボタン1つで、ピンインに変換してくれるシンプルなアプリを作りたくて、今回の質問に至りました。 アプリ作成後はいろいろと機能を足していけたらいいなという思いから、慣れ親しんでいるObjective-Cでピンイン変換機能も実装できればという欲もあったのですが、ki073さんが提案して頂いたRubyのやり方にとても興味を覚えました。Ruby自体は触ったことがないのですが、ゴールさえ分かればなんとか頑張ります。 是非教えて頂けないでしょうか。

関連するQ&A