Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

Rubyでは、組み込み変数のARGVを使うことで、コマンドラインから引数を指定し、実行を制御できるプログラムが作れます。

Rubyの用途はRuby on RailsによるWebシステムの開発だけではありません。サーバー管理で使える便利なスクリプト作成にも使えます。そしてRubyなら引数が使えるスクリプトの作成も可能です。今回は、Rubyの引数を実現するのに欠かせない、組み込み変数のARGVについて解説します。

この記事の結論
  • Rubyのスクリプトの引数は組み込み変数ARGVに格納される
  • 組み込み変数ARGVは配列クラスのオブジェクト
  • Rubyのスクリプトの引数の用途はバッチファイル

コマンドラインから実行するとは

元々、WindowsやLinuxのようなOSとは、コンピュータでプログラムを実行するための仕組みであり、かつてはコマンドラインで操作するのが一般的でした。今でも、Windowsにはコマンドプロンプトを使って、また、macOSやLinux系のOSではターミナルを利用して、コマンドラインからの操作が可能です。

次から、Rubyをコマンドラインから実行する方法について説明します。

Rubyの実行方法

最近は、Web学習サイトなどのGUIな環境でRubyを実行できる環境もありますが、通常、Rubyを実行するとしたら、コマンドプロンプトまたはターミナルなどのコマンドラインから実行します。

Rubyを実行した例

$ ruby --version
ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux-gnu]
$

なお、Rubyをコマンドラインから実行する場合、多くのオプションを指定できますが、通常、プログラムを記述したテキストファイルを指定して、そのプログラムを実行します。

テキストファイルを指定してRubyを実行した例

$ cat argvex.rb
p ARGV
$ ruby argvex.rb
[]
$

プログラムのオプションを指定できる

先ほど、一般的なRubyのプログラムを実行する方法として、コマンドラインからrubyコマンドにファイル名を指定して実行する方法を紹介しました。さらに、指定したプログラム専用のオプションを、rubyコマンドの引数として指定することも可能です。

プログラムの引数を指定して実行した例

$ cat argvex.rb
p ARGV
$ ruby argvex.rb argv1 argv2 argv3
["argv1", "argv2", "argv3"]
$

プログラム用のオプションを使う

先ほどのRubyでプログラムを実行する際に、引数として指定したオプションを、プログラムの中で利用するための仕組みが、今回紹介するARGVです。

なお、引数のことを英語では、argumentと言います。また、C言語では、同じようなプログラムの引数を、その数とポインターを使ってプログラム中で利用できるようになっており、ポインターの方をargvで参照します。これは、argument vectorの略で、日本語では引数の配列です。

Rubyでは、C言語のargvをそのまま利用して、プログラム中で引数を参照する組み込み変数ARGVとしています。
Rubyを学びたい方におすすめのスクールはこちら

RubyにおけるARGVの基本

次から、Rubyのプログラムの引数を参照する変数であるARGVの基本と使い方について解説します。

ARGVは引数を格納した配列

ARGVは、Rubyでプログラムを実行した際に指定された引数を格納した配列です。なお、rubyコマンドとプログラムファイル名が除かれているので、純粋な引数のみが格納されています。

また、rubyがコマンドラインから実行された場の引数の参照方法は次のとおりです。

$ruby argvlist.rb argv1 argv2 argv3

1番目の引数は、ARGV[0]で、その値はargv1
2番目の引数は、ARGV[1]で、その値はargv2
3番目の引数は、ARGV[2]で、その値はargv3

ARGVを表示するスクリプトの例

puts "1番目の引数は、ARGV[0]で、その値は" + ARGV[0]
puts "2番目の引数は、ARGV[1]で、その値は" + ARGV[1]
puts "3番目の引数は、ARGV[2]で、その値は" + ARGV[2]

ARGVは配列として扱える

Rubyの引数を格納した配列は、一般的な配列を同じです。そのため、複数の引数があった場合、eachメソッドが利用できるなど、一般的な配列と同じ扱いでプログラムが書けます。

eachを用いた引数を表示する例

$cat argeach.rb
ARGV.each { |arg|
  puts arg
}
$ruby argeach argv1 argv2 argv3
argv1
argv2
argv3
$

eachは、配列の各要素を評価するメソッドなので、この例では、全ての引数をブラック内のputsで表示します。

findを用いた引数の例

$cat argfind.rb
mail = ARGV.find{ |arg| arg.match('mail=') }
puts mail

$ruby argfind mail=test log=yes sw=1
mal=test"
$

findは、配列の要素を全て評価し、最初に真になった要素を返すメソッドなので。この例ではmail=を含む最初の要素を表示します。

引数を格納した配列の操作例

先ほど説明したように、Rubyのスクリプトを実行する際の引数は、ARGVという配列に格納されて、プログラム内で使用できます。さらに、配列用の多くのメソッドも利用可能です。

例えば、コマンドラインなどから使える多くのコマンドでは、引数の指定が必須であり、それを怠ると、メッセージが表示されます。そして、この機能は、配列の要素の数を数えることで実現可能です。

また、引数をチェックする場合、shiftメソッドを使って順に引数を取り出す方法もよく使われます。shitメソッドを使った例は、次の通りです。

shiftメソッドを使った例

if ATGV.length < 3 then
  puts "オプションが足りません"
else
  argv1 = ARGV.shift
  argv2 = ARGV.shift
  argv3 = ARGV.shift
  puts argv1
  puts argv2
  puts argv3
end

Rubyを学びたい方におすすめのスクールはこちら

引数付きのプログラムを実行する機会

かつて、全てのプログラムは、コマンドラインから実行されていました。しかし、今は、WindowsやMacではアイコンをクリックするだけで実行できるので、コマンドプロンプトを使う機会は無いかもしれません。

また、Linuxはターミナルで操作することがありますが、ターミナルを利用するのはサーバー管理者のみで、一般の方には馴染みが無い操作方法です。

このように、一般的にコマンドラインからプログラムを実行することはありません。では、RubyでARGVを使ったプログラムを利用する機会として、どのようなケースが考えられるのでしょうか。

バッチファイルは今でも有効

クラウドでは、多くのLinuxサーバーが稼働していますが、その多くはリモートで監視されたサーバーセンターで稼働しています。そして、リモートで監視できるように、インフラエンジニアなどによって多くのプログラムが設定されています。

なお、そのようなサーバー管理用のプログラムと採用されているのが、RubyやPythonのような作成効率の良い、スクリプトプログラムです。

このようなスクリプトファイルは、管理者がsshコマンドのような簡単な端末ソフトで接続し、サーバーに合わせたARGVの引数でまとまった処理を実行できます。

今回紹介しているARGVは、そのような管理者が手作業でやる操作を自動化する処理に向いている機能です。

決まった時刻に動作する処理

バッチファイルは、各種サーバーで決まった時刻に自動実行される処理の指定にも向いた機能です。例えば、定期的にバックアップを実行したり、溜まったキャッシュをクリアするなど、いろいろな用途で使われます。

このバッチファイルでRubyのスクリプトを活用するなら、どのサーバーでも使えるようにプログラムを作成し、ARGVで指定する引数によって制御させることも可能です。
Rubyを学びたい方におすすめのスクールはこちら

まとめ

RubyのARGVの機能は、昔、全ての操作をコマンドラインから実行していたころには、よく使われていた機能でした。今では、人がコマンドライン実行する機会が無いかもしれません。

しかし、ARGVは今でもバッチファイルなどで活用できる、便利な機能です。そして、配列と同じように扱えるので、いろいろな使い方ができます。ぜひ、ARGVの使い方をマスターし、Rubyをいろいろな用途で活用してください。

また、Rubyについてもっと詳しく学びたい方は、ポテパンキャンプの利用を検討されてはいかがでしょうか。
Rubyを学びたい方におすすめのスクールはこちら

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。