kent備忘ログ

お仕事と趣味生活と

10月の学習を振り返って

朝晩が寒く日中がいまだに暑かった10月ですが、学習を振り返りです。9月はRuby課題でのアウトプットが主体でしたが、10月は転じて主にSQLRailsに対するインプット月間となりました。

10月上旬

月の頭では、先月末から続いてSQLに関する以下の2冊の教材を読んでの学習でした。
  • スッキリわかるSQL入門 第3版

 SQLのクエリ文の基本から学び、データベースへの4つの命令パターンである取得(これが一番主で内容も重たいですが)、追加、更新、削除を各章に分け解説してます。
 章末毎にある問題集もボリュームが多く、クエリ文の作成を繰り返し学習出来ました。
また実在しているDBMS間での比較や違いを紹介していました。

  • 達人に学ぶDB設計

 初めに読んだ上記の本とは別の観点から、データベース運用について、概念設計・論理設計・物理設計と設計工程から解説していき、運用コストや運用方針に合わせたハードウェアの選定方法解説までありました。
論理設計ではテーブル設計におけるテーブルの段階を踏んだ正規化、ER図を用いたテーブル同士の関連性の可視化を学びました。後半では実務におけるDB設計のNGや望ましくない設計を紹介していました。

以下は典型的なクエリ文の例になります。

SELECT goods, MAX(price) AS max_price FROM sales_record
WHERE price > 1000
GROUP BY goods;

10月中旬~下旬

月の中頃からHTTP通信におけるRESTの概念について学びました。この次にRailsを学んだ際に気づきますが、既にRailsでは、ある程度RESTの概念に沿ったURI設計が備わっていることがわかりました。
続いて下旬に掛けては定番のRuby on Rails速習実践ガイド」を教材としてRailsでのWebアプリ開発について学びました。

 一度学んだRuby言語の復習から入り、Railsアプリのディレクトリ構造・MVCアーキテクチャの解説の後、基礎的なCRUD機能を備えたタスク管理アプリを作成しました。
次第に機能追加の解説に入り、ユーザアカウントとログイン機能の追加、ページネーションや画像アップロード機能を専用のgemライブラリを追加して実装する方法を学びました。

 同時に、実装したコードの自動テスト機能も追加し、Webアプリの動作に不具合がないかを人力ではなく、機械的に効率良く検証する方法も学びました。
後半では、実務の実態に応じた非効率な開発の注意点、Railsにおける開発時の守るべき点を学びました。

 これも例ですが、MVCの概念を前提にRailsアプリを実装していくと、以下ようなファイルから手をつけていくことになると思います。

routes.rb

Rails.application.routes.draw do
  root 'home#index'
  resources :users
  # get "users", to: 'users#index'
  # get "users/new", to: 'users#new'
  # post "users", to: 'users#create'
  # get "users/:id", to: 'users#show'end

users_controller.rb

class UsersController < ApplicationController
  def new
    @user = User.new
  end

  def create
    @user = User.new(user_params)
    if @user.save
      session[:user_id] = @user.id
      redirect_to mypage_path
                           ⋮
end

index.html.erb

<h1>ログイン</h1>

<%= form_with scope: :session, url: login_path do |f| %>
  <div class="form-group">
    <%= f.label :name, 'ユーザー名' %>
    <%= f.text_field :name, class: 'form-control' %>
  </div>
  ⋮

10月30日に速習ガイドを読み終わり、31日から月の振り返り記事を書いているところですが、いよいよ来月からは本格的にRailsアプリ作成に取り組みます。今まで教材で学んだ事を忘れずにアウトプットできるよう心がけていきたいです。