• BPnet
  • ビジネス
  • IT
  • テクノロジー
  • 医療
  • 建設・不動産
  • TRENDY
  • WOMAN
  • ショッピング
  • 転職
  • ナショジオ
  • 日経電子版
  • PR

  • PR

  • PR

  • PR

  • PR

Java仮想マシン上でRubyを動かそう

[3]Java+JRubyで文字列検索

安藤 正芳=日経ソフトウエア 2012/12/05 日経ソフトウエア
出典:日経ソフトウエア2012年9月号pp.86-93
(記事は執筆時の情報に基づいており、現在では異なる場合があります)
目次一覧

 JVMでスクリプト言語を動かす流れがわかったと思います。理解を深めるために、単純なアプリケーションを一つ作成しましょう。指定した文字列が何行目に含まれているかを調べるリスト1のRubyプログラムを記述して、Javaから呼び出すプログラムを作成します(リスト5)。

リスト5●JavaにJRubyのプログラムを挿入した例。ただし、エスケープ処理が複雑で面倒
[画像のクリックで拡大表示]

 実装に当たって、基本的な構成はリスト2と変わりません。リスト2では、

String rubyCode = "puts 'Hello JRuby!'";

と記述していたrubyCodeオブジェクトに対して、Javaプログラムから読み取れるようにJRubyのプログラムを埋め込んだだけです。何とも単純な実装ですが、このプログラムをコンパイルして実行すれば、正しく動きます。

 ただし、プログラムを見てもわかるように、エスケープ処理が複雑になってしまいます。 JRubyで記述する部分が長くなってしまったらどうでしょう。いちいちエスケープ処理を施す手間が増えてしまい、スクリプト言語の良さである生産性が向上するとはいえません。

 そこで、Javaプログラムに埋め込むのではなく、外部にJRubyのプログラムを用意して、Javaプログラムから呼び出す方法を考えてみます。外部に用意するJRubyのプログラムをリスト6のように切り出します。これをlist1.rbという名前で保存しました。文字エンコーディングは、文字化けを防ぐためにUTF-8にしています。後は、リスト5をリスト7のように変更するだけです。

リスト6●切り出したJRubyのプログラム
[画像のクリックで拡大表示]
リスト7●JRubyのプログラムを外部から読み込み出力する方法に変更した
[画像のクリックで拡大表示]

 ポイントは、evalメソッドの引数です。これまでは引数にJRubyのプログラムそのものを入れていましたが、ファイルから読み込むように変更しています。これでJRubyのプログラムを置き換えるだけで、検索だけではなく文字列の置き換えなど、様々な実装が可能になりますね。

ここから先はITpro会員(無料)の登録が必要です。

次ページ JavaとJRubyの連携における注意点
  • 1
  • 2

あなたにお薦め

連載新着

連載目次を見る

今のおすすめ記事

ITpro SPECIALPR

What’s New!

経営

アプリケーション/DB/ミドルウエア

クラウド

運用管理

設計/開発

サーバー/ストレージ

ネットワーク/通信サービス

セキュリティ

もっと見る