まっしろけっけ

めもてきなやーつ

PHP書いてたけどRuby書くことになって1年間でやったことてきな

久しぶりに雑談っぽい記事
よくあるようなタイトルでブログを書いてみる(実は4ヶ月前から下書きとして放置温めていた訳では・・・)
Rubyをお仕事で使い始めて(ほぼ未経験の状態から)1年以上(1年4ヶ月くらい)たったので
Rubyを使い始めて1年でやったこととかまとめてみる

Rubyをお仕事で使う以前のお話

Rubyの直前だとPHP書いてました。
FrameworkはCodeIgniterで、他にPHPのFrameworkだとZend Frameworkはお仕事で使ったことあります。
他の言語だと、C/C++,Java(少々),JavaScript,etc...

Rubyを使うことになった経緯

PHPで書いていたシステムのリプレースで闇による策略(適当)により
最終的にRuby(Ruby on Rails)でやるよ!ってなったから
(PHPは数年書いてたので個人的に新しい言語出来るのは嬉しかった)
なので下記のような感じでお仕事の内容は進んでいくのです。

  1. リプレース
  2. リリース
  3. その後
1.リプレース

Rubyなにそれ?おいしいの?状態だったので技術書でRubyRailsの勉強をしつつ
ここら辺の善しとされる記述方をガン見したり社内の他のRailsプロジェクトのソースを見ること数日

とりあえず1機能作ってみることになり作成してpull requestを送る
チーム内に1名経験者がいたのでその人にレビューして貰い、修正して再度レビューをして貰い・・・
等々を繰り返してRubyになれて来たあたりでもう一冊下記の技術書を購入

パーフェクトRuby (PERFECT SERIES 6)

パーフェクトRuby (PERFECT SERIES 6)

この本はRubyに慣れて来た自分にとっては復習的な意味やそんな書き方出来るのかRubyすげーってなってとても良かった。

そんなこんなで何とかリプレース終わったんですが、
やはり経験者がレビューをしてくれるっていうのは
Ruby特有の記述方を理解する上でとてもありがたかった。

2.リリース

リリース1ヶ月前くらいに経験者の人がチームから抜け(一応サポートはしてくれるという形)、
運用したことない自分が色々やることになってしまった件。
そんなこんなでリリースした訳ですが、レスポンスがおっそ!ってなり
2週間くらいごにょごにょを行うことになり,
その2週間くらいユーザにちゃんとしたサービスを提供できていないことが申し訳なさすぎて本当に胃が痛い毎日を送ることになった。
(負荷テストをやるべきだったのですが色々な事情により・・・また何故か同じ構成なのに本番環境でのみしか起こらない現象でもあったため)

でもこの2週間くらいのごにょごにょで
だいぶRuby on Railsで構築されたサービスの運用で問題になってくる部分が理解でき
経験値はだいぶ積めた気がする。

3.その後

リリース後は機能追加とかしていく訳ですが、
機能追加という面では特に困ったことは無く(時々Rubyの罠にはまったりしましたが・・・)
機能追加の他にもレスポンスを早くする為に主にviewのレンダリングの高速化等を行いました。

  • Ruby関連の技術書をいくつか読む
  • はてぶとかでRuby関連の情報をチェック
  • twitterRubyの凄い人達をフォロー
  • chefのrecipe書く
  • capistrano deployタスク整理
  • fragment cache使用
  • いくつかのgemの作成
  • Redis-Sentinel導入
  • Rubyのversion up
  • RubyKaigi2014に参加

機能追加以外には上記の様なことをやりちょうど1年たったくらいでRailsのversionを3.2から4.1へupgradeしました。

まとめてきな

そんなこんなでRubyistになった訳です。
色々な理由からはじめたRubyですが、
書き始めた段階から経験者にレビューして貰える環境だったので
その点でかなりRubyらしい書き方を覚えることが出来て習得がスムーズにいった気がします。
Ruby(Rails)を使ってみて感じたことは以下のような点です。

1.コードを短く綺麗に書ける

綺麗なコードは芸術だと思っている自分としてはこれは凄く嬉しかった。
しかも可読性が高く直感的にわかりやすい。

2.ARがすごい

これはRubyでは無くRailsの話
ActiveRecordが凄く優秀でこれのおかげで更にコードを綺麗に書ける

3.命名は凄く大事

以前は略語とかを使ってmethod名等を短くしていたのですが、
method名は可読性が高く直感的にわかりやすいものを付ける癖がつきました。
Rubyだからという訳ではなく他の言語でも気をつければいいのですが・・・

4.Gemがいっぱい

Gemがいっぱいあって便利
使用するGemをGemfileに書いてbundle installすれば
簡単にGemを導入出来るのは素敵すぎる

5.testを書く文化てきなやつ

Ruby書いているならtestも一緒に書くの当たり前だよねてきな雰囲気がある気がするのですが、
testを書いていてよかったと思うことが多々あるのでtestを書く習慣が出来たのはよかった。
他の言語でもちゃんとtest書こうと思えた。
testがあるとリファクタとかRubyRails,その他のgemのversion upも楽だった

6.開発効率があがった気がする

開発の効率はあがった気がする。
PHP書いてた時はtest書かなかったけど、
testを書いている今と比べても今の方が開発のスピードは上がったしバグも少ない気がする。

7.コミュニティが凄い

日本人(Matz)が作成した言語だからなのかも知れませんが、
コミュニティの活発さが凄く目立っている感があっていいなという印象

8.多機能すぎてググるのつらめ

複雑なことも出来るので、こんな複雑なこと出来るのかな?
っていうときにどんなワードでググればいいかわからないというのが
初期のときに多かった気がします。

9.version upを追うの大変

他の言語に比べて新しいversionが公開されるスピードが早いのと、
それを追わなければならない感が強いと感じました。
追うのは大変ですが個人的にはそれが楽しかったりします。

10.書いていて楽しい

そのままなのですが書いてて楽しい
でもこれが一番大事ですよね

他にもいっぱい感じたことがあるのですが最後の「書いていて楽しい」というのが
一番大きいですね。
参考にした技術書やサイトも後ほどまとめようかと思います。