プログラミング初学者のブログです。主に Ruby on Rails を学んでいます。
TECH CAMP受講中。

9月6日:オブジェクト指向、スパゲッティコード

こんばんは。

だいぶあいてしまいました。

今日は3時間勉強しました。

応用カリキュラムを終わらせました。最後に読んだ読み物課題が勉強になりました。

 

オブジェクト指向

  • 三者が見てわかりやすいコードにしようという目的の考え方。
  • クラスを定義するときに、各クラスには「ひとつの役割」が原則。
  • 一人二役」みたいになると、第三者が見て???ってなるので。
  • 「自販機クラス」「客クラス」「商品クラス」
  • クラスごとにファイルを分けてrequireで呼び出すとすっきりする。

スパゲッティコード

  • オブジェクト指向になってない、ごちゃごちゃしてわかりづらいコード。
  • 問題が起こりやすいし、読みづらいのでわかりづらい。
  • こうならないように気をつけよう。

明日から発展カリキュラム頑張るぞいっ

ライフコーチに見せていただいた個人制作すごかった。あんなの作れるようになるのかと思うと楽しみ!

センスないのでUIに懸念ありです。

8月30日:単体テスト

こんばんは。

久々の更新となってしまいました。

自分時間の捻出、頑張ります。

あれもこれもいっぺんにやろうとするのはよくないですね。

というか、できないですね。

 

今日はチャットアプリのメッセージ投稿機能、画像投稿機能を作り終えて、単体テストコードまで勉強しました。

単体テストコードはわかりやすいので好きです。

少しrailsから離れていたら、見事に忘れていました。

発展カリキュラムにはAjaxがあると聞いているので、それを楽しみにさっさと応用カリキュラムは終わらせます。

 

benri = "コピペするだけなんですねー!"
puts benri
 

8月25日:コントローラーのコントロール不能

こんばんは。

今日は2時間勉強しました。

本当はあと1時間くらい続けて予定通り進めたかったのですが、カリキュラムのサーバーが落ちて何もできなくなったので諦めました。メンターさんもつながらず、消化不良。

 

「DBに値を保存できるように、createアクションを実装しましょう」

という練習問題が全然分からず・・・

 

とりあえず私の理解では、

  • 「createアクション(def create)」とはいえ名前だけ
  • @messageみたいな@がついてるものはインスタンス変数
  • Message.newの「.new」がnewメソッド
  • @message.saveの「.save」がsaveメソッド
  • newメソッドでMessageモデルのインスタンスを生成してsaveメソッドでDBに保存している
  • これをcreateメソッドでやっても同じ

うーん。

明日は出社なのでほぼカリキュラムは進められません。

早く応用カリキュラム終わらせたいよう。

おやすみなさい。

8月24日:コンソールが起動できない

こんばんは。

今日は2時間くらい勉強しました。

やはり私はフロントいじる方が楽しいと感じます。

Railsはいまだ謎。

霞の呼吸使われてます。

 

【コンソールが起動できない】

  • 事象:rails cコマンドがエラーで動かなかった。
  • 原因:Unknown key: :though. というエラー
  • 直前に行ったモデルへのアソシエーションの記述にスペルミスがあったことが原因でした。
  • ファイルの記述が間違っているとコンソールもサーバーも起動できないのだと知りました。

今回はメンターさんのお世話になりました。念願の。

【メンターさんに聞く前にやったこと】

  • 「ctrl + c」
  • 「exit」
  • ターミナル再起動
  • rails c 起動できない」でググる
  • 「ps aux | grep rails」これで、裏で動いているプロセスがないか確認できるらしい。
  • なかったけど、あったら「kill ほにゃらら」で止められるらしい。
  • もしかしたらファイル内の記述に問題があるのかもとうっすら感じつつ、そこまで時間をかける問題ではないと判断してメンターさんに泣きついた次第です。

次からは、エラーコードも冷静にちゃんと見られると解決できるかも。

1日一歩。

おやすみなさい。

8月23日:フロント実装、GitHubで開発

こんばんは。

2日もサボってしまいました。。

ノー予定の日を意識的に作っていかないと勉強ができないですね。

「自分にアポとる」重要性の話を本で読みました。誰かとの約束だけではなく、自分とも約束して自分のために時間をとるようにする。

そうしないと他人のために時間を使いすぎて、結局自分の目標達成のために時間を使うことができない。「自分時間」を大切に。

頭でわかっててもなかなかできないんですが・・

 

今日は7時間勉強しました。

チャットアプリのフロントとユーザー管理機能の実装のところ。

へぇなるほどと思ったところだけ抜粋します。

 

■フロント【labelで見えないボタンを押す】

  • 見た目がしょぼいファイル選択用のボタンを隠して、見た目だけ素敵なボタンぽい要素と紐付けるワザ

HTML

<label>
  <span class="image-file">画像</span>
  <input type="file" class="hidden">
</label>

CSS

.image-file {
おしゃなボタンスタイル;
}
.hidden {
 display: none;
}

これはめからうろこざきさん。

Rails【current_user】

  • ログインユーザーの情報を指定できる。

【authenticate_user!】

  • application_controllerに設定
  • ログインしているユーザーだけ許可する
  • deviseの機能
  • before_action :authenticate_user!

GitHubでの開発】

  • 大きく別の機能を作る前にブランチを作成する。
  • Gitでこまめにコミットする。
  • いいとこまでコミットしたらプッシュしてプルリクエストしてマージする。

 

カリキュラム全てを覚えるとか理解する必要はなくて、「やるべきこと」があるときに、「どうやるのか」を「思い出す」あるいは「調べる」能力がつけばいいと思っています。

そして勉強より睡眠時間ファースト。

おやすみなさい。

8月20日:結合テスト2

こんばんは。

今日も引き続き結合テストやっています。

ツイートアプリのツイートフローと編集フローの途中まで。

 

今日は実装のミスによるテストコードのエラーが発生して、それの対処に時間がかかってしまい予定通りにカリキュラムを進めることができませんでした。

でも、エラー解決した時は快感☆ですね。

奥歯に挟まったコーンの皮が取れたみたいな(謎)

 

そんなわけで時間がなくなってしまったので寝ます。

おやすみなさい。

8月19日:結合テスト

こんばんは。

今日は朝と昼と夜とで合計3時間くらい勉強しました。

コントローラーの単体テストと、結合テスト

結合テストコードを書いて実行すると、バーっとなって楽しいですね。(雑)

結合テストにはカピバラさんが必要。

結合テストコードのあれこれ】

  • 移動する:visit root_path
  • 見える部分を確認:expect(page).to have_content('存在確認文字列')
  • 文字列入力:fillin 'フォームの名前', with: '入力文字列'
  • ボタン押す:find("要素").click
  • レコード1つ増えたか確認:expect{ "動作" }.to change { モデル名.count } by(1)
  • 今いるパス確認:current_path
  • カーソルあわせ:find("要素").hover

個人的には、Rubyドリルの方が楽しいです。時間かかるけど。

お腹すいた。

おやすみなさい。