英語とプログラミングと世界の話
これはフィヨルドブートキャンプ Part 1 Advent Calendar 2021 - Adventarの15日目の記事です。 フィヨルドブートキャンプ Part 2 Advent Calendar 2021 - Adventarもあります。
昨日の14日ははるぐちさん(id:haruguchi_yuma)の記事でした👏
こんにちは。フィヨルドブートキャンプ(以下FBC)でプログラミングを学習中のぺろです🐕
私は英語の技術書も輪読会で読んだらめっちゃ楽しかったことについて書きます💪 エンジニアとして生きていくには、英語は必要不可欠ですね🤔 しかし技術の勉強でいっぱいいっぱいやのに、英語の勉強にまで手を出すのは正直しんどいです。 じゃあ技術書を英語で読んでみたらどうでしょう??技術も英語も一緒に学べて一石二鳥ではないでしょうか??
私のような弱弱英語話者でも大きな夢を胸に頑張っているよ!ということを書くことによって、英語へのハードルが少しでも下がればと思います🙏
ぺろの現在の英語力
まずは私のスペックです。
中学英語レベルを自負
中学英語を駆使して英語話者とコミュニケーションが、取れる
映画を字幕なしで??観るのはまぁまぁしんどい
CNNやBBCの記事が英語で??読むのはだいぶしんどい
Speaking 7 : Listning 2 : Reading 1 = pero's English 10 という感じ
イギリスで2年間過ごしましたが、まぁぼちぼちです(☝︎ ՞ਊ ՞)☝︎
私は机で勉強する英語が苦手だったので、イギリスではとにかく喋りまくりました🍺 難しい言葉は使わず、自分が知っている知識の範囲内で、自分が言いたいことやりたいことを表現しまくりました。 その甲斐あって日常会話は困ることなく出来るようになりました💪
が、私の英語は万年中学英語です。
英語力を伸ばすには??
中学英語を脱出するためには何をしないといけないかを考えてみます✏️(まず技術の勉強しろというのは当たり前体操なので割愛🤸♂️)
- 中学英語を向上させたい
そのために
- 語彙が増えると表現の幅が広がる
だから
- 英文をたくさん読むと良いらしい
なるほど。わかる。しかしこれが結構しんどい。
私はReadingが死ぬほど苦手です😇大好きなムーミンの小説でも、英語で読むと目が滑って放り投げました📚 一人で読むには私はReadingが嫌いすぎる。。。でも英語は上手くなりたい。。。どうすれば。。。
英語の技術書もみんなで読めば怖くない
そんな時、フィヨルドブートキャンプ内でリーダブルコードの英語版The Art of Readable Codeの輪読会が開催されました。
一人では諦めてしまう英文を読めるチャンス!!と飛び付き、仲間に助けてもらいながら、現在11章まで読み終わりました🏃♀️💨
参加当初はこんな貧弱英語で参加するなど恥ずかしさの極みでした。絶対みんなの足を引っ張るし、こんなのも分からないのかと思われるかもしれないと思いました。 あれ、なんかこれ身に覚えがあるな。せや、プログラミングの勉強している時と一緒や!私はプログラミング学習の時もみんなの足を引っ張り、こんなしょうもない質問して恥ずかしいなと思ってる! しかし上手くなりたいのに恥ずかしいとか言ってる場合ではなくない??上手くなりたいから勉強するんじゃないの??なんも恥ずかしくないよ、私はプログラミングも英語も両方上手になりたい!と言い聞かせ、なんとかしがみ付いています😇
ありがたいことに、The Art of Readable Codeの輪読会では梅本さん(Shohei Umemoto (@cafedomancer) | Twitter)が技術面でとても丁寧に解説してくださり、私の英語の師匠トミーさん(トミー (@eatplaynap329) | Twitter)が英語面で的確にサポートしてくださるので、本当に勉強になっています💪 当初の目的であったこれまで知らなかった単語や表現にたくさん出会うことが出来たし、特に今回読んでいるのは技術書なので、コンピューター関係の単語をたくさん知ることができました。 知っている単語でも、この場面では別の意味になる、ということなども知ることが出来て言葉の解像度が上がったし、 日本語版では翻訳する過程で省略された細かい表現なども拾うことが出来て、オリジナルで読むことの面白さを実感しています😊
こちらは、みんなで書き溜めている単語帳⬇️
ogaworksさん(ogaworks (@ogaworks) | Twitter)の単語帳npm近日公開予定!!
正直、The Art of Readable Codeの英語は私には少し難しいです。 分からない単語や表現が多すぎるし、書かれているコードもよく分からん😵 でも英文を読むということに慣れてきたし、技術書を英語で読むことによって英語と技術を同時に学べるのめっちゃお得!と思って楽しんで読んでいます😊 何より一緒に読んでくれる仲間がいることが本当にありがたいし、オラにみんなの知識を分けてくれ〜!🙌という感じです、ありがとう🙏
私が英語を頑張りたい理由
インターネットと技術を通じて世界と繋がっているエンジニアの方々と出会いそのご活躍を拝見して、私も自分の英語を垢抜けさせたいと思うようになりました。
Ruby Kaigi2021に参加させて頂き角谷さん(Kakutani Shintaro (@kakutani) | Twitter)はじめ日本人スタッフの皆さんがオーガナイズされているワールドカンファレンスを見て、共通の話題で世界の人たちと繋がれるエンジニアって、めっちゃおもしろい仕事や!とテンションとモチベーション爆上がり💨
Rails Girls2021で登壇されたEmmaさん(Emma Haruka Iwao (@Yuryu) | Twitter)のお話『Rails は世界への切符』が本当に素敵でめっちゃ憧れた✨これまたモチベーション爆あがり🌋
FBCと関わりの深い角谷さんや伊藤さん(Junichi Ito (伊藤淳一) (@jnchito) | Twitter)はRubyを初めたくさんの技術書を翻訳されている、すごい!
FBC卒業生のオブレゴニアさん(オブレゴニア (@obregonia1) | Twitter)は自作サービスを世界発信してフィードバックを得ている、すごい🌵
I released web application "Visible Scratch Skillz".
— オブレゴニア (@obregonia1) 2021年10月17日
This app makes it easy to create scratch chart.
I produced for all scratch beginners includes me.
I would glad to useful getting better scratch skill.#scratch#truntable#VisibleScratchSkillz現役エンジニアの方々からこれまでに参加された国際Rubyカンファレンスの経験談を聞いて、私も絶対行きたい✈️
とにかくエンジニアは世界がめっちゃ近い🌏✨
私もRubyで世界の人と繋がりたい!! 会社の経費で海外カンファレンスに参加したい!!(??
めっちゃ楽しくなってきたぜ!!
最後に
今時英語なんて出来なくても翻訳アプリで一発翻訳できちゃう時代です💻それでも私が英語を勉強するのは楽しいからです🥳 自分の頭で考えて自分の口から発した言葉で世界と繋がれたらそれはとても楽しいこと😊プログラミングと一緒ですね!
世界と繋がれたらめっちゃ楽しいから、プログラミングも英語も出来るようになりたい!
おもしろさを知ってしまったから、もうやめられへんねん✌️
そんなに英語出来ない私が言うのもアレなんですが、ぺろでも出来るんやったら私にも出来るかな??と思ってもらえたら幸いです🙇♀️ 読んでいただき、ありがとうございました🙏
明日の16日はこながさん(id:konaga-k)です!
じゅんさんとランチ会🍙した話
11月初旬、フィヨルドブートキャンプ内Discordにて Jun OHWADA 🚿 (@june29) | Twitter さん(以下、じゅんさんとお呼びします🙇♀️)とランチ会をして頂きました🍙
このような素敵な機会を頂けるなんて😊ランチ会をとても楽しみにしておりました✨ じゅんさんみたいなすごい方と気軽にお話し出来るフィヨルドブートキャンプって?!笑
お話ししたいトピックを事前に用意しておいたので、それらについて色々なお話しを聞くことができました😊 今日は、人生ブレブレの私がじゅんさんのお話を聞くことによって覚醒していく様子をシェアできればと思っています🙏
未経験子持ちというステータスの人間が別業界に挑戦するということ
やっぱり私の目下の不安はこれなので💦めちゃくちゃ私ごとで恐縮ですが質問させて頂きました🙇♀️
・ライフステージで諦めないといけないことはなく、自分次第で挑戦できる状況はある
じゅんさんご自身も、働き方をよくしていくことにとても気を遣っていらっしゃって、ライフステージの変化によっても働きやすい社会にしていこうと前向きに動いていらっしゃる方でした。ありがた過ぎる🙏
転職も子を持つということも、どちらもとても大きな人生の変化です💡 しかし私の場合はたまたまタイミングが同時に来てしまったので、どうしても今どちらも頑張るしかない😇 私はとても欲張りなので⚡️自分のキャリアも家族を作ることも友達とオタクすることも全部諦めたくないので⚡️ そのためには、こう言うステータスの人間に寛容な会社様と出会えるように自分を磨くしかない💪やるしかねぇんだ💪
将来、このタイトルでLTできるように頑張りたいと思いますえいえい💪
老害にならないために
この業界だけでなく、私のこれまでの人生ずっと優秀な年下の方々と接してきたので、年齢関係なくめちゃくちゃ尊敬しています🙏常に自分が一番下のような気持ちで生きていますが、それでもウザい年上感出てないかどうかめっちゃくちゃ気にしています😇
・二枚舌にならないことがとても大事。 ・自分に対しても他人に対しても考えに一貫性を持たせることを心がける。 ・ダブスタを防止するにはパブリックな場所で話をすること。 ・自分の考えを示しておくためにもアウトプットはとても有効。
年上年下というより、魅力的な人っていうのはやっぱり言動にブレの少ない人ですものね。 アウトプットは自分が何を大事にしていて何に興味がないかを理解する作業。。。 やっぱり、なにはともあれアウトプットや。。。!!
それでもやっぱりアウトプットが怖い
アウトプットの大切さ、有効性はビシビシ伝わっています⚡️ それでもやっぱり自分のことを知られるのは怖いし、相手にされなかったら悲しい😇
私は基準が相手
でしたがじゅんさんの基準は自分
でした。
・自己嫌悪が一番怖い、自分が自分をどう思うかが自分にとって重要。 ・良い人であるかどうかは、性格が良い悪いというより余裕のある状態の人かどうか。 ・余裕のある状態を自分で作っておくためにも、自分に集中する。 ・自分の考えをアウトプットしておくことによって、考えが合わない人は自分を避けてくれるので魔除けになる。 ・他人は何もしてこないのが当たり前なので、他人への期待値は低く持っておく ・自分を面白いと思ってくれた人が寄ってきてくれて人生が豊かになる。 ・結果、自分も相手もハッピー✌️
めっちゃなるほどだった👀
私は基準が相手
だったから、相手
の行動によって一喜一憂させられてたんですよね。
感情が相手
にコントロールされてるからアウトプットすることにめっちゃ疲れてた😇
私は自分の為の自分を表現する手段としてのアウトプットがしたいんだと言うことに気付かされました。
自分の機嫌を自分で取ることが大事なので、自分がハッピーなアウトプットをしていくよ!
リーダーシップがあるってどういうこと?
就職活動において、リーダーシップってやっぱりあった方がいいですか??と言う質問をしました👀
・リーダーシップを変化を起こせる人という意味でチェンジメーカーという名前に変えてみよう ・こうしたら良くなると思いますと提案してくれるだけでもチェンジメーカー ・発起人だけでなく乗っていく人がいることで成立する ・最初にそれ良いね!一緒にやるよ!と手をあげることの勇気を知っていることが重要 ・自信を持つというより、こういうことをやっている自分が好きということを見つける
めっちゃくちゃなるほど。。。!!
そう言う風に考えていいのなら、私はリーダーではないけれども確かにチェンジメーカーではある!!
やっていき力は少ないかもしれないけれども、のっていき力はある!!
じゅんさんの視点の変え方や言い方一つで、私にもそういう力が確かにある!と言える風に考えられるようになったし、形のない曖昧な自信
と言うものに振り回されないでこういうことをやっている自分が好き
で自分の行動と気持ちをこんなにも楽にできると言うことに気付けた。。。
じゅんさん、私が大学生の時に出会いたかった。。。😂
✌️ランチ会でのこのトピックをきっかけに、じゅんさんが記事にしてくださいました!ありがとうございます🙇♀️ scrapbox.io
御礼
じゅんさん、お忙しい中貴重なお時間を頂き本当にありがとうございました✨ とても素敵なお話をたくさん聞けて本当に楽しかったです! 私自身、言語化できていない考えがまだまだたくさんあるので、自分のために自分がハッピーなアウトプットをたくさんしていきます😊 また次回お話しできる機会を楽しみにしています!
※今回書いております内容で何か解釈違いや間違いなどありましたらご連絡いただければ修正いたします🙇♀️大変お手数ではございますが、何卒よろしくお願いいたします🙏
ありがとうございました🙇♀️
LTデビューをした話
現在、フィヨルドブートキャンプというプログラミングスクールで学んでいます、ぺろです。
LTデビューしました。めちゃくちゃ緊張した〜!!
LTとは??
エンジニアの方々は良くご存知かと思います、⚡️ライトニングトーク⚡️
カンファレンスやフォーラムなどで持ち時間5分という制約の中で行われる短いプレゼンテーションのことです。
フィヨルドブートキャンプでは、初めてのLT会というタイトルで、定期的にイベントが開催されています。
エンジニアになるならば人前でアウトプットする練習もしていこう!ということで、初めてで自信がなくても失敗しても全然オッケー!というとても挑戦しやすい環境のイベントです✨ありがてぇ〜🙏
なぜLTに挑戦しようと思ったか
フィヨルドブートキャンプ内で身近な人たちがLTやブログなどのアウトプットを頑張っている姿を見て刺激を受けた、というのが一番の理由です💪
私は大学でも仕事でも、これまでの人生で"資料を作って人前で話す"ということを経験したことがありませんでしたので、まさか自分がそんな経験をすることになるとは考えたこともありませんでした。
しかしフィヨルドブートキャンプに参加して周りの人たちが積極的にアウトプットしている姿を見て、私も自分の言葉でアウトプットしたい!と考えるようになり、今回のLT会に飛び込んでみることにしました。
いつも刺激と挑戦する勇気をくれるフィヨルド生のみなさんにはとても感謝しています😊
テーマ決めと原稿作り
今回のLTテーマが『学習している中での発見』ということで、技術的に発見した事は残念ながらまだなかったので😅
自分自身が最近ずっと悩んでいた、"周りの人みんながすごく見えちゃうことに気づいた話"をすることにしました。
スライドはkeynoteで作成しました💡
まずは言いたいことを簡潔にスライドに起こして、そこから話し言葉の原稿を作っていくような形にしたので、骨組みはすぐに出来上がりました。しかしそこから完成までの推敲にめちゃくちゃ時間がかかったし、こんな内容で発表していいのか?!と全然自信はなかったです😇
練習会開催
とにかく作ったLTに自信がなかったこととフィードバックが欲しかったので、一人で悶々と考えてる時こそアウトプットや!と思いたち、フィヨルドブートキャンプ内Discordで練習会を呼びかけました。
呼びかけた当日の夜開催にも関わらず、ほとんどの登壇者仲間が参加してくださり、とても和やかな雰囲気で初発表をすることができフィードバックを頂けて、何より本番前に登壇者同士交流できたのがとても嬉しかったので、開催して良かったなと思いました☺️
neutralさん(id:neutral2010)にもお声がけ頂き、私の拙いLTを聞いて頂けるお時間を頂戴しました🙇♀️これまで文章ではお話させて頂いたことがあったのですが、お顔を拝見してお話した事はなかったので、お話できてとっても楽しかったです😊
貴重なお時間ありがとうございました✨
LTに挑戦することによって、人との繋がりが増えたことがとてもありがたかったですね☺️
Speaker Deckにアップする時ちょっと詰まった😇
Keynoteで作成した資料をPDFにしてSpeaker Deckにアップロードすると、画像が一部崩れてしまいました。
qiita.com
こちらのQiitaの一番最後『おまけ Speaker Deck等に上げるとき』の項目に記述がありました。
そのままスライドをPDFにするとフォントが崩れるので一度pptxでダウンロードします。
つまり、keynoteを一度パワポのファイルにして、パワポからPDFファイルに書き出すといいみたい。
綺麗にアップできた!!
こちらの方法を教えてくれたのは、今回の登壇者仲間のいっしーさん(id:isshi-hasegawa)でした!ありがとう!
LT発表してみた今思うこと
とにかく緊張したし本番が気になって終わるまで勉強に手がつかなかったですが😇挑戦して本当に良かったなと思っています😊
とにかく私らしい発表をしようと思ったことと、同じように悩んでる人がいたら楽になってほしいという思いだけでこのLTを作りました💡LT会本番の後に頂いたアンケート回答では、ありがたいことに共感したということと、私の人柄について言述頂いたコメントが多かったので、拙いながらも私の意図したことを伝えることができたのかなと実感させて頂き、感謝の極みです🙏ワイは!生かされている〜!!
リハーサル前に練習会をして交流していたので、本番も仲間が側にいてくれるような気持ちで出来たのもとても心強かったです😊
もしまた発表いただける機会があれば、次は技術的なことを話せるLTに挑戦したいなと思っています💪
優しい世界に圧倒的感謝😂ありがとうございました🙇♀️
【三十代も後半戦になってきましたが】まだまだ人生落ち着かなそうって言う話
めちゃくちゃご無沙汰しております。ぺろです。
本日お話ししたいのはこちら!
なかなか盛り沢山なラインナップですね!
タイトルに年齢を書いたのは、もし年齢のせいで何かに挑戦することを躊躇している人がいたら、”こんな盛り沢山に生きてるやつおるんや〜自分もちょっと頑張ってみよかな〜”と思ってもらえたら良いなと思ったからでした!
今日が一番若い!!!!
初めてエンジニア転職した会社を退職しました
1年半お世話になった会社を退職しました。 SESの会社だったのですが業務に未来とわくわくを感じられなかったからです。また、SES特有の多重契約に高濃度のストレスと数々の疑問を感じ、私にはこの働き方は向いていないなと思いました。
短い期間ではありましたが、PHPでの開発現場に入ることが出来ました。そこで感じたことは経験はもちろんのこと圧倒的知識不足。sshの設定もDockerの環境構築も、ちょっとしたUIUX修正案件もな、なんにも出来ねぇ。。。!!開発中は毎日遅くまで残業してそれでも先輩方の助けをお借りしてなんとか完成させると言う感じでした。そんな人間がちゃんと専門の学校を卒業して何年も働いているような人たち(もちろん大体年下)について行くにはなかなかしんどいものがありました。 残念ながらコロナの影響で大幅な人件費削減のため契約は終了してしまったのですが、初めての開発現場で得た経験や感情は、今後の進路にも大きく影響していると思います。
もちろん会社を辞めるわけですから、社会保険を止めるということですから、お給料が入らなくなるということですから恐怖😱めっちゃくちゃ悩みましたが、ストレスで体を壊しかけていたこととフィヨルドブートキャンプのたくさんの方々にお話聞いて頂いたことで今回の決断に至りました。お話聞いてくださった皆様、色んな経験をお聞かせくださった皆様、その節は本当にありがとうございました!
そして仕事を辞めて良いよと言ってくれた夫よ、ありがとう。
フィヨルドブートキャンプに入りました
2021年3月からフィヨルドブートキャンプに入りました。
2019年のRails Girls Tokyoのイベントに参加した時にフィヨルドブートキャンプのことを知りました。
前職で開発現場に入らせて頂いて感じたこと、
- 開発現場でもっと役に立ちたい、解決できる力が欲しい
- もっと自分に自信が欲しい
- お互いを尊敬しあえる環境にいたい
これらを改善したいと考えていました。
下記が私がフィヨルドブートキャンプに参加しようと思った理由です。
- 卒業するのが難しいけど、どれだけ調べてもめっちゃ良いと評判
- 現場の方々にとって、戦力になるプログラマーを目指す
- とにかくコミュニティがとっても素敵
実際に参加してみて3ヶ月経ちましたが、 本当にコミュニティが素晴らしいです。2019年のTokyo Rails Girlsに参加した時もそうでしたが、Rubyコミュニティにはとてもポジティブな雰囲気があるなと感じていて、こんな方々と一緒に働きたいなぁ、しっかり勉強してここに居たいなぁと思わせてくれる場所だなと思っています。これまで作り上げて来られた方々の雰囲気が、そういう人たちを引き寄せているんだなぁと感じました。今、そんな方々と一緒に学習させて頂いていることに本当に感謝です🙏
仕事も辞めたしあとは自分が頑張るだけ! がんばれー!
不妊治療もはじめました
気持ちは20代ですが世間的には高齢出産に入るのでね😇ちょっと科学の力をお借りしようかと思っています。 なぜこんなプライベートなことまで書いたかというと、仕事辞めて勉強してる間に子を授かって再就職となった時に、乳飲み子を抱えた私を受け入れてくれる会社様などあるのか。。。という不安がめちゃくちゃ大きかったからです。いや、まだ卒業もできてないし子も授かってないし何にも始まってないのですけれどね!このことめっちゃ悩んでたら夫にも「何も起こってない未来のことを考え過ぎ!」と言われましたそりゃそーだ。 実際にエンジニアとして働かれている方々にも相談してみたところ、子育てに理解のある会社は多いから😊とお言葉を頂いたので、そういう会社さんとご縁ができるように頑張ろう〜素敵な人になりたい〜と尻に火をつける日々です🔥
おしまい
勉強就職活動と妊娠出産という人生のビッグイベント同時にやろうとしてるのさすがの見切り発車で笑いますが😇これくらい盛り盛りの方がテンション上がりますね!💪 この続きのブログが書けるように勉強も治療も頑張ります!! 長々と駄文でしたが読んでくれてありがとうございました✌️おもろく生きていくぞー!!
【プルダウンを作ろうの回】collection_selectの引数の中身について
こんにちは、ぺろです。
今日はプルダウン作成のために、しばらく苦しんだ
collection_selectのお話
をしたいと思います。
■ゴール
プルダウンを作ってDB内の情報を表示する。
■使ったメソッド
form_with
collection_select
■詰まったこと
collection_selectの引数多すぎるけど、どこに何書いたらいいかわからへん。
■苦悩
collection_selectって第4引数まであってその後はoptionつけたりつけなかったりですが、そうなんですよ、なんぼ調べても、どこに何書いていいか全然わからんかったんですよ😇
Ruby on Rails API先生( https://api.rubyonrails.org/ )に聞いてみても、
collection_select(method, collection, value_method, text_method, options = {}, html_options = {})
なるほどわからん。
日本語にしてちゃんと説明してくれている方のサイトもあったのですが、
結局自分がやりたいことに応用出来ず、よくわからないままでした。
結構な時間をかけて色んなパターンを書いて試して、最終的にこうすれば一番うまく行ったということを、
ぺろの言葉でここにメモしておきます。
注) あくまでも個人の解釈です。
■こうやって書いたらうまく行きました。
collection_select(情報を保存したいカラム名, プルダウンに表示したいリストの場所, 取得するバリュー, 表示したいカラム名)
例)
countries_controller.rb
@country = Country.new(country_params)
new.html.erb
<%= form_with model: @country do |f| %> <%= f.collection_select(:city_id, City.all, :id, :city_name) %> <% end %>
この後、取得した情報の保存が出来なくて、また苦しむことになりますが、それはまた別の機会に😇
歯を食いしばって手を動かすしかないですというのは、igaiga先生(@igaiga555)のお言葉でした🙏
頑張るぞ〜い!
【rails newで早速出たエラーの話】いっつも最初で躓きがち
こんにちわ!ぺろです。
今さっきrails newしたら早速エラーが出たので、その解決方法をメモしておこうと思います。
【やりたいこと】
→ rails new
【エラー】
→ ターミナルでrails newしたら ”can't find gem railties (= 5.2.2.1) with executable rails (Gem::GemNotFoundException)”のエラー
【解決方法】
→ $ gem install rails -v 5.2.3 からの $ rails _5.2.3_ new sample_app -d mysql
エラー文で検索したら、rails sする時にこのエラー発生。
gemlfile.lockのバージョンと合ってないからrails s出来ないというようなことが書いてあったのですが、
私はまだrails new出来てない訳でそもそものファイルが出来てないのです。
でも同じエラーが出るということは、
今からやろうとしていることのrubyかrbenvかrailsのバージョンが合ってないということでは??
↓
今提示してるのはrailsのバージョンだけやん?
ほなgem install rails -v 5.2.3やな!
↓
rails new出来た〜〜〜〜〜〜〜!!!!
チーム開発を終えてから自分で解決する力がめっちゃついたように感じます。
人の解決の仕方を見れたから引き出しが増えたというか。
エラーが出てもがむしゃらに色々試してみるような数射ちゃ当たる戦法でなく、
ロジカルに考えられるようになりました。
めっちゃ成長してるぺろ〜〜〜〜!
【scopeの使い方】scopeを使って記述を短くしてみたら、コードは短くなったけどめっちゃ時間がかかった話
こんにちわ、ぺろです。
毎日暑いですね。
私は逆に室内の冷房にやられてすっかり冷房疲れです。
今日は、scopeの使い方で詰まった時の話をしようと思います。
なんで突然scopeの話?て感じですが、今日復習ノート読み直していたら、
めっちゃなるほどしたので、誰かのためになったら嬉しいと思ったので書いておきます。
なるほどしたら⭐️をください☺️
"scope"とは??
→ scopeを使ってモデルに定義してメソッド化することによって、コントローラの記述を短くできる。
今回のゴール
→ 1人のuserの評価を取得し、good、normal、badをそれぞれ表示する。
キーワード
- lengthの存在
- whereの返り値は配列
- 引数2つの与え方と取得の仕方。
登場人物
- Evaluationモデル
- itemコントローラ
- view/items/show/haml
Before
(itemコントローラ) @good = Item.where(user_id: Evaluation.find(1).evaluation) @normal = Item.where(user_id: Evaluation.find(2).evaluation) @bad = Item.where(user_id: Evaluation.find(3).evaluation)
After
(Evaluationモデル) scope :evaluation, -> (count, user) { where(evaluation: count, user_id: user) }
(itemコントローラ) @good = Evaluation.evaluation(1, @user) @normal = Evaluation.evaluation(2, @user) @bad = Evaluation.evaluation(3, @user)
(view/items/show.haml) #{@good.length} #{@normal.length} #{@bad.length}
詰まったところ
→ 定義するモデルと指定のコントローラが同じ名前出ないといけないと思い込んでいました。
解説していきます。
上記の通り、記述するモデルとコントローラは同じでないといけないと思っていたので、
ずっとItemモデルとitems controllerにscopeの記載をしていたので、全く動いてくれませんでした。
よくよく考えてみるとわかることなんですが、評価の値取り出すのはItemモデルじゃなくね??
ということでEvaluationモデルに記述を引っ越しさせたところ、値がコントローラに飛んできた!!!!
Evaluationモデルでは、count(評価の数)とuser(1人のuser)の2つを引数にしてevaluationに代入しています。
itemコントローラのevaluationは、scopeで作ったメソッドevaluationです。それに対して同じuser_idの評価1だけを引数の配列にして@goodで取得。
view/items/show.hamlで、@goodの中の配列の数をlengthで表示。
コントローラの記述がめっちゃスッキリしました!
この記述に到るまでめっちゃ時間かかりました。
なるほどな〜〜〜〜〜!!
ぺろ