Ruby の用途が、
- 業務アプリをばりばり開発!
とかではなくて、
- 仕事をするなかでちょっと困ったり面倒だったりするときのツール
という位置づけな自分にとって、書いているコードはいくつかオプションを指定してコンソールで走らせてやれば終了するようなものがほとんどを占めている。
そうすると、かなり毎度同じような内容を書いていたりして、DRY じゃないなー(けど、自分しか使わないようなのが多いし、ま、いっかー)と感じていた。
そうこうするところに、SimpleConsole というコンソールアプリ用のフレームワークの紹介を読み、「これで解決するんでない?」と期待を持ったので試してみることにした。
SimpleConsole って何?
紹介をざっと読む限りだと、SimpleConsole は、
- オプションの解析とバリデーションを自動でやってくれる
- Controller と View を簡単に作成
- Controller の @variable が View の @variable として使える(Rails のように)
- Rails ライクなフィルターが使える
- コマンドとして指定したアクションと Controller のメソッドのルーティングが自動で対応。(Rails の URI が action を呼び出すように)
のあたりが売りのフレームワークらしい。
optparse で定型のおまじないを書いてオプションを受けなくて良い辺りはうれしいのかも。
DSL 的なメソッドの記法を見ても、かなり Rails を意識した作りに見える。(が、この辺は第一印象としては Rails よりも洗練されていない印象。名前とか書き方の癖とか。)
公式サイト
http://simpleconsole.rubyforge.org/
緑のコードが読みにくい。(たぶんうちの環境の問題。)
まずはインストール
gem install simpleconsole --remote
tutorial を試してみる
http://simpleconsole.rubyforge.org/tutorial.html
simcon
simcon コマンドで雛形作成。
たぶん、Rails の script/generate 相当。
Controller に @variable で設定した値は View でも @variable でアクセス可能
class Controller < SimpleConsole::Controller def default @message = "Hello World!" end end class View < SimpleConsole::View def default puts @message end end
パラメータは params[:hoge] へ自動的にセットされる(要オマジナイ)
class Controller < SimpleConsole::Controller params :string => {:n => :name} def who_am_i @name = params[:name] end end class View < SimpleConsole::View def who_am_i puts "Hello, #{@name}!" end end
うーん、もう少し CoC なかんじになると使っているときの爽快感が上がりそう。期待。
それでも optparse を使うよりもさらに簡単にオプションを使えるのはうれしい。
使ってみて
良さそうな点。
まずは、Rails 的な便利さをコンソールでもほしい!という目的に強く共感。今のままでもそれなりに使えそうなかんじ。
さらに、フレームワークの実装コード自体も小規模なので、気になるところをこちょこちょと調整すれば自分のための便利環境が作れそう。
あとは、これをベースにすると、ちまちまと作るツール類のフォーマットがそろうので、それが実は一番うれしいかも。他人に引継ぐときにも説明しやすいし。
気になった点。
パラメータの受取りの辺りを見てみると、やや癖があったりして、個人的な感性からはちょっと違和感を感じる部分もあった。その辺の整理と、ヘルパー系の強化をしていくと良い塩梅に軽量の Ruby プログラミング用プラットフォームができそう。