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

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



私は、この文章を投稿している時期に、「作りながら学ぶRuby入門第2版」を用いて、Rubyでプログラミングを学習しております。
有り難い事に、作りながら学ぶRuby入門第2版がAmazon春のセールで、電子書籍版が半額でしてね。

それで、このタイミングを逃すまいと購入し、実際にCloud9を用いて、プログラムを書いてRubyプログラミング実践を進めております。



そのような最中、ふと、私は仏教を学びながら、プログラミング独学習も進めている、ということもあり、今回話しますことを実践するに到りました。

私は以前、プログラミングを文系出身者でも、苦手意識を緩和しながら独学習するコツと言う事で、こんな話をしておりましたからね。



参照記事:「文系がプログラミングは苦手だという先入観から離れて、苦手意識を克服する方法」



以前話しました事を、きちんと私もやっておりますよ、という事を証明する、良い機会です。



今回お話し致します事は、Rubyの繰り返し処理と条件分岐、timesメソッドとif文を用いた話です。

プログラミング初学者・初心者の方は、「こういう学び方や実践方法があるんだ」という事例として、楽しんで頂ければと存じます。

仏教にまで興味を持って下されば、なんて、あわよくば的な事を考えてはおりますが、少なくとも、プログラミングを楽しみながら継続するきっかけとなりましょう。

スポンサーリンク

Rubyで仏教

今回は、「Rubyで仏教」と題しまして、Rubyというプログラミング言語を使ったプログラミング・コーディングで、浄土宗の勤行や儀式を表現致します。

自分で「Rubyで仏教」と題してみて、大來尚順和上の「英語でブッダ」を、思い出したり。



今回、Rubyで仏教、浄土宗のお念仏を表現するのですが、用いるのはtimesメソッドif文です。

Rubyで使う「times」

「timesとは、ifとはなんぞや?」という方のために、少しだけ説明致します。



Rubyで使う事がある、メソッド(方式、方法のこと)と呼ばれるものに「times」が御座います。

「times」とは、繰り返し処理をする時に用いられるメソッドで、timesの前に数字とドットを付けて、後にdoと|ブロックパラメータ|を入力する、という書き方で使用されます。

||の間に「i」を入れていますが、この「i」は「ブロックパラメータ」と呼ばれるものです。



例えば、0から9までを表示したい場合、このように書きます。
10.times do |i|
puts i
end

これを実行すると、0から9が出力されます。

繰り返し処理を終える事を、きちんと宣言しないとプログラムが動きませんから、最後に必ず「end」を書きます。

私もよくやるのですが、最初の頃は「end」の付け忘れをしてしまいがちですから、確認するようにしましょう。



プログラミングにおいて、配列等もそうですが、始まりは0からです。

1から始めたい、入力した数字通りにしたい、という場合は、次のように書きます。
10.times do |i|
puts i + 1
end

これで、1から10が表示されます。



これが、timesの基本的な説明です。

Rubyで使う「if」

続いて、「if」の解説です。



ifは「もしも」という日本語訳通り、「もしも何何なら、こういう処理をする」という意味で、条件分岐処理をする時に用いられます。

条件分岐は、その他に「case文」もあるのですが、今回は複雑で幾つも分岐するプログラムを書くわけではありませんから、if文で進めます。



if文の書き方の基本は、次の通りです。
i = 1
if i == 1
puts “iは1です”
else
puts “iは1ではありません”
end

「i == 1」とは、「iは1と等しい」という意味であり、この条件に合致していると、「iは1です」が出力されて、違っているなら「iは1ではありません」が出力される、というプログラムです。

この「i」「変数(へんすう)」と呼ばれるもので、それについたは後述致します。

上の例では、「i = 1」ですから、「iは1です」が出力・表示されます。



もしも、ご自身で試せる環境が御座いましたら、iを2や3に変えて、実験されると良いでしょう。



今回は、このif文と、timesメソッドを用いて、いよいよRubyで仏教を表現します。

スポンサーリンク

Rubyで仏教:南無阿弥陀仏を10回称える「十念」を表現してみた

それではいよいよ、Rubyで仏教と題しまして、浄土宗の勤行でも、別時念仏会でも、みんなで同じくして称えるお念仏、「十念」をプログラミングしていきます。

題して「十念プログラム」です。



まず、「十念」とはなんぞや、という話ですね。



「十念(じゅうねん)」とは、南無阿弥陀仏(なむあみだぶつ)を10回称えるお念仏の形式です。

称え方は、1回目から8回目までは「なむあみだぶ」と称え、9回目だけ「なむあみだぶつ」と「つ」を最後に付けます。

そして、最後の10回目は「なむあみだぶ」と、1回目から8回目と同じ形で称えます。



「9回目だけ(なむあみだぶつ)、後は(なむあみだぶ)」とは、なんとも繰り返し処理と条件分岐のプログラミング練習に相応しいではありませんか。



それでは、早速参りましょう。



まず、南無阿弥陀仏を10回繰り返すわけですから、回数が決まっている繰り返し処理で使い易いtimesメソッドが便利です。
10.times do |i|
puts “なむあみだぶ”
end

10回繰り返す基本の形は、これで完了しました。



でも、これでしたら「なむあみだぶ」が10回表示されるだけで、9回目も「なむあみだぶ」になってしまいます。

では、どうすればよいのか。



そこで、if文の出番です。



if文を、timesメソッドの繰り返し処理の中に組み込んで、9回目だけ「なむあみだぶつ」を出力・表示するように調えましょう。

9回目だけ「なむあみだぶつ」と表示されるように、条件を付けるとなると、このようにプログラムします。



「なんでそうするの?」という事が分かるように、「#」を使ってコメントアウト(プログラム処理されないメモなどの事)も入れておきましょうか。

今後、複数人で一つのプログラムを開発する際には、#を使ったコメントアウトも使う事になるでしょうから、ここで覚えてしまいましょう。


10.times do |i|
if i == 8 #ここからコメント・メモ、8にしているのは、繰り返し処理が0から始まるから
puts “なむあみだぶつ”
else
puts “なむあみだぶ”
end
end



これで、9回目だけが「なむあみだぶつ」と出力・表示され、1回目から8回目と10回目は「なむあみだぶ」と表示されます。



「今、何回目?」と迷わないため、繰り返している回数も表示してみましょうか。

Rubyでは「puts」が、プログラムを表示・出力するメソッドです。

JavaScriptでしたら、「console.log」に該当します。



putsを用いる場合、出力したいものを”(ダブルクォート)で囲むと、日本語も出力できます。

そして、“(ダブルクォート)内では、#{}という記号を用いれば、#{}の中で式展開(計算したり変数を使えたり)出来ます。



この機能を利用すれば、「今、何回目の南無阿弥陀仏?」も、表示出来ますよ。
10.times do |i|
if i == 8
puts “なむあみだぶつ:#{i + 1}”
else
puts “なむあみだぶ:#{i + 1}”
end
end

はい、これで十念のプログラムが完成しました。



試しに、これをご自身の実行環境で実行してみると、おわかり頂けるかと存じます。

実行すると、以下の枠内と同じ出力がなされるかと存じます。

実行環境参照:「https://repl.it/languages/ruby(無料の実行環境)」
なむあみだぶ:1
なむあみだぶ:2
なむあみだぶ:3
なむあみだぶ:4
なむあみだぶ:5
なむあみだぶ:6
なむあみだぶ:7
なむあみだぶ:8
なむあみだぶつ:9
なむあみだぶ:10



では、ご一緒に。



合掌、同唱十念。

Rubyで仏教:変数を使った十念プログラムを作ってみた

上で作った「十念プログラム」を、もう少しプログラミングっぽくしてみると言いますか、もう少し便利な機能を学びながら、別の書き方もお伝え致します。



私は上で、#{}の説明をした時に、「変数(へんすう)」という言葉を用いましたね。

変数とは、プログラミング・コーディングをする上では、外せない要素です。



Rubyでは、変数は小文字のアルファベットか、_(アンダーバー)を用いて使うものであり、「左辺の変数に、右辺の数値や文字を代入する」という使い方をします。



例えば、「namuamidabu」という変数に、「なむあみだぶ」を代入する、を表現すると、こうなります。
namuamidabu = “なむあみだぶ”

そして、十念では9回目が「なむあみだぶつ」でしたね。



そこで、9回目は、このように書くとしましょうか。
namuamidabu9 = “なむあみだぶつ”

これで、二つの変数が使えるようになりました。



では、この変数を用いて、改めて十念プログラミングをしてみると、こんな感じになります。
namuamidabu = “なむあみだぶ”
namuamidabu9 = “なむあみだぶつ”
10.times do |i|
if i == 8
puts “#{namuamidabu9}:#{i + 1}”
else
puts “#{namuamidabu}:#{i + 1}”
end
end

まず、冒頭で変数を用いて、変数を使える形に調えます。

次に、10回繰り返すtimesメソッドを用いて、if文で条件を指定します。



では、表示・出力には変数を用いてみましょう。



putsの後に、”(ダブルクォート)で挟まれた部分では、#{}を使えば式展開、計算できたり変数を表示出来ますから、この機能を使います。

#{namuamidabu9}で、namuamidabu9に代入されている「なむあみだぶつ」が出力され、わかりやすく「:」で区切った後の#{i + 1}で、唱えて何回目か、が出力されます。

このプログラムを実行すると、出力結果は、変数を用いる前の結果と同じです。



今回は、以下に出力結果を表示しませんが、折角ですから、これも一つの仏縁という事で、一緒にお念仏しましょう。



合掌、同唱十念。

Rubyで仏教のように、自分の得意分野や興味・関心がある事をプログラミングで表現するという楽しみ

今回は、「Rubyで仏教」と題しまして、Rubyというプログラミング言語を用いて、仏教を表現してみました。



一見すると、「プログラミングと仏教って、関係なさそう」と、思われるかも知れません。

確かに、パッとみただけでは関係なさそうに見えるかも知れません。

しかし、共通項目を見出したり、「関連づける」という事は可能です。

実際、今回はその事を証明する話にもなったことで御座いましょう。



そしてこれは、あなたが「プログラミングと、全然関係無い世界にいたから、苦手だ」という、苦手意識の緩和にも繋がります。



参照記事:「文系がプログラミングの苦手意識を克服する具体的な2つの方法|仏教者である私の場合」

参照記事2:「プログラミングを独学で勉強しながら気づいた仏教の話」



今回は、Rubyで仏教という事で、宗教儀礼であったり、毎日させて頂いている勤行を、プログラミングする事で、繋げてみました。

実は現段階で、宝蔵菩薩が阿弥陀如来になられるまでのプログラムも、考えております。

その話は、また別の機会にするとして。



今回用いました、Rubyというプログラミング言語、そして変数やtimes、if文などについては、Progate(プロゲート)で無料で学べる範囲の事です。



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

参照記事2:「プログラミング独学勉強法|サイトはProgate(プロゲート)活用中、もの凄く捗ります」

参照記事3:「ProgateでRubyとRailsのプログラミング独学習から次の段階へ|いきなりスクールに通う前に」



無料で学べる基礎部分だけでも、こういうプログラムを作る事が出来ます。



また、無料で学べて、しかも「実は、こういう事をプログラミングしてみたいんですけど」と言う場合、ProEngineer(プロエンジニア)のように、近くに相談出来る善知識がいる環境であれば、なお捗ります。



参照記事:「ProEngineer(プロエンジニア)が完全無料で終活支援ありとな!夏休みや休職中のプログラミング学習に」

参照記事2:「無料のプログラミングスクール(年齢制限あり)がいかす|ProEngineer(プロエンジニア)とテックキャンプ」

参照記事3:「ProEngineer(プロエンジニア)のプログラマカレッジ|3つのメリットと注意点なる条件について仏教者の視点から」
ProEngineer(プロエンジニア)のプログラマカレッジは、Rubyではなく、JavaとPHPではありますが、繰り返し処理や条件分岐処理の考え方は共通しております。

JavaとPHPを学んでからRubyに触れると、「Javaよりも少ない行数でプログラミングできる」と、感じられます。

実際に私も、ProgateでJavaの基礎コースも終えておりますが、このように感じましたからね。



これらの環境を十二分に活用し、ある程度学んだ段階から、今回私がやってみたように、実際にアウトプット(実践・出力)することで、確かな力となりましょう。

その時は、私の場合は仏教や宗教儀礼を表現しましたが、あなたの好きな世界、得意な分野を表現してみると、楽しみながらプログラミングを学び実践する事が出来ます。

私も、「十念をプログラミングする、Rubyで書くと、こういう言い回し・表現になるんだ」と、楽しみながら作っておりましたからね。



駐車場の警備経験があるなら、「駐車場が空車か満車か、をプログラミングする」とか、本屋なら「入荷した本の在庫数をカウントして、売り切れを知らせてくれるプログラムを作る」など、色々と考えられます。

これは、自分が好きなことと、プログラミングの両方が理解出来る、よい御縁になるかと存じます。



今回の話が、プログラミングに尻込みしている方にとって、「ああ、こんな勉強や独学習の方法もあるんだ」「これなら、楽しそう」「笑いながらも実践力が付く」と感じて頂ければ、嬉しい限りです。



合掌、礼拝

スポンサーリンク