Rubyはオープンソースのスクリプト言語ですが、そもそもスクリプトとは何かご存じでしょうか。Rubyと言えばRuby on Railsで使われるプログラム言語という印象が強いかもしれません。しかしシェルスクリプトと同じように簡単な処理をまるでコマンドのように使うことも可能です。
今回はスクリプトの基本とRubyスクリプトの使い方を紹介します。
スクリプトとは
プログラミング言語Rubyは、オープンソースとして利用できるオブジェクト指向のスクリプト言語です。ではスクリプト言語とは何でしょうか。スクリプト言語とは何か、と聞かれて明解に答えられるエンジニアは少ないかもしれません。まずは、そもそもスクリプトとは何かについて解説します。
すぐに実行できるプログラム
スクリプト言語を一言で表現すれば、書いたらすぐに実行できるプログラムです。例えば、Rubyのプログラムを実行するケースを考えてみてください。rubyコマンドにソースファイルを指定するだけで実行できます。
Rubyの実行例
$ ruby sample.rb
なお、全てのプログラミング言語がRubyのように実行できる訳ではありません。例えばC言語のようなコンパイル型のプログラミング言語は、ソースコードを書いたらまずコンパイルし、さらに標準ライブラリと組み合わせて実行モジュールを作り、それを実行する、という手順が必要です。
その点スクリプト言語は、ソースコードを書いたらすぐに実行できます。そのためスクリプト言語を利用することで、開発期間を短縮することが可能です。
スクリプトの語源
スクリプトは、英語のscriptが語源のIT用語です。なお英語のscriptは、脚本や台本という意味があり、例えば次のように使います。
Nothing runs according to script.
(何事も台本どおりにはいきません。)
俳優に台本どおりに演じてもらうのと同じように、rubyコマンドにscriptどおりにコンピュータを動作させる、と考えれば、scriptが今回紹介しているスクリプトの語源になっていることを理解してもらえるのではないしょうでか。
代表的なスクリプト言語
先ほども紹介したようにRubyはオブジェクト指向のスクリプト言語の一つです。そして、Ruby以外のスクリプト言語が幾つも利用されています。そしてRubyとよく比較されるスクリプト言語が、PHP、Python、Perlです。これらはいずれもコマンドにソースファイルを指定することでプログラムを実行できます。
またLinuxやmacOSのターミナルで利用できるシェルスクリプトは、スクリプト言語として昔から使われてきました。さらにJavaScriptやPowerShellスクリプトなども、もちろんスクリプト言語の一種です。
Rubyをスクリプト言語として使う方法
Rubyは主にRuby on Railsを利用したWebシステム開発用のプログラミング言語として使われています。この場合、データの保存先にデータベースを活用し、そのデータを加工したりHTMLなどの文字列を合成できるなど大きなシステムの開発にも利用可能です。
しかし、Rubyをスクリプト言語として短いプログラムで利用することも可能です。次からRubyのスクリプト言語の側面を紹介します。
テキストファイルを実行可能にする
スクリプト言語の特徴とは、編集可能なテキストファイルにもかかわらず、OSのコマンドと同じように実行可能です。そしてLinuxやmacOSでは、読み込み権、書き込み権に加えて実行権を設定できます。そのためテキストファイルに実行権を設定すると、そのテキストファイルを実行可能です。
ただしそのテキストファイルはシェルスクリプト、つまりシェルを制御するためのプログラムとして実行されます。そのためシェルの代わりにRubyで実行するには、Rubyを起動するための特別な設定が必要です。
Rubyスクリプトの基本
Rubyのソースファイルはもちろんテキストですが、Rubyスクリプトとして実行するには、先ほど説明したようにLinuxやmacOSでテキストファイルに実行権を設定してください。さらに特別な設置として、1行目に「#!」に続けてrubyのパスを記述も必要です。
例えば、rubyコマンドのインストール先が「/usr/bin/ruby」の場合は次の例のように記述できます。
Rubyスクリプトの例
#!/usr/bin/ruby (1..5).each do |i| puts i end
実行例
$ vi sample.rb $ chmod +x sample.rb $ ./sample.rb 1 2 3 4 5 $
もしRubyのパスが別なら
先ほどrubyコマンドが「/usr/bin/ruby」にインストールされている場合の例を紹介しましたが、rubyコマンドのインストール先が同じとは限りません。例えばrbenvを利用してプロジェクトに合わせてRubyのバージョンを切り替えられる場合は、設定が面倒です。
そのため一般的にはenvコマンドの引数にrubyを指定します。なお「env」コマンドは、引数で与えられたコマンドをPATH環境変数から解決して実行するコマンドです。
Rubyスクリプトの例(envコマンドを使用)
#!/usr/bin/env ruby (1..5).each do |i| puts i end
Rubyスクリプトの用途
RubyはRuby on RailsによるWebシステム開発用として使われることの多いプログラミング言語です。しかし、Rubyのスクリプトの用途は、Webシステムの開発に関わる用途とは限りません。次からRubyスクリプトの用途について解説します。
スクリプトの用途とは
一般的にシェルスクリプトは、ターミナルで実行できるアプリケーションやOS付属のコマンドなど羅列して実行可能にしたものです。そして単機能であまり複雑でない処理の実行に使われます。例えば、よく使うコマンドをテキストファイルに書いておき、まとめて実行する、といった用途に使われます。
これはRubyスクリプトにも言えることです。ただしRubyではシェルスクリプトよりも複雑な処理が可能で、コマンドの実行結果によって次の処理を切り替えたり、実行結果を読み易いように加工する用途などで使えます。
非対話的な処理についている
シェルスクリプトを使う目的は定型処理の自動化です。毎回同じコマンドを打って実行するのであれば、それをシェルスクリプトに記述しておくことで簡単に実行できます。
これはRubyスクリプトも同じです。なおRubyを使えば対話形式のスクリプトを作ることも可能です。しかしそれよりも必要な情報をコマンドの引数で指定して実行するRubyスクリプトがよく利用されます。
そして定型処理の自動化に使えるRubyスクリプトは、ある時刻に自動実行するスクリプトとしても使用可能です。そしてサーバー管理に必要な機能をRubyスクリプトに記述しておけば、サーバー管理を自動化できます。
リモート実行も可能
Rubyでプログラムを組めば、実行結果をサーバーに転送したり、実行結果をメールで送信することも可能です。
例えばRubyのHTTPを扱うライブラリを利用すれば、Webサーバーにアクセスし、データを送信することが可能です。また、SMTPを扱うライブラリを利用することで、Gmailなどのメールサーバーにメッセージを送ったりできます。
そのためクラウド上で稼働している複数のサーバーに、管理用のRubyスクリプトを設定しておけば、わざわざそのサーバーにログインすることなく管理することが可能です。
まとめ
これまで紹介したようにRubyはソースファイルをコマンドのように実行できるスクリプト型のプログラミング言語です。サーバー管理などでよく使う機能をRubyスクリプトで作っておけば、それをまるでコマンドのように実行でき、さらに自動的に実行するように設定しておけば、サーバー管理の自動化にも使えます。
RubyはRuby on RailsによるWebシステム開発に使われるプログラム言語ですが、ファイルを操作したりインターネットを介した通信プログラムの作成も可能です。そのような機能をうまく活用したスクリプトを作成し、自分の開発環境や本番サーバーの管理にも、Ruybのスクリプトを活用してみてください。