御参拝、誠に有難う御座います。住職(管理人)の修羅観音です。
Rubyで仏教プログラミングシリーズでは、過去に「配列」と「ハッシュ」について、学んだ事が御座います。
Rubyでプログラムを作る、プログラミングするという場合に、この「配列」と「ハッシュ」を使う事は、多々あるかと存じます。
Ruby on Railsでも、配列やハッシュを使う事が御座いますから、RubyとRuby on Railsを使う人は、必須項目と言えましょう。
この「配列」と「ハッシュ」は、組み合わせて使う事も出来ます。
配列の要素(配列の中身の事)に、ハッシュを用いるという、言うなれば「配列とハッシュの合わせ技」なるものも御座います。
今回は、配列とハッシュの合わせ技として、配列の要素をハッシュにして、仏教に関するプログラムを作ることに致しましょう。
もしかしたら、歴史の教科書で習った事柄でもあるかと存じますから、懐かしい、と思うて頂けるやも知れません。
もっとも、中学高校の歴史の授業では、さらりと流されてしまいそうな単元ではありますがね。
ここで一つ、仏教と歴史を両方学べる入り口として、今回の「配列とハッシュの合わせ技」を、学んで頂ければと存じます。
Contents
Rubyで仏教プログラミング:配列とハッシュのおさらい
今回のRubyで仏教プログラミングは、配列とハッシュの合わせ技を使って、「宗派と宗祖プログラム」を、プログラミングしてみる事に致しましょう。何はともあれ、まずは前提知識として、配列とハッシュのおさらいをしておく必要が御座います。
詳しくは、過去にお伝え致しました、配列とハッシュの話を復習して頂ければと存じます。
参照記事:「Rubyで仏教プログラミング|配列を使って高僧を表示・出力していく」
参照記事2:「Rubyで仏教プログラミング|ハッシュを使って高僧の名前と年齢を表示・出力する」
詳しい内容は、過去の記事を読んで頂くとして、ここではさらりとおさらい程度に復習しておくことにします。
「配列」とは、複数の値を管理するときに用いるもので、配列の中に入っている値のことを「要素」と呼びます。
配列の要素は、文字列や数字を入れて使い、文字列を入れる場合には「”(ダブルクォート)」で囲み、数字の場合はそのまま書きます。
配列は、配列変数を用意して、そこに「[](角括弧)」で囲った中身を代入する形で書きます。
実際に書いてみますと、こんな感じです。
配列は「インデックス番号」が割り振られており、先頭は「0番目」から始まります。
ここ、結構間違えることが御座いますから、「先頭は0番目から」と言う事を、しっかりと覚えて置いて頂ければと存じます。
上の「mojiretzu配列」の「”文字列”」を取り出したい場合には、0番目を指定して出力する事で、取り出すことが出来ます。
一方の「ハッシュ」は、配列のインデックス番号の部分を自分で決める事が出来ます。
ハッシュは、ハッシュ変数に「{}(波括弧)」で囲んだ中身を代入する形で書き、実際に書いてみるとこんな感じです。
ここでは、「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メソッドを使って出力する際、配列の要素を出力する時の書き方で書きます。
このように書けば、「jodokyo配列変数の中にある、インデックス番号2の要素を出力する」という意味になり、実行すると、インデックス番号2の要素が出力されます。
今回は、jodokyo配列変数のインデックス番号2の要素は、「{name: :一遍上人,school: :時宗}」ですから、これが出力されたわけです。
ちなみに、一遍上人は「遊行上人(ゆぎょうしょうにん)」とも呼ばれていて、念仏行脚にて各地を歩かれた方です。

配列の要素であるハッシュからキーに対応した値を取り出す
次に、配列の要素であるハッシュの中から、それぞれのキーに対応した値だけを取り出す、という事をやってみましょう。ハッシュの中にある値を取り出したい場合、「ハッシュ[キー]」とすれば、ハッシュ中にあるキーに対応した値を取り出せます。
今回も、一遍上人にお出まし頂くとする出力をしてみましょうか。
この場合、まずは配列の中にある一遍上人にまつわるハッシュを、一旦抜き出すとやりやすくなります。
ここでは、jodokyo配列のなかから、一旦一遍上人のいらっしゃるハッシュを、変数を新しく用いて、そこに代入します。
一遍上人がいらっしゃるハッシュは、jodokyo配列のインデックス番号2の要素ですから、次のように書きます。
新たに「syuha」という変数を用意して、そこにjodokyo配列の中にある、インデックス番号2の要素を代入します。
次に、宗祖の名前だけを取り出したい場合には、ハッシュ中身を出力する時の書き方を用います。
一遍上人のいらっしゃるハッシュは「「{name: :一遍上人,school: :時宗}」です。
言語で解説すると、「(name)というキーに対応した値が(一遍上人)」「(school)というキーに対応した値が(時宗)」です。
ここでは、「name」に対応した値を取り出したいから、次のように書きます。
これは、syuuha変数にそっくりハッシュが代入されており、ハッシュの「nameキー」の要素を出力しますよ、という事を表しております。
完成形が、こちらの画像の通りです。

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

見事に、一遍上人が表示されました。
同様に、「schoo(宗派)」を出力したい場合は、次のように書きます。
折角ですから、プログラミングらしくしてみると言いますか、文章にして出力してみましょうか。

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

どうでしょう、プログラミングしているような、そんな感じになりませんかね。
配列の要素になっているハッシュを、eachメソッドを使って順繰りに出力する
最後に、配列の中身になっているハッシュを、eachメソッドを使って、順繰りに出力するプログラムも書いてみましょう。eachメソッドの使い方については、過去に配列とハッシュの単元で勉強した事柄ですから、その復習ともなる話です。
まず、jodokyo配列に、eachメソッドをくっつけて、変数を用意します。
こうすると、jodokyo配列の要素を、「syuso変数」に、順繰りに入れていきますよ、という形になります。
次に、このままでも出力は出来ますが、これだとなんだか味気ないから、もうちょっとプログラムらしく、プログラミングをしている感じが出るようにします。
先ほどの、ハッシュのキーに対応した値を個別に取り出す書き方を用いて、出力してみましょう。
わかりやすく、「(宗祖の名前)は、(宗派の名前)の開祖です。」という文章を出力する事にします。
「jodokyo.each do |syuso|」の解説ですが、「||」の中にある「syuso変数」には、jodokyo配列の要素になっているハッシュが、順繰りに代入されていきます。
ハッシュのキーに対応した値を出力する場合、「syuso[:name]」とすれば宗祖の名前が、「syuso[:schoo]」とすれば宗派の名前が出力できるようになります。
これをひとまとめにした文章にして出力する場合、次のように書きます。
こうすると、例えばjodokyo配列の0番目の要素が代入された場合、「法然上人は、浄土宗の開祖です。」と出力されます。
この完成形が、次の画像の通りです。

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

これで、配列とハッシュを組み合わせた、宗祖と宗派プログラムの出力まで完成に到りました。
余力がある人は、配列に良人上人と融通念仏宗のハッシュを追加するなどして、色々と試して感触を味わって頂ければと存じます。

Rubyで仏教プログラミングで、仏教と歴史も同時に学ぶ
今回は、配列の中にハッシュを用いた、宗祖と宗派を表示するプログラムを完成させました。今回の話と共に、以前にお伝えした事柄を復習して頂けましたら、より理解が深まるかと存じます。
こちらで、各々復習したい事柄へ飛ぶことが出来ます。
参照記事:「Rubyで仏教プログラミング総集編|1回目のまとめページ」
今回のRubyで仏教プログラミングは、様々に応用が出来る話で御座います。
これを用いれば、英単語クイズプログラムであったり、仏教用語の学習プログラムも、作る事が出来ましょう。
そうそう、今回は、大來尚順さんが書かれた「英語でブッダ」の智慧をお借りして、宗派の英単語についても、新しく学びましたね。
|
現在は、加筆修正された新書の「超カンタン英語で仏教がよくわかる」の方が、読みやすいかと存じます。
Rubyに限らず、プログラミングは英語とは繋がりが御座いますから、学んでおく事に損は御座らんでしょう。
もっとも、仏教に損得を用いるのは、戒められる事ではありますがね、ここに禅語「両忘」の智慧が御座います。
今回のRubyで仏教プログラミング講座で学んだことを、遊ぶような形で色々とプログラミング・コーディングすることは、上達するコツの一つであります。
例えば、私でしたら先ほど申しました通り、仏教用語クイズを作ってみる、という道が考えられます。
私の場合は仏教ですが、あなたにはあなたの好きな世界が御座いましょう。
その好きな世界をプログラミングしてみる、というのは、遊び心が動機の一つにある事から、楽しくプログラミングを独学習・自習と実践する事にもなります。
楽しくプログラミング出来るから、自然と継続出来る。
継続出来るから、より上達する。
このような良い循環が出来ますれば、宜しい事でありましょう。
今回の話が、あなたのプログラミングライフを充実させる一助になりましたら、大変嬉しゅう御座います。
合掌、礼拝