Rubyで仏教プログラミング|getsを使って24時間不断念仏会の修養証プログラムを作る

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



Rubyで仏教プログラミング、今回は「getsメソッド」に焦点を当てます。
今回使います、この「getsメソッド」は、Rubyにおいては、外部から任意に文字や数字を入力する時に使われるメソッドです。

このgetsメソッドを使いこなす事が出来れば、簡単な英単語クイズも作る事が出来ます。



今回のRubyで仏教プログラミングでは、近日に浄土宗の別時念仏会「24時間不断念仏会」行われるという事もありまして、24時間不断念仏会にまつわるプログラムを作ると致しましょう。

24時間不断念仏会では、6時間以上お念仏に励むと、「修養証」を頂く事が出来ます。

この事を、Rubyというプログラミング言語にて、getsメソッドを用いた形で、プログラムを作ってみることと致します。



これを機会に、別時念仏会に参加して頂いて、お念仏を共に、という事を、ちゃっかり考えていたりしましてね。

もちろん、強制する気は毛頭御座いませんが、これで仏縁を結ばれて、救いの光を頂けたら、嬉しゅう御座います。

スポンサーリンク

Rubyで仏教前提知識:getsメソッド

今回の「Rubyで仏教プログラミング」を進めるにあたりまして、まずは「getsメソッド」と、24時間不断念仏会で頂ける「修養証」について、簡単におさらいしておきます。

この前提知識が無いと、話が進みませんからね。



まずは、今回使いますメソッド「getsメソッド」について。



getsメソッドは、標準入力・予め入力してある文字や値を取り出す機能を持つメソッドです。

また、キーボードからの直接入力をする際にも、getsメソッドを用います。

例えば、あなたもパソコンを使っていて、「~を入力して下さい」と表示されて、その指示通りにキーボードを叩いた、という経験はありませんかね。



辞書的な解説をしますと、getsメソッドとは「キーボードから直接入力した値を、文字列で返すメソッド」です。



また、getsメソッドが返すのは文字列ですから、整数を使ってプログラミングしたい場合は、getsの後に「.to_i」と、整数に変換するメソッドをくっつける必要があります。

今回は、整数を直接入力する事になりますから、「getsメソッド」と「to_i」を、覚えて置いて頂ければと存じます。

Rubyで仏教前提知識:24時間不断念仏会の「修養証」について

次に、24時間不断念仏会について。

これについては、詳しい内容はこちらで解説しております。



参照記事:「増上寺の第12回24時間不断念仏会(2017年)|アクセスや駐車場等の諸注意を経験者かく語りき」



興味を持たれましたら、一度参加されると宜しいかと存じます。

同時期に、「向源」という仏教行事も開催されておりますから、連休最後に仏教に触れるというのも、なかなかに宜しいのではないか、と、勝手に思うておる在家仏教者に御座います。

増上寺の、大きなお寺の雰囲気・空気を味わうというのも、日常では味わえない情緒もありましょうからね。



24時間不断念仏会に参加する場合、6時間を超えるお念仏の行をされますと、「修養証」を頂く事が出来ます。

もちろん、自慢するためのものではありませんが、「ああ、お念仏したんだなあ。」と、その事を自身で味わうきっかけになるかとは思います。

この「修養証」は、6時間以上の参加が条件として御座いますから、6時間以上か以下か、という条件分岐のあるプログラムが書けそうですね。



そういうわけで、今回は「6時間以上か以下か」という条件分岐がある事を踏まえて、getsメソッドを用いたRubyで仏教プログラミングをしてみましょう。
スポンサーリンク

Rubyで仏教プログラミング:getsメソッドを使った「24時間不断念仏会修養証プログラム」

それでは、Rubyで仏教プログラミング、24時間不断念仏会の修養証プログラムを、getsメソッドを使って実際に書いてみましょう。



なにはともあれ、まずは24時間不断念仏会に、何時間参加したか、と言う事を、最初に問うておきます。

この場合、最初にputsメソッドを使って、質問を投げかけておきましょうか。


puts “24時間不断念仏会の参加時間を、0から24までの整数で入力して下さい”



このように書いておけば、直接入力をする人は、「0から24までの整数で、自分が参加した時間を書けばいいのだな。」と、把握して頂けましょう。

まあ、私の様なひねくれ者は、範囲外の数字を入れて、色々試したがったりしますがね、その対策については後ほどのお楽しみに。



宣言文を終えたら、次に条件分岐の式で使う変数を用意します。

この場合は、お念仏をするわけですから、変数を「nenbutzu」と致します。

そして、この変数「nenbutzu」に代入する値を、「gets」として、直接入力した値が代入されるようにします。



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


nenbutzu = gets.to_i



これで、nenbutzuの変数に、直接入力した整数が代入されるように出来ました。



ここで、最初の方にお伝えした、getsメソッドの基礎知識・前提知識を思い出して頂ければと存じます。

getsメソッドは、返す値は文字列ですから、0から24の整数を入力しても、返してはくれません。



試しにやってみますと、こうなります。






エラーになってしまっている事が、おわかり頂けるかと存じます。

これは、文字列ではなく整数を直接入力したためです。

エラーに「String」とありますが、これは文字列の事です。



そこで、整数を入力できるようにする時には、「to_iメソッド」を用いて、整数に変換する機能を持たせます。



これを踏まえて、24時間不断念仏会に参加して、修養証を頂けるか否かの条件分岐式を書いて、プログラムを調えて参りましょう。

ひとまずは、ここまでは作って頂いているかと存じます。


puts “24時間不断念仏会の参加時間を、0から24までの整数で入力して下さい”

nenbutzu = gets.to_i



条件分岐は、「6時間以上」と「6時間未満」という条件式を使います。

今回は、if文ですっきりと書く事が出来そうです。



まず、修養証を頂く事が出来る、「6時間以上」の参加時間に当てはまる条件は、このように書きます。


if nenbutzu >= 6



そして、この条件の人には、修養証を貰う事が出来ますよ、という事を示す文章を、表示しておきましょう。


if nenbutzu >= 6
puts “6時間以上のご参加、お疲れ様です。修養証をどうぞ、南無阿弥陀仏”



ここまで書けば、後は該当しない人は修養証を貰えない、という事をプログラムするだけです。

if文は、このようにまとめられます。


if nenbutzu >= 6
puts “6時間以上のご参加、お疲れ様です。修養証をどうぞ、南無阿弥陀仏”
else
puts “6時間未満ですから修養証は無し、南無阿弥陀仏”
end



修養証プログラムの全容は、このようになります。


puts “24時間不断念仏会の参加時間を、0から24までの整数で入力して下さい”nenbutzu = gets.to_i

if nenbutzu >= 6
puts “6時間以上のご参加、お疲れ様です。修養証をどうぞ、南無阿弥陀仏”
else
puts “6時間未満ですから修養証は無し、南無阿弥陀仏”
end


これで、ひとまずは完成しました。

Rubyで仏教プログラミング:24時間不断念仏会修養証プログラムを調える

これで、ひとまず24時間不断念仏修養証プログラムは、表現するに到りました。



しかし、このままでしたら、24以上の数値を入力しても、修養証を貰える、というプログラムになってしまっております。

24時間までのお念仏の会なのに、30時間と入力しても、500時間と入力しても、修養証を頂ける事になってしまいますがな。

(お念仏の行は、別時念仏会だけでなく日常でも続くのですが、今回の話においては、また別の話と言う事で)



実際にやってみますと、このように出力されます。






500時間以上の参加というのは、24時間不断念仏会に限った事として言えば、あり得ない数値なのですが、このプログラムでは、まかり通ってしまいます。

こうならないために、きちんと条件分岐を調える必要があります。



そこで、if文をきちんと調えて行くと致しましょう。



まず、24時間不断念仏会に参加して、修了証を頂けるのは、「6時間以上24時間以下の参加時間」とする条件分岐を書きます。

そして、次にelsifにて、「6時間未満」の参加者は、修養証を貰えないという条件も記しておきましょう。

最後に、それ以外の整数を入力したら、該当しない数値であるという事を示す文章を出力して、注意を促します。



これをプログラミングすると、次のようになります。


puts “24時間不断念仏会の参加時間を、0から24までの整数で入力して下さい”nenbutzu = gets.to_i

if nenbutzu >= 6 && nenbutzu <= 24
puts “修養証をどうぞ、南無阿弥陀仏”
elsif nenbutzu < 6
puts “修養証は無し、南無阿弥陀仏”
else
puts “時間外、0から24までですぞ!”
end



if文を調える前と後で比較して頂くと、その違いを把握して頂けるかと存じます。

調える前が、この画像です。






調えた後が、この画像です。






どうでしょう、if文の違いを把握して頂けましたでしょうか。

if文の最初で、「&&」を用いて、「6時間以上かつ24時間以下」という内容をプログラミングしております。

この「&&」は、「~かつ~」という意味の条件式です。

体育坐りしている人が、二人並んでいる、という風にも見えますがね。



そして、次のelsifでは、6時間未満の参加者は、修養証を貰えない、という事を表しています。

最後にelseにて、上記のifとelsifに該当しない条件の整数を入力すると、注意を施す文章が出力される手筈を書いております。



実際に直接入力をして実行すると、こんな感じです。






これで、24時間不断念仏会修養証プログラムの完成です、お疲れ様です。



合掌、南無阿弥陀仏。

Rubyでプログラミングするなら、getsメソッドは覚えておきましょう

今回は、24時間不断念仏会で修養証を頂けるかどうか、条件をif文で調えていき、参加時間をgetsメソッドとto_iメソッドを組み合わせてプログラミング致しました。



Rubyでプログラミングをする際、getsメソッドを使いこなせれば、外部からの入力という機能が使えます。

また、Paizaラーニング等の学習サイトにおいては、標準入力、予め入力された値を取り出してプログラミングの問題をとく、という形式を採用しております。

必然的に、getsメソッドを使う事になるわけですね。



ゆえに、今回使いましたgetsメソッドは、覚えて置くとプログラミングの幅も広がりますし、学習サイトの問題も説く事が出来ます。

Paizaラーニングでは、転職活動や採用の評価にも、問題をどれだけといているか、という事が響いてくるから、使いこなせると転職にも有利になりましょう。



また、直接入力有りきの簡単なクイズウェブアプリ開発も出来るようになります。

私は、Progateにて、旧Rubyコースで英単語クイズを作った事もありまして、そこでgetsメソッドを使っておりました。

ちなみに現在Progateは、Rubyコースがリニューアルされており、学びやすくなっております。



参照記事:「プログラミング独学習にProgate(プロゲート)が捗る|だからこそ感じるスクールの有り難さ」

参照記事2:「ProgateのRuby on Railsコースが更新・リニューアル|プログラミング独学習が捗る!」



そして、最後に念仏者・在家仏教者として。



今回のRubyで仏教プログラミングと関連がある、お念仏にまつわるプログラムは、こちらでもお伝えしております。



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

参照記事2:「Rubyで仏教プログラミング|while文で三唱礼・一千礼拝行を表現する」





24時間不断念仏会では、お念仏が始まってから24時間、必ずお堂に誰かがお念仏しております。



今回はプログラミングの話が中心ではありましたが、これがきっかけとなり、同じ時空間にて、お念仏に励む仏縁を賜る事が出来ましたら、大変嬉しゅう御座います。



十念、合掌、礼拝

スポンサーリンク