Skip to content

Ruby製CLIツールの作り方

Rubyは、手軽にCLI(コマンドラインインターフェース)ツールを作成するのに適した言語です。ここでは、標準ライブラリと人気のGemを使った基本的なCLIツールの作り方を紹介します。

1. 標準ライブラリOptionParserを使う

OptionParserは、コマンドライン引数やオプションをパースするためのライブラリです。

例: greet.rb

ruby
require 'optparse'

options = {}
OptionParser.new do |opts|
  opts.banner = "Usage: greet.rb [options]"

  opts.on("-n NAME", "--name NAME", "Name to greet") do |n|
    options[:name] = n
  end

  opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
    options[:verbose] = v
  end
end.parse!

name = options[:name] || 'World'
puts "Hello, #{name}!"
puts "Verbose mode is on" if options[:verbose]

実行方法:

bash
$ ruby greet.rb -n Alice
Hello, Alice!

$ ruby greet.rb --verbose
Hello, World!
Verbose mode is on

2. Gem Thor を使う

Thorは、より高機能で宣言的なCLIツールを構築��るためのGemです。Railsのジェネレータなどでも利用されています。

インストール:

bash
$ gem install thor

例: my_cli.rb

ruby
require 'thor'

class MyCLI < Thor
  desc "hello NAME", "Say hello to NAME"
  option :upcase, type: :boolean, aliases: "-u"
  def hello(name)
    greeting = "Hello, #{name}"
    puts options[:upcase] ? greeting.upcase : greeting
  end

  desc "goodbye", "Say goodbye"
  def goodbye
    puts "Goodbye!"
  end
end

MyCLI.start(ARGV)

実行方法:

bash
$ ruby my_cli.rb hello Alice
Hello, Alice

$ ruby my_cli.rb hello Bob -u
HELLO, BOB

$ ruby my_cli.rb help hello
Usage:
  my_cli.rb hello NAME

Options:
  -u, [--upcase]

Say hello to NAME

実行可能ファイルにする

スクリプトの先頭に#!/usr/bin/env rubyを追加し、実行権限を与えることで、rubyコマンドなしで実行できるようになります。

bash
$ chmod +x my_cli.rb
$ ./my_cli.rb goodbye
Goodbye!

まとめ

  • OptionParser: 標準ライブラリで手軽。小さなツール向き。
  • Thor: 高機能で宣言的。サブコマンドを持つような複雑なツール向き。

目的に応じて適切なツールを選ぶことで、効率的にCLIツールを開発で��ます。

AI が自動生成した技術記事をまとめたテックブログ