学習[47,48,49]日目
本日の学習内容
データベースを設計してgit hubで管理する前に。。。
生活の反省
夜勤での生活の乱れからアウトプットが出来ずに終わってしまう日が続いてしまいました。。
学習のために生活リズムを変化させようと帰ったら今までは夕方になったら寝るという戦法から帰ってきたらすぐに寝て起きてスッキリしたら学習しようという作戦だったのですが、永遠と爆睡した挙句、睡眠の質も低下するというドツボにはまりました。
本来は机とかで数分仮眠するというのがいいそうで、私は布団でがっつり寝るということをしていました。。(副交感神経の関係らしい)
次の夜勤時は反省してこれを取り入れます。
ということで反省はおいといて表題の通り進めていきます。
データベースを設計してgit hubで管理
まず、ターミナル上でアプリを作成(rails new "xxxxxx")
↓
データベースの作成(bundle exec rake db:create)
↓
また、rails gコマンドでコントローラを作成した際に作成したファイルに対応したstylesheet・Javascript・helper・test_frameworkが同時に作成されないようにconfig/application.rbにて設定を変更します。
↓
次いでgitでアプリを管理するようにするためgit initでローカルリポジトリを作成
↓
git hubにコミット(commit)、プッシュ(push)してリモートリポジトリの作成
↓
マスターブランチから作業の為のブランチの作成
↓
プルリクエスト
[空のコミットを作成する]
[プッシュする]
[プルリクエストを作成する]
[同じブランチで変更修正を加えていく]
↓
作成した作業用のブランチに変更して、作成したアプリのDB設計書の作成
↓
改変したコードをコミットしてプッシュ
のような形でアプリをgit hub上で管理できるようにして、データベースの設計を行いました。
データベース設計に関して学んだこと
データベース設計にあたり
●必要な要素を全て書き出す(user,E-mail,groupとか)
●要素同士の関連性を考える(userのE-mailやuserの所属するグループのように)
●要素を箱として大きい箱に小さい箱を入れていく(userの中にE-mailやmessageが入る、messageの中にはtextやimageが入る)
●箱で中身があるものはテーブルにして中身のない箱はテーブルのカラムにする(userやmessageは中身があるのでテーブルにして、E-mailnには中身がないのでuserのカラムにしてしまう)
●テーブルの正規化を行う
●テーブル同士のリレーションやカーディナリティを決める
●カラムの制約等を決める
みたいな形で実装してみたら形になりやすかった気がする。(個人的な感想)
従属性と非従属性に関して一概に決められているものではなく、使用者側のルールに依存するものであることが分かりました。
例えば、あるものをを作るのに設計→作成という流れがあったとします。
Aという所では作成という工程は設計という工程がなければ発生しないので作成は設計に依存しているという関係ができます。その為、作成テーブルには主キーとして設計idが設定されるということになるかと思います。
一方、Bという所では、作成という工程が設計工程が無くても急ぎの場合には工程を無視して作成はできるとなっていた場合には、設計と作成は依存関係にはないことになります。その為、作成テーブルには設計idが主キーとして設定されなくなってしまいます。
このように考え方によって依存性の関係が変わってしまうところが設計する上で難しいところなのかなと感じました。
学習に関して学んだこと
冒頭で生活に関しての反省点を挙げましたが、学習に関しても言えることで、その時の体調によって学習方法も変化させないと効率が上がらないなと感じました。
例えば、短い時間でしか学習できない場合には、
まずやろうと思っている箇所の概要を一旦確認する(数分とか時間は決めて)
↓
どのように区切りをつけて学習するかタスクを作成する
↓
タスクごとに目安時間を決めて学習
というような感じでタスクを作成して短いスパンで学習するような方法を取り入れれば、短時間の学習時には有効なのではということで実践していきたいと思います。
プルリクエストの際の注意点
プルリクエストに関しては以前に学習しましたが、実際に人に向けて書いたことがなかったので注意点をまとめておく必要があるなと感じたのでまとめます。
- 実装途中で作業中のもののタイトルに関してはWIPのような目印が必要
- 詳細はWhatとWhyに基づいて記載を行う
- マークダウン表記で書く(反映されているかはpreviewで確認可能)
上記のようにプルリクエストは人に見せるものであるということを意識して記入するようにしないといけないということが分かりました。
特に他人が実装中のものを触ってしまう恐れがあるタイトルに関しては要注意だなと感じました。
小ネタ
コードを書くものとしてVscodeを利用しているのですが、今までターミナルを別で起動して使用していたのですが、command+`で統合ターミナルというものを利用できることを知りました。
以上で本日の学習は終わりです。
明日からは生活のリズムが元に戻るので頑張って学習を続けていきたいと思います。