【Rails】テストコードの使い方、所感、学習したことまとめ
こんばんはサイコマン太郎でっす。
カフェラテ(砂糖なし)を飲みながら休憩がてら、僕が最近戦っていたテストコードのあべこべを。
テストコードとは?
既に記述されているコードがどのように動作するかを確認すること。デバック。
まずはRspec(gem)をインストールしました。
・「正常系テスト」と「異常系テスト」
正常系テストとは、「意図してる動きができているか」を確認する。
異常系テストとは、「意図してないとき、ちゃんとエラーを出すか」を確認する。
モデルやコントローラーなど、機能ごとにテストする
・モデルの単体テスト
モデルのテストでは記述されているバリデーションやメソットの検証をする
・コントローラーの単体テスト
「リクエストとレスポンス」がどのような動きをするかテストする
・exampleの整理(テストコードを書くときに多分一番重要)
「どのような状況のテストを行うか」をリスト化する
例:nameフォームに入力がないとき新規登録できない(エラーを出す)
:passが6文字以下であれば新規登録できない(エラーを出す)。。。など。
これが一番センスが問われ、禿げます。慣れろ。
・エクスペクテーション
expect().to /macherを唱えると「このテストをする」という宣言ができます。
・マッチャン
松本人志。
・マッチャ
macherは結構いっぱい種類があるのでざっくりまとめ。
・valid?
バリデーションが仕事してるか確認します。エラーが出なければtrueです。
・be_valid
expect()の中に入れたインスタンスがバリデーションを通過するかテストする
・include
expect(引数)の中と比べて、include(引数)の内容が含まれているか確認する
・eq
expect(引数)と.eq(引数)が等しいか確認する。
☆結合テストコード
単体テストコードの対で、「ユーザーが操作する一連の流れ」の中で問題がないかテストします。
基本的な流れは単体テストと一緒で、
[exampleを整理]
↓
[expectをホニャホニャする]
という感じですが、
コードによってブラウザを移動したり、フォーム内に記述させたりする動きが出てきます。
個人的な所感だと、CLI(ターミナル)の操作に似ていると感じました。
@結合テストで出てきたマッチャン
・visit
visit ●●●_path で、pathのpageに移動できます。(CLIで言うcd ~/~みたいな感じ)
・have_content
expect()の中に、content(’文字列’)の文字列が含まれているかを確認(inclideとの違いは文字列か、値か)
・have_no_content
have_contentの逆で、('文字列')が入ってないよね?と言う確認
・fill_in
指定した入力フォームに指定の値を入れてテストすることができる
・chenge
パネマジでブス嬢が来た時、アレをアレする
モデルの数がいくつ変動するか確認する
expect{動作}.to change{モデル名.count}by()
・.hover
find(HTMLの要素).hoverで、「指定した要素にカーソルを合わせる」と言う命令ができる(マッチャじゃないかも)
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
と言う感じで、今日のアウトプットでした。
FactoryBotとFakerについても触れるとより良いかもですが、長いand疲れたのでこの辺にしときます。
またなんかあれば書きます。
無限にプログラミング学習するための疲れない勉強法
みなさんこんばんは鬼殺隊のサイコショッカー太郎です!
本日は、「疲れない学習ルーティン」について書いて行きます。
僕はオンラインのプログラミングスクール受講生で、一日10時間以上はプログラミング学習をやっているんですけども、
膨大な量のプログラミング用語やメソッド、
今日はマッチャという概念も出てきました。
もう学習してもしても足りない!
脳にまだまだ大量の学習知識を入れたいのに、身体が痛くなったり、熱もったり、眠気がめちゃくちゃ襲ってきたりと、
知識欲に身体がついてこない!現象が起きます。
そこで、みなさんにおすすめしたいのが。
50分勉強15分睡眠ルーティンです。
これは文字通り、50分学習しては15分寝る(目を閉じるだけでOK)という方法なんですけども、
これ何がいいのかという話ですよね。
1.集中力が一番続く時間設定
人間が集中できる時間は25-90分が限度と言われており、作業の内容によって違います。
人と話すぐらいの脳の負担が軽い作業で有れば90分ぐらい保たれ、
暗記や計算など脳の負担が強いと、逆に20分強しか持たないのです。
プログラミングも計算や、暗記がかなり出てきていますが、
個人的にプログラミング初学者だったりプロゲートで学んで見ているといった方の脳への負荷は、レベルでいうと'中'ぐらいではないかと思います。
なので、40-60分ぐらいで限界が来るものと仮定し、50分を目安に頑張ってみようというプランです。
2.寝ると、いいことしかない。
学習で疲れた、、、
やっと休憩。って時に休憩中ならスマホいじったりテレビ見たりしたい方はたくさんいらっしゃると思うんですが、これはかなり勿体ないと思います。
学習をした直後の脳はたくさんの情報が散らばって入ってる状態なんですけど、
脳は休んでいる間に、ばらばらになった情報を整理する働きがあるんですね。
なので、ばらばらなままの頭の中に、スマホやテレビから情報を受け取ることで、更に脳は処理が遅くなります。
休憩時間も「睡眠学習」
照明もできるだけ暗くして、目を閉じて、横になりましょう。
さっき覚えたメソッドが脳内を泳ぎ回るのがきっとわかるでしょう。
(脳が疲れてると体がビクっとなったりします)
脳に情報を整理させて、体もしっかり休めて、次の50分に挑みましょう!
すると疲労や学習に対するストレスがかなり緩和され、学習時間が増えても余裕で乗り越えて行ける身体になるでしょう。
あと、個人的には腰痛が少し気になってたけど、小まめに横になってるので、長時間デスクワークでも全然痛くないッス!
皆さん試してみてね!
明日は「上司の機嫌を取る方法」について書きません!
よろしくお願いします
プログラミング勉強中の食生活について
こんばんはサイコショッカー太郎だぞ。
いきなりですが、ざっくり自己紹介しまーす。
オンラインスクール受講生の初学者で。一日だいたい10時間ぐらいはプログラミング学習している者です。
さて、1日10時間勉強する為には、気合だけではどうにもなりません。
尚且つ10時間以上、高い集中力を維持させるためには睡眠や、適度な運動なんかも必要であり、
ハードルの高いプログラミング学習に挑むには毎日が自分との戦い!なのであーる!
今回はですね、プログラミング学習を生き抜くために、頭が良くなる食生活について僕が意識してることなんかを話したいと思います。
いきなりなんですが、結局これ食べとけって言うベストブレインフードから発表します!
1.「魚!!」(でしょうね。)
魚魚魚〜魚をたべーるとー♪を聞いたことある方はたくさんいると思います。
魚はガチでブレインにフードです(?)
他の食品に比べてDHA.EPAというヒトが自然に体内から作り出せない成分が豊富であり、
DHA.EPAは脳の修復、保護に大きな働きがあるとされています。
ではどんな魚を食べるべき?
青魚です、
更に言うとサンマです。
一日に摂取すべきDHAは意外と少なく、サンマ半尾分ぐらいで事足ります。
実はそれ以上摂取してもそんなに効果はありません。
つまり、1日の内にどっかのおかずを一品、サンマの缶詰や、お刺身(青魚、6切れ)ぐらいに置き換える事で、
寝てる間に使いすぎた脳を修復してくれるそうです!
こんなにお手軽で頭が良くなれるなら食べない意味がわからないですよね!?
2.「エビ!カニ!」
海の生き物ばっかりで申し訳ないんですが、コイツらもかなりやばいです。
なんと、脳に直接到達して、脳の疲労感を軽減させる成分なんです。
上記同様アスタキサンチンも人の体からは作られません。
チートだと思います。
食べるという行為は味覚という繊細な神経使う為、脳を刺激します。
濃い味のラーメンを食べた後、眠くなった経験は誰にでもあると思いますが、
脳も食事によって疲労を感じるのです。
ライバルが、昼食を取っている際に脳を刺激している間
自分はアスタキサンチンを取って脳の疲労を回復させていると考えたら、爆アドだと思いませんか??
ちなみに魚介類が苦手な方もいらっしゃると思いますが、
そんな方はイチゴ、ブルーベリーなどベリー系の果実にもアスタキサンチンは含まれているので、デザートをイチゴとかブルーベリーにしてみてはいかがでしょうか。
3.「チョコレート」
テオブロミンという成分に脳をリラックスさせる効果があります。
また、脳由来神経栄養因子(BDNF)が増えるとも言われています。
BDNFは認知能力を促進させる効果があることが期待されているものです。
脳を使うときにガリガリ分解されていく糖も補う事ができて、意外とブレインフードな存在です。
ただ、食べすぎると、血圧が上がって血液の循環が悪くなり、脳にあまりいい事がないと思います。
あと太ります。デスクワークは運動と対を成しますから。
疲れたとき。一欠片かじってリラックス。
ぐらいに思うのがいいんじゃないでしょうか。
まだまだあるんですけど、長くなるので、
次は入会すると頭がよくなる宗教法人について!
(絶対書きません)
おやすみなさい
エラー解決に自分なりのやり方を見つけましょう
どうも、プログラミングあと5年早く始めておけばよかったなって思ってる筆者サイコショッカー太郎です。
初学者なんで記憶の整理がてらに記事を更新させてください。
今日はデバックの話を。
プログラミング学習のとあるカリキュラムで、初めてデバックをやってみました。
アプリケーションクローンをインストールしていって、ローカルで表示して、ところどころ抜けてるコードとか、間違えてるコードを修正していく作業なんですが。
「見てもわからん。」
これが最初の感想でして、
画面に張り付いて隅から隅までコードを見ていったんですが、わからん。
まあ、見て分かるような問題解いてもそれはそれで味のしない女の子を噛んでるようなアレなんですが(?)
(human ERROR (moral))
僕なりに出てくるエラーメッセージと戦う方法を模索してみたので、置いときます。
1.「とにかく頭じゃなく手を動かす」
初学者がやりがちなんですが、コード見て、なんとなく自力で分かりそうで、考えてみるんですね。
すると、フリーズして時間溶かしてるだけみたいなムダな時間過ごすんですよ。
そこで、もうわからんワード出たらすぐ調べる。
って言う当たり前だけどな方法がいいと実感しました。
No method errorが分からなかったら
メソッドが?エラー?ノー?と細かく考える前に、検索窓にコピペして何個か記事を読む方が早くて、賢いという事に気付きましょう。
上記だとメソッドはコントローラーに定義されてるものなのでコントローラーの記述を見て、
ちゃんと記述があれば次にカラムの方が怪しい。
みたいにすぐヒントが出ます。
2.「仮説→仮説潰し」
これは全部のファイルを眺めて違和感を探す作業をするという、小学生でも非効率と感じるような事をですね、
私、多分パニックだったと思うんですけどやりまして。
意味なかったです。
ボーボボのオチぐらい意味なかった。
そこで、まず、
なんとなくでも直感でも何でもいいから、何でエラー出てるか「仮説」を立てましょう。
・ERRORって書いてる場所で何か起きてないか
→エラー文をみてエラー出てるファイルを見直す
・コントローラーで定義したインスタンス変数、ここで使えない可能性ないか
→<%= @post....みたいなやつって大丈夫だっけ?
・モデルからデータ取得するコードの記述間違えてる?
・テーブルがそもそもちゃんとある?
→テーブル可視化ソフトで見てみると、、?
など、
少しでも怪しいと感じたらそこを調べるって感じで、
自分で立てた仮説を潰して回りましょう。
って感じです。
プログラミング中級者やベテランの方からしたら当たり前やないかいと言われそうですが、
僕の好きなマックスむらいさんも、
「タスクはできるだけ細分化してこなす。それを繰り返すのがビジネス」と言ってましたんで、エラーも細分化。そして解決していきましょう。
それでは、またなんか有れば書きますんで、Twitterフォローとかして下さい。
Twitter:program0832
GEMってなんですか。
こんにちは、サイコショッカー太郎です。
今回なんですけども、日々の学習で学んだ事をちょっと置くっていう感じで、
(アウトプットしないエンジニアは許されないらしいです。おばあちゃん言ってました)
今僕はRubyを学んで、
まあputs "たこ焼き"
ぐらいは覚えたんですけど。
日に日にわけわからん状態になっていってる事に気付きました。
今日はエラーと向き合って間違えて作ったマイグレーションを自力で消しました。
https://qiita.com/beanzou/items/e8886071ab1e1cf7a9c0
(いやこれ見たんで他力なんですけども)
はやく皆様のように自分で作ったアプリケーションをバンバンTwitterとかに載せたいです。
プログラミング学習中効率を上げる!?学習時間に聴くべき音楽
お疲れ様です。
プログラミング初学者のサイコショッカーです。
(すいません名前そのうち変えるかも知れません)
僕は一日10時間以上プログラミング学習しているんですが、
今日はプログラミング学習を一日中やる上で勉強しながら聴いてる音楽を紹介します。
とは言えですね、
ただ自分の好きな曲を紹介するわけじゃなくてですね。
あくまで、学習の効率を上げるために聴く音楽を紹介するのでご安心ください。
すいませんもうちょい前振りを、、、
学習中に音楽を聴くとなんと学習効率が著しく下がるそうです。
これはこの記事を書く上でもう台無しになってしまう事実ではありますが、
音楽聴きながら勉強したいって方も少なくないと思います。
そういう方に是非読んでもらいたいです。
・好きな音楽は学習する前に聴く
音楽聴くのは学習の妨げになるんですが、学習をする直前に聴く音楽は、モチベーションの向上や、マインドセットの整理、勉強に行き着くルーティンに組み込めば大変効果があります。
おすすめは学習に入る前に1〜2曲、自分がテンションあがる曲を聞くのがいいと思います!
それでは本題。
・1つ目のプログラミング学習の際聴いてほしい曲はー
「lofi hiphop radio」
こちら、歌詞のない、ゆったりしたjazz調の音楽をずっと流しているyoutubeチャンネルです。
カフェで流れているような自然な音量で聴く事により、集中力が高まります。
リミックスされているのか、曲がプツっと切れないところも集中力を損なわないポイントです。
何よりラジオなので、何時間でも流す事ができます。
・2つ目のオススメは。
「自然の音!」
曲名とかじゃないです。
川の音とか森の音です。
厳密には音楽ではないですが、無音で学習したチームより、自然音を聴いて学習したチームの方が学習効率が上がり、暗記や計算能力が上がったとの研究結果があります。
(ソースはわすれました!ggrks!)
個人的なおすすめはコレです。
【公式】ASMR・森の音-フシギダネといっしょ
なんと、ポケモン公式のASMRです。
リアルな自然音、動画はちょうど1時間あります。
フシギダネの足音も心地よく、普通のASMRに比べて木の実が落ちる音や、セレビィの通る音などが所々入っており、ピリッと集中できるきっかけにもなるかと思います。
・最後はガチおすすめ!
Marconi Union 「Weightless」
この曲は化学的に「最もリラックスできる曲」と認定されており、緩やかにBPMが曲の始まりから終わりにかけて上がっていく作りになっており、ストレスホルモンを下げる効果があることが証明されています。
これを聞かないで何を聴きながら学習するんだ!?
というレベルでおすすめです。
という事でいかがでしたか、
次はプログラミング学習に最適な食事について、気が向いたら書こうかなと思いまーす
プログラミング学習が捗る最強アプリ
こんばんは!プログラミング初学者のサイコショッカーです!
今回なんですけども、IT転職に向けてプログラミング学習を一日何時間も行う方も、仕事が終わって2-3時間やるよってかたも、
学習時間って集中が大事ですよね???
自分も学習を初めて10日ぐらい経ちましたが、少しずつ集中力が保てなくなってきたのを感じます。
(昨日からモンストの鬼滅コラボが始まって、やりたくて仕方ない。)
結局スマホ📱が手元にあると、学習における集中の度合いが格段に下がると言った研究結果もあるようです。
(ブレイクスルー佐々木さんが言ってました)
そんなスマホを自ら見なくなる(存在すら忘れる)アプリを見つけてきたので紹介します。
1.集中
集中です、
これは自分でタイマーをセットしたり、休憩時に何をするか、
また、「いつ学習に取り組むか」自分が腰を上げるタイミングもリードしてくれるアプリです。
シンプルで使いやすいのが特徴です。
2.継続する技術
変な名前ですけど、とても有意義なアプリです。
内容としては、
1.自分のやりたい、継続したいことを入力
2.1番楽に続けれる時間帯を入力
3.やったらタップ!すると褒めてもらえます。
学習に集中すると言うよりは、独学で学んでる人などが継続して毎日デスクに向かう為のスタンプカード的なものです。
課金で、「褒めるコメントが厨二病になる」などのユーモアもあります。
3.スマホをやめれば魚が育つ
(筆者のガチおすすめ。)
変な名前ですけど、これガチでおすすめしたいです。
上記で紹介した「集中」と機能的には似てますが、
タイマーをセットしたら、その間、飼っている魚クンがアイテムを集めて来てくれます。
Twitterとか他のアプリを起動すると魚が集めたアイテムはなくなり、自分が決めた時間のタイマーを終えると、アイテムを獲得できます。
つまりアラームが鳴るまで物理的にスマホを見れないんですよ。
実際に使ってみたところ、
デスクワーク中にスマホで調べ物をしなくなる。
思考が関係ない事に飛ばない。
自分だけじゃなく、魚も頑張っている。という孤独からの解放
タイマーを終えて魚が大きくなるのが楽しみ。
など、たくさんいい事があります。
魚はブサイクだけど妙に愛着が湧きます。
モンストとかソシャゲをやめれない人にも、ゲーム感覚でやって見てほしいアプリです。
以上が、プログラミング学習における集中力維持に役立ちそうなアプリ紹介でした!
またなんか有れば更新しますね