著者
笹田 耕一 松本 行弘 前田 敦司 並木 美太郎
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.48, no.SIG10(PRO33), pp.1-16, 2007-06-15

本論文ではスクリプト言語Ruby 用仮想マシンYARV: Yet Another RubyVM における並列実行スレッド処理機構の実装について述べる.Ruby はその使いやすさから世界中で広く利用されているプログラム言語である.Ruby の特徴の1 つにマルチスレッドプログラミングに対応しているという点があるが,現在広く利用されているRuby 処理系は移植性を高めるため,すべてユーザレベルでスレッド制御を行っている.しかし,このスレッド実現手法では,実行がブロックしてしまう処理がC 言語レベルで記述できない,並列計算機において複数スレッドの並列実行による性能向上ができないなどの問題がある.そこで,現在筆者らが開発中のRuby 処理系YARV において,OS やライブラリなどによって提供されるネイティブスレッドを利用するスレッド処理機構を実装し,複数スレッドの並列実行を実現した.並列化にあたっては,適切な同期の追加が必要であるが,特に並列実行を考慮しないC 言語で記述したRuby 用拡張ライブラリを安全に実行するための仕組みが必要であった.また,同期の回数を減らす工夫についても検討した.本論文では,これらの仕組みと実装についての詳細を述べ,スレッドの並列実行によって得られた性能向上について評価した結果を述べる.
著者
松本 行弘 縄手 雅彦
出版者
一般社団法人情報処理学会
雑誌
情報処理学会論文誌 (ISSN:18827764)
巻号頁・発行日
vol.46, no.11, pp.2633-2642, 2005-11-15
被引用文献数
2

テキスト処理において文字集合間の変換は,さまざまな問題を引き起こす可能性がある.そのような問題を回避するため,スクリプト言語Rubyに対して,複数の文字集合とそのエンコーディングを変換を行うことなく直接扱うことができる多言語テキスト処理の枠組みを実装した.この多言語テキスト処理の枠組みを利用することでEBCDIC,UTF-16,UTF-32,GB18030をはじめとする各種CESに比較的容易に対応できる.この多言語化により,Rubyを用いたテキスト処理の可能性が大きく広がる.また,この多言語テキスト処理のための枠組みはRubyに依存しないため,ライブラリとして他のプログラムにも応用できる.The character conversion between character code sets can cause various problems. To avoid these problems, we developed a multilingual text manipulation framework for the Ruby language, which the author designed. Users can easily add support for the new character encoding scheme (CES), such as EBCDIC, UTF-16, UTF-32, and GB18030. The multilingual text manipulation will broaden the application domain of the Ruby language. In addition, the framework for the multilingual text manipulation can be used for other programs, since they are idependent from the Ruby interpreter.
著者
笹田 耕一 松本 行弘 前田 敦司 並木 美太郎
出版者
一般社団法人情報処理学会
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.48, no.10, pp.1-16, 2007-06-15
被引用文献数
2

本論文ではスクリプト言語Ruby 用仮想マシンYARV: Yet Another RubyVM における並列実行スレッド処理機構の実装について述べる.Ruby はその使いやすさから世界中で広く利用されているプログラム言語である.Ruby の特徴の1 つにマルチスレッドプログラミングに対応しているという点があるが,現在広く利用されているRuby 処理系は移植性を高めるため,すべてユーザレベルでスレッド制御を行っている.しかし,このスレッド実現手法では,実行がブロックしてしまう処理がC 言語レベルで記述できない,並列計算機において複数スレッドの並列実行による性能向上ができないなどの問題がある.そこで,現在筆者らが開発中のRuby 処理系YARV において,OS やライブラリなどによって提供されるネイティブスレッドを利用するスレッド処理機構を実装し,複数スレッドの並列実行を実現した.並列化にあたっては,適切な同期の追加が必要であるが,特に並列実行を考慮しないC 言語で記述したRuby 用拡張ライブラリを安全に実行するための仕組みが必要であった.また,同期の回数を減らす工夫についても検討した.本論文では,これらの仕組みと実装についての詳細を述べ,スレッドの並列実行によって得られた性能向上について評価した結果を述べる.In this paper, we describe an implementation of parallel threads for YARV: Yet Another RubyVM. The Ruby language is used worldwide because of its ease of use. Ruby also supports multi-threaded programming. The current Ruby interpreter controls all threads only in user-level to achieve high portability. However, this user-level implementation can not support blocking task and can not improve performance on parallel computers. To solve these problems, we implement parallel threads using native threads provided by systems software on YARV: Yet Another RubyVM what we are developing as another Ruby interpreter. To achieve parallel execution, correct synchronizations are needed. Especially, C extension libraries for Ruby which are implemented without consideration about parallel execution need a particular scheme for running in parallel. And we also try to reduce a number of times of synchronization. In this paper, we show implementations of these schemes and results of performance improvement on parallel threads execution.
著者
笹田 耕一 卜部 昌平 松本 行弘 平木 敬
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.5, no.2, pp.25-42, 2012-03-30

我々は,高性能なRuby処理系の開発を行っている.Ruby処理系は仮想マシン(VM)を用いて実現されているが,現在のVMでは,同時にたかだか1つのRubyスレッドのみ実行するという制約があり,並列実行をサポートしていない.また,複数のRubyプロセスを用いて並列実行すると,計算に必要となるオブジェクトの転送がプロセス間転送となり,オーバヘッドが大きいという問題がある.そこで,我々は1つのプロセスに複数のVMを並列に実行できるマルチ仮想マシン(MVM)の開発を行っている.各VMはオブジェクト空間を独立に管理するが,各VMが同一プロセス内にあることを活かしたVM間の高速なオブジェクト転送を行うことができる.また,これらの機能をRubyから利用するためのプログラミングインタフェース(API)を設計した.さらに,Rubyの遠隔メソッド呼び出し機構であるdRubyをMVM上で利用できるように拡張し,MVMの利用を容易に行うことができるようにした.MVMの実装は,現在の処理系との互換性を維持するため,既存の処理系のプロセス全体で共有されるデータ,たとえばC言語のグローバル変数やI/O資源などを,VMごとに保持するようデータ構造を変更することで行った.本論文では,開発しているMVMの設計と実装について述べ,MVMを用いるためのAPIを説明する.そして,MVMを用いた並列処理の現在の実装での性能評価について述べる.

3 0 0 0 OA Rubyの真実

著者
松本 行弘
雑誌
情報処理
巻号頁・発行日
vol.44, no.5, pp.515-521, 2003-05-15
著者
笹田 耕一 松本 行弘 前田 敦司 並木 美太郎
出版者
一般社団法人情報処理学会
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.47, no.2, pp.57-73, 2006-02-15
被引用文献数
5

本稿ではオブジェクト指向スクリプト言語Ruby を高速に実行するための処理系であるYARV: Yet Another RubyVM の実装と,これを評価した結果について述べる.Ruby はその利用のしやすさから世界的に広く利用されている.しかし,現在のRuby 処理系の実装は単純な構文木をたどるインタプリタであるため,その実行速度は遅い.これを解決するためにいくつかの命令実行型仮想マシンが提案・開発されているが,Ruby のサブセットしか実行できない,実行速度が十分ではないなどの問題があった.この問題を解決するため,筆者はRuby プログラムを高速に実行するための処理系であるYARV を開発している.YARV はスタックマシンとして実装し,効率良く実行させるための各種最適化手法を適用する.実装を効率的に行うため,比較的簡単なVM 生成系を作成した.本稿ではRuby の,処理系実装者から見た特徴を述べ,これを実装するための各種工夫,自動生成による実装方法について述べる.また,これらの高速化のための工夫がそれぞれどの程度性能向上に寄与したかについて評価する.In this paper, we describe the implementation and evaluation results of YARV, next generation Ruby implementation. The Ruby language is used worldwide because of its ease of use. However, current interpreter is slow due to its evaluation method. To solve this problem, several virtual machine designs were proposed, but none of them exhibited adequate performance/functionality combination. Our implementation, called YARV (Yet Another Ruby VM), is based on a stack machine architecture. YARV incorporates a number of optimization techniques for high speed execution of ruby programs. In this paper, we describe the characteristics of Ruby from implementor's point of view, and present concrete solutions for these issues as well as implementation of optimization techniques. We also show how each of these optimizations contributed to the speed-up.
著者
松本 行弘
出版者
情報処理学会
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.2, no.2, pp.27-36, 2009-03-23

多くのスクリプト言語において多言語テキスト処理は Unicode を固定的な内部文字コードとして採用しているが,その場合,Unicode 以外の文字集合で表現されたテキストを処理するためには文字集合間の変換が必要になり,文字集合間の互換性や文字集合における歴史的な事情などによりさまざまな問題を引き起こす可能性がある.そこで筆者が開発しているスクリプト言語 Ruby に対して,固定的な内部文字集合を持たない文字集合独立方式を採用し,文字集合間の変換をできるだけ行わないテキスト処理機能を実装した.本論文で述べる Ruby の多言語テキスト処理機能は,Unicode を固定的な内部文字集合とする他スクリプト言語 (Perl および Python) と比べて,テキスト処理におけるプログラムの簡潔さおよび性能において劣らない実用的なものであることを示す.本論文で述べる多言語テキスト処理機能は Ruby バージョン 1.9 として公開されている.Many scripring languages of present days use Unicode as their universal internal character set to manipulate multilingual text processing. But due to character set compatibility and other historical issues, text conversion to/from the universal character set may cause various problems. We designed and implemented character set independent multilingual processing, which avoids character set conversion as much as possible. We show that multilingual text processing in Ruby is practical in both productivity and performance, comparing other scripting languages, e.g. Perl and Python. The work described in this paper is publicly available in Ruby version 1.9.
著者
牧野 耕次 比嘉 勇人 甘佐 京子 山下 真裕子 松本 行弘 山本 佳代子
出版者
滋賀県立大学
雑誌
基盤研究(C)
巻号頁・発行日
2009

境界とは、二つ以上のものを区切る時のさかい(境)となるものであり、人間に関しては、身体的、心理的、社会的、霊(スピリチュアル)的境界があると言われている。本研究では、精神科における看護師の境界の調整に関する技術的要素を抽出し、その技術をどのように獲得してきたのかを明らかにした。さらに、総合病院の患者-看護師関係における境界概念に関するモデルを抽出した。
著者
牧野 耕次 比嘉 勇人 山本 佳代子 甘佐 京子 山下 真裕子 松本 行弘
出版者
滋賀県立大学人間看護学部
雑誌
人間看護学研究 (ISSN:13492721)
巻号頁・発行日
no.10, pp.101-108, 2012-03

背景 看護におけるinvolvement (かかわり) は患者との関係を構築し患者のニーズに沿った看護を行う上で重要な概念である。他方、involvementの他の訳語である「巻き込まれ」は、患者との関係においてストレスになることが示唆され、問題として警告されてきた。involvementは我が国においてなじみのない概念であり一つの概念としてほとんど認識されてはおらず、両価的な評価をそれぞれ反映し、かかわりと「巻き込まれ」として認識されていると言える。 看護におけるinvolvementを概念として理解せず、かかわりの技術 (skill) を修得しないまま臨床で働く看護師は、巻き込まれすぎて精神的に落ち込んだり、患者に近づけず、深くかかわることができなかったりするなどの問題に直面した時に、振り返って解決する糸口を見つけにくいと考えられる。 目的 看護におけるかかわり (involvement) を意識化し、適度な距離を持って患者とかかわることができるようになることを目指した「看護におけるかかわり研修」を看護師に実施し、その効果を検討する。 方法 関西圏の700床以上の総合病院に勤務する看護師23名を対象に、看護におけるかかわり研修を実施し、その前後のOver-involvement尺度 (OIS) およびUnder-involvement尺度 (UIS) を測定し、前後の因子および尺度得点を比較した。 結果 研修終了約1ヵ月後に、OIS高群の得点合計が49点 (P=0.027) 、因子「被影響性」の得点合計が20点 (P=0.027) 、さらに因子「気がかり」の得点合計が20点 (P=.020) と有意に低下した。同様に、UIS高群の因子「不関与」が13点 (P=0.047) 低下し、さらにUIS低群の因子「不関与」が11点 (P=0.026) 、有意に増加した。 結論 本研修がover-involvementの傾向をより強く示す対象者に対して、選択的にその傾向を緩和する可能性が示唆された。また、患者との心理的距離を近づけることがより難しい対象者に関して、患者の内的世界にかかわろうとしない傾向が緩和されたことが示唆された。さらに、患者との心理的距離を近づけることに、より困難を覚えていない対象者について、患者の内的世界にかかわり過ぎる傾向が緩和されたと推察できる。
著者
笹田 耕一 松本 行弘
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.8, no.1, pp.12-12, 2015-06-02

世代別GC,およびインクリメンタルGCはよく知られたGCの改善手法であるが,実装するためには正確なライトバリアが必須である.一方,Ruby処理系は保守的マーク&スイープGCを用いることで,C言語などで拡張コードを書くときに余計なコードを含む必要がなかったが,ライトバリアを挿入しておらず,これを必要とするGCアルゴリズムを導入することができなかった.我々はこの問題を解決するために,ライトバリアに対応しているオブジェクトとしていないオブジェクトを区別して,世代別インクリメンタルGCを実装する新しい方法を提案する.本発表では提案する手法について説明し,Rubyへの実装について述べる.
著者
笹田 耕一 松本 行弘 前田 敦司 並木 美太郎
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.47, no.SIG2(PRO28), pp.57-73, 2006-02-15

本稿ではオブジェクト指向スクリプト言語Ruby を高速に実行するための処理系であるYARV: Yet Another RubyVM の実装と,これを評価した結果について述べる.Ruby はその利用のしやすさから世界的に広く利用されている.しかし,現在のRuby 処理系の実装は単純な構文木をたどるインタプリタであるため,その実行速度は遅い.これを解決するためにいくつかの命令実行型仮想マシンが提案・開発されているが,Ruby のサブセットしか実行できない,実行速度が十分ではないなどの問題があった.この問題を解決するため,筆者はRuby プログラムを高速に実行するための処理系であるYARV を開発している.YARV はスタックマシンとして実装し,効率良く実行させるための各種最適化手法を適用する.実装を効率的に行うため,比較的簡単なVM 生成系を作成した.本稿ではRuby の,処理系実装者から見た特徴を述べ,これを実装するための各種工夫,自動生成による実装方法について述べる.また,これらの高速化のための工夫がそれぞれどの程度性能向上に寄与したかについて評価する.
著者
松本 行弘
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.2, no.2, pp.27-36, 2009-03-23

多くのスクリプト言語において多言語テキスト処理は Unicode を固定的な内部文字コードとして採用しているが,その場合,Unicode 以外の文字集合で表現されたテキストを処理するためには文字集合間の変換が必要になり,文字集合間の互換性や文字集合における歴史的な事情などによりさまざまな問題を引き起こす可能性がある.そこで筆者が開発しているスクリプト言語 Ruby に対して,固定的な内部文字集合を持たない文字集合独立方式を採用し,文字集合間の変換をできるだけ行わないテキスト処理機能を実装した.本論文で述べる Ruby の多言語テキスト処理機能は,Unicode を固定的な内部文字集合とする他スクリプト言語 (Perl および Python) と比べて,テキスト処理におけるプログラムの簡潔さおよび性能において劣らない実用的なものであることを示す.本論文で述べる多言語テキスト処理機能は Ruby バージョン 1.9 として公開されている.