出典(authority):フリー百科事典『ウィキペディア(Wikipedia)』「2015/07/03 17:02:57」(JST)
この項目では、プログラミング言語について説明しています。「ルビー」・「ルビ」の他の使い方については「ルビー (曖昧さ回避)」をご覧ください。 |
パラダイム | 構造化、命令型、オブジェクト指向 |
---|---|
登場時期 | 1995年 |
設計者 | まつもとゆきひろ |
最新リリース | 2.2.2 / 2015年4月13日(2か月前) (2015-04-13) |
型付け | 強い動的型付け, ダック・タイピング |
主な処理系 | Ruby MRI, YARV, JRuby, IronRuby, MacRuby |
影響を受けた言語 | Smalltalk, LISP, Perl, Python, CLU |
影響を与えた言語 | D言語[1]、Groovy |
プラットフォーム | クロスプラットフォーム |
ライセンス | BSDライセンス、Rubyライセンスのデュアルライセンス[2] (1.9.2まではGPLとRubyのデュアルライセンス) |
ウェブサイト | www.ruby-lang.org |
プログラミング言語
■カテゴリ / ■テンプレート
Ruby(ルビー)は、まつもとゆきひろ(通称 Matz)により開発されたオブジェクト指向スクリプト言語であり、スクリプト言語が用いられてきた領域でのオブジェクト指向プログラミングを実現する。 また日本で開発されたプログラミング言語としては初めて国際電気標準会議で国際規格に認証された事例となった[3]。
Ruby は当初1993年2月24日に生まれ、1995年12月にfj上で発表された。名称の Ruby は、プログラミング言語 Perl が6月の誕生石である Pearl(真珠)と同じ発音をすることから、まつもとの同僚の誕生石(7月)のルビーを取って名付けられた。
機能として、クラス定義、ガベージコレクション、強力な正規表現処理、マルチスレッド、例外処理、イテレータ、クロージャ、Mixin、演算子オーバーロードなどがある。Perl を代替可能であることが初期の段階から重視されている。Perlと同様にグルー言語としての使い方が可能で、C言語プログラムやライブラリを呼び出す拡張モジュールを組み込むことができる。
Ruby 処理系は、主にインタプリタとして実装されている(詳しくは#実装を参照)。
可読性を重視した構文となっている。Ruby においては整数や文字列なども含めデータ型はすべてがオブジェクトであり、純粋なオブジェクト指向言語といえる。
長らく言語仕様が明文化されず、まつもとによる実装が言語仕様に準ずるものとして扱われて来たが、2010年6月現在、JRuby や Rubinius といった互換実装の作者を中心に機械実行可能な形で明文化する RubySpec という試みが行われている。公的規格としては2011年3月22日にJIS規格(JIS X 3017)が制定され、その後2012年4月1日に日本発のプログラム言語では初めてISO/IEC規格(ISO/IEC 30170)として承認された [3]。
フリーソフトウェアとしてバージョン1.9.2までは Ruby ライセンス(Ruby License や Ruby'sと表記されることもある。GPLかArtisticに似た独自ライセンスを選択するデュアルライセンス。)で配布されていたが、バージョン1.9.3以降は2-clause BSDLで配布されている。
開発者のまつもとゆきひろは、「Rubyの言語仕様策定において最も重視しているのはストレスなくプログラミングを楽しむことである (enjoy programming)」と述べている。(ただし、まつもとによる明文化された言語仕様は存在しない。)Perlのモットー「やり方はいろいろある (There's More Than One Way To Do It; TMTOWTDI)」は「多様性は善 (Diversity is Good)」というスローガンで Ruby に引き継がれてはいるものの最重要なものではないとも述べており、非推奨な手法も可能にするとともに、そのような手法を言語仕様により使いにくくすることによって自粛を促している。これは言語仕様が「望ましい」習慣の押し付けを行うということであり、洗脳言語(Babel-17)と言われる一面でもある。
Rubyの公式な実装には、以下の二種類が存在する。
この節は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(2013年2月) |
プログラミング言語としての Ruby は、オブジェクト指向の動的型付け言語のインタプリタ言語として人気のある言語のひとつであり、多くの分野で Perl や Python と競合する。特に Python とは共通する点が多い。日本では開発者が日本人であることもあり、Ruby の人気は高く書籍も多く出版されている。2004年前後まで圧倒的なキラーアプリがなく、tDiary やバグトラッキングシステム「影舞」程度しか知られていなかったため、大きな普及には至らなかった。ところが2004年末に発表され2005年に一躍脚光を浴びた Ruby on Rails により注目を集め始めた。
基本的なコード
# 文字列、数値を含め、全てがオブジェクトである
-199.abs # 199
"ruby is cool".length # 12
"Rick".index("c") # 2
"Nice Day Isn't It?".split(//).uniq.sort.join # " '?DINaceinsty"
配列の作成と使用法
a = [1, 'hi', 3.14, 1, 2, [4, 5]]
a[2] # 3.14
a.reverse # [[4, 5], 2, 1, 3.14, 'hi', 1]
a.flatten.uniq # [1, 'hi', 3.14, 2, 4, 5]
ハッシュの作成と使用法
hash = {'water' => 'wet', 'fire' => 'hot'}
hash = {water: 'wet', fire: 'hot'} # シンボルリテラルをキーとする場合、Ruby 1.9 からはこのような Javascript 風の表記ができる。
puts hash['fire'] # 表示: hot
hash.each do |key, value|
puts "#{key} is #{value}"
end
# 表示: water is wet
# fire is hot
hash.delete_if {|key, value| key == 'water'} # Deletes 'water' => 'wet'
ほかの言語でもよくみられるような制御構造を用いることができる。
if "fablic".length > 3
puts 'ya'
else
puts 'nop'
end
# 表示: ya
list = [1, 2, 5, 13, 21]
for item in list
puts item
end
# 表示: 1
# 2
# 5
# 13
# 21
n = 0
while n < 3
puts 'foobar'
n += 1
end
# 表示: foobar
# foobar
# foobar
一部の制御構造は後述するイテレータで代替することができる。
Ruby ではブロック付きメソッド呼び出しを用いるコードが好まれることが多い。これを用いると、ユーザー定義の制御構造やコールバックなど様々な処理を簡潔に記述できるからである。
ブロックとは波括弧({、})または do
、end
によって囲まれたコード列のことである。メソッド呼び出しの末尾に記述することが出来る。
# { ... }
method1 { puts "Hello, World!" }
# do ... end
method2 do
puts "Hello, world!"
end
ブロック付きメソッド呼び出しが繰り返し処理を主な役割としていたことから、イテレータと呼ばれていた時期がある。しかし、実際には繰り返し処理にとどまらず、様々な使われ方をしているので、最近はブロック付きメソッド呼び出し全体の総称としてイテレータという名称を用いるのは適切でないと考えられている。[4]
配列の各要素への繰り返し処理
list = [1, 2, 5, 13, 21]
list.map! {|item| item * 2} # listの各要素を2倍する処理
以下はブロックを使わずに同じことを行う場合
list = [1, 2, 5, 13, 21]
n = 0
while n < list.length
list[n] *= 2
n += 1
end
指定した回数の繰り返し処理
3.times { puts 'foobar' } # 制御構造の項のwhileの例と同じ
ブロックの内容を実行してから、決められた後処理を行うメソッドもある
File.open('file.txt', 'w+b') do |file|
file.puts 'Wrote some text.'
end # Fileはここで自動的にcloseされる
これは次の例と同様の処理を行う(ensure
については例外処理の項を参照)
begin
file = File.open('file.txt', 'w+b')
file.puts 'Wrote some text.'
ensure
file.close
end
実際に行いたい処理をブロックで記述する。前項の後処理の省力化もこれの一例といえる。
def bfs(list) #配列をツリーに見立てた処理
until list.empty?
unit = list.shift
yield unit #ブロックの内容を実行
unit.each{|v| list.push v} if defined? unit.push
end
end
bfs([0,1,[2,3],4,[5,[6,7,8]],9]) {|v| p v}
この例は、ツリーから要素と分枝をつぎつぎと取り出して取り出したものになんらかの処理を行うものである。メソッドの利用者は、なんらかの処理のみを記述すればよく、取り出しのアルゴリズムなど、本質的でない内容に意識を向ける必要がなくなる。
クロージャとなるようなブロックの引数渡し
# オブジェクトのインスタンス変数(変数名の頭に@が付く)でブロックを記憶。
def remember(&p)
@block = p
end
# nameを受け取るブロックを引数に、上記のメソッドを呼び出す。
remember {|name| puts "Hello, " + name + "!"}
# 後に必要になった時点でクロージャを呼び出す。
@block.call("John")
# 表示:"Hello, John!"
メソッドからクロージャを返す例
def create_set_and_get(value = 0)
return proc {|x| value = x}, proc { value }
end
setter, getter = create_set_and_get
setter.call(21)
getter.call # => 21
次のコードはPerson
という名前のクラスである。その中、まずinitialize
はオブジェクトを初期化するコンストラクタである。ほかに2つのメソッドがあり、1つは比較演算子である<=>
をオーバーライドしておりArray#sort
によりプロパティage
でソートすることができる。もう1つのオーバーライド箇所のto_s
メソッドは Kernel#puts
での表示の形式を整える。attr_reader
は Ruby におけるメタプログラミングの例であり、attr
はインスタンス変数の入出力を司る、いわゆる値を取得する getter
メソッドや値を設定する setter
メソッド(アクセサ)を定義する。attr_reader
は getter
メソッドのみの定義である。なおメソッド中では最後に評価された式が返り値となり、明示的なreturn
は省略できる。
class Person
def initialize(name, age)
@name, @age = name, age
end
def <=>(person)
@age <=> person.age
end
def to_s
"#{@name} (#{@age})"
end
attr_reader :name, :age
end
group = [ Person.new("John", 20),
Person.new("Markus", 63),
Person.new("Ash", 16)
]
puts group.sort.reverse
結果は3つの名前が年の大きい順に表示される
Markus (63) John (20) Ash (16)
例外はなにか不具合が起こったときraise
の呼び出しで発生させることができる。Ruby での例外は Exception
クラスか、そのサブクラスのインスタンスである。
例外にはメッセージを追加することもできる
raise "This is a message"
さらに例外のタイプも指定できる
raise ArgumentError, "Illegal arguments!"
例外はrescue
節で処理することができ、次のようにコードにrescue
を付加するだけである
begin
# 通常処理
rescue
# 例外処理。引数を省略すると、StandardErrorのサブクラスの例外のみ処理する
rescue SomeError
# 例外処理。SomeErrorの例外のみ処理する。
ensure
# 例外の発生に関わらず必ず実行される処理
else
# 例外が発生しなかったときに実行される処理
end
Ruby ではブロック構造を end
で終える構文が採用されているが、開発者のまつもとゆきひろは他の構文が採用される可能性があったことを述べている。当時、Emacs 上で end
で終える構文をオートインデントさせた例はあまりなく、Ruby 言語用の編集モードにオートインデント機能を持たせられるかどうかが問題になっていたためである[注釈 1]。実際には数日の試行でオートインデント可能であることがわかり、現在の構文になった。C言語のような{~}
を使った構文も検討されていたが、結局これは採用されなかった[5]。
[ヘルプ] |
ポータル FLOSS |
ウィキメディア・コモンズには、Rubyに関連するカテゴリがあります。 |
ウィキブックスにRuby関連の解説書・教科書があります。 |
|
|
Ruby | |
---|---|
Natural ruby crystals from Winza, Tanzania
|
|
General | |
Category | Mineral variety |
Formula (repeating unit) |
aluminium oxide with chromium, Al2O3:Cr |
Crystal symmetry | (Hexagonal scalenohedral, H-M symbol: (3 2/m), Space group R3c[1] |
Identification | |
Color | Near colorless through pink through all shades of red to a deep crimson |
Crystal habit | Terminated tabular hexagonal prisms. |
Crystal system | Trigonal |
Cleavage | No true cleavage |
Fracture | Conchoidal, splintery |
Tenacity | Brittle |
Mohs scale hardness | 9.0 |
Luster | Subadamantine, vitreous, pearly (on partings) |
Streak | white |
Diaphaneity | transparent, translucent |
Specific gravity | 3.97 – 4.05 |
Optical properties | Uniaxial - |
Refractive index | nω=1.768–1.772 nε=1.760–1.763 |
Birefringence | 0.008 |
Pleochroism | Strong: purplish-red - orangy-red |
Dispersion | 0.018 |
Ultraviolet fluorescence | red under longwave |
References | [2] |
A ruby is a pink to blood-red colored gemstone, a variety of the mineral corundum (aluminium oxide). The red color is caused mainly by the presence of the element chromium. Its name comes from ruber, Latin for red. Other varieties of gem-quality corundum are called sapphires. Ruby is considered one of the four precious stones, together with sapphire, emerald and diamond.[3]
Prices of rubies are primarily determined by color. The brightest and most valuable "red" called blood-red or "pigeon blood", commands a large premium over other rubies of similar quality. After color follows clarity: similar to diamonds, a clear stone will command a premium, but a ruby without any needle-like rutile inclusions may indicate that the stone has been treated. Cut and carat (weight) are also an important factor in determining the price. Ruby is the traditional birthstone for July and is always lighter red or pink than garnet. The world's most expensive ruby is the Sunrise Ruby.
Rubies have a hardness of 9.0 on the Mohs scale of mineral hardness. Among the natural gems only moissanite and diamond are harder, with diamond having a Mohs hardness of 10.0 and moissonite falling somewhere in between corundum (ruby) and diamond in hardness. Ruby is α-alumina (the most stable form of Al2O3) in which a small fraction of the aluminium3+ ions are replaced by chromium3+ ions. Each Cr3+ is surrounded octahedrally by six O2− ions. This crystallographic arrangement strongly affects each Cr3+, resulting in light absorption in the yellow-green region of the spectrum and thus in the red color of the gem. When yellow-green light is absorbed by Cr3+, it is re-emitted as red luminescence.[4] This red emission adds to the red color perceived by the subtraction of green and violet light from white light, and adds luster to the gem's appearance. When the optical arrangement is such that the emission is stimulated by 694-nanometer photons reflecting back and forth between two mirrors, the emission grows strongly in intensity. This effect was used by Theodore Maiman in 1960 to make the first successful laser, based on ruby.
All natural rubies have imperfections in them, including color impurities and inclusions of rutile needles known as "silk". Gemologists use these needle inclusions found in natural rubies to distinguish them from synthetics, simulants, or substitutes. Usually the rough stone is heated before cutting. Almost all rubies today are treated in some form, with heat treatment being the most common practice. However, rubies that are completely untreated but still of excellent quality command a large premium.
Some rubies show a three-point or six-point asterism or "star". These rubies are cut into cabochons to display the effect properly. Asterisms are best visible with a single-light source, and move across the stone as the light moves or the stone is rotated. Such effects occur when light is reflected off the "silk" (the structurally oriented rutile needle inclusions) in a certain way. This is one example where inclusions increase the value of a gemstone. Furthermore, rubies can show color changes—though this occurs very rarely—as well as chatoyancy or the "cat's eye" effect.
Generally, gemstone-quality corundum in all shades of red, including pink, are called rubies.[5][6] However, in the United States, a minimum color saturation must be met to be called a ruby, otherwise the stone will be called a pink sapphire.[5] This distinction between rubies and pink sapphires is relatively new, having arisen sometime in the 20th century. If a distinction is made, the line separating a ruby from a pink sapphire is not clear and highly debated.[7] As a result of the difficulty and subjectiveness of such distinctions, trade organizations such as the International Colored Gemstone Association (ICGA) have adopted the broader definition for ruby which encompasses its lighter shades, including pink.[8][9]
The Mogok Valley in Upper Myanmar (Burma) was for centuries the world's main source for rubies. That region has produced some of the finest rubies ever mined, but in recent years very few good rubies have been found there. The very best color in Myanmar rubies is sometimes described as "pigeon's blood." In central Myanmar, the area of Mong Hsu began producing rubies during the 1990s and rapidly became the world's main ruby mining area. The most recently found ruby deposit in Myanmar is in Namya (Namyazeik) located in the northern state of Kachin.
Rubies have historically been mined in Thailand, the Pailin and Samlout District of Cambodia, Burma, India, Afghanistan, Australia, Namibia, Colombia, Japan, Scotland, Brazil and in Pakistan. In Sri Lanka, lighter shades of rubies (often "pink sapphires") are more commonly found. After the Second World War ruby deposits were found in Tanzania, Madagascar, Vietnam, Nepal, Tajikistan, and Pakistan.[10]
A few rubies have been found in the U.S. states of Montana, North Carolina, South Carolina and Wyoming. While searching for aluminous schists in Wyoming, geologist Dan Hausel noted an association of vermiculite with ruby and sapphire and located six previously undocumented deposits.[11]
More recently, large ruby deposits have been found under the receding ice shelf of Greenland.[citation needed]
Republic of Macedonia is the only country in mainland Europe to have naturally occurring rubies. They can mainly be found around the city of Prilep. Macedonian ruby has a unique raspberry color. The ruby is also included on the Macedonian Coat of Arms.
In 2002 rubies were found in the Waseges River area of Kenya. There are reports of a large deposit of rubies found in 2009 in Mozambique, in Nanhumbir in the Cabo Delgado district of Montepuez.[12]
Spinel, another red gemstone, is sometimes found along with rubies in the same gem gravel or marble. Red spinel may be mistaken for ruby by those lacking experience with gems. However, the finest red spinels can have a value approaching that of the average ruby.[13]
Diamonds are graded using criteria that have become known as the four Cs, namely color, cut, clarity and carat weight. Similarly natural rubies can be evaluated using the four Cs together with their size and geographic origin.
Color: In the evaluation of colored gemstones, color is the most important factor. Color divides into three components: hue, saturation and tone. Hue refers to "color" as we normally use the term. Transparent gemstones occur in the following primary hues: red, orange, yellow, green, blue, violet. These are known as pure spectral hues.[14] In nature, there are rarely pure hues, so when speaking of the hue of a gemstone, we speak of primary and secondary and sometimes tertiary hues. In ruby, the primary hue must be red. All other hues of the gem species corundum are called sapphire. Ruby may exhibit a range of secondary hues. Orange, purple, violet and pink are possible.
A naturally occurring ruby crystal
Natural ruby with inclusions
Rubies set in jewelry
A cut ruby
The finest ruby is best described as being a vivid medium-dark toned red. Secondary hues add an additional complication. Pink, orange, and purple are the normal secondary hues in ruby. Of the three, purple is preferred because, firstly, the purple reinforces the red, making it appear richer.[14] Secondly, purple occupies a position on the color wheel halfway between red and blue. In Burma where the term 'pigeon blood' originated, rubies are set in pure gold. Pure gold is itself a highly saturated yellow. When a purplish-red ruby is set in yellow, the yellow neutralizes its complement blue, leaving the stone appearing to be pure red in the setting.[citation needed]
Improving the quality of gemstones by treating them is common practice. Some treatments are used in almost all cases and are therefore considered acceptable. During the late 1990s, a large supply of low-cost materials caused a sudden surge in supply of heat-treated rubies, leading to a downward pressure on ruby prices.
Improvements used include color alteration, improving transparency by dissolving rutile inclusions, healing of fractures (cracks) or even completely filling them.
The most common treatment is the application of heat. Most, if not all, rubies at the lower end of the market are heat treated on the rough stones to improve color, remove purple tinge, blue patches and silk. These heat treatments typically occur around temperatures of 1800 °C (3300 °F).[15] Some rubies undergo a process of low tube heat, when the stone is heated over charcoal of a temperature of about 1300 °C (2400 °F) for 20 to 30 minutes. The silk is only partially broken as the color is improved.
Another treatment, which has become more frequent in recent years, is lead glass filling. Filling the fractures inside the ruby with lead glass (or a similar material) dramatically improves the transparency of the stone, making previously unsuitable rubies fit for applications in jewelry.[16] The process is done in four steps:
If a color needs to be added, the glass powder can be "enhanced" with copper or other metal oxides as well as elements such as sodium, calcium, potassium etc.
The second heating process can be repeated three to four times, even applying different mixtures.[18] When jewelry containing rubies is heated (for repairs) it should not be coated with boracic acid or any other substance, as this can etch the surface; it does not have to be "protected" like a diamond.
The treatment can easily be determined using a 10x loupe and determination focuses on finding bubbles either in the cavities or in the fractures that were filled with glass.[19]
In 1837 Gaudin made the first synthetic rubies by fusing potash alum at a high temperature with a little chromium as a pigment. In 1847 Ebelmen made white sapphire by fusing alumina in boric acid. In 1877 Frenic and Freil made crystal corundum from which small stones could be cut. Frimy and Auguste Verneuil manufactured artificial ruby by fusing BaF2 and Al2O3 with a little chromium at red heat. In 1903 Verneuil announced he could produce synthetic rubies on a commercial scale using this flame fusion process.[20] By 1910, Verneuil's laboratory had expanded into a 30 furnace production facility, with annual gemstone production having reached 1,000 kilograms (2,000 lb) in 1907.
Other processes in which synthetic rubies can be produced are through Czochralski's pulling process, flux process, and the hydrothermal process. Most synthetic rubies originate from flame fusion, due to the low costs involved. Synthetic rubies may have no imperfections visible to the naked eye but magnification may reveal curves, striae and gas bubbles. The fewer the number and the less obvious the imperfections, the more valuable the ruby is; unless there are no imperfections (i.e., a "perfect" ruby), in which case it will be suspected of being artificial. Dopants are added to some manufactured rubies so they can be identified as synthetic, but most need gemological testing to determine their origin.
Synthetic rubies have technological uses as well as gemological ones. Rods of synthetic ruby are used to make ruby lasers and masers. The first working laser was made by Theodore H. Maiman in 1960[21] at Hughes Research Laboratories in Malibu, California, beating several research teams including those of Charles H. Townes at Columbia University, Arthur Schawlow at Bell Labs,[22] and Gould at a company called TRG (Technical Research Group). Maiman used a solid-state light-pumped synthetic ruby to produce red laser light at a wavelength of 694 nanometers (nm). Ruby lasers are still in use. Rubies are also used in applications where high hardness is required such as at wear exposed locations in modern mechanical clockworks, or as scanning probe tips in a coordinate measuring machine.
Imitation rubies are also marketed. Red spinels, red garnets, and colored glass have been falsely claimed to be rubies. Imitations go back to Roman times and already in the 17th century techniques were developed to color foil red—by burning scarlet wool in the bottom part of the furnace—which was then placed under the imitation stone.[23] Trade terms such as balas ruby for red spinel and rubellite for red tourmaline can mislead unsuspecting buyers. Such terms are therefore discouraged from use by many gemological associations such as the Laboratory Manual Harmonisation Committee (LMHC).
Wikimedia Commons has media related to Ruby. |
|
全文を閲覧するには購読必要です。 To read the full text you will need to subscribe.
関連記事 | 「rub」 |
.