御参拝、誠に有難う御座います。住職(管理人)の修羅観音です。
現在、私はRubyを学習し、Cloud9等のサービスを使って実践中であります。
せっせと写経的にコードを書いてみたり、少しアレンジしてRubyでプログラミング独学習を進めているわけですが、幾つかは教科書的な本やサイトを観ないでも、書けるようにはなってきました。
それでも、まだまだではありますがね。
私にとっては、今はRubyのプログラミング独学習も日々のおつとめ、勤行で御座います。
同時に、プログラミングをする上で、こうしてブログにて発信する事も、神里よしとさんから教わって、ちょくちょくと発信させて頂いております。
神里よしとさんについては、以前にお伝えしております。
参照記事:「プログラミングとブログ運営の伝導をして頂きました|神里よしとさんとのSkype対談体験」
参照記事2:「神里よしとさんの良記事|コンサルタントや伝導者としての在り方とブログ運営について学べる」
そのような御縁を賜りつつ、Rubyのプログラミング独学習を、実践有りきで続けておりまして。
今回は、私が学んでいるRubyでよく使われる「配列」と「ハッシュ」について、お伝え致しながら、仏教の知識も受け取って頂く事に致します。
Contents
配列とハッシュを使ったRubyプログラミングの前に:仏教サイドの前提知識
これから、Rubyとハッシュを使って、仏教に関連するプログラミングをしていきます。今回は、「高僧の名前を順番に表示していく」というプログラミングを、Rubyで致しましょう。
その前に、今回の仏教サイドについての前提知識を、さらりとお伝えしておきます。
今回使います仏教からの話は、真宗・浄土真宗の「正信念仏偈(しょうしんねんぶつげ)」です。
「正信偈(しょうしんげ)」と略され、御門徒さん達や真宗僧侶からは「おしょうしんげ」という呼び名で、毎日称えられている偈に御座います。
この正信念仏偈では、「依釈段」という部分から、「七高僧」と呼ばれる高僧達が読まれていきます。
具体的には「印度西天之論家」という部分、インドの話が始まる箇所があるのですが、そこから七高僧が次々と登場していきます。
ご興味を持たれたならば、お近くの浄土真宗寺院や真宗僧侶に、話を聞いてみられると宜しいかと存じます。
ちなみに、私は浄土宗の檀家ではありますが、真宗大谷派の僧侶であられる中島浩彰和上から、スライドを使った正信念仏偈講座の御縁を本山の東本願寺にて教わりました。
正信念仏偈については、以下「正信偈」で統一します。
正信偈では、「龍樹菩薩、天親菩薩、曇鸞大師、道綽大師、善導大師、源信和尚、法然上人」が登場します。
順番もこの通りですから、Rubyでよく使われる、配列を使ったプログラムを学ぶ事に適していると、私は感じましてね。
今回は、配列を使って、七高僧に順繰りに登場して頂くプログラムを、Rubyでプログラミングしていくと致しましょう。

Rubyで仏教プログラミング:配列を使った七高僧プログラム
それでは、Rubyで仏教プログラミングと題しまして、七高僧に登場して頂くプログラムを、配列を使ってこしらえていきます。まず、「配列」について。
「配列」とは、簡単に言うと、引き出しに0から番号が付けられているタンスのようなものです。
この、0番目屋1番目を「添字」といい、「添字」に入れられている値や文字列を「要素」と言います。
例えば、タンスの一番上の引き出しに「0」という添字を付けてあるとします。
その中に、服であったり本であったり、そういった物(オブジェクト)を収納します。
それを、プログラミング言語に翻訳しますと、こんな感じです。
書き方は、左辺に配列の変数「tansu」を用意して、右辺に収納する要素(”本”や”服”の事)を代入していきます。
この場合、「tansu」というタンスの0番目の引き出しに”本”が、1番目の引き出しに”服”が収納されている、ということになります。
これを踏まえて、七高僧配列を作ってみましょうか。
変数は、正信偈ということで「syoushinge」として、右辺に七高僧に入って頂きましょう。
スマートフォンで観られている方は、右辺が途中で改行されているかと存じますが、一行で書いております。
これで、syoushinge配列が完成しました。
Rubyで仏教プログラミング、正信偈:善導大師にお一人で登場願う(値の取り出し)
さて、実は正信偈では、善導大師の部分で、節が変わります。今回は、真宗大谷派の読み方を紹介しておきます。
この動画の、5分から「ぜんどーどくみょーぶっしょーいーいー」と読まれますが、前半部分から節が変わっている事に気がつかれるかと存じます。
そこで、今回は配列から、善導大師お一人に登場して頂くと致しましょう。
まずは配列を用意して、次に配列の中で要素を取り出すプログラムを書きます。
出力、表示させるメソッドは、Rubyでは「puts」と、以前に申し上げましたね。
参照記事:「Rubyで仏教|timesとifで「十念」をプログラミングしてみた」
Rubyの配列は「0」から添字が始まりますから、0番目の要素は龍樹菩薩、1番目は天親菩薩・・・と続きます。
そうすると善導大師は、syoushinge配列の中では、5番目の要素であることがわかります。
そこで、syoushinge配列から善導大師に登場願う場合は、配列の添字としては「4」を指定することになります。
配列から、特定の要素だけを出力する場合、このような書き方をします。
今回の場合でしたら、「puts syoushinge[4]」と書けば、”善導大師”という要素が取り出せる、というわけです。
もしも法然上人に登場して頂きたいならば、「puts syoushinge[6]」と書く事で、法然上人に登場されます。

Rubyで正信偈:七高僧に順番に登場して頂く「配列とeachメソッド」
勤行で正信偈を読み上げると、次々と七高僧の名前を発する御縁を頂く事になりますから、その事をRubyプログラミングで表現します。と、言うわけで、正信偈の七高僧配列が完成したところで、今度は七高僧に、順番に登場して頂く事に致しましょう。
syoushingeという変数に、七高僧の配列が出来ていますから、今度は「eachメソッド」を使います。
eachメソッドとは、変数に代入されている値を、次々と繰り返し処理していくメソッドです。
これ、以前に十念プログラムで、十念をプログラミングしましたが、その時に使った「timesメソッド」と似ていませんかね。
timesメソッドの場合は「繰り返したい回数.times do |ブロックパラメータ|」と書きました。
それと似たような書き方で、配列とeachメソッドの場合は、このように書きます。
syoushingeという配列が代入されている変数に、eachメソッドをくっつけて、「do~end」までのブロックを処理する、というコードを追加しました。
言語化致しますと、syoushingeという変数に入っている要素を、先頭から順番に「monk」というブロックパラメータに入れていく、ということになります。
そして、それをputsにて出力・表示する、ということですね。
実際に実行して頂くと、龍樹菩薩から法然上人まで、順番に表示・出力されていく様子を確認出来ます。
実行環境参照:「https://repl.it/languages/ruby(無料の実行環境)」
(ユーザー登録しなくても使えます、ユーザー登録画面は入力フォーム右上の×ボタンで閉じることが出来ます。)
実行されると、このように表示されるかと存じます。

Rubyで仏教、正信偈:蓮如上人にも入って頂く「配列へ要素を追加する」
ここまで、配列を作って、配列の要素を順番に表示させる、というプログラムを書いてきました。さて、正信偈には七高僧が登場するわけですが、そこに更に高僧を追加する、という事をやってみることに致しましょう。
真宗門徒や僧侶の方には、怒られるかも知れませんが、Rubyの配列を習得するプログラミングの練習と言う事で、ご勘弁頂ければと思います。
法然上人の次に、誰に入って頂こうかと思ったところ、真宗再興の祖と言われている、「蓮如上人」に、高僧配列に入って頂くと致しましょうか。
この場合、配列に追加する方法として、「pushメソッド」を使います。
まず、配列を用意して、そこに「配列の変数.push(追加したい要素)」とすると、配列の最後に、追加したい要素が追加されます。
(「puts “”」は、実行したときに、空行を入れてわかりやすく表示するためのものです。)
これを実行して頂くと、次のように表示されます。
1回目の配列表示は、まだ”蓮如上人”が追加されていない状態です。
そして、2回目に配列が表示されたときに、最後に”蓮如上人”が追加されている事が、確認出来るかと存じます。
pushメソッドによって、syoushinge配列に、きちんと追加されている事が、おわかり頂けるかと思います。

Rubyで仏教や偈文・御経を表現出来る
今回は、Rubyで仏教プログラミングと題しまして、正信偈の七高僧について表現してみました。もしかしたら、真宗門徒やお坊さんからは、「何やってんだ」と、お叱りを受けるかも知れませんが。
ただ、自分の興味があることや、関心のあることと結び付けて、Rubyであったりプログラミングを学ぶと言う見方としては、一つの方法としてありかな、と、勝手に思うておるのですがね。
それに、こうして解説する事で、Rubyやプログラミングと仏教について、同時に理解度を確認しつつ、学ぶきっかけにもなりますし。
と、言い訳してみます。
あなたも、今回の話を踏まえて、自分が得意なこの事柄は、Rubyの配列で表現出来そうだ、というものがありましたら、やってみられると宜しいかと存じます。
そうすることで、Rubyというプログラミング言語と、あなたが得意な事柄への理解も、同時に深まる事で御座いましょう。
そして、発信する事で、「ああ、この説明で分かった!」と、知的救済であったり、同じ道を歩む人の理解を助ける事に繋がる「善き縁」になる可能性がありますからね。
今回の話も、Rubyプログラミングに興味がある人、仏教に関心がある人の、善き縁となりましたら、嬉しゅう御座います。
合掌、礼拝