Rubyで仏教プログラミング|defを使ってメソッドを定義する

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



Rubyで仏教プログラミング、今回は「def」を使って、メソッドを定義する、つまり、自分でメソッドを作ると言う事を学びます。



今回、defを使ってメソッドを定義するという、Ruby・Ruby on Railsではよく使われる事柄を、あなたと共に学ぼうと思いましたのは、きっかけが御座いまして。



私は、やまもとりゅうけんさんの僧伽的なサロンにて、プログラミングを学んでおるのですが、その時に「defとメソッド定義」について、改めて復習する御縁を頂きました。

プログラミングを学ぶ、チーム的な場所に顔を出しておる時に、善知識から「こういうのもやってみて頂けませんか?」と、課題を頂いたのですが、その時に、その課題・問いの意味がようわかりませんでしてね。

助言を頂いて、「ああ、defを使う事か。」と判明し、改めて、まだまだだなあ・・・と、思い至ったのが、今回の話のきっかけです。

現在、Progateにて、Ruby on Rails5コースを学び続けておきながら、このていたらく。



と言う事で、私の復習と備忘録に使うという、私の煩悩や都合によるきっかけではありますが、ここに開示する事により、あなたにとってのRuby基礎知識としてお使い頂けたら、幸いに存じます。

それでは、Rubyで仏教プログラミング、参りましょう。

スポンサーリンク

Rubyで仏教プログラミング:仏教側の前提知識「合掌、南無の後に続く文言」

Rubyで仏教プログラミング、defを使ってメソッドを定義するというお題で、お送りします今回。

まずは、いつものように、仏教側・仏教サイドの前提知識から学ぶことにいたしましょう。



今回は、皆さんも葬儀や法要などで、経験したことがあるかと存じますが、合掌した後に、「南無(宗派別の唱える言葉)」を出力するメソッドを、作っていくことに致します。



あなたは、合掌して、「南無(なむ)」という言葉の後、どのような文言を連想されるでしょうか。

この「南無」の後に続けて唱える言葉は、宗派によって変わってきます。



例えば、私は家が浄土宗ですから、法要などでは「合掌、南無阿弥陀仏」です。

浄土系、浄土宗や真宗・浄土真宗でしたら、「南無阿弥陀仏」です。

日蓮宗でしたら、「南無妙法蓮華経」ですね。

禅宗でしたら、「南無釈迦牟尼仏」です。

真言宗では「宝号」と言いまして、「南無大師遍照金剛」「南無興教大師」です。



私は個人的に、「南無大師遍照金剛」という宝号に、うまく言語化できませんが、何らかの魅力を感じていたりします。

なんでしょう、響きが格好良いと感じるのですよ、南無大師遍照金剛に。

「それが分別である、煩悩である、苦の因である」と言われたら、私の凡夫性を改めて思うところに御座います。



「南無(なむ)」という言葉は、すべての唱える言葉の頭にくっついていますが、この「南無」は「お任せします」という意味で認識されているのが、一般的です。

真宗・浄土真宗では、「任せよ」という読み替えをなされていますし、これは非常にありがたい阿弥陀仏の慈悲によるものです。



また、「南無」に共通する事柄として、尊敬・敬いを表す言葉でも御座います。



今回は、南無を論じることが主題ではありませんから、「南無」については、一旦はこのような理解でよろしいかと存じます。



そして、今回のRubyで仏教プログラミングでは、defを使ってメソッドを定義し、「南無(個別の唱える言葉)」を、出力するプログラムを作ります。

そうですね、名前は「南無メソッド」にしましょうか。

Rubyで仏教プログラミング:Ruby側の基礎知識

続いて、Ruby側、プログラミングサイドの基礎知識の話に移りましょう。



Rubyには、そのまま使えるメソッドがいくつもあります。

今までのRubyで仏教プログラミングシリーズでも、幾つかのメソッドを何気なく使ってきましたね。



代表的なメソッドが、「putsメソッド」でしょうか。



putsメソッドは、文字列や数字などを出力するメソッドであり、Rubyというプログラミング言語を学ぶ時に、最初に学ぶことになるメソッドです。

使い方は、「puts “(表示したい文字列や数字)”」と書いて実行することで、出力したいものが出力できます。



実はこれ、「puts(“表示したい文字列や数字”)」と、括弧をつけて書いても、同じ働きをします。

この「()括弧」の中に入っているものは「引数(ひきすう)」と呼ばれるもので、Rubyを学ぶ上では外せない概念です。



試しに、同じように出力されるか、やってみましょうか。

尚、今回からは状況に合わせて、Cloud9とは違う、Rubyが使える装置を使います。



実際にプログラミングしたものと、出力結果を1枚の画像で、まとめて表示してみますね。






はい、putsメソッドに「南無阿弥陀仏」という引数をくっつけて出力すると、出力結果に「南無阿弥陀仏」と、表示されました。

このことを言語化すると、「putsメソッドは、引数の値を出力・表示するメソッドである」と、表現する事が出来ます。



今回は、以上の基礎知識を踏まえて、defを使って「南無メソッド」を作ります。

スポンサーリンク

Rubyで仏教プログラミング本番:defを使ってメソッドを定義する

それでは、いよいよRubyで仏教プログラミング、defを使って「南無メソッド」をプログラミングしていきましょう。



Rubyでメソッドを定義する場合、「def」というものを使います。

defを使っての基本的な書き方は、以下の通りです。


def メソッド名(引数1,引数2・・・)
実行する事となる処理
end



defでメソッドを定義する場合、for文やif文、while文で学んだ時の如く、最後は「end」で閉じます。

慣れてきた頃、私もついつい「end」を忘れてしまって、エラーを出すことがよくありましてね、その体験から、こういう単純ミスはありがちですから、今のうちに戒めるようにしておくと宜しいかと存じます。



基本的な書き方を学んだところで。



今回の「南無プログラム」は、メソッド名をわかりやすく「namu」とします。

また、南無プログラムを実行する際、宗派によって違う言葉を入れたいから、その柔軟性を持たせるために、「引数」も付け加えておきましょう。

引数を設定しておくと、実行時に与えられた引数を参照する事が出来るようになります。



引数を付け加えた書き方は、こうなります。


def namu(syomyo)
end



ここで引数となる変数を指定していますが、「唱名」であることが分かるように、「syomyo」としました。



次に、実行する処理の部分、「def」と「end」の間に書く部分ですね、ここを「(引数)」と出力されるようにプログラミングしていきます。

出力するメソッドはputsですから、putsを使って、このように書きます。


puts “#{syomyo}”



「#{}」という書き方は、以前学んだことがありましたね。



参照記事:「Rubyで仏教プログラミング|#{}と変数を組み合わせて柔軟な入出力を試みる」



putsの引数の中で、「#{変数}」と書く事によって、変数の中身を出力する事が出来ます。

この場合でしたら、「#{syomyo}」とすることにより、実行時に変数の中に代入される引数を、表示させることgできる、という寸法です。



以上のことを踏まえて、完成させた「南無プログラム」のコードと、引数を入れて実行した結果が、こちらです。






それぞれ、実行時に引数を「南無阿弥陀仏」と入れたら「合掌、南無阿弥陀仏」と、「南無釈迦牟尼仏」と入れたら「合掌、南無釈迦牟尼仏」と出力されている事がわかるかと存じます。



引数を入れずにメソッド名だけで実行するとエラーになる?エラーの対処法

ここで、色々と試して観た人ならば、「引数を入れずに、メソッド名だけで実行する」と言う事を、やってみた人もいらっしゃるかと存じます。

その場合、このようなエラーになりませんかな。






Rubyでは、定義したメソッドに引数を与えないと、エラーが出ます。

エラーが出ないようにするためには、「戻り値」を設定しておく必要があります。

上の画像のように、namuメソッドを定義したのにエラーが出たのは、メソッドの戻り値を、引数に入れていなかったからです。



エラーにならないための対処法は、「メソッドの引数に戻り値を設定する」です。



では、namuメソッドの引数に、戻り値を設定しましょう。



ここでは、合掌はするけれども、自分の宗派が分からない、でもとりあえず礼拝はする、という事を想定して、戻り値を「礼拝」とします。

ちなみに、仏教では「礼拝」を「らいはい」と読みます。



それを踏まえると、このようになります。




今度は、戻り値を設定していますから、メソッド名だけで実行してもエラーにならず、戻り値が出力・表示されました。



最後に、礼拝した後に、唱名一覧的な出力を実行してみましょう。






南無メソッドの完成です。



これを機会に、あなたの家の宗派は、どの御言葉であるか、調べて観るのもまた一興。

プログラミングを学べる仏縁となりましたら、嬉しゅう御座います。

Ruby on Railsでは「def」をよく使う事になる

今回のRubyで仏教プログラミングは、「def」を使ってメソッドの定義を致しました。



今回学びました「def」によるメソッドの定義ですが、Ruby on Railsでは頻繁に使う事になります。

また、Rubyでもクラスの単元で、頻繁にめにする事になりますし、何度も書く事になりましょう。



これからRubyのクラスを学ぶ人も、Ruby on Railsを学んだり、実際に開発を試みる人は、必ず覚えて置くべき単元です。

私も現在、Progateや他の教材で、Ruby on Railsを学んでおりますが、毎日「def」とは出会っておりますよ。

ここでしっかりと基礎を固めて、使いこなせるようにしておくことが、肝要で御座います。



尚、今回の話と共に、他のRubyで仏教プログラミングも復習して頂くと、より開発の幅も広がります。



参照記事:「Rubyで仏教プログラミング総集編|まとめページ」



今回の話と、総集編・まとめ記事ページの復習が、あなたのRubyやRuby on Railsのプログラミングに役立ちましたら、大変嬉しゅう御座います。



合掌、礼拝

スポンサーリンク