CLIツールを組み合わせて自分だけの魔法の杖を作る(feat. Ruby)
(hackers.pub)-
記事の概要
- BashスクリプトにRubyを組み合わせて、CLIツールの自動化を実現するさまざまなテクニックを紹介。
- 他のスクリプト言語でも可能だが、Rubyの可読性と柔軟性を強調。
-
なぜBashではなくRubyなのか?
- Rubyは明確なデータ型(整数、浮動小数点、文字列、配列、ハッシュなど)を提供し、コードの可読性を高める。
- macOSユーザーにとっては、Homebrewがインストールされていれば標準で付属するRubyのおかげで活用しやすい。
- CocoaPods、Fastlaneなどのビルド/自動化スクリプトでRubyは有用に活用できる。
- JSON、CSV、YAMLなど多様なデータ形式を、標準ライブラリで手軽に扱える。
-
Rubyワンライナースクリプトを書く
- 1行スクリプトは
ruby -e "<expression>"形式で実行できる。 - パイプやリダイレクトを使って、ほかのCLIツールの結果を受け取って処理できる。
-rオプションで必要なライブラリを事前に読み込み、機能を拡張できる。
- 1行スクリプトは
-
ほかのCLIツールと組み合わせて使ってみる
- AWS CLI、Git、GitHub CLI、jq、curlなどとRubyを組み合わせると、単機能ツールそれぞれの強みを最大限に生かせる。
- JSONデータ処理の例:
curlでAPIを呼び出した後、RubyのJSONライブラリでデータをパースし、特定フィールド(例: title)を出力。
- YAMLデータ処理の例:
cat config.yamlでファイルを読み込んだ後、RubyのYAMLライブラリでパースし、特定の設定値を抽出。
- CLIツールの結果をRubyで追加加工することで、より柔軟な自動化ワークフローを構築できる。
-
構造化されていないデータ処理(Git Logの例)
- すべてのデータがJSON/CSV/YAMLのように構造化されているとは限らない。
- Rubyの正規表現とテキスト処理機能を使えば、ログやシステムメッセージなどを1行ずつ読み取り、必要な情報を抽出できる。
- Git Logスクリプトの例:
git log --oneline #{file}で1行のコミットログを抽出。gum choose --limit 100で目的のログをインタラクティブに選択。- 各選択ログからコミットハッシュを抽出し、
git showで詳細な変更内容を表示。 - 最終的に選択したログをチェックリスト形式に再構成して出力。
-
おわりに
- CLIツールとRubyスクリプトを組み合わせれば、簡単なコマンドの組み合わせだけで強力な自動化ツールを作れる。
- 複雑なデータ処理、ログ分析、バージョン管理の作業を効率よく自動化し、生産性を最大化できる。
- 小さな始まりが大きな変化を生みます。ぜひ自分だけのサイドプロジェクトを始めてみてほしい。
- ちなみにPerlも有用で、Perl One-Liners Guideのような資料が役に立つ。
まだコメントはありません。