達人に学ぶ DB 設計 徹底指南書を読んで

「達人に学ぶ DB 設計 徹底指南書」を読了したため感想として記事を作成します。

達人に学ぶ DB 設計 徹底指南書

良かった点

1 論理設計と物理設計の網羅的な説明

本誌を読む前には不明瞭だった RAID やバックアップ方式、テーブル設計など様々なことを詳細に学ぶことができました。

2 トレードオフとしての説明

こういうふうな論理設計を行うとこういう利点もあるけど、こういう欠点もあるといったようにトレードオフな関係として説明を記載してあり具体的な理解ができました。

学んだこと

論理設計と物理設計を学びました。

特に正規化の部分や ER 図の作成方法、テーブルを作成する際の注意点など詳細に解説がしてあり

こういう理由があってこの方法を行っているのだなと理解することが出来ました。

難しかったこと

全体的にとても難しかったのですが、特に第 9 章の木構造を扱うという内容が理解に手間取りました。

ノード間の階層関係を円の包含関係で表現を行う部分などはイメージを何度も見て手元で実際に操作することで、やっと理解することができました。

まとめ

本誌を読む前は曖昧な認識であった DB 設計について、読んだことによりだいぶインプットができたと思います。

今後 DB 設計を行う際には本誌で復習を行いながら、設計したいと思います

スッキリわかるSQL入門第3版を読んで

「スッキリわかるSQL入門 第3版 ドリル256問付き! (スッキリわかる入門シリーズ)」を読了したため感想として記事を作成します。

スッキリわかるSQL入門 第3版 ドリル256問付き! (スッキリわかる入門シリーズ)

良かった点

1. 環境構築が不要な点

docoQL を利用することで環境構築の必要がなくSQLの動作を行える点や、操作を間違えた際の初期化を簡単に行えたのでありがたかったです。

2. とてもわかりやすい説明文

情報が書籍内で完結しており、web で検索を行わずとも意味がわかるので読むのに抵抗が少なかったです。

3. 問題数が多い点

演習問題の数が多く難易度も徐々に上昇しており、実際に手を動かして学習することにより、とても力が付いたと思います。

学んだこと

  • SQL の 4 大命令
  • 様々な比較演算子の使用方法
  • 検索結果の加工の仕方
  • 集計とグループ化の方法
  • 副問い合わせの方法
  • 複数テーブルの結合
  • トランザクションの処理について
  • テーブルの作成方法
  • テーブルの設計方法

以上を学習しました。

難しかったこと

1. 副問い合わせについて

副問い合わせを使用して、抽出や更新を行う操作のイメージが難解で苦労しました。

2. テーブルの設計方法について

テーブルの設計について、唯一の正解がないことが個人的にとても難しく感じました。

まとめ

この書籍を読む前は、簡単な select 文などしか使用した事がなく SQL 文に自信がありませんでした。

ですが、SQL を体系的に学んだことによって SQL の基本を学ぶことができたと思います。

テーブルの設計には、まだ自信がないため今後も復習を続けたいと思います。

Rubyプログラムのオプションを指定するoptparseライブラリの使用方法

Ruby でプログラムを作成するうえで optparse を使用したので使い方を説明する記事を作成します。

optparse とは?

コマンドラインのオプションを取り扱うためのライブラリです

例) Ruby のバージョンを確認する--version オプション

$ ruby --version

使用するには

optparse を使用してオプションを定義するには以下の手順が必要です

1. require で optparse を指定する

require 'optparse'

2. OptionParser オブジェクトを生成する

opt = OptionParser.new

3. オプションを取り扱うブロックを登録する

opt.on('-a')

4. parse(ARGV)を行いオプションを取得する

opt.parse(ARGV)

使用例

以下は 2 つのオプションの数値の合計を出力するプログラムです

require `optparse`
opt = OptionParser.new

opt.on('-a')
opt.on('-b')

opt.parse(ARGV)

p ARGV[0].to_i + ARGV[1].to_i

実行結果

$ ruby sample.rb -a 10 -b 20

30

まとめ

optparse を使用することでプログラムを実行する際にオプションを指定することができ変数を与え実行することができるようになります。

参考

docs.ruby-lang.org

プロを目指す人のための Ruby 入門を読んで

プロを目指す人のための Ruby 入門」を読了したため感想として記事を作成します。

良かった点

1.環境構築の丁寧な解説

最初に環境構築について丁寧に解説されていることで初学者にとっても大変ありがたかったです。

これにより、最初から詰まることなく、スムーズに学習を進めることができました。

2.豊富なサンプルコード

新しく学ぶメソッドや機能について、具体的な使用例をサンプルコードとして記述してあった点は、理解を助ける要因でした。これにより、Ruby の概念や機能を実際のコードで見ることができ、より深く理解することができました。

3.演習課題の有用性

学習のゴールを明確にするため、各章の最初に演習課題がどのような機能で作成できるのかを最初に提示してあり、学習の方向性を示す手助けとなりました。これにより、目標をもって学習を進めることができました。

学んだこと

この本から学習出来た知識は大きく以下の 2 つに分けられます。

1.複数ある繰り返し処理

map メソッドや select メソッド、reject メソッドなど、繰り返し処理に関する詳細な解説がありました。

これらにより、これらのメソッドを効果的に活用する方法や、正しい記法を学ぶことができました。

2.テストコードの書き方

プログラマの三大美徳に基づいたテストの解説があり、目視で確認するのではなく素早く正確に実装の不備を確認する方法を学びました。

難しかったこと

学習中に特に理解が難しかった点は以下の 2 つです

1.正規表現の扱い方

この書籍で取り上げられていた正規表現は、 Qiita の記事を読み解く形で進められました。

これまで正規表現を曖昧に理解していたため、難しいと感じる部分も多かったです。

2.パターンマッチについて

書籍内で説明されたパターンマッチは、case 文を簡潔に記載できるものだと学習をしました。

しかし複雑な条件を記載する場面などでは自信が持てないため今後の学習が必要だと感じました。

まとめ

この書籍は内容が充実しており、実際に手を動かしながら学習を進めることができました。

読書前より確実にスキルが向上していると感じており、今後 Ruby を使用して開発を行う際には、この書籍を参考にしながらスキルを磨いていきたいと思います。

Ruby の初学者に非常におすすめの入門書です。

docker と docker compose で web アプリを docker 化する方法

GitHub に上がっている Rails アプリを Docker 化した手順をまとめてみました。

使用環境
OS Windows
エディタ VSCode

エラー

shebang line ending with \r may cause problems

上記のエラーが docker-compose build の際に発生しました。

上記のエラーが発生する理由は LinuxWindows の改行コードの違いによるものです

そのため お使いの OS が Windows の場合エラーが発生しないように事前にターミナルから設定を行いエラーを回避します。

$ git config --global core.autocrlf false

上記の設定を行うことで git clone を行う際に改行コードが LF から CRLF に自動で変換されるのを防ぎます。

1. リポジトリをクローンしてローカルの環境を作成

$ git clone <リポジトリ名>

2. クローンしたリポジトリディレクトリに移動する

$ cd <リポジトリ名>

3. Dockerfile を作成

$ code Dockerfile

Dockerfileの内容

FROM ruby:3.2.2

RUN apt-get update -qq && apt-get install -y \
 build-essential \
 libpq-dev \
 nodejs \
 postgresql-client \
 yarn

WORKDIR /rails-docker

COPY Gemfile Gemfile.lock /rails-docker/

RUN bundle install

4. docker-compose.yml を作成

$ code docker-compose.yml

docker-compose.ymlの内容

version: '3'

volumes:
  db-data:

services:
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    ports: - '3000:3000'
    volumes: - '.:/rails-docker'
    environment: - 'DATABASE_PASSWORD=postgres'
    tty: true
    stdin_open: true
    depends_on: - db
    links: - db

  db:
    image: postgres:12
    volumes: - 'db-data:/var/lib/postgresql/data'
    environment:
     - 'POSTGRES_USER=postgres'
     - 'POSTGRES_PASSWORD=postgres'
     - 'POSTGRES_HOST_AUTH_METHOD=trust'

5.database.yml を編集する

$ code config/database.yml

database.ymlの内容

  default: &default
    adapter: postgresql
    encoding: unicode
+   host: db
+   user: postgres
+   port: 5432
+   password: <%= ENV.fetch("DATABASE_PASSWORD") %>
    # For details on connection pooling, see Rails configuration guide
    # https://guides.rubyonrails.org/configuring.html#database-pooling
    pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

6. docker-compose

1. docker-compose build を行い Docker image を作成します

$ docker-compose build

2. docker-compose up -d を行いコンテナを作成

$ docker-compose up -d

3. docker-compose exec web bash コンテナを起動しコンテナに入る

$ docker-compose exec web bash

7. DB の作成

1. DataBase を作成する

$ rails db:create

2. DataBase を更新する

$ rails db:migrate

8. 動作確認を行う

localhost:3000 にアクセスを行い動作を確認する

https://localhost:3000

参照

Docker について

https://docs.docker.jp/compose/rails.html

https://www.udemy.com/course/aidocker/

改行コードについて

https://wa3.i-3-i.info/word11576.html

https://zenn.dev/gekal/articles/git-line-endings-practices

入門者必見!GitHub Pages で Web サイトを公開する方法!

GitHub Pages で Web サイトを公開する手順

1. GitHub アカウントを作成する

GitHubアカウント作成手順

  1. 以下の URL から「GitHub」にアクセスして下さい。

    github.co.jp

  2. 中央に配置されている「GitHub に登録する」をクリックして下さい。

  3. 「Username」 と 「Email address」、Password を入力して「Create account」をクリックしてください
  4. 利用プランは左の Free プランを選択します。選択されていることを確認して「Continue」をクリックしてください。

以上で GitHub アカウントの作成完了です。

2. GitHub で新規にリポジトリを作成する

リポジトリの作成手順

  1. GitHub にログインした状態で、画面右上の「+」をクリックする

  2. 「New repository」を選択する

  3. 「Repository name」を入力する

  4. 「Public」を選択する

  5. 「Create repository」をクリックする

以上でリポジトリの作成完了です。

3. リポジトリにファイルのアップロードを行う

ファイルのアップロード手順

  1. リポジトリのページから右上の「add file」をクリックしてください。

  2. クリックした際の tab から「Create new file」クリックしてください。

  3. リポジトリ名/」の右には「index.html」と入力してください。

  4. 「Edit」の下の「Enter file contents here」に公開したい html ファイルを記述します

  5. 記述が完了したら右上の「Commit changes...」をクリックしてください。

以上でファイルのアップロード完了です。

4. Settings からページの公開設定を行う

ページの公開設定

  1. 画面右上の「Settings」をクリックして下さい。

  2. Settings ページの左側の「Pages」をクリックしてください。

  3. Brach の項目が None になっているので「main」に設定してください。

  4. main に設定を行ったら、「Save」をクリックして変更を保存してください。

  5. 変更後数分経ってから、ページのリロードを行うと上部に「Visit site」が表示されて、クリックを行う事で Web ページの公開を確認することができます。

最後に

上記の手順で GitHub Pages を用いて Web ページの公開が出来ます。

以上となります、ご閲覧していただきありがとうございます。

参照サイト

prog-8.com

docs.github.com

ほぼ未経験がモダンな技術を学べるプログラミングスクールに入会して 1 ヶ月経過した現状

Happiness Chain に入会して 1 ヶ月が経ったので現状をまとめたいと思います。

happiness-chain.com

結論

  • 学習時間が増加しました(1 日平均 3.9h)
  • ロードマップのおかげで体系的に学ぶことができ、技術のつながりを意識することができます
  • 周りに学習を続けている方がたくさんいるためモチベーションが維持しやすいです

入会から 1 ヶ月の進捗

  • Web 技術の基本を学ぶ
  • Vim について学ぶ
  • Linux について
  • Git/GitHub について知識や使用方法について
  • HTML/CSS について(現在取り組んでいます)

1 ヶ月を振り返って

独学のころと比べて、1 ヶ月でここまで学習できたのは Happiness Chain のおかげだと思います

【内容が充実しているロードマップ】

  • Happiness Chain のロードマップは充実しており体系的に学習できるようになっています

【学習を共にする方から、モチベーションを頂ける】

  • Happiness Chain のメンバーとリアクションやミートアップでお話をすることでモチベーションを維持することができました

【メンターの方のレスポンスやレビューが早い】

  • Happiness Chain のメンターの方が素早く対応していただけて課題をスムーズに取り組めています

上記三点のメリットだけでも Happiness Chain に入って本当によかったなと思います。

まとめ

Happiness Chainに入会して本当によかったなと心から思います

2 ヶ月目からは本格的に開発の技術を学ぶので、非常に楽しみです。

まだまだロードマップの先は長いですが、日々の学習に取り組みながら技術力を身に着けていきたいと思います。

happiness-chain.com