環境を整える [20210412☀️]

2021/04/12 本日のアウトプット。

・今日の積み上げ・

  • プログラミング学習 01:05
  • 英語学習 01:10
    • mikan 500総復習
    • Polyglots 1本
    • ディクトレ 5本 

本日の勉強時間 02:15

今日はタグ付けを学ぶためのミニアプリ制作をしてました。
オリジナルアプリで使っていきたい機能なのでしっかりと学習していきたいと思います〜!

・雑記・
少し前にはなるのですが、ブルーライトカットのメガネを買いました!
感覚的に目が疲れにくいような…!
PC周りの環境がどんどん良くなってきて楽しいです✨

久しぶりの家族時間 [20210411☀️]

2021/04/11 本日のアウトプット。

・今日の積み上げ・

  • プログラミング学習 03:36
    • Rubyドリル
    • アウトプット記事作成 1本
  • 英語学習 00:39
    • mikan 500総復習
    • ディクトレ 5本 

本日の勉強時間 04:15

今日は昨日参加した勉強会のアウトプット記事を最優先して行いました。
前回書き終わるまでにかなり時間を要してしまったので今回はスピード重視です。
しかしSQL奥が深い、調べても調べても知りたいことが増えてしまいます。
これ以上調べるとまとめきれないな…と言い訳をしながら区切りのいいところで締めました。
そこで区切ってよかったのかはわからないけど、まだ知らない構文等もあるので出会ったその都度学習していきたいと思います。

・雑記・
今日は久しぶりに親と買い物に出かけました。
今までなんやかんや月1で会っていたのですが、宣言下だったこともあり前回会った時より日が経ってしまいました。
お互いにいろんなことを話しました。
まだ学習を始めたことを報告していなかったので、それも伝えました。タイミングが合わず父親にはまだ言えてないのですが。
ちゃんと転職したい理由、プログラミングをやりたいと思った理由を話したら共感してくれたので少しホッとしています。
来月以降は元のペースで会うとは思うので父親にも早く報告せねばな…
学習の時間は減ってしまいましたが、家族の時間を取れてよかったと思えた1日でした。

SQLの勉強会に参加したらもっと知りたいことが出てきたんだなあ

皆様こんにちは、もしくははじめまして。IDEです。
今回の記事は、2021年4月10日に催された、xhack様主催のSQLの勉強会に関するレポートです。
勉強していく中で、勉強会中に触れられなかったことや気になったことを今回の記事にまとめました。
お付き合いいただける方は、このままお進みいただければ幸いです。
例の如く勉強会中に学んだ内容については概要に資料のリンクを貼るのでそこからご参照ください。

目次

  1. 勉強会概要
  2. 参加したきっかけ
  3. 勉強会後調べた3つのこと
    データベースの種類の違いとは?
    触れられなかったけどよく使う構文について
    WHERE文について
  4. まとめ

勉強会概要

今回参加させていただいたのは、【【オンラインハンズオン】はじめてのSQL】です。
x-hack.connpass.com
主催者は(株)xhack、登壇者はどいこ様です。
twitter.com
事前に用意してくださった資料を見ながら、ツールを使って実際に手を動かして学んでいきました。


参加したきっかけ

データベースの操作については、普段Rails様にお世話になっているので自分の手で実際に動かすことはあまりないのですが、基礎を学び直している身にとってここも押さえておきたい!と思ったので参加するにいたりました。


勉強会後調べた3つのこと

データベースの種類の違いとは?

普段のアプリケーション制作ではMySQLを使っているのですが、今回の勉強会ではPostgreSQLを使っていきました。
カリキュラムに記載されているままMySQLを使っていたけど、なぜこれを使うのかわかっていませんでした…💦
なのでこちらの記事を中心に確認しました。
Oracleもよく利用されているDBなので、この3つを中心に記事を読み漁りました。 超超超雑にまとめるとこういう解釈になるのかな?と思っています。

ただ、ぶっちゃけて言うと機能の差はほぼないような気がします。
NULLと空文字の扱いや値の更新について、細々とした部分が違うそう。
疑問に思っていたMySQLを使っていた理由は、シンプル故に初学者にとって使いやすいからかな、と考えています。

触れられなかったけどよく使う構文について

資料の最後に記されていた4つの構文のうち3つを深掘り!
第2回の勉強会が5月に開催されるそうですが、せっかち笑なので予習を兼ねて調べてみました。
データは全て資料記載の食堂のmenusテーブルを使用しています。
また、13~16(16は2つかぶってしまいましたが)を追加しました。
f:id:programmingnuoh:20210411224609p:plain

DISTINCT

重複をのぞいて表示する構文。
SELECT DISTINCT カラム名 FROM テーブル名
以下、実際に書いてみたSQL文です。

f:id:programmingnuoh:20210411224828p:plain

全列表示だとカテゴリーがいくつあるのか微妙にわかりにくいですが、DISTINCTを使った検索をすればカラムごとに何があるのかがわかりやすく表示できますね。

ORDER BY

順序で並び替えをする構文。
SELECT カラム名 FROM テーブル名 ORDER BY カラム名 DESC/ASC
(DESC→降順、ASC→昇順)
以下、実際に書いてみたSQL文です。

f:id:programmingnuoh:20210411225253p:plain

GROUP BY

値をグループ化する構文。
SELECT 表示したいカラム名 FROM テーブル名 GROUP BY グループ化するカラム名
DISTINCTは重複するものを省いているだけ(重複しているものに括弧をつけてるイメージ?)、GROUP BYは重複しているものをひとまとめにしている感じ(重複しているものにチェックを付けているイメージ?)です。
以下、実際に書いてみたSQL文です。

f:id:programmingnuoh:20210411230050p:plain

FROMの前に,COUNT(数えたいカラム名)を付けると各カラムに当てはまる値はいくつあるのかを数えてくれます。
DISTINCTと似ているけど微妙に違うのはここの部分ですね。

資料内の触れられなかった構文にJOINが入っているのですが、今使っているテーブルだと微妙に説明しづらい構文なので、この記事では保留です。
こちらの記事が非常にわかりやすかったです。

WHERE文について

検索機能でも出てきたWHERE文。
いまいち理解しきれていなかったのですが、今回勉強している中で何回もこれが出てきたので少し慣れることができました。
SQL文と検索機能として使うWHERE文(Railsだとメソッドか)を微妙に違うとは思いますが一応ここで触れておきたいと思います。
以下、アプリケーション内で検索機能を実装するために記載したモデル及びメソッドのコードです。

class SearchTweetsService
  def self.search(search)
      if search != ""
          Tweet.where('text LIKE(?)', "%#{search}%")
      else
          Tweet.all
      end
  end
end

whereメソッドについて構文分析をしていきます。

Tweet.where('text LIKE(?)', "%#{search}%")
                       ||
モデル名.where('検索対象のカラム名 LIKE句', "%(曖昧文字列)引数%")

where括弧内は条件式を書きます。これはSQL文でも同じでした。
%は任意の0文字以上の文字を意味する曖昧文字列。
つまり上記のコードはTweetモデルの中からtextカラムにsearchが含まれた投稿を絞り込む、という内容になりますね。


まとめ

今回の記事は、レポートというよりかは勉強会を踏まえて自分が調べたことを書かせていただきました。
拙い文章にお付き合いいただいた方、ありがとうございます。
また、改めてどいこさん、主催のxhackさん、貴重な勉強会の機会をいただきありがとうございました。
データベースについての基礎知識や、まだ触れていない構文など調べることはたくさんあるので、その都度学習していきたいと思います。


参考記事

今回の記事を書くに当たり、以下の記事を参考にさせていただきました。
ありがとうございました。
(参考記事には載せていませんが、勉強会の資料ももちろん参考にさせていただきました。どいこさんのわかりやすい資料に感謝です…!)

  • 主なRDB(Oracle, MySQL, PostgreSQL)の機能比較
  • SQLの観点から「Oracle Database」「PostgreSQL」「MySQL」の特徴を整理しよう!
  • SQLの観点から「Oracle Database」「PostgreSQL」「MySQL」の特徴を整理しよう!
  • SQL の DISTINCT を使うサンプル
  • SQLで並び替え!ORDER BYを基礎から応用まで学ぼう!
  • 【SQL】GROUP BYで自在に集計!集計関数やHAVINGと合わせて使おう
  • SQL素人でも分かるテーブル結合(inner joinとouter join)

  • 高まる高まるアドレナリン [20210410☀️🍃]

    2021/04/10 本日のアウトプット。

    ・今日の積み上げ・

    • プログラミング学習 08:18
      • Rubyドリル
      • オリジナルアプリ/要件定義・画面遷移図作成
      • 技術書/Web技術入門
    • 英語学習 01:06
      • mikan 500総復習
      • Polyglots 1本
      • ディクトレ 5本 

    本日の勉強時間 09:24

    今日は早起きスタバチャレンジ〜勉強会参加までがっつり勉強しました!
    しかしまだ勉強し足りないという気持ち!アドレナリンが!高まっている!
    技術書もさっそく読み始めました。
    Web入門基礎を読み進めているのですが、歴史的な部分から学習できるのが私にとっては理解が大変しやすくてありがたい!
    時代背景がわかるだけで理解度が全然違うな、と昔から思っています。
    学習したいことが山積みになってしまっているので、一つずつ着実に積み上げていきます💪

    ・雑記・
    今日は外で学習していました!
    今日はラーメン以外を食べたいな〜と思いつつしかし東京駅近辺はあまりお手頃なお店がない…どうする…!
    ラーメンだ!!!!
    f:id:programmingnuoh:20210410225352j:plain 今日はKITTE内の福味さんでいただきました!鶏そば!
    スープが非常にさっぱりしていて、玉ねぎのちょっとした辛味がいいアクセントになってます。
    肉も(胸肉だよね?)想像以上にやわらかくて食べやすい!
    さらに味玉はほんのり塩気があってこれもさっぱりスープととっても合うんですね〜。
    オプションなしのラーメンで味玉がついてくるのはお得みがある!
    もしさっぱりしたくなったらぜひ行ってみてください〜!

    空き時間の有効活用 [20210409☀️]

    2021/04/09 本日のアウトプット。

    ・今日の積み上げ・

    • Rubyドリル 00:12
    • 英語学習 01:39
      • mikan 500総復習
      • Polyglots 2本
      • ディクトレ 5本 

    本日の勉強時間 01:51

    今日は残業の日だったので少なめです。
    その代わり空き時間の間で英語学習をいつもより多めに取りました。
    Polyglots2本のうちの1本は超長文だったのと文の構造の理解にかなり時間がかかってしまいました。
    10分以上読むのに時間がかかるものは紙で線引きながら読みたいな…
    長文対策本なのか、洋書なのか、導入の検討です。

    ・雑記・
    先日メルカリで落とした本2冊目。
    f:id:programmingnuoh:20210409205307j:plain 基礎の部分がわかっているようでわかっていないので、これを読んでしっかりと地固めしていきます。
    うおおおおやるぞ!
    (今日は短めです。テンションで乗り切りました。)

    計画を詰めていく [20210408☀️]

    2021/04/08 本日のアウトプット。

    ・今日の積み上げ・

    • Rubyドリル
    • 今後の学習計画立て 1:03
    • 英語学習 01:08
      • mikan 500総復習
      • Polyglots 2本
      • ディクトレ 5本 

    本日の勉強時間 02:11

    今日は立ち止まりDAYです。
    オリジナルアプリと、その他の学習について、どのくらいのペースで進めるべきか、オリアプに関しては日にちを逆算してどこまでに終わらせたらいいのか、計算しながらまとめていました。
    まとめきれなかったので明日、もう少し詰めていきます。(急遽残業の日になったのでちょうどいい)

    ・雑記・
    今日は家ご飯を大量に作り置きしました!(といっても4食分くらいですが…)
    学習を進めていく上で効率的な食事準備は大事!
    外食やテイクアウトばかりだと飽きてしまうので…。
    でも最近のスーパーの惣菜って本当においしいですよね〜!
    サミットの塩レモンで食べるお寿司と、ヤオコーのぜいたく軍艦巻き(名前うろ覚え)がおすすめです。
    ここの記事で紹介する機会があれば写真や感想を載せるのでよかったらみてくださいね!(食レポブログか?🤔)

    計画的な学習積み上げ [20210407☀️]

    2021/04/07 本日のアウトプット。

    ・今日の積み上げ・

    • Rubyドリル
    • 最終課題/AWS実装 6:34
    • 英語学習 00:15
      • mikan 500総復習 
    • キャリアアドバイザーとの面談

    本日の勉強時間 06:49

    AWS実装がやっと終わりました。
    今回もエラーにたくさん遭遇したりで大変でした…💦
    SQL等々、まだ頭でわかっていないことが多いな、と実感した単元でした。
    基礎からしっかり復習していかないと。
    先日メルカリで落とした新しいLinuxの教科書も届いたので、さっそく勉強していきたいと思います!
    f:id:programmingnuoh:20210407223701j:plain もう一冊頼んだのが届くので、しっかり計画的に学習を積み上げていきたいと思います。
    英語は少なくなってしまったので、明日からは通常ペースに戻していきます!

    ・雑記・
    今日はキャリアアドバイザーとの面談でした。
    今日はざっくばらんに話す感じでした。
    転職活動はまだ先なので、この間にオリジナルアプリと自主学習と履歴書作成と…
    やることがたくさんあるので、リストアップ・整理していかなければいけませんね…
    卒業の日から遡って考えていきたいと思います。