【Rubyの基礎】コマンドラインからの実行で利用するARGVの基本
  • facebookページ
  • twitterページ
  • 2020.11.27

    【Rubyの基礎】コマンドラインからの実行で利用するARGVの基本

    Rubyでは、組み込み変数ARGVを使うことで、コマンドラインからオプションを指定し、実行を制御できるプログラムが作れます。今回は、このARGVの基本について解説します。

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

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

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

    Rubyの実行方法

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

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

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

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

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

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

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

    Rubyでは、C言語のargvをそのまま利用して、プログラム中で引数を参照する組み込み変数ARGVとしています。

    RubyにおけるARGVの基本

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

    ARGVは引数を格納した配列

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

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

    ARGVは配列として扱える

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    まとめ

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

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



    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE