社内向けに「ソフトウェアの契約と見積り勉強会」を行った

5年くらい前に XP 祭りで登壇した内容を、当時と組織メンバーの顔ぶれも変わっていることもあり社内向けに話した。 俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜 from Koichi ITO www.slideshare.net 参加メンバーからは「3秒見積りは良くない…

RuboCop Performance 1.10 をリリースした

RuboCop Performance 1.10 をリリースした。 JST で 3月1日に 1.10.0 をリリースして、3月2日に 1.10.1 をバグフィックスリリースした。以下、2つの新 Cop が目玉です。 Performance/RedundantSplitRegexpArgument cop 機能リクエストがあがっていた Cop を…

RuboCopのGitHubオーガニゼーションがrubocopになった

「RuboCopのGitHubオーガニゼーションがrubocopになった」とか、どういうタイトルだと思うけれど、表題のまま。 歴史的には、bbatsov/rubocop だったものが、RubyKaigi 2018 のときに rubocop-hq/rubocop になって、今回念願の rubocop/rubocop に至ったとい…

社内向けに「スローテスト勉強会」を行った

スローテスト対策への熱が再燃してきていたので、Ruby関西 勉強会で以前に使ったスライドをベースにオンライン社内勉強会を行った。 スローテスト刑事 (デカ) from Koichi ITO www.slideshare.net やっぱりどのプロジェクトでも Feature テストが Rails アプ…

irbでオートハイライトやオートインデントがされないときに見直す設定

Ruby 2.7 で大幅に強化された irb でオートハイライトやオートインデント、マルチライン編集ができていない場合、~/.irbrc に以下のような設定が残っている可能性があります。 IRB.conf[:USE_READLINE] = true IRB.conf[:USE_READLINE] に true が設定されて…

RuboCop の Ruby 3.0 対応

構文解析まわりは Ruby 3.0 リリース以前に概ね対応されていると思うので、うまく解析できなかったらバグの可能性があります。その場合の初手としては Parser gem を 3.0.0.0 以上にすると解決するかもしれないので、bundle update parser をしても再現する…

`&& return` より `and return` を好む

かつての RuboCop は condition and return というコードに対して、condition && return にするようデフォルトでサジェスチョンしていた。 このサジェスチョンはおかしく見えたので、結構前に構成を変えてデフォルトで condition and return を受け入れるよ…

Rails 6.1で生成コードをRuboCop適用済みにする

Rails 6.1 がリリースされたので、y-yagi さんによる待望のパッチが使えるようになった。 PR にあるように使い方はシンプルで、Rails 6.1 での config/application.rb に以下の設定を足す。 config.generators.after_generate do |files| system('bundle exe…

Offers MagazineにOSS開発に関する記事を寄稿した

少し前に Offers さんより、RuboCop コミッターとしての OSS 開発に関する話というオファーをいただいて Offers Magazine に執筆した。文筆物では12年ぶりの新作。 offers.jp オファーいただいていた文字数に対して分量割増しで書いてたものの、自分の OSS …

RuboCop 1.5で導入された`SuggestExtensions`パラメータ

RuboCop 1.5で導入されたSuggestExtensionsパラメータについて記しておきます。 導入されたパッチは以下です。 github.com たとえば Bundler を使って RSpec を依存指定している一方で、RuboCop RSpec を使っていない場合は、以下のように RSpec に対応した…

インタラクティブ プレゼンテーション パターンズを再読した

Kaigi on Rails STAY HOME Edition で登壇した動画が公開された。公開作業ありがとうございます。 www.youtube.com Kaigi on Rails への登壇自体の話は以前書いたエントリに譲り、今回はプレゼンに関する『インタラクティブ プレゼンテーション パターンズ (…

Ruby 3.0.0-devでのActive Record Session Storeのエラー回避

Rails アプリケーションの Ruby 3.0 対応を裏ではじめている頃合いだと思うのですが、Ruby 3.0.0-dev (2020-10-21T09:10:14Z を使っていたけれど preview1 でも同様かも?) を使った Active Record Session Store で以下のエラーが起きた際のメモを書いてお…

RuboCop 1.0 がリリースされた

RuboCop 1.0 がリリースされた。 github.com 自分が最初にリリースを行った 0.93.1 が RuboCop 1.0 より前の最後のリリースになったというのも感慨深いものがあるけれど、さておきついに 1.0 になった。 よい節目なので RuboCop 1.0 と周辺に関するエントリ…

Nokogiriが1.11.0からプリコンパイル済みで配布される

Nokogiri が 1.11.0 からプリコンパイル済みで配布される (らしい) 。 このエントリを書いている時点での Nokogiri のプレリリースバージョンは 1.11.0.rc3 なので、大きな問題がなければ近日リリースの Nokogiri からという少し先取りの話になる。 おや?と…

Parser gem のバージョニングと RuboCop の TargetRubyVersion

Ruby 2.7.2 にあわせた Parser 2.7.2.0 がリリースされた。 Parser と RuboCop の繋がりは大きいので、この機会に RuboCop で解析する Ruby のバージョン指定との関係も書いておく。 Parser のバージョニング Parser のバージョニングは、最新の安定版 Ruby …

Kaigi on Rails STAY HOME Edition に登壇した

Kaigi on Rails STAY HOME Edition に『TDD with git. Long live engineering』というタイトルで登壇した。 kaigionrails.org 発表スライドは以下です。 Zoom での発表だったけれど、ふだん使いは Google Meets や Slack Call がメインだったりするので、メ…

Kaigi on Rails STAY HOME Edition に登壇します

今週末 2020年10月3日(土) に開催される Kaigi on Rails STAY HOME Edition に『TDD with git. Long live engineering.』というタイトルで登壇します。 kaigionrails.org 私の登壇は 16:20-16:40 です。 概ね話はできていて、今回はアジャイルソフトウェア開…

RubyKaigi Takeout 2020 に登壇した

RubyKaigi Takeout 2020 に登壇した。 本編登壇は RubyKaigi 2018 以来 2 回目。去年 RubyKaigi 2019 では LT 登壇で TracePoint を使うことによって仕込んでしまったバグの話をしていた。 今回のスライドは以下です。 RuboCop 1.0 に向けた話 本編から Rubo…

RubyKaigi Takeout 2020 に登壇します

RubyKaigi Takeout 2020 に『Road to RuboCop 1.0』というタイトルで登壇します。 rubykaigi.org 私の登壇は初日の 2020年9月4日(金) 14:00-14:25 です。 RuboCop 1.0 に向けた最新情報でまとめています。RuboCop のライトユーザーから拡張 Cop を作っている…

Thor x Rails 6.0での注意点

Rails アプリケーションを構築する際に、バッチ処理や便利タスクなどで Thor (現在の最新バージョンは 1.0.1) を使っている機会があると思うのですが、Rails 5.2 から Rails 6.0 で挙動が変わっていた点とその解決方法をシェアしておきます。 対象 Thor タス…

不正なバイトを置換文字で置き換えるCSV.openオプション

CSV 3.1.6 がリリースされました。 github.com CSV 3.1.6 には、CSV.open に不正なバイトを置換文字で置き換えるオプションを追加するのに送ったパッチが取り込まれているのでその紹介です。 ユースケースとして、MS Excel 向けのエンコーディング (有名な C…

パーフェクトRuby on Rails【増補改訂版】をレビュアー献本いただいた

パーフェクトRuby on Rails【増補改訂版】をレビュアー献本いただいた。出版おめでとうございます & 献本ありがとうございました。 パーフェクト Ruby on Rails 【増補改訂版】作者:すがわらまさのり,前島真一,橋立友宏,五十嵐邦明,後藤優一発売日: 2020/07/…

rubocop -a と rubocop -A オプション

RuboCop 0.87 がリリースされた。 github.com 今回の目玉は rubocop -a コマンドラインオプションへの非互換変更となる。 これまでは rubocop -a オプション (rubocop --auto-correct も同義) を使った場合に、自動修正を備えたすべての Cop が適用されたて…

GitHubの新デザインを先取りして使う

GitHub がユーザー全体のデザインを変えるより前に、Feature preview を使うと先駆けで新デザインを使うことができる。 先行して新デザインが使えるときは、以下の Feature preview に通知がきているので、それを有効にする。 過去に自分が見たプレビュー機…

GitHub が落ちた時に復旧情報を受け取る

Twitter のタイムラインが賑わう GitHub のサービスダウンに関する tip です。 GItHub のサービスの状態については https://status.github.com/ で確認できます。 さらに右上の Subscribe から復旧状態をメールなどで通知を受け取ることができます。 たとえ…

pluck.uniqをdistinct.pluckに置換する

先日リリースした RuboCop Rails 2.6.0 でバグフィックスされた Rails/UniqBeforePluck についての話。 この Cop は RuboCop Rails に細かな部署があるなら、スタイルではなくパフォーマンスに属するもの。RDBMS から結果を取得したあとに Ruby の uniq で一…

SSDが擦り切れる前にルーターとHDDを導入した

2013 年モデルの MacBook Pro を開発機に使っていて、一説によると寿命の目安が5年くらいとも言われている SSD がアディショナルタイムに突入して数年経過している。多くの作業中ブランチを含む手元の OSS リポジトリやら環境が飛ぶと立ち直るのがつらい状況…

`Layout/LineLength` のデフォルトを 120 にした

RuboCop の LineLength のデフォルトが 80 ではつらいという声はずっと聞いていて、そもそも RuboCop にパッチを送り始めた頃は、いつかこの変更をするのが目標のひとつだった。 今回 3年半越しに実現することができた。現在の最新版の RuboCop 0.84.0 に適…

Rails 6.0で不要なArel.sqlを減らす

Rails 5.2 で以下のように Arel.sql を使ってセキュアな文字列であることを明示するという警告が出るようになっていたのは、多くの Rails アプリケーション開発者が通ってきているように思える。 DEPRECATION WARNING: Dangerous query method (method whose…

RuboCopドキュメントのAsciiDoc化

今日は代休をとっていた。RuboCop の方で公式サイトというかランディングページが刷新された。 rubocop.org サイトといえばドキュメントいうわけで、そちらは Markdown から AsciiDoc に置き換えようという動きがあって、ドキュメント生成タスクまわりを Asc…