give IT a try

プログラミング、リモートワーク、田舎暮らし、音楽、etc.

自分でフルアコにストラップピンを付けてみた&初心者向けフルアコの選び方

はじめに

いろいろ考えた末に思い切って買ってしまいました!!
FUJIGEN(FGN)のMFA-HHです。音も良くてとっても弾きやすいです。

いやあ、きれいですね〜。

バックはカーリーメイプル(トラ目)です。

指板のローズウッドも色が濃くて上品な印象です。

このギターのデモ演奏は以下のYouTube動画が一番良いと思います。


www.youtube.com

ストラップピンを自分で付ける

ただ、このギターはボディ裏にストラップピンが付いていませんでした。
ストラップピン自体は付属していて「付けたければ自分で付けてね」というスタイルになっています。

しばらくストラップ無しで弾いてたんですが、「やっぱりストラップがあった方が弾きやすい!」と思い、自分でストラップピンを付けてみました。
そのときの手順を以下で紹介します。

【おことわり】

このブログで説明するのはあくまで素人の作業手順です。真似する場合は自己責任でお願いします。
自信がない場合や、高価なギターにストラップピンを取り付ける場合は楽器店にお任せした方が良いと思います。

また、自分でギターに加工をすると、ギター購入時の保証が無効になったり、そのギターの価値が低下したりする可能性もあるので、その点にも注意してください。

どこに付けるか情報収集する

この手のギターのストラップピンは「絶対にここ!」という取り付け位置があるわけではなく、人によって好みの場所が異なるようです。
具体例を挙げると以下の5パターンです。(他にもあるかもしれませんが)


Image: https://www.jazzguitar.be/forum/guitar-amps-gizmos/66296-gibson-es-175-strap-button-poll.html

1や2はよく見かけるパターンですが、これだと両手を離したときにギターが前に向かってお辞儀しやすいのがデメリットらしいです。

お辞儀しにくいのは3、4、5ですが、4と5は取り付け位置を慎重に決めないとハイポジションを弾くときに邪魔になる可能性があります。
あと、若干違和感が強いというか、見方によってはちょっと不格好に見えます。

3はネジがしっかり固定されるよう、予めボディ裏に木の角材を取り付けたりしないといけないので、素人が自分で後付けするにはちょっとハードルが高いです。

今回の取り付け位置は1に決定

ちょっと自分では決めかねる部分もあったので、参考情報としてメーカーの公式見解も聞いてみることにしました。
フジゲンのサポート窓口に問い合わせてみると「1の場所に付けるのがお勧めです」という回答が返ってきました。

フルアコを弾いているYouTube動画もいろいろ見てみましたが、たしかにだいたい1か3ですね。
僕が過去に持っていたフルアコも1か3でした。
ただ、3は素人が後付けするのはちょっと難しいです。

1は「ギターがお辞儀しやすい」というデメリットはあるみたいですが、過去に持っていたフルアコで「ギターがお辞儀して困る」と思った記憶はないので、取り付け位置は1でいくことに決めました!

YouTube動画で取り付け方を予習する

自分でストラップピンを付けるのは今回が初めてです。
穴を空けてネジで止めればいいんでしょ、とは思うものの、万一大失敗してギターがダメになるとショックが大きいので、しっかりと予習することにしました。

ストラップピンの取り付け方については以下の2つの動画が役に立ちました。


www.youtube.com

www.youtube.com

どちらの動画も取り付け位置は5ですが、手順や考え方は1でも同じだと思います。

道具を準備する

今回使った道具は以下の通りです。

まず、電動ドリル。

それと電動ドリル用の刃。できるだけ細いやつ(2mm〜3mm)が良いです。

理由は後述しますが、金属用より木工用の方がいいかも?

マスキングテープも使いました。(何でもいいです)

最後にドライバーセットです。

また、今回の取り付けではギターをうつ伏せにして作業する必要があるため、フレットガードと柔らかいブランケット等も用意した方がいいと思います。

ちなみに、今回買ったギターには最初からメーカー純正のフレットガードが付いていました。

加えて、何か思いがけない事故の原因になりそうだったので、作業前に弦は緩めておきました。

では、これから実際の作業に移ります。

マスキングテープを使って穴を空ける位置を決める

マスキングテープの中央にペンで印を入れます。
それを印がちょうどネックの中央になるようにギターに貼り付けます。

ちょっとわかりにくいですが、矢印の先にペンで入れた印が付いています。

ストラップピンを取り付ける場所はできるだけ平面になっている部分が良いです。
(一般的なアコギと違ってフルアコのボディは中央に向かってアーチを描いているので要注意)

使用するドリル刃の太さと穴を空ける深さを決める

次にネジの太さを確認します。
今回取り付けるストラップピンのネジの太さは3mm弱ぐらいでした。
8-9割ぐらいの太さの穴を空けたらよい、とのことなので、今回は2.5mmのドリル刃を使うことにします。

ただし、一気に太いドリル刃を使うのではなく、一番細いものから順番に拡張していくのが良いようです。
僕が持っているドリル刃は2mmが一番細かったので、2mm→2.5mmと順番に穴を空けていくことにします。

また、必要以上に深く穴を空けてしまわないよう、ネジの長さを確認してドリル刃にマスキングテープで「ここまで」という印を付けます。
今回は2cm弱の深さがあれば良いようです。


いよいよギターに穴を空ける!!

さあ、緊張の一瞬です。ギターにドリルを使って穴を空けます!
刃の先端をギターに当てて、ドリルのスイッチを入れます・・・ぐい〜〜〜〜ん!!!!

はい、穴が空きました。まずは2mmから。

次に2.5mmの穴を空けます。
写真だとわかりづらいですが、ちょっとだけ穴が大きくなりました。

マスキングテープを外すとこんな感じです。見た感じ、きれいに空いてます。


感想:思ったよりもギターは固かった・・・!!

実際に穴を空けてみた感想なんですが、想像以上にギターは固かったです。
軽く刃を当てるぐらいでは全然穴が空きません。
刃の回転数を上げて、ぐっと力を入れてドリルを押し込まないと、ドリルの刃がギターに潜っていきませんでした。

しかし、ドリルを押し込むとギターに負担がかかりそうなのでちょっと怖かったです。
加えて、刃の回転数を上げるとドリルの力でギターのボディが左右にガタガタ揺れたりするので、回転数の上げすぎも禁物です。

今回は特にギターにダメージなく穴を空けられましたが、自信がない人や高価なギターを持ってる人はやっぱり楽器屋さんにお願いした方が良いかもしれません!!

ただ、手元にあったのが金属加工用のドリル刃だったのですが、これがダメだった可能性もあります。
木工用のドリル刃だともうちょっと楽に穴が空けられたのかなーと思ったりもしました。

ドライバでストラップピンを取り付ける

さて、なにはともあれ穴さえ空けてしまえばこっちのもんです。
最後にドライバでストラップピンをネジ止めしましょう。

はい、完成しました!

素人仕事ですが、いちおうボディの真ん中に付いてます。


ギターのお辞儀問題も特に気にならず

ちょっとわかりにくいかもしれませんが、ストラップを付けるとこんな感じ。

「ギターがお辞儀をする」という問題は、両手を離したら「わずかに」っていうぐらいですね。
ギターを弾くときは通常、両手でギターを持ってるのでギターのお辞儀問題は全然気になりません。
なので、特にこだわりがなければ1の位置でいいんじゃないかと思います!


初心者向けフルアコの選び方?

ところで、僕はこれまで何度かフルアコやセミアコを買い換えてきました。
ギターって実際に買って弾いてみないと良し悪しがわからないです。
「ジャズギターがやりたい」と思って、フルアコやセミアコを買ってみたものの、「いいギターなんだけど、ちょっと……」と思って手放すことを何度か繰り返したので、僕なりの「これからフルアコやセミアコを買おうと思ってる人向けのアドバイス」を書いてみようと思います。

セミアコはフルアコの完全な代わりにはならない

ES-335はボディ内にセンターブロックが走っているので、セミアコ(セミアコースティックギター、またはセミホロウギター)に分類されます。

セミアコもジャズっぽい音は出ますし、セミアコでバリバリジャズを弾くプロギタリストもいます。
が、フルアコ特有の透明感やふわっとした感じの音(エアー感がたっぷり含まれる音)をセミアコで出すのはちょっと難しいです。

「私はセミアコの音でジャズを弾くのが好きなんだ!」という人はいいですが、「あのフルアコみたいな音を出したい」というイメージがある場合は最初からフルアコを買うことをお勧めします。

ただし、セミアコの場合は後述する「トップ落ち」の問題が発生しないので、弾き終わった後に弦を緩めなくても大丈夫というメリットがあります。
トップ落ちが怖い人はあえてセミアコを選ぶ、というのもありかもしれません。

17インチのボディサイズは抱えるのがしんどい

僕が初めて買ったフルアコはD'Aquisto DQ-NYEというギターです。
このギターのボディサイズ(ボディ幅)は17インチあります。

楽器屋さんで試奏したときは「これ、ええやん!」って思ったのですが、実際に買ってみると「ちょっとでかいな……」と感じるようになりました。
ギターが大きすぎると手に取る回数が減り、次第にあまり弾かなくなってしまいました。

大きいフルアコはゴージャスで見た目はすごくカッコいいのですが、平均的な体型の日本人にはちょっと向いてないのかもしれません。
とりあえず、初心者が「最初の1本」として買うときは16インチ以下のフルアコにした方が良いと思います。

ボディの厚みは厚すぎず、薄すぎず?

代表的なジャズギターであるES-175のボディの厚さは3 3/8インチ(約8.5cm)です。


Image: 1976 Gibson ES-175 ES175 Vintage Archtop Electric Guitar | Reverb

これまでストラトやレスポールのような「いわゆるエレキギター(ソリッドボディのエレキギター)」を弾いてきた人は、自分の身体からネックやピッキング位置が離れれば離れるほど、弾きにくさを感じると思います。
また、「ちょっとしんどいな」と思いながら無理な体勢で頑張って弾いていると右肩を痛めたりすることもあります(経験あり)。

慣れの問題もあるかと思いますが、最初の1本は少し薄めのフルアコを買って「厚みのあるギター」に慣れていく方がいいかもしれません。

ただし、その一方でボディが薄くなったり小さくなったりすればするほど、「ジャズギターらしいリッチで温かみのある音」は出にくくなっていくので注意が必要です。
(もちろん弾き方や音作りでカバーできる面もあると思いますが)

ちなみに今回僕が買ったFUJIGEN(FGN) MFA-HHは、ボディ幅が16インチで、厚みが3インチ(約7.6cm)です。
幅はES-175と同じで、厚みは1cmほど薄い感じですね。

ボディの厚みについてはもう少し薄いもの(たとえば 2 1/2インチ=約6.4cmや2 1/4インチ=約5.7cm)もありますが、YouTube動画などを見ているとなんとなく音が軽い感じがしたので、僕はボディの厚みは7cm前後が一番弾きやすさとサウンドのバランスがいいんじゃないかと思っています。

とはいえ、音や弾きやすさは好みによるので、楽器屋さんでじっくり試奏して確かめるのがいいと思います。

最近の若手ジャズギタリストは小型&薄型のフルアコを使う人も多いので、現代っぽいジャズギターの音が欲しい場合は小さめのフルアコを狙うのもアリです。

なお、ギターの厚みを調べるときは「製品名 + depth」みたいなキーワードで検索すると情報が引っかかりやすいです。

必ず一度ボリュームをゼロにして試奏する

フルアコは雑に言えば「ふつうのアコギにパーツがたくさんくっついたギター」です。
なので、フルアコを弾くとアコギみたいにギターが振動します。

そして、ギターによってはこの振動によってパーツが共鳴(共振)して生音で鳴らしたときに「ブーン」というノイズが聞こえてくるものがあります。
僕が最初に買ったD'Aquisto DQ-NYEがそうでした。

アンプで鳴らすとほとんど聞こえなくなってあまり気にならないのですが、生音で弾いたときはまあまあ耳障りです。
しかもどのパーツが共鳴しているのかよくわからず、直し方も不明でした。(リペアとかに出すと直るかもしれませんが)

というわけで、ギター屋さんで試奏するときは一度ボリュームをゼロにして、生音で弾いたときにパーツの共鳴しないかチェックすることをお勧めします。

トップ落ちを恐れるか否か?

フルアコは完全にボディが空洞になっているため、弦の圧力ででボディ表面の板が徐々に沈み込む「トップ落ち」という問題が発生することがあるそうです。
この問題を避けるために「フルアコは弾いた後に弦を緩めた方がいい」という話をよく聞きます。
(「フルアコ トップ落ち」とか「フルアコ 弦を緩める」みたいなキーワードでググると、その手の話がたくさん見つかります)

僕も最初はトップ落ちが怖かったので、フルアコを弾いたら毎回弦を緩めていました。

が!

弦を緩めると毎回ゼロからチューニングしなきゃいけなくなるので、ギターを弾くのが億劫になるんですよねえ。
で、「トップ落ちは怖い、でも毎回チューニングし直すのは面倒くさい」と感じてしまい、徐々にフルアコを弾かなくなって売ってしまいました。

以前持っていたArchtop Tribute AT105Mがまさにそのパターンでした。

しかし、買ったギターを弾かないのはもったいないです。
なので、僕は「次に買うギターはトップ落ちしてもいいから弦を緩めない」と心に決めました!!

とはいえ、あまり高価なギターを買ってトップ落ちするのは辛いので、今回はそこまで高価すぎないフジゲンのギターでまず実験(?)してみることにしました。
あと、フジゲンのwebサイトに「頑丈でトップ板の問題が発生しにくい」と書いてあったのも購入を決めた理由の一つです。

フジゲン製品の特徴の一つは頑丈さにあると思います。過去に販売したこちらのモデルで、フルアコにありがちがトップ板の問題などは見た記憶がなく、安心して長くお使いただけると思います。

MFA-HH/JB - フジゲンカスタムハウス オンラインストア

あと、「ネックやトップ板のトラブルは弦を緩めないことよりも、室内の温度・湿度の方が原因になりやすい」という話も聞いたことがあります。
人間やペット(犬・猫)が快適に暮らせる環境(気温=22℃、湿度=55%ぐらい?)がギターにとっても一番快適らしいです。

我が家はペットとして犬を飼っていることもあり、室内の温度や湿度にはまあまあ気を付けている方です。
なので、「温度管理や湿度管理が原因説」が本当なら、弦を毎回緩めなくてもトップ落ちは起きにくいのかなーと思ったりします。

さて、結果はどうなるでしょうか!?
覚えていたらまた数年後にこのブログでレポートしてみたいと思います。

まとめ

というわけでこのエントリでは自分でフルアコにストラップピンを付ける方法と、初心者向けのフルアコの選び方を紹介してみました。
どちらのトピックも同じような問題で困っているみなさんのお役に立てば幸いです!

僕がQiitaに書いた記事と同じテーマでChatGPTに技術記事を書かせてみた

はじめに

さっき、Qiitaに「Railsのコントローラに出てくるparamsはハッシュじゃない」というタイトルの記事を公開しました。

qiita.com

それからふと、「これと同じテーマでChatGPTに記事を書かせたらどうなるんだろうか?」と思ったのでちょっと試してみました。

実行条件

使ったのはChatGPT 3.5です。 最初は以下のようにお願いしました。

「Railsのコントローラに出てくるparamsはハッシュじゃない」というタイトルで初心者向けのわかりやすい解説記事を書いてください。

最初に生成された記事には、僕の書いたトピックがいくつか含まれてなかったので追加で以下のお願いをしました。

以下のようなトピックも記事に含めてほしいです。

  • paramsで参照しているのは変数ではなく、メソッド
  • ハッシュではないのでparamsから値を取り出すときはシンボルでも文字列でもOK

が、「paramsで参照しているのは変数ではなく、メソッド」の内容が僕の期待している内容と違ったので次のお願いもしました。

「paramsで参照しているのは変数ではなく、メソッド」ではparamsがローカル変数ではなくコントローラ内にメソッドとして定義されていることを初心者向けに説明してほしいです。

その結果出力されたのが以下の内容です。(全文をそのままコピペします)

Railsのコントローラに出てくるparamsはハッシュじゃない

初めてRailsを学び始めると、コントローラでよく見かけるparamsというキーワードに遭遇することでしょう。しかし、実際にはparamsは単なるハッシュではなく、少し特殊な仕組みが組み込まれています。

1. paramsって何?

まず最初に、paramsが何を指しているのかを理解しましょう。paramsはRailsアプリケーションに送られてきたHTTPリクエストのパラメーターを受け取るための仕組みです。これには、フォームから送信されたデータやURLパラメーターなどが含まれます。

# コントローラ内でのparamsの使用例
def create
  user = User.new(user_params)
  # 他の処理...
end

private

def user_params
  params.require(:user).permit(:name, :email, :password)
end

上記の例では、createアクション内でparamsを使用して新しいユーザーを作成しています。user_paramsメソッドでは、paramsから必要な情報を取り出すためのフィルタリングも行っています。

2. paramsはハッシュじゃない?

一見すると、paramsはハッシュのように見えるかもしれませんが、実際にはActionController::Parametersと呼ばれるクラスのインスタンスです。これはRailsが提供する特殊なクラスで、通常のハッシュとは異なる性質を持っています。

2.1 ハッシュとの違い

通常のハッシュでは、どんなキーでも受け入れますが、ActionController::Parametersは許可されたキー以外のアクセスを拒否します。これにより、予期せぬパラメーターがコントローラに渡されることを防ぎます。

# 通常のハッシュ
normal_hash = { name: "John", age: 25 }
puts normal_hash[:gender]  # => nil

# ActionController::Parameters
params = ActionController::Parameters.new(name: "John", age: 25)
puts params[:gender]  # => ActionController::UnpermittedParameters (found unpermitted parameters: :gender)

2.2 ストロングパラメーター

この特性は、セキュリティやデータ整合性を維持するために非常に役立ちます。上記の例で示したuser_paramsメソッドが、実際にはストロングパラメーターとして知られているものです。これにより、許可されたパラメーターだけが新しいユーザーオブジェクトに反映され、不正なデータが混入することを防ぎます。

3. paramsで参照しているのは変数ではなく、メソッド

paramsで参照しているのは変数ではなく、コントローラ内で定義されたメソッドです。このメソッドはHTTPリクエストから送られてきたパラメーターを取り出し、必要な情報を抽出します。例えば、以下のようなメソッドがあります。

# コントローラ内でのparamsの使用例
def create
  user = User.new(user_params)
  # 他の処理...
end

private

def user_params
  params.require(:user).permit(:name, :email, :password)
end

上記の例では、user_paramsメソッドがparamsから必要な情報だけを取り出しています。このメソッドはコントローラ内で利用でき、paramsをより使いやすく、かつ安全に扱うための手段となります。

4. ハッシュではないのでparamsから値を取り出すときはシンボルでも文字列でもOK

通常のハッシュではキーにはシンボルか文字列を指定する必要がありますが、ActionController::Parametersは柔軟で、キーを指定する際にシンボルでも文字列でも良いです。

# ActionController::Parameters
params = ActionController::Parameters.new(name: "John", age: 25)
puts params[:name]  # => "John"
puts params["age"]  # => 25

paramsはこのような柔軟性を提供するため、開発者が使いやすくなっています。

5. まとめ

paramsはRails開発において重要な要素であり、ハッシュとは異なる特殊な性質を持っています。理解することで、安全で効果的なコードを書く手助けとなります。特にストロングパラメーターの活用は、データの整合性を維持するために不可欠です。Railsの学習の一環として、paramsの特性をしっかりと理解しておきましょう。

(ChatGPTのコピペはここまで)

僕の感想

以下はChatGPTによって生成された記事に対する僕の感想です。

セキュリティに言及しているのが良かった

もともと僕の書いた記事ではセキュリティに関する言及はなかったのですが、ChatGPTが生成した記事にはセキュリティに関する言及がありました。 これはたしかにひとこと書いておいたほうがいいな、と思ったので、僕の記事にもセキュリティに関する話を追記しておきました。 (ただし、ChatGPTの文章ではなく、自分の文章で説明しています)

「paramsで参照しているのは変数ではなく、メソッド」の内容がちょっと的外れ

「paramsで参照しているのは変数ではなく、メソッド」に書いてある内容は僕の書いてほしかった内容とちょっとズレています。 一度書き直すようにお願いしたのですが、あまり改善しませんでした。 (paramsは一見変数っぽく見えるけど、実はコントローラに定義されているメソッドである、という話を書いてほしかった)

とはいえ、この内容はそれほど重要ではないですし、ChatGPTにうまく意図を伝えるのも難しいのでまあいいかな〜という感じです。

最後のまとめはやっぱりChatGPTくさい

まとめに書いてある「paramsはRails開発において重要な要素であり」とか「データの整合性を維持するために不可欠です」みたいな言い回しは、いかにもChatGPTっぽいなと思います。 ChatGPTが記事を書くと最後のまとめでやたらその技術を持ち上げるようなことを書くんですよね〜。 そんなに「重要」とか「不可欠」みたいに強調せんでもええやん、って思います。

内容は悪くないが、どこまでも先生っぽい

一部を除いて説明している内容自体は悪くないのですが、語り口はやはり、終始「テレビの向こうにいる先生」っぽい感じがしますね。 書き手の感情がほとんど見えないというか、無駄なく必要な情報を説明するだけというか。 僕だけかもしれませんが、こういう記事は読んでいてもなんか味気ない感じがします。

ChatGPTが書いた記事と人間が書いた記事、どっちが好き?

僕の書いた記事のリンクもあらためて貼っておくので、ChatGPTの記事と読み比べてみてください。

qiita.com

みなさんはどちらの記事が好みでしょうか?

まとめ

というわけで、このエントリでは僕がQiitaに書いた記事と同じテーマをChatGPTに書かせてみて、その出力結果と僕の感想を書いてみました。

僕自身、そこまでChatGPTを使いこなしているわけではないので、「ChatGPT 4だと全然違うぞ!」とか「うまく指示すれば人間くさい記事も出力できるぞ!」みたいなツッコミもあるかもしれません。 今後の進化の仕方によってはChatGPTくささが全然なくなる可能性もありますね。

それはともかく、「そうか、セキュリティにも言及した方がいいな」みたいな話はChatGPTを使ったメリットのひとつなので、うまく活用すると技術記事の執筆にも活用できそうです。 「ChatGPTが生成した記事をまるまるコピペ」はどうかなと思いますが、そうではなく、技術記事の執筆に生成AIをうまく活用してますよ〜という人がいたら情報を教えてください!

おまけ

これは最初から最後まで人間(=僕)が書いた技術書です↓

Everyday Rails - RSpecによるRailsテスト入門がRails 7.1とRuby 3.3に対応しました!

お知らせ

僕が翻訳している電子書籍「Everyday Rails - RSpecによるRailsテスト入門」をアップデートしました🎉
すでに本書を購入されている方はLeanpubのサイトから最新版の電子書籍ファイルを無料でダウンロードできます。

https://leanpub.com/everydayrailsrspec-jp/leanpub.com

2024年版のアップデート内容

今回のアップデート内容は以下の通りです。

  • サンプルアプリケーションをRails 7.1 + Ruby 3.3 + rspec-rails 6.1で再作成
  • これに伴い、サンプルアプリのリポジトリURLも変更
  • 新しいサンプルアプリのコードや挙動にあわせて、本書の記述を修正
  • リンク切れしていたいくつかのリンクを新しいURLに修正

Rails 7.1で作った新しいサンプルアプリケーションは以下のGitHubリポジトリに置いています。

github.com

とはいえ、書籍としてはほとんど内容は変わっていません。
Rails 7.0も7.1もRSpecの使い方を学ぶ上では考え方を大きく変えるようなポイントはない、と思ってもらって大丈夫です。

細かすぎて伝わらない変更点

ほとんど同じ、とはいうものの、細かい点では若干変わっています。
その変更点に誰も気付かれないのはちょっと悲しいので、変更点をいくつか紹介します。

「タスク完了」のUIをHotwireを使って実装した

Everyday Railsのサンプルアプリには「タスク完了」のチェックボックスをクリックすると、即DBが更新される機能があります。
Rails 7.1版のサンプルアプリではこの機能をHotwireを使って実装してみました。

github.com

letter_opener_webを導入した

サンプルアプリではメールを送信する機能があるのですが、開発環境でメールがちゃんと送信できたのかどうかはRailsのログを確認するぐらいしかありませんでした。
(ただし、テストコード内ではRSpecを使って送信されたメールの内容をテストしています)

Rails 7.1版のサンプルアプリではletter_opener_webを導入しています。
そのため、 http://localhost:3000/letter_opener にアクセスすれば送信されたメールの内容が確認できます。


不要なアップロードファイルを削除するコードが変わった

Rails 7.1ではrails newしたタイミングで、tmp/storage/.keepというファイルが作成されます。
第10章ではこれまで

config.after(:suite) do
  FileUtils.rm_rf(ActiveStorage::Blob.service.root)
end

というコードで不要なアップロードファイルを削除していました。
ですが、これだとtmp/storage/.keepも一緒に削除してしまいます。
そこで、以下のコードに変更して不要なディレクトリだけを削除するようにしました。

config.after(:suite) do
  Pathname(ActiveStorage::Blob.service.root).each_child do |path|
    path.rmtree if path.directory?
  end
end

Rails 7.1やRuby 3.3では警告が発生する箇所の修正

いくつかのgemではRails 7.1やRuby 3.3で実行すると警告が出るものがあったので、Rails 7.1版のサンプルアプリケーションではやむを得ずGitHubリポジトリ上のgemのコードを参照するなどして警告の発生を回避しています。
これらの回避策はあくまで一時的なものなので、正式対応版がリリースされ次第、元のコードに直す予定です。

Capybara 3.39.2

2024.2.3追記
Capybara 3.40.0がリリースされて下記の問題が解消したため、サンプルアプリも最新のCapybaraを使うようにアップデートしました。

Rack 3を使っているとCapybaraが原因で"Rack::Handler is deprecated and replaced by Rackup::Handler" という警告が発生します。
github.com

すでに修正コードはmasterブランチにマージ済みですが、まだ正式リリースされていないため、GemfileでGitHub上のコードを参照するようにしています。

# Gemfile
# Waiting for https://github.com/teamcapybara/capybara/pull/2706 to be released
gem "capybara", github: "teamcapybara/capybara"
Geocoder 1.8.2

Ruby 3.3を使っていると、Geocoderが原因で以下のような警告が発生します。

warning: csv was loaded from the standard library, 
but will no longer be part of the default gems since Ruby 3.4.0. 
Add csv to your Gemfile or gemspec.

すでに修正コードはmasterブランチにマージ済みですが、まだ正式リリースされていないため、GemfileでGitHub上のコードを参照するようにしています。

# Gemfile
# Waiting for https://github.com/alexreisner/geocoder/issues/1642 to be released
gem "geocoder", github: "alexreisner/geocoder"

ちなみにgeocoderに修正のプルリクエストを送ったのは僕です。

github.com

また、Ruby 3.3で警告が出る理由については以下のQiita記事で説明しています。

qiita.com

Devise 4.9.3

Rails 7.1を使っていると、Deviseが原因で以下のような警告が発生します。

DEPRECATION WARNING: 
`Rails.application.secrets` is deprecated in favor of `Rails.application.credentials` 
and will be removed in Rails 7.2. 

この問題はIssueとしてすでに報告されていますが、2024年1月9日時点ではまだOpenのままです。

github.com

この警告を回避するため、config/initializers/devise.rbで以下の記述を追加しています。

# config/initializers/devise.rb
# NOTE: Please remove the following lines when https://github.com/heartcombo/devise/issues/5644 is fixed
require 'devise/version'
raise "Issue 5644 might be fixed" unless Devise::VERSION == "4.9.3"
config.secret_key = Rails.application.secret_key_base

まとめ

というわけで、このエントリでは「Everyday Rails - RSpecによるRailsテスト入門がRails 7.1とRuby 3.3に対応しましたよ」というお知らせを書いてみました。

Rails 7.0と7.1で変わる部分はほとんどないものの、公式に「Rails 7.1でも本書の内容は有効ですよ!」とアナウンスしてあれば、安心して本書を購入できるんじゃないかなと思います。

また、すでに本書を持っている人も、「変更点がほとんどない=本書で学んだRSpecの知識は最新の開発環境でもまだ有効」ということがわかって安心できるのではないでしょうか?

これからも引き続き最新版のRailsやRSpecに対応していく予定ですので、みなさん今後とも「Everyday Rails - RSpecによるRailsテスト入門」をよろしくお願いします。
(購入済みの方は周りの人にお勧めしてもらえると嬉しいです!😄)

https://leanpub.com/everydayrailsrspec-jp/leanpub.com

Q. どうやって購入するの?

本書の購入手順は以下のブログ記事で詳しく説明されているので、こちらをご覧ください。
tomoyuki65.com

また、そのほかのよくある質問に関しては以下のエントリにまとめています。
興味がある方はこちらをご覧ください。
blog.jnito.com

あわせて読みたい

「Everyday Rails - RSpecによるRailsテスト入門」も「プロを目指す人のためのRuby入門」も、「出版したら終わり、にしない技術書」を目指しております。