26歳女性メディア技術者がWebプログラマーに転職する物語

26歳女性メディア技術者がWebプログラマーに転職するまでの過程をメインに投稿します。あたたかく見守ってください。

本日のOut Put part27

 こんばんは、Ramrinです^^

 

今日はユーザー管理機能の途中までしました。

 

今日したこと

  • Deviseの導入
  • Deviseに対応するviewファイルの作成と修正

 

Deviseの導入時にuserテーブルを作成したのですが、マイグレートが出来ず、

rails db:rollbackをしても治らず、rails db:migrate:statusをしたところ、usersテーブルのマイグレーションファイルの状態はdownのままで、

自己解決が出来なかったのでメンターさんに質問してみました。

 

結果的には、

datebase.ymlにて

  adapter: mysql2

  encoding: utf8mb4

互換性がないためエラーが出ていました。

そこでencoding: utf8に変更してrails db:droprails db:createマイグレーションファイルを修正することができました。

 

前回までの実装では、一番最初指示されていた変更を、

今回ではしていなかったことが原因です。

 

私がメンターさんにした質問は詳しくは他のページにまとめます。

 userテーブルのマイグレート修正が出来ない。 - 26歳女性メディア技術者がWebプログラマーに転職する物語

 

問題が解決して、その後viewファイルの実装まではローカル環境で確認できたので、

今日はここまででcommitして終了です。

 

明日は新規登録機能とログイン機能の実装に入ります。

 

それでは^^

本日のOut Put part26

お久しぶりです。

Ramrinです^^

 

ここずっとOutPut関係の更新をサボっていました。。。

まだまだ自分に甘いですね。

改めてOutPut頑張っていきたいと思います!!

 

OutPutの更新はサボってたのですが、勉強としては最終課題に入りました。

ここ3日間くらいはデータベース設計に苦戦していて、

今日やっとメンターさんからLGTMをもらうことができました!

 

作成するアプリとしては、ユーザーが商品を出品、購入できる簡単なフリマアプリになります。

 

なぜ自分がDB設計に苦戦したかというと、

①エンティティの抽出が甘かった。

②各テーブルの関連付とアソシエーションがごちゃごちゃになっていた。

③カラムの型や制約について、理解が足りていなかった。

の3つが主な原因です。

 

①について

エンティティとはサービスで扱われるデータ自体のことです。

見本のアプリを試して使用しながら、

今回の実装で必要なデータ、つまりエンティティをメモや紙に書き出したのですが、

結果的にいくつも抜けていました。

特に購入履歴のテーブルについては指摘されてから初めて気付きました。

メモや紙も殴り書きのように書いていたので、見直しずらかったので、

今後はメモや紙も大切にしようと思いました。

 

②について

has_manyとbelongs_toの関係はできていたのですが、

has_oneとbelongs_toの関係に苦戦しました。

どちらが親で、子なのかということを考えていると、

どんどん分からなくなっていました。

落ち着いて考えたら分かるので、焦らないようにしないとですね。

 

③について

今回の実装の中でactive_hashというDBに保存しないが、

あたかも保存したかのような扱いができるGemを使用するのですが、

ルール上、integer型でないといけないということを知りました。

追加するGemによっては他にもルールがあるので、

気を付ける必要があると思いました。

 

 

実際にどのようなDB設計をしたのかというのは、

最終課題提出後に改めてまとめたいなと思っています。

 

明日からはユーザー管理機能の実装に取り掛かります!

 

 

本日のOut Put part 25

新しく学んだこと

・非同期通信

Ajax

 

非同期通信は、リクエスト後にブラウザが再読み込みされることなく通信が行われる通信方法のことで、JavaScriptを使用して非同期通信を行う処理のプログラム手法のことをAjaxといいます。

 

復習したこと

・if文

・繰り返し文

・クラスとインスタンス

 

クラスの定義内で@@nameというものを使ったのですが、

インスタンス変数とは違うのかなと思いました。

明日深く調べたいと思います。

あとはreturnの概念ももう一度確認しようと思います。

 

ではまた^^

中学からの親友

こんばんは、Ramrinです^^

 

OutPut以外での投稿はとてもお久しぶりですね。

きっと少し余裕が出てきたということでしょう(誰目線)

 

今日は中学生の時に出会った親友のことについてまとめたいと思います。

 

親友は男子女子問わず人気者で、人だかりの中心に常にいるようなポジションでした。

性格も明るくて、元気で、サバサバしてて、ノリがよくて、たくさん笑う人です。

一方、自分の中学生時代はというとインキャよりのポジションだったと思います。

何してたんだろうっていうくらい中学校生活については記憶がないです(笑)

 

そんな対局の私たちがどうして親友になったかというと、

部活が同じで知り合い、当時お互いが持っていた夢が同じだったことで話が盛り上がったのがきっかけです。

 

夢以外のこともたくさん話しているうちに、

自分も親友も「周りから相談を受ける立場」で自分の相談を誰にもできないという共通点を知りました。

それもあってか、普段の学生生活ではからまないけど、部活や下校、休日などにはたくさん話す、ということが多くなりました。

他の友人には話せないけど、お互いになら話せるような気が楽な間柄になりました。

他にも服の好みなどの感じ方や考え方も結構逆で、お互い新しい価値観を得ることができました。

 

そのうちに親友は元は暗かったけど、小学校のことに変わろうと決心したこと、

他の人をみていて、いいなと思ったことは吸収していったことを知りました。

親友みたいな人になりたいなと感じていた自分にとっては「人は変われる」と知ったきっかけです。

 

今はお互いやりたいことも変化して、それぞれの道に進んでいます。

親友と言いつつも普段から連絡をとっているわけではなく、

年に1、2度くらいに会って近況報告する仲です。

今はコロナの件でずっと会えていないですが、また直接会って話したいです。

 

ではまた^^

本日のOut Put part 24

新しく学んだこと

  1. JavaScriptの関数
  2. JavaScript上でHTML要素を取得する方法
  3. JavaScript上で画面上の表示をかえる方法
  4. JavaScriptのライブラリ

 JavaScriptの関数とはRubyでいうところのメソッドに当たります。

定義方法にも「関数宣言」「関数式」の2種類あり、

関数定義自体も「無名関数」「即時関数」「アロー関数」があります。

↓関数宣言と関数式のコード比較↓

// 関数宣言
function 関数名( 引数 ){
  // 関数内の処理
}

// 関数式
変数 = function( 引数 ){
  // 関数内の処理
}

関数式を使用する場合は関数の実行より先に関数を定義する必要があるので注意です。 

 

↓無名関数と即時関数、アロー関数のコード比較↓

// 無名関数
const 変数名 = function(引数) {
  処理
}
変数名(1)

// 即時関数
(function 変数名(引数) {
  処理
})(1)

// アロー関数 const 変数名 = () => { 処理 }

 

 

復習したこと

  • 条件分岐
  • each文

if文で条件分岐をする際は一度条件を図に表してみると分かりやすかったです。

ベン図みたいなイメージです。

each文は配列の要素に対して使用することが多いので、

配列のどの要素に対して処理を行うのかという点を気をつけようと思います。

 

 

本日のOut Put part 23

新しく学んだこと

  1. JavaScriptの基礎文法(変数定義、条件分岐、配列、繰り返し処理)

 

変数定義には値を再定義できるかどうか、再代入できるかどうかによって、

3種類を使い分ける必要があることを知りました。 

条件分岐、配列に関してはRubyとほぼ同じ記述でした。

繰り返し処理のコードとしてfor文を新しく学びました。

↓コード例↓

for ( let i = 1; i <= 100; i++ ) {
  // 100回処理を繰り返す
}

"let i = 1"の部分が初期化式と呼ばれる、for文の中で使用する変数を定義になります。

”i = 100”の部分が条件式と呼ばれ、値がtrueで有る限り処理が繰り返します。

”i++”の部分が加算式と呼ばれ、初期化式で定義した変数の増減を記述できます。"i++"は"i = i +1"と同じ意味です。

 

復習したこと

  • include?メソッド

指定した要素が、配列や文字列内に含まれているかを判定するメソッドです。

↓コード例↓

array = ["foo", "bar"]
puts array.include?("bar")
# => true
puts array.include?("hoge")
# => false

 

本日のOut Put part22

新しく学んだこと

  1. JavaScriptの概要

これから、JavaScriptというクライアントサイドにおいて力を発揮するプログラミング言語を学ぶにあたって、まずその概要を知りました。 

サーバーサイドに強いRubyと組み合わせることで、より便利なアプリケーションを作成することが可能です。

JavaScriptの大きな特徴としては2つあげられます。

 

①ページ遷移なしで、画面の表示を切り替えられる。

②画面を更新せずに、サーバーと通信できる。

 

以上のことで、待ち時間を少なくすることできます。

 

復習したこと

  • 配列
  • each_with_indexメソッド

 each_with_indexメソッドは要素の繰り返し処理と同時に、

その要素が何番目に処理されたのか表すことができるメソッドです。

  ↓コード例↓

calors = ["あか", "みどり", "あお"]

calors.each_with_index do |item, i|
 puts "#{i}番目の色は、#{item}です。"
end

  ↓出力結果↓

0番目の色は、あかです。
1番目の色は、みどりです。
2番目の色は、あおです。

 

ではまた。