一分一秒真剣勝負!

Ruby, Railsなど。Web系の技術ネタを充実させたい・・が、そうなるかは分からない。

Validation Nightに行ってきた

ページャNight <[1]>が想像以上にクオリティが高かったので、今回も参加しました! 登壇者が徳丸さん奥野さんなどとても豪華だったなぁ。

で、個人的にはサーバサイドとクライアントサイドのバリデーションが分離してしまう問題を解決している人がいるかなと期待したのですが、これって方法はないですねやっぱり・・・。 RailsだってDRYとか言ってもJSを考えるとDRYになりきれないし。 ただ、懇談会で「うちはサーバサイドとクライアントサイドのバリデーション部分を動的に生成している」って話は聞いた。やっぱりそういう感じで解決するしかないのだろうか。バリデーションは全部サーバサイドに寄せてAPIを叩く感じにしてもいいんだろうけど、サーバに負荷かけたくない時とかはそれじゃダメだったりするだろうし。やっぱりページャーと同じでこれが正解ってのは無いのかもしれない。

Ginza.rb 第8回 Gemfileみせっこ!みんなどんなの使ってます?に先月行ってきた

2月に参加したGinza.rb第8回目についてのエントリー。 書いたのはいいけど、POSTし忘れてました。 というわけでGinza.rbで紹介したgemと紹介し切れなかったgemをまとめました。 全部ではないですが、これってものをピックアップしてます。

Ginza.rbで紹介したgem

seed-fu

seed-fuはseedデータの管理を行うためのgemです。

これに乗り換えたキッカケはRails4でrake db:fixturs:loadを実行してみたらFIXTURES_PATHの指定時にdeprecatedが出た事でした。 (マスターデータをfixtruesでロードしたかった)

Using FIXTURES_PATH env variable is deprecated, 
please use ActiveRecord::Tasks::DatabaseTasks.fixtures_path = '/path/to/fixtures' instead.

FIXTURES_DIRは今まで通りにパラメータで指定できるのに、FIXTURES_PATHは何故かActiveRecord::Tasks::DatabaseTasks.fixtures_pathで指定する方向になるようです。 これはキモいし、なんか不自然な変更なのでまた仕様が変わりそうな予感もする。ならseedでやろうかと思ったのだけど、

rake db:seed # rakeタスク
Rails.application.load_seed # コードで呼び出す場合

どちらもパラメータを受け取らない。実装を見ると、

# File railties/lib/rails/engine.rb, line 538
def load_seed
  seed_file = paths["db/seeds.rb"].existent.first
  load(seed_file) if seed_file
end

"db/seeds.rb"を決め打ちで読み込んでいるのでRailsのseedだとrake db:fixtures:loadの代わりに使う事はできなかった。そこで偶然見つけたのがseed-fuだった。

# rakeタスク
rake db:seed_fu FIXTURE_PATH=path/to/fixtures # パスを指定できる
rake db:seed_fu FILTER=users,articles # 読み込むseedデータを指定できる
# コードで呼び出す場合
SeedFu.seed(fixture_paths, filter) # rakeタスクと同様のオプションを指定可能

という感じでrailsのfixtures:loadとseedのいいとこ取りみたいなライブラリだったので使うことにしました。 パスが未指定の場合"#{Rails.root}/db/fixtures" と "#{Rails.root}/db/fixtures/#{Rails.env}"がデフォルトで設定されているので、環境ごとにseedデータを分けるのも簡単です。production環境のマスターにデータを追加したいなあって時も使えますね。

というわけでseed-fuオススメです。別のエントリーで使い方まとめようかな。

grape

RESTライクなAPIマイクロフレームワーク・・と書かれてますが、 要するにSinatraっぽいAPI専用のフレームワークで、活発に開発が行われています。 Grapeは単体で使用することもできますが、Railsと組み合わせることも可能です。 実際これで某サービスのAPIを実装しました。採用した決め手になったポイントは、

  • Railsのコントローラで作るより高速
  • 実装が読みやすい
  • HTTPリクエストメソッドにPATCHがある(Railsっぽい)
  • Railsと同居できる(ActiveRecordとか呼べる)
  • 最悪やっぱりRailsのコントローラにしようと思った時に、移行作業がそれほど重くなさそう

といったところで、非常に使いやすかったです。 これ流行ってほしいなー。

Ginza.rbで紹介しなかったgem

paper_trail

世代管理用ライブラリ。RailsCastsで紹介されている割には知名度が低い気がする。全く同じ機能をゴリゴリ書いていたプロダクトを思い出して、これを知ってたら工数減らせたなーとか思った。

pundit

権限管理ライブラリ。ポストcancan!最近流行りつつあるようだ。 cancanよりOOPぽく書ける。

まとめ

これぐらいですかね。全部個人的に流行ってほしいなと思ってるgemの紹介でした。

関連URL

Ginza.rb 第8回 Gemfileみせっこ!みんなどんなの使ってます? Ginza.rb 第8回 Gemfileみせっこ!みんなどんなの使ってます? を開催した

生Matz(まつもとゆきひろが語る「ビューティフルコード」×「プログラマ35歳定年説」)

 実はこういうイベントに出るのは初めてでした。ネット上の動画で見るのもいいけど、現場の雰囲気は伝わらないですね。ITエンジニアなら積極的にイベントに出るべきだと思った。

ビューティフルコード

ソフトウェアの美しさとはなんでしょうか。本セミナーでは「美しいコード」が持つ特質や、それを達成するために有効な原則について、Rubyを始めとする数々のソフトウェアを開発してきた長年の経験に基づいて紹介します。

 美的なコードについて濃い話が続くのかと思っていたのですが、結構ライトな感じで、エンジニアなら誰もが楽しめるような内容でした。生Matzを初めて見たので感動。
 ところで、「ビューティフル コード」とは関係無い部分なのだけど、印象に残ったのがまつもとさんの『RubyUTF-8に対応させるのは不可能だと思っていた』という発言。世界レベルのハッカーであるMatzも「無理だ」と思うことがあるんだなぁと衝撃を受けました。

プログラマ35歳定年説を斬る

35歳になったら、“プログラミングは若いプログラマに譲ってマネージメントをするべきだ”“若くて体力がある後輩に突き上げられてプログラマを卒業せざるを得ない”という『プログラマ35歳定年説』。多くの著名なハッカーが反旗をひるがえしているにもかかわらず“定説?”となっているこのテーマについて、ベテラン転職アドバイザー2人が、まつもとゆきひろ氏につっこみまくります。

 一時期ずっと仕事でコードを書き続けるにはどうしたら・・・という事を考えていましたが、プログラマと言っても本当にコードを書くだけでは駄目ですよね。35歳あたりを過ぎたらマネジメントもできないと厳しいかなと。ずっとプログラマとして食っていくのは、今の日本の状況を考えると狭き門だという結論に。

キャリア相談会

株式会社ジェイブレイン、株式会社ウェブキャリアのベテランキャリアカウンセラーが、あなたのキャリアアップや転職のご相談にのります。また、ご希望があれば、100社を超えるIT求人企業の中から、あなたの希望にあった企業を紹介することも可能です。

 残念ながら中止。Matzの話も聞ける上に自分の市場価値も分かる!こりゃお得なイベントだなと思っていたのですが。。。会場に来ていた人たちは半数以上はキャリア相談会に興味がないみたいでしたが、転職意欲がない人も、せっかくの機会なので参加するべきだと思いますけどね。プロの転職エージェントに自分の市場価値を聞けるわけですから。

まとめ

 「火を通したトマトを食べても、まつもとさんのようにはなれない」ということで(笑)。