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

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



前回は、Rubyで仏教プログラミングと言う事で、真宗・浄土真宗の勤行時に称えられる「正信念仏偈(正信偈)七高僧プログラム」を、配列を使って作りました。
前回のプログラムは、配列とeachメソッドを使って、順繰りに七高僧に登場して頂く、という内容です。

「あ、この人、世界史や日本史で勉強したことある」という人も、いらっしゃるやもしれません。



法然上人については、鎌倉時代で習った人もいらっしゃるかと存じます。

歴史の授業が好きな人で、更に仏教史を少しかじったことがある人でしたら、釈尊(お釈迦様、ゴータマ・ブッダ)の没年齢も、ご存じかもしれませんね。

これは結構有名な話だとは思いますが、釈尊は食中毒で、80歳でお隠れになったという話が伝わっております。



そこで、今回は歴史の豆知識的な話と言う事で、高僧がお隠れになった年齢を、「ハッシュ」というものを使って、表示・出力していくプログラムを、プログラミングしていくと致します。



Rubyでは、配列と共にハッシュもよく使われます。

仏教の歴史に触れながらRubyを学ぶ「Rubyで仏教プログラミング」にて、Rubyプログラミングと仏教を同時に学びましょう。

スポンサーリンク

Rubyで仏教プログラミングの前提知識:高僧と没年齢(お隠れになった年齢)

これから、Rubyでよく使われる「ハッシュ」について、具体例と共に学んで行くわけですが、ここで前提知識をお伝え致します。



何はともあれ、仏教の高僧と、お隠れになった年齢・没年齢について、さらりとお伝えしておきますね。



今回は、あまり多すぎても混乱しますから、ハッシュの基本として、3人の高僧に登場して頂きます。

そのお三方は、「釈尊」「法然上人」「親鸞聖人」に致します。



釈尊は、冒頭で申し上げました通り、お隠れになった年齢は「80歳」です。

法然上人は「80歳」で、親鸞聖人は「90歳」です。



ちなみに、真宗大谷派のお坊さんから伺った話によれば、法然上人と親鸞聖人が生きられた時代は、平均寿命が30歳から40歳か、それくらいだったそうですよ。

タイムマシンがなければ、真偽を完全に立証できませんし、確かめようはありませんが、この平均寿命が本当だったとしたら、法然上人も親鸞聖人も、かなりのご長寿であったと言えましょう。



医療技術がそれほど発達しておらず、しかも暖かい地域で伝染病などの危険も多かったであろう、釈尊が生きられた時代と土地を考えると、釈尊もかなりの年齢まで生きられたという感じが致します。

21世紀であっても、お三方ともご高齢ではあるなあ、と、改めて思うところで御座います。



今回は、Rubyのハッシュを使ったプログラミングにおいて、このお三方「釈尊」「法然上人」「親鸞聖人」に、ご登場願うことに致します。

Rubyで仏教:ハッシュを使ったプログラミングの基本

それでは、いよいよRubyで仏教、ハッシュを使ったプログラミングを始めていきます。



まず、「ハッシュ」について。



「ハッシュ」は、「配列」と似ております。

違いは、もの凄く大雑把かつ乱暴に申し上げますと、配列では0から始まる「添字」の部分を、ハッシュでは「自分で決める、名付ける事が出来る」という特徴が御座います。



例えば、「高僧配列」と題しまして、配列の中に高僧の名前を入れると、こうなります。


monks = [“釈尊”,”法然上人”,”親鸞聖人”]



この場合、先頭の0番目が釈尊、1番目が法然上人、ということになります。

この「0番目」のところを、自分で名付けることが出来るというのが、ハッシュと配列の違いです。

この特徴を使うと、「”(任意のキー)”は”(対応する値)”である」という表現も出来て便利でして、Rubyのプログラミングではよく使われます。



その事を踏まえますと、高僧とお隠れになった年齢を、ハッシュを使ってまとめることが出来るのです。

具体的には、こんな感じで書いていきます。


monks = {“釈尊” => 80, “法然上人” => 80, “親鸞聖人” => 90}



ハッシュの書き方の基本は、{}という波括弧の中に、「キー」「値」を書いていきます。

上の場合ですと、monksという変数に、ハッシュを代入している事になります。



そして、{}の中にある「”釈尊”」「”法然上人”」「”親鸞聖人”」が「キー」で、キーの後に「=>」を書き、その後にある「80」「80」「90」が「値」です。

「”釈尊”」というキーに対応した値が「80」というわけです。

「=>」は、矢印みたいな見た目ですから、わかりやすいと私は感じておったりするのですがね。



ハッシュの基本的な概念や書き方は、上位の通りです。



ハッシュの中身を個々に出力するときは、配列と同じ要領で「putsメソッド」を使って、表示・出力することが出来ます。


monks = {“釈尊” => 80, “法然上人” => 80, “親鸞聖人” => 90}puts monks



このように書くと、下記のように出力されます。


{“釈尊” => 80, “法然上人” => 80, “親鸞聖人” => 90}



実際に、Cloud9で出力したら、こうなります。



また、「釈尊のお隠れ年齢だけ知りたい」という場合は、キーを指定することにより、対応する値だけを表示させる事が出来ます。


monks = {“釈尊” => 80, “法然上人” => 80, “親鸞聖人” => 90}puts monks[“釈尊”]



実行結果は、こうなります。


釈尊というキーに対応している、「80」という値だけが、きちんと表示されました。



これで、ハッシュの基本的なプログラミングの仕方や出力方法は、おわかり頂けたかと存じます。



ここで、書き方について補足情報を。



ハッシュでは、文字列を入力する際に「:(コロン)」を使って、「シンボル」という書き方で書かれることがよくあります。

今回の例ですと、こういう書き方になります。
monks = {:釈尊 => 80, :法然上人 => 80, :親鸞聖人 => 90}
puts monks[:釈尊]



書き方がシンボルに変わっただけで、プログラムの実行結果は同じです。






この方が見た目もスッキリするし、私はハッシュを使う時はシンボルを使うようにしております。

ここら辺は、お好みで使われるとよいでしょう。
スポンサーリンク

Rubyで仏教ハッシュ編:高僧とお隠れになった年齢を順繰りに表示していく

配列の話では、「eachメソッド」を使う事で、次々と配列の中身を表示・出力することが出来ると、お伝え致しました。

ハッシュも、eachメソッドを使う事によって、ハッシュの中身を次々と表示・出力することが出来ます。

書き方も殆ど同じですが、ハッシュの場合は「キー」と「値」がありますから、それぞれに対応した書き方を要します。



それでは、上で作った高僧ハッシュを基に、eachメソッドで表示していくプログラムを書いてみましょう。


monks = {“釈尊” => 80, “法然上人” => 80, “親鸞聖人” => 90}
monks.each do |key,value|
puts “お名前:#{key}|お隠れになった年齢:#{value}”
end



Wordpressですと、インデント(スペースを使ってわかりやすくする書き方)が使えませんから、Cloud9で書いたコードを、スクリーンショットにて画像にしました。






実行結果は、下の写真のようになります。


お名前:釈尊|お隠れになった年齢:80
お名前:法然上人|お隠れになった年齢:80
お名前:親鸞聖人|お隠れになった年齢




このRubyプログラミングの中身を、具体的に説明していきますと。



「monks.each do |key,value|」にて、monks変数に代入されているハッシュの中身、キーと値を、順番に「key」と「value」へ入れていきます。

配列では、「||」の部分、「ブロックパラメータ」が、「key」と「value」という、二つ担っていることに注目して頂ければと存じます。

今回は、ハッシュのキーと値に対応していると言う事で、わかりやすく「key」と「value」にしていますが、例えば「|i,a|」としても、プログラムは動きます。

ただ、わかりやすさはプログラミングにおいて大切な要素でありますからね、変数やブロックパラメーターは、出来るだけわかりやすい方が望ましいでしょう。



次に、出力・表示部分ですが、putsの中で「#{key}」と「#{value}」と書く事により、ハッシュのキーと値を表示・出力していくようにしています。



これで、1週目でハッシュの先頭「”釈尊”」というキーと、それに対応する値「80」が表示され、2週目で「”法然上人”」と「80」が表示されていくようになります。

そして、ハッシュの中身が全て表示されたら、実行終了します。

Rubyで仏教ハッシュ編:新たな高僧とお隠れになった年齢を追加する

ここまで、ハッシュの基本的な概念であったり、書き方は把握して頂けたかと存じます。



ハッシュが使えるようになると、例えばRubyで作られた蔵書プログラムや、連絡帳なども作る事が出来ます。

ただ、蔵書プログラムや連絡帳の場合ですと、後から情報・データを追加することもしばしば御座います。

そういった場合を想定すると、ハッシュにも追加する機能があるのかどうか、という事を問う人もいらっしゃいましょう。



配列では、pushメソッドを使う事で、配列に新たに追加することが出来ましたね。

Rubyのハッシュでも、新しくキーと値を追加することが出来ます。

書き方も単純ですから、すぐに覚えて頂けるかと存じます。



今回は、monksという変数に、お三方の名前とお隠れになった年齢のハッシュが、すでに作られていますから、新たに高僧の名前とお隠れになった年齢を追加する、という事に致しましょうか。

ここでは、「蓮如上人」と、お隠れになった年齢を追加する事にします。

蓮如上人は、真宗再興の祖と言われているお坊さんで、84歳まで生きられた方だと言われております。

なんとも、昔のお坊様方、長寿ですな。



この場合、ハッシュに「”蓮如上人”」というキーと、「84」という値を追加するから、次のように書きます。


monks[“蓮如上人”] = 84



ハッシュの追加の基本は、「ハッシュの変数[キー] = 値」です。



では、プログラムを実行して、蓮如上人とお隠れになった年齢が追加されているかどうか、確認してみましょう。


monks = {“釈尊” => 80, “法然上人” => 80, “親鸞聖人” => 90}
puts monks
monks[“蓮如上人”] = 84
puts monks



実行結果は、こちらです。


{“釈尊”=>80, “法然上人”=>80, “親鸞聖人”=>90}
{“釈尊”=>80, “法然上人”=>80, “親鸞聖人”=>90, “蓮如上人”=>84}




1番目の「puts monks」では、まだお三方のままです。



そして、その次に「monks[“蓮如上人”] = 84」と、「”蓮如上人”」というキーと「84」という値を追加しています。

ゆえに、2番目の「puts monks」では、「”蓮如上人”=>84」が表示され、きちんと追加されている事がおわかり頂けるかと存じます。



このように、Rubyのハッシュは、配列と同じように、追加したい情報を追加する事が出来ます。

ハッシュを使いこなし、Rubyで色々プログラミングしてみましょう

今回は、Rubyで仏教ハッシュ編、という事で、高僧と、お隠れになった年齢が表示・出力されるプログラミングを致しました。

これから、鎌倉時代や仏教の歴史を鎌倉時代まで学ぶ際に、「あ、そういえば法然上人は80歳まで生きたお坊さんだったな。」と、思い出して頂ければと存じます。



今回使ったハッシュは、Rubyではよく使われますし、Ruby on Railsでも、ハッシュや配列を駆使したWEBアプリケーションも作る事が出来ます。

私は、まだまだそこまで達しておりませんで、「作りながら学ぶRuby入門第2版」を使って、せっせと実践しながら独学習しております。



尚、今回の話は、以前にお伝えしましたプログラミング実践の記事も、併せて学んで頂くことが宜しいかと存じます。

関連しているプログラミング技術でもありますからね。

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

参照記事2:「Rubyで仏教|timesとifで「十念」をプログラミングしてみた」



私は仏教者の自覚がありますから、今回のRubyでハッシュという項目も、仏教の基礎知識を知って頂ける内容に致しました。

あなたが独自にハッシュを使ったプログラミングをされる場合は、例えば「お土産を渡す人と、渡すお土産のハッシュ」を作るのも、面白いかもしれません。


omiyage = {“Aさん”=>”八つ橋”,”Bさん”=>”あぶらとり紙”}



こんな感じで。

ちなみに、これはちゃっかりと京都のお土産を宣伝していたりして。

京都に来られたら、聖護院の八つ橋を、と、宣伝しておきます。



私、実は旧「おたべ」、現「美十」に勤めていたことがありますが、なぜ縁がある「おたべ」ではなく、聖護院八つ橋にしているかは、直接私と会って、尚且つ興味がある人にだけお伝え致しましょう。



合掌、礼拝

スポンサーリンク