御参拝、誠に有難う御座います。住職(管理人)の修羅観音です。
Rubyで仏教プログラミング講座も、回数を重ねて参りました。
仏教に関する事柄や、仏事、仏教行事や儀礼をプログラミングしてみると、プログラマーやエンジニアの人には、「ああ、こういうことか」と、理解して頂けるかも、と考えております。
Rubyで仏教プログラミングと題して、今回お送りします事柄は、浄土宗の勤行で称えさせて頂く「三唱礼」を、一千回、三千回と連続して行うという行についてです。
詳しくは後ほどお伝え致しますが、今回はこの「三唱礼・一千礼拝行」を、Rubyでプログラミングしてみましょう。
使うのは「while」文という、繰り返し処理で用いるものです。
これを機縁として、浄土宗ではこのような行をしている、そしてwhile文はこのように書くのか、という事を知って抱ければと存じます。
千回単位の三唱礼に参加出来る形式で執り行って下さる寺院もありますから、これを機会に参加されたら、嬉しく思う念仏者な私で御座います。
と、ちゃっかり宣伝。
Contents
Rubyで仏教・三唱礼・一千礼拝行プログラミングの前提知識
Rubyで仏教プログラミング、今回は「三唱礼・一千礼拝行」をプログラミング・コーディングしていくわけですが、その前に。いつものように、まずは仏事や行について、知って頂くと致しましょう。
浄土宗では、毎日のお勤めで、「三唱礼(さんしょうらい)」を称えさせて頂きます。
「三唱礼」とは、読んで字の如く、礼をしながら三度お念仏をお唱え申し上げる事柄に御座います。
動画を観て頂くと、やり方が一目で分かりますから、まずは動画で学んで頂くと致しましょうか。
これは、増上寺の塔頭寺院・観智院で行われている「三唱礼・一千礼拝行」の様子です。
別のお寺での一千礼拝行は、こちらです。
三唱礼では、「なーむあーみだーぶ、なーむあーみだーぶ、なーむあーみだーぶー」と、お念仏を三回一セットでお唱え申し上げます。
そして、お念仏を称える時に、「五体投地(ごたいとうち)」と呼ばれる礼も同時に致します。
やり方は、動画を観て頂くとわかりやすいのですが、言語化すると、こんな感じです。
まず、一回目の「なーむあーみだーぶ」で、すっと立ち上がり、二回目の「なーむあーみだーぶ」は立ったまま称えます。
三回目の「なーむあーみだーぶー」で、額を地面に付けるくらいに頭を垂れて、手の平を上にしてかざします。
手の平を上にしてかざすのは、阿弥陀仏を手の平でお迎えするという意味があると、お坊さんから教わりました。
複数人で行う際には、導き役のお坊さんが三回目のお念仏の時に、その他の人達が一回目のお念仏を始めます。
そして、導き役以外の人達が3回目のお念仏を称える時、また導き役のお坊さんが一回目のお念仏を始めます。
これをまとまった回数、千回・三千回と続けていきます。
ざっくりとではありますが、これが「三唱礼・一千礼拝行」の解説です。

Rubyで「三唱礼・一千礼拝行」をプログラミングする際に使う繰り返し処理「while文」
続いて、プログラミング方面の前提知識をお伝えしておきます。今回、Rubyで「三唱礼・一千礼拝行」をプログラミング・コーディングしていくわけですが、その時に使うのが「while文」です。
繰り返し処理と言いますと、以前にtimesメソッドを「十念プログラム」で、使いましたね。
参照記事:「十念について」
timesメソッドは、予め繰り返す回数が決められている場合に使える、という話をしました。
今回も、千回であったり三千回と、予め回数は決まっておりますが、ここは一つ趣向を変えて、while文を用いる事に致します。
回数が定まっていない場合の繰り返し処理をする際、while文はよく使いますから、覚えておくと役に立ちます。
と、言いますか、JavaやJavascript等、Ruby以外でも使う繰り返し処理文ですから、プログラミングをするなら、避けては通れないところです。
while文の基本的な書き方は、以下の通りです。
while文を書く際、まずは条件となる式を、「while」から「do」の間に書きます。
上の例では、変数が10以上になるまで処理を繰り返す、という条件の式を書いています。
そして、実行する処理をその下に書き、条件が満たされるまで繰り返し処理をして、条件が整えば、while文を抜けます。
具体的な例文を書くと、こうなります。
このプログラムでは、最初に変数iに0を代入しています。
そして、次のwhile文で、繰り返し処理を抜ける条件式を書きます。
条件式は「iが10以下の場合は、繰り返し処理をする、10より大きくなれば繰り返しを抜ける」という意味です。
次の行では、繰り返している間の処理を書いておりまして、ここでは変数iが繰り返し表示される処理を書いております。
その次の行が、while文を用いる際に非常に大切な事なのですが、次の繰り返しをする前に、変数iに1を加算しております。
i += 1は「i = i + 1」と、変数iに1を足すという意味です。
こうして、繰り返し処理が行われる度に、iに1がどんどんと加算されていき、while文の繰り返し処理を抜ける条件である10より大きい数値に到達する、という寸法です。
以上が、基本的なwhile文の使い方です。
while文を使う際の注意点
while文を使う際に、気をつける事が御座います。それは「無限ループ」です。
今でもあるのだとは思いますが、あなたは「ブラウザクラッシュ:ブラクラ」というのをご存じでしょうか。
ブラウザクラッシュ、通称ブラクラは、無限ループを用いて、ブラウザが無限に開かれて言ってしまい、収集が突かなくなり、フリーズする事もあるという厄介なものです。
2000年代では、ちょくちょく見かけたのですがね、あれは本当に厄介です、PCに負荷を掛ける所業ですからね。
ブラウザクラッシュ・ブラクラほど厄介でなくても、無限ループはPCに負荷を掛けますから、避けたいものです。
while文は、書き間違えたり、i += 1等の加算していく処理を書いておかないと、無限ループに陥ります。
これは実行しないで頂きたいのですが、無限ループに陥るパターンの事例を紹介しておきます。
一つ目が、条件式の書き間違いで、無限ループに陥るパターンです。
もう一度念を押しておきますが、実行しないように。
上の例ですと、iに0よりも大きい間は繰り返し処理をする、というプログラムですが、上の書き方だったら、iは0よりもずっと大きいままです。
iに1を加算していくという処理を書いてはおりますが、1を足していったって、どんどん0より大きくなっていくだけです。
ずーっと条件が満たされっぱなしですから、そりゃいつまでたっても止まりませんがな。
二つ目が、加算文を書き忘れるパターンです。
二つ目の無限ループの例では、iに何も加算されていませんから、いつまでたってもiの数値は1のままです。
したがって、いつまでたってもiが10よりも大きくなったら繰り返し処理を抜ける、という条件に合致することがありませんから、ずーっと繰り返し処理がなされたままです。
お使いの環境によりますが、cloud9で作業されているならば、「ctrl + C」で終了させることは出来ます。
出来ますけれども、出来れば無限ループはしない方が良いかと存じます。
もっとも私は「無限ループは、人の業、六道を輪廻し続けて、涅槃寂静に到らない人の有り様を表している」とも観たりしておるのですがね。
while文の無限ループから、永遠に六道輪廻する者の姿を見出したり。

Rubyで仏教プログラミング:三唱礼・一千礼拝行プログラム
三唱礼と、それを一千回行う「一千礼拝行」と、while文について学んだところで、いよいよ「三唱礼・一千礼拝行プログラム」を完成させます。まず、変数を用意して、1回目から始めましたよ、という事がわかるコードを書きます。
次に、while文を書き始めるのですが、条件式は「1000回まで到達したら繰り返し処理・ループ処理を抜ける」という具合に致します。
「今、何回目か?」という事がわかるように、それと、きちんと声に出して南無阿弥陀仏を三回一セットで称えるため、putsで出力処理を書きます。
最後にwhile文の繰り返し処理を抜けた後、満行したという事を知らせるputsを書くと致しましょう。
完成したプログラムのコードは、以下の通りです。
インデントを付けたわかりやすい表示は、こちらの画像です。

実行すると、最初に「三唱礼・一千礼拝行」と開始を宣言し、その後に1回目から千回目まで繰り返し三唱礼を称えます。
そして、1000回目に到達しますと、while文を抜けて、最後の「満行」の文が実行されて、十念お唱え申し上げて終了します。
実行した画像は、こちらです。


以上が、Rubyで書いた「三唱礼・一千礼拝行プログラム」です。
機会が御座いましたら、「三唱礼・一千礼拝行」に参加されると宜しかろうかと
今回は、「三唱礼・一千礼拝行」という、お念仏を三回一セットで称える事を千回繰り返すプログラムを、Rubyを用いて作りました。もしも、あなたの家の宗派が浄土宗であったり、仏事に興味があったりして参加してみたいという方は、一度参加されるのも宜しかろうと存じます。
是も一つの仏縁、宗教儀礼や仏事、別時念仏会に参加される事で、お念仏の御教えに触れられる良き縁で御座いましょう。
「三唱礼・一千礼拝行」は、途中で休息は設けて頂けるものの、立ったり座ったりと致します。
膝に損傷があったりする場合は、ご無理をなさらぬように、と、注意申し上げておきます。
ちなみに、観智院では5回に分けて、各回二百礼の行です。
事前知識として、十念についても、こちらでおさらいして頂ければ、「同唱十念」と言われた時にも、きちんと十念出来るでしょう。
参照記事:「Rubyで仏教|timesとifで「十念」をプログラミングしてみた」
また、プログラミングについては、times等の繰り返し処理も、while文と一緒に復習しておくと、適切な使い所で使い分ける事も出来るようになります。
参照記事:「Rubyで仏教|timesとifで「十念」をプログラミングしてみた」
参照記事2:「Rubyで仏教プログラミング|配列を使って高僧を表示・出力していく」
参照記事3:「Rubyで仏教プログラミング|ハッシュを使って高僧の名前と年齢を表示・出力する」
今回の話も、仏教に触れると共に、Rubyプログラミングについての理解を深める一助となりましたら、嬉しゅう御座います。
合掌、礼拝