Rubyでできること一覧 - Web開発からスクリプトまで活用例を解説

Rubyの活用分野を徹底解説。Web開発、スクリプト作成、データ処理、API開発など実践的な使用例とサンプルコードを紹介

Learning Next 運営
18 分で読めます

みなさん、Rubyを学習しているけれど「実際にどんなことができるの?」と疑問に思っていませんか?

プログラミング言語を学ぶときは、その言語で何ができるかを知ることで学習のモチベーションが上がりますよね。

この記事では、Rubyでできることを分野別に詳しく解説します。実際のサンプルコードも交えながら、Rubyの幅広い活用方法をご紹介しますので、ぜひ参考にしてください。

Web開発でのRuby活用

Rubyが最も活用されている分野がWeb開発です。

Ruby on Railsによる高速開発

Ruby on Rails(通称Rails)は、Rubyで作られたWebアプリケーションフレームワークです。

「設定よりも規約」という哲学のもと、短時間で高品質なWebアプリケーションを開発できます。

多くの有名なWebサービスがRailsで構築されており、その実用性の高さが証明されています。

Railsで作れるWebアプリケーション

Railsを使うと、以下のようなWebアプリケーションを効率的に開発できます。

  • ECサイト(オンラインショッピング)
  • ブログ・CMS(コンテンツ管理システム)
  • SNS・コミュニティサイト
  • 業務管理システム
  • 予約管理システム
# Railsの基本的なコントローラー例
class ArticlesController < ApplicationController
def index
@articles = Article.all
end
def show
@article = Article.find(params[:id])
end
def create
@article = Article.new(article_params)
if @article.save
redirect_to @article, notice: '記事が作成されました'
else
render :new
end
end
private
def article_params
params.require(:article).permit(:title, :content)
end
end

このように、MVC(Model-View-Controller)パターンに従って、きれいにコードを整理できます。

SinatraによるマイクロWebアプリケーション

軽量なWebアプリケーションを作りたい場合は、Sinatraというフレームワークが便利です。

Sinatraは最小限の機能でWebアプリケーションを構築できるため、小規模なAPIやプロトタイプ開発に適しています。

# Sinatraの基本的な例
require 'sinatra'
get '/' do
'Hello, World!'
end
get '/users/:id' do
user = User.find(params[:id])
"ユーザー名: #{user.name}"
end
post '/users' do
user = User.create(params[:user])
"ユーザー #{user.name} が作成されました"
end

数行のコードでWebアプリケーションが動作するのは、Rubyの魅力の一つです。

スクリプト作成でのRuby活用

Rubyはスクリプト言語としても優秀で、日常的なタスクを自動化できます。

ファイル操作の自動化

大量のファイルを一括処理したい場合、Rubyスクリプトが威力を発揮します。

ファイル名の一括変更

# ファイル名を一括で変更するスクリプト
Dir.glob('*.txt') do |file|
new_name = file.gsub(/古い名前/, '新しい名前')
File.rename(file, new_name)
puts "#{file}#{new_name} に変更しました"
end

このようなスクリプトを作成することで、手作業では時間のかかる作業を瞬時に完了できます。

ログファイルの解析

# ログファイルを解析するスクリプト
log_file = 'access.log'
error_count = 0
File.open(log_file, 'r') do |file|
file.each_line do |line|
if line.include?('ERROR')
error_count += 1
puts "エラー発見: #{line.strip}"
end
end
end
puts "総エラー件数: #{error_count}件"

ログファイルの分析も、Rubyなら簡単に行えます。

CSV・Excel操作

データ処理でよく使われるCSVファイルの操作も、Rubyなら効率的に行えます。

# CSVファイルの読み込みと加工
require 'csv'
# CSVファイルを読み込み
CSV.foreach('data.csv', headers: true) do |row|
puts "名前: #{row['名前']}, 年齢: #{row['年齢']}"
end
# CSVファイルに書き込み
CSV.open('output.csv', 'w') do |csv|
csv << ['名前', '年齢', '職業']
csv << ['太郎', 25, 'エンジニア']
csv << ['花子', 30, 'デザイナー']
end

ExcelファイルもGemを使用すれば、同様に処理できます。

データ処理・分析でのRuby活用

Rubyはデータ処理の分野でも活用できます。

Web スクレイピング

Webサイトから情報を収集する際に、Rubyのスクレイピング機能が便利です。

# Webスクレイピングの例
require 'nokogiri'
require 'open-uri'
url = 'https://example.com'
doc = Nokogiri::HTML(URI.open(url))
# タイトルを取得
title = doc.css('title').text
puts "ページタイトル: #{title}"
# 特定のクラスの要素を取得
articles = doc.css('.article')
articles.each do |article|
puts article.css('h2').text
end

NokogiriというGemを使用することで、HTMLの解析が簡単に行えます。

API連携

外部APIとの連携も、Rubyなら簡単に実装できます。

# REST APIとの連携例
require 'net/http'
require 'json'
uri = URI('https://api.example.com/users')
response = Net::HTTP.get_response(uri)
if response.code == '200'
data = JSON.parse(response.body)
data.each do |user|
puts "ユーザー: #{user['name']}"
end
else
puts "API呼び出しに失敗しました"
end

このように、外部サービスとの連携も手軽に行えます。

自動化・バッチ処理でのRuby活用

Rubyは定期的な処理や自動化タスクにも適しています。

定期実行スクリプト

サーバーの監視や定期的なデータ処理を自動化できます。

# システム監視スクリプト
require 'net/http'
def check_server_status(url)
begin
uri = URI(url)
response = Net::HTTP.get_response(uri)
if response.code == '200'
puts "#{url}: 正常"
else
puts "#{url}: 異常 (#{response.code})"
end
rescue => e
puts "#{url}: エラー - #{e.message}"
end
end
# 複数のサーバーを監視
servers = [
'https://example1.com',
'https://example2.com',
'https://example3.com'
]
servers.each do |server|
check_server_status(server)
end

cronと組み合わせることで、定期的な監視が自動化できます。

バックアップ自動化

重要なデータのバックアップも自動化できます。

# バックアップスクリプト
require 'fileutils'
def backup_directory(source, destination)
timestamp = Time.now.strftime('%Y%m%d_%H%M%S')
backup_name = "backup_#{timestamp}"
backup_path = File.join(destination, backup_name)
FileUtils.cp_r(source, backup_path)
puts "バックアップ完了: #{backup_path}"
end
# データベースのバックアップ
def backup_database
timestamp = Time.now.strftime('%Y%m%d_%H%M%S')
backup_file = "db_backup_#{timestamp}.sql"
system("mysqldump -u username -p database_name > #{backup_file}")
puts "データベースバックアップ完了: #{backup_file}"
end
# 実行
backup_directory('/var/www/html', '/backup')
backup_database

このような自動化により、運用作業の効率が大幅に向上します。

ゲーム開発でのRuby活用

Rubyはゲーム開発でも活用できます。

テキストベースゲーム

シンプルなゲームならRubyで十分作成できます。

# 簡単なじゃんけんゲーム
class JankenGame
CHOICES = ['グー', 'チョキ', 'パー']
def initialize
@player_score = 0
@computer_score = 0
end
def play
puts "じゃんけんゲーム開始!"
loop do
puts "
0: グー, 1: チョキ, 2: パー, 3: 終了"
print "選択してください: "
input = gets.chomp.to_i
break if input == 3
if input >= 0 && input <= 2
play_round(input)
else
puts "無効な選択です"
end
end
show_result
end
private
def play_round(player_choice)
computer_choice = rand(3)
puts "あなた: #{CHOICES[player_choice]}"
puts "コンピューター: #{CHOICES[computer_choice]}"
result = judge(player_choice, computer_choice)
puts result
update_score(result)
end
def judge(player, computer)
if player == computer
"引き分け"
elsif (player == 0 && computer == 1) ||
(player == 1 && computer == 2) ||
(player == 2 && computer == 0)
@player_score += 1
"あなたの勝ち!"
else
@computer_score += 1
"コンピューターの勝ち"
end
end
def show_result
puts "
最終結果:"
puts "あなた: #{@player_score}勝"
puts "コンピューター: #{@computer_score}勝"
end
end
# ゲーム実行
game = JankenGame.new
game.play

このようなゲームで、プログラミングの基礎を楽しく学習できます。

モバイルアプリ開発でのRuby活用

Rubyはモバイルアプリ開発でも活用できます。

RubyMotion

RubyMotionを使用すると、RubyでiOSやAndroidアプリを開発できます。

# RubyMotionの基本的な例
class AppDelegate
def application(application, didFinishLaunchingWithOptions:launchOptions)
@window = UIWindow.alloc.initWithFrame(UIScreen.mainScreen.bounds)
@window.rootViewController = MainViewController.alloc.init
@window.makeKeyAndVisible
true
end
end
class MainViewController < UIViewController
def viewDidLoad
super
self.view.backgroundColor = UIColor.whiteColor
label = UILabel.alloc.initWithFrame([[50, 100], [200, 50]])
label.text = "Hello, RubyMotion!"
label.textAlignment = UITextAlignmentCenter
self.view.addSubview(label)
end
end

ただし、RubyMotionは有料のツールであることに注意が必要です。

DevOps・インフラ管理でのRuby活用

Rubyはインフラ管理や運用自動化でも重宝されています。

Chef・Vagrant

インフラをコードで管理するツールでもRubyが活用されています。

# Chefレシピの例
package 'nginx' do
action :install
end
service 'nginx' do
action [:enable, :start]
end
template '/etc/nginx/nginx.conf' do
source 'nginx.conf.erb'
owner 'root'
group 'root'
mode '0644'
notifies :reload, 'service[nginx]'
end

このように、サーバーの設定をコードで管理できます。

Capistrano

アプリケーションのデプロイ自動化にも使われています。

# Capistranoの設定例
set :application, 'my_app'
set :repo_url, 'git@github.com:username/my_app.git'
set :deploy_to, '/var/www/my_app'
namespace :deploy do
desc 'Restart application'
task :restart do
on roles(:app), in: :sequence, wait: 5 do
execute :touch, release_path.join('tmp/restart.txt')
end
end
after :publishing, :restart
end

デプロイ作業を自動化することで、ミスを防ぎ効率を向上できます。

学習・教育でのRuby活用

Rubyは教育分野でも活用されています。

プログラミング学習

Rubyの文法は直感的で理解しやすいため、プログラミング教育によく使われています。

# 教育向けの例:数学の計算
def fibonacci(n)
return n if n <= 1
fibonacci(n - 1) + fibonacci(n - 2)
end
puts "フィボナッチ数列の10項目: #{fibonacci(10)}"
# 配列の操作
numbers = [1, 2, 3, 4, 5]
even_numbers = numbers.select { |n| n.even? }
puts "偶数のみ: #{even_numbers}"

このように、数学的な概念をプログラムで表現する学習にも適しています。

まとめ

Rubyは非常に幅広い分野で活用できる汎用性の高いプログラミング言語です。

Web開発での活用 Ruby on RailsやSinatraを使って、効率的にWebアプリケーションを開発できます。

スクリプト作成での自動化 日常的な作業を自動化するスクリプトを簡単に作成できます。

データ処理・分析 WebスクレイピングやAPI連携など、データ処理の分野でも威力を発揮します。

インフラ・運用管理 ChefやCapistranoなど、インフラ管理ツールでも活用されています。

教育・学習 直感的な文法により、プログラミング学習にも適しています。

Rubyを学習することで、これらすべての分野で活躍できる可能性が広がります。

まずは自分の興味のある分野から始めて、徐々に活用範囲を広げていくことをおすすめします。

Rubyの豊富な機能を活かして、効率的な開発や自動化を実現してみてください。

関連記事