おはようございます、プレイライフの熊崎です。
今週は雨の日が多かったですね。
来週も雨の日が多いようで、気が滅入ってしまいます。。。
来週も、雨にも負けず風にも負けず仕事を頑張っていきたいと思います!
なぜこの記事を書こうと思ったか?
業務を行っていて、railsの機能を充分には使いこなせていなかった。(今振り返ると、そもそも使いこなそうともしていなかったように感じる。)
原因を考えてみたら、下記の原因が考えられた。
- なんでrailsの規約に沿った書き方をしなければいけないのか?という理由が自分の中で明確になっていなかった。
- スピード感を持って開発することが求められている中で、とりあえず動くものを作るということに意識を向け過ぎた。
スピード感を持って開発することが求められている中で、とりあえず動くものを作るということに意識を向け過ぎた。
に関しては、今までの経験上、後で修正しようと考えても絶対修正まで手が回らないので、都度railsの機能を利用することを徹底することにした。
↑
のように考えても、railsを使用する恩恵の理解が薄いと絶対に上記の意識も薄れてくるので、アウトプットを行うことで自身の理解を深めようと思ったため。
本記事の対象者
ということで、本記事は以下のような方々を対象とする。
- 自分と同じように何となくでrailsを使用していた方
railsの基本理念
Convention over Configuration(設定より規約)
アプリケーションの実装を行う上で、決めなくてはいけないことは沢山ある。(ex:主キーの名前をどうするか、など)
そのような決めなくてはいけないこと(設定)を規約に移すことで、設定を決定する時間を軽減することをモットーとする。
railsを使用するメリット
- 上記の基本理念に則って作られているため、規約に則った書き方をすれば、作業時間を短縮できる。
- 初心者でも、規約に則った書き方をすれば、最低限のコードの質は担保される。(もちろん、命名規則や単一責任の原則など、コードの質を担保するためには他にも考慮しなければならないことが沢山ある。)
- 単純にコード量が少なくて済む。
- 可読性が上がる。
メリットの補足(コード量が少なくて済む・可読性が上がる について)
例: 性別が男性のUserを探したい場合
# すでにSampleUsersテーブルに男性や女性の情報が登録されていると仮定する。
# railsのActiveRecordを利用した場合
SampleUser.where(sex: :man)
# ↑をrubyで似たようなことを行う場合
SampleUser.select { |user| user.sex == "man" }
前者の方が記述量が少ない。(検索条件が複雑になればさらに記述量に差が出てくる。)
また、whereは検索用のメソッドなので、whereと書いてあれば、「何か条件を設定していて、その条件に当てはまるレコードを検索している」ということが直感的に理解しやすい。
一方で、後者だと記述量が多い上に、パッと見で何をやっているか少しわかりづらい。(このコードは短いので、わからなくはないが、検索条件が膨らんでくるとさらに読みづらくなることが予想される。)
まとめ
- railsの理念はConvention over Configurationである。
- railsを使いこなすことで、rubyで実装するより、記述量が少なく、かつわかりやすいコードを書ける。
最後に
そもそもフレームワークは楽をするために、先人達が知恵を絞って作ったものだから、フレームワークを積極的に使用して作業効率を上げるのは当たり前のことだと思う。
しかし、とにかく動くものを作るという目先のことに囚われすぎて、フレームワークを積極的に使用することに意識が向いていなかった。
とにかく動くものを作る → フレームワークを使わない → フレームワークの使い方を覚えない → 作業スピードが上がらない
といった負のスパイラルに陥るため、今後は使ったことのないrailsの機能でも積極的に使っていきたいと思う。