give IT a try

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

日本語版「Everyday Rails - RSpecによるRailsテスト入門」が発売10周年を迎えました 🎉

僕が翻訳しているRSpecの入門書「Everyday Rails - RSpecによるRailsテスト入門」は2014年2月に発売されました。

blog.jnito.com

そう、発売からちょうど10年が経ったのです。
いつの間にか10年!僕も全然気付いていませんでした!!

おかげさまで本書は何度となくアップデートを重ねつつ、RSpecの定番の入門書としてたくさんの人に読んでいただいています。
現時点での読者数はのべ6800人以上です。ご購入してくださったみなさん、本当にどうもありがとうございます!

これまでの歴史

どういう流れで本書が翻訳され、現在に至ったのかを簡単にふりかえってみましょう。

2012年5月
原著「Everyday Rails Testing with RSpec」がLeanpubで発売
2013年10月
僕が原著を読み、その感想をブログに投稿

blog.jnito.com

2013年12月
原著者のAaronさんに許可をいただき、Aki(秋元利春)さん、魚振江さんと一緒に翻訳プロジェクトを開始

blog.jnito.com

2014年2月
日本語版「Everyday Rails - RSpecによるRailsテスト入門」をLeanpubで発売。当時のサポートバージョンはRSpec 2.14、Rails 4.0、Ruby 2.0

blog.jnito.com

2014年10月
RSpec 3.1とRails 4.1に対応したメジャーアップデート版を公開
2018年2月
RSpec 3.6とRails 5.1に対応したメジャーアップデート版を公開
2022年1月
日本語版独自のアップデートを実施。Rails 7.0、RSpec Rails 5.0、Ruby 3.1に対応。またこのアップデートを機に翻訳者を3人体制から僕一人に変更
2024年1月
再び日本語版独自のアップデートを実施。Rails 7.1、RSpec Rails 6.1、Ruby 3.3に対応
2024年2月
祝・日本語版発売から10年!🎉
コラム:翻訳しようと思った「ウラの」きっかけ

僕がこの本を翻訳しようと思ったのは、原著を読んで「これはRSpecを学ぶのにとてもいい本だ」と思ったからです。
それまでは僕も「RSpecわからん!難しい!!」と思っていたRails初心者の一人だったのですが、この本を読んでからは苦手意識がぐんと減りました。

が、実はもう一つしょうもない理由があったりします。
それは「新しいキーボードを買ったから」です(笑)。

当時、RealForce 87UBというキーボードを買った直後で気分がハイになっており、「このキーボードを使って何か文章を打ち込みまくりたい!!」と思い、「本を書けばめちゃくちゃキーボードを打てるのでは?」と思いついたのが翻訳を開始したもうひとつの理由です😅

いやあ、何事も勢いって大事ですね〜。あははは。

本書を発売してから変わったこと

本書を発売して、というか、本書を翻訳することでRSpecの使い方にかなり詳しくなりました。
それまでは「RSpec苦手マン」でしたが、一気に「会社の中で一番RSpecに詳しい人」の地位を確立できたんじゃないかと思います。

また、ブログやQiitaの中でもRSpecに関する話題を頻繁に投稿するようになり、おそらく「RSpecのことを検索したら誰もが一度は見たことのある人」になってるんじゃないかと思います(自分で言うのも何ですがw)。

その中でも特に、2014年10月にQiitaに書いた「使えるRSpec入門」シリーズは今でもたくさんの人に読んでもらっています。
qiita.com

訳書とはいえ、本を一冊自分で作るというのは自分の中でも大きな経験になっていて、この経験は拙著「プロを目指す人のためのRuby入門」を執筆するのにも役立ちました。

そして、2024年は原著にも動きが!?

実は原著の「Everyday Rails Testing with RSpec」は2017年からほとんどアップデートがありません。
そのため、原著者のAaronさんと交渉し、日本語版は原著からフォークして独自にアップデートさせてもらうようになりました。
よって、2022年1月以降のアップデートはすべて日本語版独自のものです。

blog.jnito.com
blog.jnito.com

ところが先日、Aaronさんから「こっちもそろそろアップデートを始めるよ」というメールが届きました!
Aaronさんのブログでも2024年版「Everyday Rails Testing with RSpec」のアップデート計画が公開されています。

everydayrails.com

まだ細かい内容はわかりませんが、Rails 7.1とRuby 3.3をサポートすることや、原著の購入者は無料でアップデート版を入手できることなどが書かれています。

日本語版独自のアップデートは「やむを得ず」の対応だったので、原著がアップデートされれば日本語版もまた原著に追従しようと考えています。

コラム:「Everyday Rails - RSpecによるRailsテスト入門」を「Everyday Rails」と訳すのは間違い?

「Everyday Rails - RSpecによるRailsテスト入門」の原著は「Everyday Rails Testing with RSpec」というタイトルです。
この中にある「Everyday Rails」というのは原著者のAaronさんが管理しているブログサイトの名前です。

everydayrails.com

もともと「Everyday Rails」というブログサイトがあり、その中で書かれたRSpec関連の記事をベースにして「Everyday Rails Testing with RSpec」が出版されました。

ですので本当は、

  • Everyday Rails = ブログサイトの名前
  • Everyday Rails Testing with RSpec = 電子書籍のタイトル

と使い分けるのが正解です。

電子書籍である「Everyday Rails Testing with RSpec」や「Everyday Rails - RSpecによるRailsテスト入門」を「Everyday Rails」と略してしまうと、ブログサイトの名前とごっちゃになってしまいます。
「WikipediaをWikiと訳すな」という話と同じですね。

僕もSNSなどではときどき「Everyday Rails - RSpecによるRailsテスト入門」を「Everyday Rails」と略すときがありますが、著者のAaronさんは正しく使い分けてほしいと考えているようなので、「それ、本当は間違いなんだよ」という話をここで書いておきます。

まとめ

というわけで、このエントリでは日本語版「Everyday Rails - RSpecによるRailsテスト入門」が発売10周年を迎えました、という話を書いてみました。

僕自身は引き続き本書のサポートを続けていくつもりですし、今年は原著のアップデートも期待できるので、本書はこれからもまだまだ動きがありそうです。

原著者のAaronさんの姿勢をリスペクトして、日本語版「Everyday Rails - RSpecによるRailsテスト入門」も引き続きアップデート版は無料で入手できるようにし続けます。

すでに多くのRails開発者のみなさんが本書を手にされていると思いますが、最近RailsやRSpecの勉強を始めた人や、興味はあるけどまだ購入されていない方がいたら、ぜひ本書を手に取ってみてください。
本書をお持ちの方も周りの開発者の方々やSNS等で本書をお勧めしてもらえるとありがたいです。

みなさん、今後とも「Everyday Rails - RSpecによるRailsテスト入門」をよろしくお願いします!

Everyday Rails - RSpecによるRailsテスト入門 - Leanpub

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

はじめに

いろいろ考えた末に思い切って買ってしまいました!!
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をうまく活用してますよ〜という人がいたら情報を教えてください!

おまけ

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