1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Rubocopをコネコネしたお話

Last updated at Posted at 2025-12-01

初めに

どうもCirkitアドカレ3日目を担当させていただく、SAKITOエンジニアのえいぽんです。
今回はSAKITOのコードの一貫性の管理を担うRubocopが整備された(整備したので)にこのことについての記事を書いていきたいと思います!今までで導入はされてはいましたが、とりあえず動くからまあいいや、ユーザー影響が出ないから良いやで放置されていたのがとうとう動くようになって感慨深いです。

開発環境・使用技術

Ruby on Rails, Docker, Git

そもそもRubocopとは?

Ruby用に開発された静的コード解析ツールで、コード品質を担保する目的で使われます。自分がコードを書いている際に、コードの不適切な書き方や助長な部分があると規約違反として表示され、修正案を提示してくれるものとなっています。

なぜ動くようにしたのか

  • 誰が書いても同じ書き方になる。
    • 今までは、コードの最後に,を付けるのか、つけないのか問題などで議論が巻き起こりそのたびに先送りになっていた…
  • 余分なインデント、不要なスペースなどの指摘でそんなところまで見ないといけないのかということで、レビュワーの負担がかかっていた
  • 非推奨な書き方が多いので保守性を上げたい

Rubocop Gem

airbnbを使用しています。

group :development, :test do
    gem "rubocop-airbnb"
end

カスタマイズした内容

それぞれがどのようなカスタマイズしたかはコードブロック内のコメントアウトを見てもらえれば、良いかと思います。

inherit_from: .rubocop_airbnb.yml

# 要検討
require:
  - rubocop-capybara
  - rubocop-factory_bot
  - rubocop-rspec_rails

AllCops:
  NewCops: enable
  Exclude:
    - "db/**/*"
    - "config/**/*"
    - "script/**/*"
    - "node_modules/**/*"
    - "bin/*"
    - "**/Gemfile"
    - "vendor/**/*"
    - ".git/**/*"

# Rails用に最適化
Rails:
  Enabled: true

# ダブルクォートの使用を強制
Style/StringLiterals:
  EnforcedStyle: double_quotes

# 引数のインデントを強制
Layout/ArgumentAlignment:
  Enabled: true

# 行長の長さをfalseで許容
Layout/LineLength:
  Enabled: false

# if/unless の書き方に関する Airbnb 独自 Cop を無効化
Airbnb/SimpleModifierConditional:
  Enabled: false

Airbnb/SimpleUnless:
  Enabled: false

# 日本語の許可
Rails/I18nLocaleTexts:
  Enabled: false

# factory_bot / Airbnb 独自 Cop 無効化
Airbnb/FactoryClassUseString:
  Enabled: false

Airbnb/FactoryAttrReferencesClass:
  Enabled: false

# 「and」「or」の使用を許可
AndOr:
  Enabled: false

修正コマンド

今回はDocker環境で動作しているので、上の設定をした後に、コンテナ内でコマンドを打って修正するといった感じです。

  1. コンテナ内に入る

    docker compose exec web bash
    
  2. 修正コマンド

    bundle exec rubocop -a
    

しかし、ここで問題なのは、自動修正できる部分と手動でなければならないところなどが分かれるので、手動で直すべき所は、規約に沿って直してあげる必要があります。(-Aで強制的に修正するという方法もあるのですが、既存の処理が壊れることになる場合があるので)

終わりに

今回はあくまでもCIが動くことを優先しているので、めちゃくちゃ細かい設定などはまだ設定しきれていないです。あくまでも、現時点のコードで必要最低限の設定をしている感じです。そのため今後は足りない部分の補完・修正を進めて、コードの品質を保てるようにしていきたいです!!

追伸

最初何も設定していない状態で実行したら、エラーが出る出る。日本語を許可したら一気に減ったのはびっくりしました。あと間違っていたことあれば指摘&こういう設定もあるよねって人いれば教えてください!!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?