フリーエンジニアの長瀬です。Rubyを使ったプログラミングをしていて、「引数の種類が多すぎて分からない!」、「そもそもどんな引数があるのか分からないので知りたい!」そんなことを思った経験はないでしょうか?今回はそんなRubyの引数に関する疑問に答えていきます。コマンドラインのオプションに引数を渡すといった応用的な内容についても解説していきます。何個でも付けることができますが、引数の数が多過ぎるとソースコードが読みにくくなるため、書き方については考える必要があります。ハッシュや配列を引数として渡すときも、変換の必要はありません。以下、サンプルコードです。普通の引数から括弧を取り除いた形です。putsなどによる出力、アクセサ指定、returnなどの時は括弧を省略することが推奨され、自分で作成したメソッドの場合は括弧を省略せずに書くことが推奨されています。form_forなど)で括弧を省略するのが推奨されています。以下のサンプルコードのように、メソッド呼び出し時に括弧を省略することができます。'hoge'[実行結果]"hoge"デフォルト引数デフォルト引数を使うと、引数が無かった場合、あらかじめ設定された値を入れることができます。デフォルト引数は、引数が空になると困る時に設定します。デフォルト引数を複数持つ場合はハッシュを引数として渡すのがよいでしょう。以下、サンプルコードです。endendHoge.piyoHoge.piyo('fugafuga')[実行結果]"fuga""fugafuga"引数なしでHoge.piyoメソッドを呼び出したとき、デフォルト引数の「fuga」が出力されています。キーワード引数キーワード引数を使うと、引数をハッシュで渡すことができます。ハッシュなので、順番を気にせず渡すことができるというメリットがあります。1つだけ渡すよりは複数渡すときに、よりメリットを感じやすいでしょう。引数が何個渡るか不明な場合に指定します。渡した引数は配列で格納されます。以下、サンプルコードです。"e"]「*」を付けることで引数を複数個設定することができます。"e"]オプション引数オプション引数は引数の数、名前に関係なくハッシュで引数を渡すことができる仕組みです。渡す引数の数が分からない時に便利です。「*」を2つ付けるとオプション引数になります。オプション引数はハッシュとして受け取られます。:name=>"hugahuga"}コマンドライン引数コマンドライン引数は、ターミナルから実行時に引数を読み込むことができる仕組みです。プログラム内のコマンドライン引数は以下の変数に代入されます。以下のサンプルコードは、実行したプログラムのファイル名とコマンドライン引数を出力するものです。Sample1.rbARGV[0]:hogeARGV[1]:fooブロック引数ブロック引数を使うと、ブロックを引数で渡すことができます。yieldと同じ意味で、どちらかというとyieldの方がよく使用されます。}[実行結果]"fuga"このようにyieldを使って書き換えても同じ結果になります。詳しくはこちらのyieldの記事を一読することをおすすめします。2019年4月24日コマンドラインでオプションを設定する(optparse)コマンドラインにオプションを作成するoptparseというライブラリーを使えば、簡単にコマンドライン引数にオプションを設定することできます。実際に自分で作ってみます。今回は-oと-bというオプションを設定してみます。(オプションは自由に作成できます)sample.rbという名前で任意のディレクトリに保存します。'Goodbye'}op.parse(ARGV)このように、optparseをまず始めにrequireします。OptionParser.newでoptparseのインスタンスを作成してから、onというインタンスメソッドでオプションを設定します。onの引数にはハイフン+(一文字)で省略形を設定できて、ハイフン+(複数文字)で省略形でないオプション名をつけることができます。オプション名は複数つけることができて、順番は問いません。最後の引数にはそのオプションの説明を設定してください。helloが説明の部分です)ただ、-hや--helpはoptparseが読み込んだ時点でデフォルトで設定されているコマンドなのでこの名前のオプション名はつけないようにしましょう。sample.rbをオプション付きで実行してみましょう。ターミナルや、コマンドプロンプトを開いて次のsample.rbを指定してオプションを渡します。worldGoodbyeこのように、複数のオプションも同時に指定することができます。-h、--helpオプションを使って、定義されているオプションを確認するこのデフォルトで設定されている-h、--helpオプションを使えば、現在どんなオプションが設定されているのか確認できます。試しに確認してみましょう。ターミナルや、コマンドプロンプトを開いて次のsample.rbを指定して-hを指定してみましょう。goodbyeこのように、定義されているオプションとその説明を確認できました。コマンドラインのオプションに引数を渡すオプションに引数を設定することも簡単にできます。さきほどのコードを少し修正します。"Goodbye,#{a}"}op.parse(ARGV)このように、ARGなどの任意の文字をオプションの後ろに設定すると、引数を受け取れる状態になります。ターミナルや、コマンドプロンプトを開いて次のsample.rbにオプションとともに引数を指定してみましょう。Nagase[実行結果]引数は100ですGoodbye,Nagaseこのように、オプションに引数に渡せることを確認できました。まとめいかがでしたでしょうか?今回は、たくさん種類があるRubyの引数についてまとめました。多種多様な引数がありますが、それぞれの特徴や用途をしっかりと理解しておけば怖がる必要はありません。引数はメソッドの基礎でもありますから、きちんと理解を深めましょう。コマンドラインにオブションを設定できるoptparseは便利ですね。知っていると応用の幅が広がります。引数について忘れてしまったらこの記事を確認してくださいね!TweetPocket無料でSEからWebエンジニアへ転職しませんか?侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、システムエンジニアという職業だけどコードが書けない事務作業が多くスキルがないため将来が不安スクールに通うと完全未経験者と同じスタートになるからレベルが合わないという、すでに知識があるSEならではのお悩みがあることに気づきました。弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。こちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。長瀬来Unityを使ったiOSアプリのリリース、フリマサイト運営の経験があります。経験した言語はC、C#、Javascript、R、Python、Ruby、PHPなど言語が好きで、英語や中国、ドイツ語を勉強しました。将来的には海外で生活したいです。Rails5やCocos2dxの勉強を主にしています。ライターとしてはできるだけ初心者にわかりやすい文章になるように心がけています。趣味は語学、読書です。