コードの品質向上のため、Rubyでデザインパターンを解説した名著である Rubyによるデザインパターン で紹介されているデザインパターンを1つずつまとめており、今回が第16弾で最終回です!
前回の記事(メタプログラミングのまとめ)はこちらです。
【Rubyによるデザインパターンまとめ15】メタプログラミング - 銀行員からのRailsエンジニア
今回は Convention over Configuration についてまとめました。
Convention over Configuration とは
日本語訳すると「設定より規約」で、規約に従うことで不必要な設定のコードを書く必要がなくなります。
頭文字を取って「CoC」と略されます。
例えば、Rails の ActiveRecord では、users というテーブルは、 models ディレクトリにある user.rb というファイルにある User クラスで処理されます。さらに、users テーブルの name というカラムは、user オブジェクトの name フィールドに自動的に割り当てられます。
このように、規約に従うことでコードの記述量を減らすことでき、また誰が見ても分かりやすいコードになります。
コード
Rails はモデル・コントローラなどを自動で作成してくれる scaffold という機能があり、これも規約に従うことでコードの記述量を減らしてくれる CoC の一つです。
scaffold に似た、簡単な機能を作ってみましょう。
original_scaffold.rb ファイルを作成します。
name = ARGV[0] class_name = name.capitalize + 'Controller' file_name = name + '_controller.rb' content = <<-"EOS" class #{class_name} def hello puts 'Hello!' end end EOS File.open(file_name, 'w') do |f| f.write(content) end
このように「coc」を引数に渡して実行します。
ruby original_scaffold.rb coc
すると、「coc_controller.rb」が作成されました!
class CocController def hello puts 'Hello!' end end
おわりに
ここまで読んでいただきありがとうございます。
Rubyによるデザインパターン の中では、様々の例を使って説明されていて分かりやすかったので、ご興味ある方は是非合わせてご覧ください。
- 作者:Russ Olsen,ラス・オルセン
- 発売日: 2009/04/01
- メディア: 単行本
これで、16回に渡ったデザインパターンまとめブログが終わりました!
実務でどんどん使っていこうと思います!
(追記)
デザインパターンをまとめた記事を書いたので、是非合わせてご覧ください。
ysk-pro.hatenablog.com