Ruby on Railsの課題の取り組み方(RUNTEQの課題を通して学んだ課題の取り組み方について)


Hello！しっしーです🦁

僕は、現在RUNTEQというプログラミングスクールに通い、
Ruby on Railsを使ってWebアプリ開発の技術習得を目指しています！

そして、現在は5ヶ月目に突入！
総学習時間はざっくり800時間くらいになります。
(※独学時の学習時間も含むHTML、CSS、JSがメイン)

そんな僕が、現在どのように課題と向き合い、
どのように問題解決をしているのかをまとめてお話しすることで、

これから学習をしていく方の参考になるのではないか？と思い！

現在の課題の取り組み方をまとめておきたいと思います。

## 目次：

- [Ruby on Railsの課題に取り組む時の心構え](#ruby-on-railsの課題に取り組む時の心構え)
- [Railsの課題の進め方](#railsの課題の進め方)
- [まとめ](#まとめ)

## Ruby on Railsの課題に取り組む時の心構え

まず、課題に対する心構えについてお話しします。
当然ですが、ある程度学習を進めているとはいえ、
僕は全くの🔰初心者です。

なので、何もわかりません笑

なので、ちゃんと一つ一つ調べる！そして、ちゃんと一つ一つ読む！

☝️これが大切だと思います。

わからないからと言って、先に飛ばしたり、ちゃんと問題文を読まないと
どんどんわからないことが増えていきます。

ただし、これは、その人のその時の進捗具合や理解度により違う問題だと思います。

とにかく進める！進めるからわかる！わかるから理解できる！

という感じで、進捗やスピードを優先することも大事です。

なので、鵜呑みにせず、ご自身のその時の状況や状態によって、
適切な方法を選択してください。

その上で、下記の記事を読んで頂けますと幸いです。

## Railsの課題の進め方。

僕の課題の進め方をざっくりとご紹介致します。

具体的な流れは、下記のようになります。
順番に説明していきます。

1. 学習内容の確認
2. 現在の状態を理解
3. 課題完了時の状態の理解
4. わからない用語の検索
5. 実装概要を作成
6. 実装概要を元に作成して、本当に実装できるのか差分の確認
(必要であれば、追加の知識のインプット)
7. 実装
8. ローカルチェック
9. テスト
10. プルリクエストの作成
11. 自動レビュー(必要であればリントチェックの修正)
12. 課題完了

### 1. 学習内容の確認

まずは、学習内容を確認します。

・今回の課題では、何を行うのか？
・何を調べたらいいのか？
・どういう実装をしたらいいのか？

☝️この辺をざっくりを頭の中にインプットします。

### 2. 現在の状態を理解

続いて、現在の状態を確認します。

今のアプリの状態は、どのようになっているのかを確認します。

この時に、具体的に指定されているファイル名やその内容などを確認しておくと、
どこを修正すればいいのかわかるので、ファイル名やディレクトリ名を確認しておくといいと思います。

### 3. 課題完了時の状態の理解

続いては、今やっている課題では、最終的にどのような形や動きになったらゴールなのか、
その目的や目標を明確にします。

そして、ゴールに辿り着く為に必要な情報を洗い出しておきます。

また、こちらも修正するファイルやディレクトリの位置や場所などを検索したり、
どの辺を修正すればいいのかのあたりをつけておくと、後々修正が楽になります。

### 4. わからない用語の検索

具体的に、今の状態と最終的な修正する成果物が理解できたら、
必要な情報を検索していきます。

・Gem
・新たなメソッド
・用語
・知らないワードなど

☝️指定された課題の中でわからない単語や用語
重要なキーワードなどを元に検索をかけていきます。

検索をかけていくことで、
現在行いたい課題と似ている実装をしている記事や投稿がみつかると思います。

また、公式やGithub、ガイドなどを参照してください。

英語でわからない…
と言う場合は、一つ一つ翻訳し、Notionなどにメモをとっておくと見返せるし便利です。

### 5. 実装概要を作成

具体的な実装概要を作成していきます。
下記は、僕が実際に使っている、実装概要用のテンプレートになります。

■ の部分には、実装の内容を記載します。
その下には、実際に行うファイル名を記載し、コミットの粒度を保つ癖づけをする為に、
ci1、ci2とそれぞれのコミットをする位置にあわせて『ci』と記載しています。

また、一番下には、dockerで必要なコマンドを記載しておき、
都度必要になった際にこちらからコピーして使うようにしています。


```
実装概要：
- ■ (実装内容を記載) ci1
    - (※⚠️ファイル名を記載)
    - 
  - ■ ci2
  - ■ ci3
  - ■ ci4 
  - ■ ci5		
  - ■ ci6
  - ■ ci7

マイグレーションファイルをDBに反映 

docker compose exec web rails db:migrate

マイグレーションが適用されているか確認。 

docker compose exec web rails db:migrate:status

gemのインストールコマンド

+docker再起動

- docker compose run web bundle install コマンドを実行
- docker compose restart コマンドを実行
- docker compose exec web bin/dev コマンド実行


```

### 6. 実装概要を元に作成して、本当に実装できるのか差分の確認
(必要であれば、追加の知識のインプット)

5で作成した実装概要を元に、実装をしていきたいところなのですが、

一旦。本当に実装が出来るかどうか
問題と照らし合わせ、差分を確認します。

ここで、差分を確認することにより、
後々のエラーが防げる可能性が高くなるので、

めんどくさがらずにやることをお勧めいたします。

### 7. 実装

いよいよ実装していきます。

ここまでで、大枠と概要ができているので、
実装自体はそこまで時間がかからずに出来ると思います。

また、実装中に実装するファイル内でわからない単語やメソッドなどが
出てきた場合は、その都度調べ、メモしていきながら実装することで、

より理解も深まり、実装中に出るエラーの発生も防げると思います。

### 8. ローカルチェック

実装が完了したら、ローカルで動くかテストします。

ここで、エラーが発生した場合、そのエラー内容を検索し、
適切に修正すれば大丈夫です。

また、エラーが発生していない場合でも、
課題の完了時の意図した動きになっているか？
改めて確認してください。

### 9. テスト

ローカルテストが無事に完了したら、dockerの自動テストを行なってください。

こちらは、RUNTEQの自動レビューになります。

それぞれのスクールさんやレビューの方式に沿った
テストを実行して頂ければと思います。

### 10. プルリクエストの作成

テストが完了したら、プルリクエストの作成を行なってください。

プルリクエストは、とても大事です。

自分の行った作業の内容は、自分しかわかりません。

どんなに賢い人だとしても、ちゃんと文脈を理解して、
コードの内容を把握する必要があるので、レビュワーさんの手間を省く為にも
ちゃんとしたわかりやすい文章を心がけ、作成しましょう。

### 11. 自動レビュー(必要であればリントチェックの修正)

プルリクエストの作成が終わると、RUNTEQ内カリキュラムでは、
自動レビューをしてくれます。

この自動レビューでは、リントチェックにより、
インデントの修正や空白行、コードの複雑性などの確認をしてくれます。

なので、チェックを確認し、適切な修正を行なってください。

### 12. 課題完了

修正が終わったらはれてLGTM🥺🫰💓🤣🦌🎉👍🎈👏㊗️

ということで、課題が完了になります。

お疲れ様でした🙏

と…ここで終わらず！

最後に、課題の模範解答が提示されるので、自分の書いたコードとの差分を確認し、
適切なコードかどうかをチェックしてください。

コードは書ければいい！

というわけではなく、綺麗な書き方。わかりやすい書き方。
を目指してください。

その為に、自分の書いているコードが本当に正しいのかどうかを確認する癖をつける為にも
模範回答とのコードの違いを検証してみてください。

また、specファイルにテストコードが記載されています。

テストコードに関しても重要です。

テストコードを就活時に記載し、そのテストコードが書けているかどうかを確認する…

なんていうお話を聞くくらい、重要なことです。

なので、specファイルを確認し、どのように
テストコードが書かれているのかを確認して自分でも書けるようになる練習をしましょう。


以上が、課題の進め方のまとめになります。

## まとめ：

自分でまとめていて、改めて思います。

全部ちゃんとやっていない…🙂

と…笑

そして、出来ない…わからない…難しい…

と思った時は、大体上記の内容をすっ飛ばして
適当に実装してしまっている時です…(反省…)

なので、めんどくさがらずに、一つ一つ丁寧に
自分のやっている作業が出来ているかどうかを確認する
一つの指針として使って頂けたらとても嬉しく思います🙏

また、初学者故、至らない点も多々あるかと思います。

間違っていることや追加でやった方がいいこと、
考え方などがあれば、コメントで教えて頂けますと幸いです。

記事を読んで頂きありがとうございます。
あなたのいいねやコメントやストックが日々の心の支えとなっています。

いつも素敵ないいねやコメント本当にありがとうございます。🦁

at by　しっしー🦁