Rubyで仏教プログラミング|配列とハッシュの合わせ技

御参拝、誠に有難う御座います。住職(管理人)の修羅観音です。



Rubyで仏教プログラミングシリーズでは、過去に「配列」と「ハッシュ」について、学んだ事が御座います。

Rubyでプログラムを作る、プログラミングするという場合に、この「配列」と「ハッシュ」を使う事は、多々あるかと存じます。

Ruby on Railsでも、配列やハッシュを使う事が御座いますから、RubyとRuby on Railsを使う人は、必須項目と言えましょう。



この「配列」と「ハッシュ」は、組み合わせて使う事も出来ます。

配列の要素(配列の中身の事)に、ハッシュを用いるという、言うなれば「配列とハッシュの合わせ技」なるものも御座います。



今回は、配列とハッシュの合わせ技として、配列の要素をハッシュにして、仏教に関するプログラムを作ることに致しましょう。



もしかしたら、歴史の教科書で習った事柄でもあるかと存じますから、懐かしい、と思うて頂けるやも知れません。

もっとも、中学高校の歴史の授業では、さらりと流されてしまいそうな単元ではありますがね。

ここで一つ、仏教と歴史を両方学べる入り口として、今回の「配列とハッシュの合わせ技」を、学んで頂ければと存じます。

スポンサーリンク

Rubyで仏教プログラミング:配列とハッシュのおさらい

今回のRubyで仏教プログラミングは、配列とハッシュの合わせ技を使って、「宗派と宗祖プログラム」を、プログラミングしてみる事に致しましょう。



何はともあれ、まずは前提知識として、配列とハッシュのおさらいをしておく必要が御座います。

詳しくは、過去にお伝え致しました、配列とハッシュの話を復習して頂ければと存じます。



参照記事:「Rubyで仏教プログラミング|配列を使って高僧を表示・出力していく」

参照記事2:「Rubyで仏教プログラミング|ハッシュを使って高僧の名前と年齢を表示・出力する」



詳しい内容は、過去の記事を読んで頂くとして、ここではさらりとおさらい程度に復習しておくことにします。



「配列」とは、複数の値を管理するときに用いるもので、配列の中に入っている値のことを「要素」と呼びます。

配列の要素は、文字列や数字を入れて使い、文字列を入れる場合には「”(ダブルクォート)」で囲み、数字の場合はそのまま書きます。

配列は、配列変数を用意して、そこに「[](角括弧)」で囲った中身を代入する形で書きます。



実際に書いてみますと、こんな感じです。


mojiretzu = [“文字列”,”配列”]
suuji = [1,2,3,4]



配列は「インデックス番号」が割り振られており、先頭は「0番目」から始まります。

ここ、結構間違えることが御座いますから、「先頭は0番目から」と言う事を、しっかりと覚えて置いて頂ければと存じます。

上の「mojiretzu配列」の「”文字列”」を取り出したい場合には、0番目を指定して出力する事で、取り出すことが出来ます。



一方の「ハッシュ」は、配列のインデックス番号の部分を自分で決める事が出来ます。

ハッシュは、ハッシュ変数に「{}(波括弧)」で囲んだ中身を代入する形で書き、実際に書いてみるとこんな感じです。


mojisuu = {1 => “一文字目” , 2 => “二文字目”}



ここでは、「1」や「2」を「キー」と呼び、「”一文字目”」や「”二文字目”」を「値」と言います。



今回は、この二つを使って、配列の中にハッシュを用いる、という事をやってみます。

Rubyで仏教プログラミングの前提知識:宗派と宗祖について

「配列」と「ハッシュ」の復習が終わったところで、仏教サイドの基礎知識へ移りましょう。

今回は、鎌倉時代の浄土教を題材とさせて頂きます。

鎌倉時代の仏教を、歴史の授業や仏教学等の講座で学んだ事がある人は、よくご存じの知識であろうと存じます。



鎌倉時代の浄土教と言えば、御宗祖と宗派について、このように習った人も多いのではありませんかね。



「浄土宗は法然上人、浄土真宗は親鸞聖人、時宗は一遍上人」



浄土教について、鎌倉時代以前も入れると、源信和尚や良忍上人もいらっしゃるのですが、今回は鎌倉時代の浄土教に限定したプログラムを作ります。

浄土宗の御宗祖は法然上人、真宗・浄土真宗の御宗祖、御開山聖人とも言いますが親鸞聖人、時宗の開祖は一遍上人と、とりあえずこのような形で認識すると致します。



ここで、ちょいとした豆知識をば。



今回用います、「宗派」の英語訳・英単語訳は「school」です。

「宗派」の英単語と言えば、「sect、religious sect」もしくは「denomination」辺りを連想される人もいらっしゃいましょう。

実は、「school」も、宗派を表す英単語として使う事が出来ます。

ここでは、「英語でブッダ」で解説されていた、形式張った表現ではない宗派を表した英単語「school」を用います。



歴史、浄土仏教史の鎌倉時代だけを取り上げた前提知識は、このようなところです。

Rubyで仏教プログラミング:配列に「宗祖の名前と宗派の名前」のハッシュを入れたプログラム

Rubyの配列とハッシュのプログラミング前提知識と、仏教サイドの前提知識を学んだところで、いよいよプログラムを作っていくことに致しましょう。



題して、「宗祖と宗派プログラム」です。(そのまんまですがな。)
スポンサーリンク

配列の中に「宗祖と宗派ハッシュ」を入れていく

まずは、配列変数を用意して、配列の骨組みを作ります。

ここはわかりやすく、「jodokyo」と言う変数名にします。



そして、その中に宗祖の名前と宗派の名前のハッシュを、要素として用います。

実際に書いてみると、こんな感じです。






この部分を言語で解説致しますと。



配列の0番目の要素は、「{name: :法然上人,school: :浄土宗}」というハッシュです。

配列の1番目の要素は、「{name: :親鸞聖人,school: :真宗・浄土真宗}」というハッシュです。

配列の2番目の要素は、「{name: :一遍上人,school: :時宗}」というハッシュです。



配列の中にハッシュが入っている事が、おわかり頂けるかと存じます。



そして、「{name: :法然上人,school: :浄土宗} , {name: :親鸞聖人,school: :真宗・浄土真宗}」と、「,」で区切っていることに、気がつかれましたでしょうか。

配列は、要素と要素の間に「,」をつけて区分する書き方である事を、思い出して頂ければと存じます。



このようにして、配列の中身に、ハッシュを用いる事が出来るという事が、おわかり頂けたかと思います。

これで、配列とハッシュを組み合わせた、宗祖と宗派プログラムの配列が出来ました。

Rubyで仏教プログラミング:配列の中からハッシュを一つだけ取り出す

それでは、配列の中に入っているハッシュを、一つだけ取り出してみましょう。

今回は、一遍上人にお出まし頂くとしましょうか。



配列に格納されている要素の中から、一つだけを取り出したい場合には、配列変数の後ろに「[取り出したい要素のインデックス番号]」をくっつければ、取り出せます。

配列の中身が、単独の要素(「1」とか「”文字列”」とか)であろうが、ハッシュであろうが、書き方は同じです。

実際に書いてみると、こうなります。






出力結果が、次の画像の通りです。






まず、「一遍上人、時宗」は、インデックス要素の何番目かを確認します。

ここでは、2番目の要素である事が分かります。



次に、putsメソッドを使って出力する際、配列の要素を出力する時の書き方で書きます。


puts jodokyo[2]



このように書けば、「jodokyo配列変数の中にある、インデックス番号2の要素を出力する」という意味になり、実行すると、インデックス番号2の要素が出力されます。

今回は、jodokyo配列変数のインデックス番号2の要素は、「{name: :一遍上人,school: :時宗}」ですから、これが出力されたわけです。



ちなみに、一遍上人は「遊行上人(ゆぎょうしょうにん)」とも呼ばれていて、念仏行脚にて各地を歩かれた方です。

配列の要素であるハッシュからキーに対応した値を取り出す

次に、配列の要素であるハッシュの中から、それぞれのキーに対応した値だけを取り出す、という事をやってみましょう。

ハッシュの中にある値を取り出したい場合、「ハッシュ[キー]」とすれば、ハッシュ中にあるキーに対応した値を取り出せます。



今回も、一遍上人にお出まし頂くとする出力をしてみましょうか。

この場合、まずは配列の中にある一遍上人にまつわるハッシュを、一旦抜き出すとやりやすくなります。



ここでは、jodokyo配列のなかから、一旦一遍上人のいらっしゃるハッシュを、変数を新しく用いて、そこに代入します。



一遍上人がいらっしゃるハッシュは、jodokyo配列のインデックス番号2の要素ですから、次のように書きます。


syuha = jodokyo[2]



新たに「syuha」という変数を用意して、そこにjodokyo配列の中にある、インデックス番号2の要素を代入します。



次に、宗祖の名前だけを取り出したい場合には、ハッシュ中身を出力する時の書き方を用います。

一遍上人のいらっしゃるハッシュは「「{name: :一遍上人,school: :時宗}」です。

言語で解説すると、「(name)というキーに対応した値が(一遍上人)」「(school)というキーに対応した値が(時宗)」です。

ここでは、「name」に対応した値を取り出したいから、次のように書きます。


puts syuha[:name]



これは、syuuha変数にそっくりハッシュが代入されており、ハッシュの「nameキー」の要素を出力しますよ、という事を表しております。



完成形が、こちらの画像の通りです。






出力すると、こうなります。






見事に、一遍上人が表示されました。

同様に、「schoo(宗派)」を出力したい場合は、次のように書きます。


puts syuha[:schoo]



折角ですから、プログラミングらしくしてみると言いますか、文章にして出力してみましょうか。






これを出力すると、このように表示されます。






どうでしょう、プログラミングしているような、そんな感じになりませんかね。

配列の要素になっているハッシュを、eachメソッドを使って順繰りに出力する

最後に、配列の中身になっているハッシュを、eachメソッドを使って、順繰りに出力するプログラムも書いてみましょう。

eachメソッドの使い方については、過去に配列とハッシュの単元で勉強した事柄ですから、その復習ともなる話です。



まず、jodokyo配列に、eachメソッドをくっつけて、変数を用意します。


jodokyo.each do |syuso|



こうすると、jodokyo配列の要素を、「syuso変数」に、順繰りに入れていきますよ、という形になります。



次に、このままでも出力は出来ますが、これだとなんだか味気ないから、もうちょっとプログラムらしく、プログラミングをしている感じが出るようにします。

先ほどの、ハッシュのキーに対応した値を個別に取り出す書き方を用いて、出力してみましょう。

わかりやすく、「(宗祖の名前)は、(宗派の名前)の開祖です。」という文章を出力する事にします。



「jodokyo.each do |syuso|」の解説ですが、「||」の中にある「syuso変数」には、jodokyo配列の要素になっているハッシュが、順繰りに代入されていきます。

ハッシュのキーに対応した値を出力する場合、「syuso[:name]」とすれば宗祖の名前が、「syuso[:schoo]」とすれば宗派の名前が出力できるようになります。



これをひとまとめにした文章にして出力する場合、次のように書きます。


puts “#{syuso[:name]}は、#{syuso[:schoo]}の開祖です。”



こうすると、例えばjodokyo配列の0番目の要素が代入された場合、「法然上人は、浄土宗の開祖です。」と出力されます。



この完成形が、次の画像の通りです。






実際に出力したら、順繰りに宗祖と宗派の名前が次々と表示されます。






これで、配列とハッシュを組み合わせた、宗祖と宗派プログラムの出力まで完成に到りました。



余力がある人は、配列に良人上人と融通念仏宗のハッシュを追加するなどして、色々と試して感触を味わって頂ければと存じます。

Rubyで仏教プログラミングで、仏教と歴史も同時に学ぶ

今回は、配列の中にハッシュを用いた、宗祖と宗派を表示するプログラムを完成させました。



今回の話と共に、以前にお伝えした事柄を復習して頂けましたら、より理解が深まるかと存じます。

こちらで、各々復習したい事柄へ飛ぶことが出来ます。



参照記事:「Rubyで仏教プログラミング総集編|1回目のまとめページ」



今回のRubyで仏教プログラミングは、様々に応用が出来る話で御座います。

これを用いれば、英単語クイズプログラムであったり、仏教用語の学習プログラムも、作る事が出来ましょう。



そうそう、今回は、大來尚順さんが書かれた「英語でブッダ」の智慧をお借りして、宗派の英単語についても、新しく学びましたね。

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

超カンタン英語で仏教がよくわかる [ 大來尚順 ]
価格:864円(税込、送料無料) (2017/5/17時点)





現在は、加筆修正された新書の「超カンタン英語で仏教がよくわかる」の方が、読みやすいかと存じます。

Rubyに限らず、プログラミングは英語とは繋がりが御座いますから、学んでおく事に損は御座らんでしょう。

もっとも、仏教に損得を用いるのは、戒められる事ではありますがね、ここに禅語「両忘」の智慧が御座います。



今回のRubyで仏教プログラミング講座で学んだことを、遊ぶような形で色々とプログラミング・コーディングすることは、上達するコツの一つであります。

例えば、私でしたら先ほど申しました通り、仏教用語クイズを作ってみる、という道が考えられます。



私の場合は仏教ですが、あなたにはあなたの好きな世界が御座いましょう。

その好きな世界をプログラミングしてみる、というのは、遊び心が動機の一つにある事から、楽しくプログラミングを独学習・自習と実践する事にもなります。



楽しくプログラミング出来るから、自然と継続出来る。

継続出来るから、より上達する。



このような良い循環が出来ますれば、宜しい事でありましょう。



今回の話が、あなたのプログラミングライフを充実させる一助になりましたら、大変嬉しゅう御座います。



合掌、礼拝

スポンサーリンク