Skip to the content.

こんにちは、@doewです。

師走ですね。忙しいですね。この記事はTimee Advent Calendar 2025 の20日目の記事としても公開されています。

ちょっとした自動化スクリプトを書きたいけれど、わざわざ bundle init して Gemfile 書くのは正直億劫な時があります。

そこで今回は、「Rubyの標準ライブラリだけで動く(Gemの追加インストール不要)」「1ファイル(ペライチ)で完結する」 という縛りで、地味に便利なスクリプトを3つ紹介します。

コピペして ruby script.rb とするだけですぐ動きます。

1. マージ済みブランチを一掃する「お掃除スクリプト」

開発が進むと、ローカルに溜まりがちな feature/xxxfix/xxx などのブランチがたまりがちです。 手動で消すのは面倒ですが、誤って必要なものまで消すのも怖いですよね。 そこで、git branch --merged の結果を利用して、マージ済みブランチ安全に削除するスクリプトです。

ソースコード (clean_branches.rb)

#!/usr/bin/env ruby

# main/master以外のマージ済みブランチを取得
branches = `git branch --merged`.split("\n").map(&:strip).reject { |b| 
  b.include?('main') || b.include?('master') || b.include?('*') 
}

if branches.empty?
  puts "✨ 削除できるブランチはありませんでした!"
  exit
end

puts "以下のブランチを削除しますか?"
puts branches.join("\n")
print "\n削除を実行しますか? (y/n): "

if gets.chomp.downcase == 'y'
  branches.each do |branch|
    # システムコマンドを実行
    system("git branch -d #{branch}")
    puts "🗑️ #{branch} を削除しました"
  end
  puts "🎉 完了しました!"
else
  puts "キャンセルしました"
end

ポイント

2. Excel等でもらったCSVをJSONにする「データ変換くん」

「データはCSVで渡すから、DBに入れておいて」と言われた経験はありませんか。 CSVをパースしてJSONに変換する作業も、Rubyなら標準ライブラリだけで一瞬です。

ソースコード (csv2json.rb)

#!/usr/bin/env ruby
require 'csv'
require 'json'

file_path = ARGV[0]

unless file_path && File.exist?(file_path)
  puts "Usage: ruby csv2json.rb <file.csv>"
  exit
end

# ヘッダーをキーにしてハッシュの配列に変換
data = CSV.read(file_path, headers: true).map(&:to_h)

# JSONとして標準出力(整形付き)
puts JSON.pretty_generate(data)

使い方

$ ruby csv2json.rb data.csv > data.json

ポイント

3. 担当サイトのSSL証明書期限をチェックする「監視員」

「あれ、あの管理画面の証明書、いつ切れるんだっけ?」と不安になった時に便利です。 ブラウザで確認しに行かなくても、コマンド一発で残り日数を教えてくれます。

ソースコード (check_ssl.rb)

#!/usr/bin/env ruby
require 'socket'
require 'openssl'

target_host = ARGV[0] || 'google.com'
port = 443

begin
  # TCP接続してSSLソケットを作成
  tcp_client = TCPSocket.new(target_host, port)
  ssl_client = OpenSSL::SSL::SSLSocket.new(tcp_client)
  ssl_client.hostname = target_host
  ssl_client.connect

  # 証明書情報を取得
  cert = ssl_client.peer_cert
  days_left = ((cert.not_after - Time.now) / 86400).to_i

  puts "Target: #{target_host}"
  puts "Expires: #{cert.not_after}"
  puts "残り日数: #{days_left}日"

  if days_left < 30
    puts "⚠️ 更新時期が近づいています!" 
  else
    puts "✅ まだ余裕があります"
  end

  ssl_client.close
rescue => e
  puts "Error: #{e.message}"
end

使い方

$ ruby check_ssl.rb example.com

ポイント

おわりに

RubyはRailsのイメージが強いですが、標準ライブラリだけでも強力なグルーコード(接着剤のようなコード)が書けます。 ササッと業務効率化ツールを作りたい時、ぜひ「標準ライブラリ縛り」で書いてみてください。ライブラリ群は公式にサポートされメンテされているほか、環境構築ゼロ(厳密にはrubyだけ)で動くのは正義です。