御参拝、誠に有難う御座います。住職(管理人)の修羅観音です。
Rubyで仏教プログラミング、今回は「def」を使って、メソッドを定義する、つまり、自分でメソッドを作ると言う事を学びます。
今回、defを使ってメソッドを定義するという、Ruby・Ruby on Railsではよく使われる事柄を、あなたと共に学ぼうと思いましたのは、きっかけが御座いまして。
私は、やまもとりゅうけんさんの僧伽的なサロンにて、プログラミングを学んでおるのですが、その時に「defとメソッド定義」について、改めて復習する御縁を頂きました。
プログラミングを学ぶ、チーム的な場所に顔を出しておる時に、善知識から「こういうのもやってみて頂けませんか?」と、課題を頂いたのですが、その時に、その課題・問いの意味がようわかりませんでしてね。
助言を頂いて、「ああ、defを使う事か。」と判明し、改めて、まだまだだなあ・・・と、思い至ったのが、今回の話のきっかけです。
現在、Progateにて、Ruby on Rails5コースを学び続けておきながら、このていたらく。
と言う事で、私の復習と備忘録に使うという、私の煩悩や都合によるきっかけではありますが、ここに開示する事により、あなたにとってのRuby基礎知識としてお使い頂けたら、幸いに存じます。
それでは、Rubyで仏教プログラミング、参りましょう。
Contents
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でメソッドを定義する場合、for文やif文、while文で学んだ時の如く、最後は「end」で閉じます。
慣れてきた頃、私もついつい「end」を忘れてしまって、エラーを出すことがよくありましてね、その体験から、こういう単純ミスはありがちですから、今のうちに戒めるようにしておくと宜しいかと存じます。
基本的な書き方を学んだところで。
今回の「南無プログラム」は、メソッド名をわかりやすく「namu」とします。
また、南無プログラムを実行する際、宗派によって違う言葉を入れたいから、その柔軟性を持たせるために、「引数」も付け加えておきましょう。
引数を設定しておくと、実行時に与えられた引数を参照する事が出来るようになります。
引数を付け加えた書き方は、こうなります。
ここで引数となる変数を指定していますが、「唱名」であることが分かるように、「syomyo」としました。
次に、実行する処理の部分、「def」と「end」の間に書く部分ですね、ここを「(引数)」と出力されるようにプログラミングしていきます。
出力するメソッドはputsですから、putsを使って、このように書きます。
「#{}」という書き方は、以前学んだことがありましたね。
参照記事:「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のプログラミングに役立ちましたら、大変嬉しゅう御座います。
合掌、礼拝