djangoチュートリアルの感想

djangoチュートリアルを終えたので、学習した内容をこちらにまとめます。

目次

  • 学習した目的
  • 良かったところ
  • 悪かったところ(もしあれば)
  • 学んだこと
  • 難しかったこと

学習した目的

Webアプリケーションを作成するためにフレームワーク使用するのでdjangoを学習しました。

良かったところ

  • webアプリケーションを作りながら学習を進めることができる
  • テスト駆動開発を学べる

投票システムを作りながら学習を進める形なので手を動かしながら学習できるのは良いところだと思いました。

また、テスト駆動開発についても説明しており、コードを書く前にテストコードを書いてからそれをクリアするためのコードを書くという考えたは勉強になりました。

悪かったところ

  • システムを実装するのが難しい

既存のコードを残しつつ修正する部分があったりして、修正を少しでも間違えればシステムがクラッシュすることが頻繁にあり、動くものを実装するのがとても難しかったです。

まとめ

事前にdjangoの勉強をしてから臨んだのですが、内容がとても難しく実際にシステムを作りながら読み返していく形で活用していく必要があると思いました。

 

以上です。

REST APIについて

REST APIについて学んだので、学習した内容をこちらにまとめます。

目次

  • 学習した目的
  • 学んだこと

学習した目的

RESTfulなURL設計ができるようになるためにRESTについて学びました。

学んだこと

RESTとは

RESTとは一言で言えば、「分散型システムを構築するときに使う設計ルール」となります。

6つの設計原則から成り立つものになるのですが、それぞれ説明すると説明が長くなりそうなので、RESTについてはここまでとさせて頂いて後続のREST APIの説明に移っていきたいと思います。

 

REST APIについて

REST APIの設計レベルは大きく分けて4段階になるのですが、ここではよく見かけるLEVEL2にスコープを当ててまとめていきたいと思います。

 

REST APIの設計レベル2はリソースごとにHTTPメソッドを活用していく設計となります。

リソースというとサーバリソースかと思われますが、そういった意味のリソースではなくここではあくまでアクセス可能なオブジェクトを指します。

Web API 設計のベスト プラクティス - Azure Architecture Center | Microsoft Learnより以下引用

REST API は "リソース" を中心に設計します。リソースは、クライアントがアクセスできるあらゆる種類のオブジェクト、データ、またはサービスです。

 

そしてHTTPメソッドは以下になります。

  • POST リソースの作成(リソース名が未定)

  • PUT リソースの更新、新規登録(リソース名が決まってる)

  • GET リソースの取得

  • DELETE リソースの削除

まとめ

これまでサーバの運用業務に従事していたときにAPIへどのようなリクエストがいくのか見ていたことがあったのですが、それが上記のような設計方針に則って作られていたとは知りませんでした。

言われてみれば各APIごとにリクエストパラメータのリソース部分が違ってたので、RESTによる設計原則に則って様々なシステムが作られていたんだなと改めて気付かされました。

 

以上です。

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

DB設計について学んだので、学習した内容をこちらにまとめます。

目次

  • 読んだ目的
  • 良かったところ
  • 悪かったところ(もしあれば)
  • 学んだこと
  • 難しかったこと

読んだ目的

掲題の参考図書を読んだ主な目的は以下になります。

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

  • DB設計の手法を学習する

DBについての知識の習得のために掲題の参考図書を読んだ次第となります。

よかったところ

  • DBのパフォーマンスも考慮した設計が学べる

悪かったところ(もしあれば)

  • 実践で使うまで通読が必要だなと感じました。

内容がよくないという訳ではないのですが、理解するのがとても難しく実践で使うには本書を振り返りつつ経験を積む必要があると感じました

まとめ

DB設計の本を読んだのが初めてだったのですが、キャパシティとパフォーマンスに折り合いがつくような平衡点を探ってDBを設計したり、正規化などカリキュラムを進めつつ復習が必要だなと感じました。

今後はDBを設計する際のバイブルとして活用していこうと思います。

 

以上です。

スッキリわかるSQL入門 感想

SQLについて学んだので、学習した内容をこちらにまとめます。

目次

  • 読んだ目的
  • 良かったところ
  • 悪かったところ(もしあれば)
  • 学んだこと
  • 難しかったこと

読んだ目的

掲題の参考図書を読んだ主な目的は以下になります。

スッキリわかるSQL入門 第3版

  • SQLの基本的な操作を習得する
  • 基本的なDB設計の手法を把握する

補足ですが、現在Happiness Chainというプログラミングスクールで学習をしておりまして、DBについての知識の習得のために掲題の参考図書を読んだ次第となります。

よかったところ

  • dokoQLが秀逸
  • DBの基本設計についても少しではありますが学ぶことができる。

悪かったところ(もしあれば)

  • 付録のエラー解決虎の巻は蛇足な気がしました。

 

まとめ

基本的なDMLやサブクエリ、結合と基本的な操作が分かりやく解説されていて、入門書としては最適でした。

 

さらにdokoQLというサービスを使えば、環境構築不要、かつ無料でDBを操作することができるのは素晴らしいサービスだと思いました。

ただ、あるに越したことはないのですが付録のエラー解決虎の巻はネットで検索すれば解決できそうなものばかりで、本書に記載するのは少し蛇足かなと感じました。

 

とはいえ本書でSQLの基本的な操作は抑えることができたので手に取ってよかったというのが総評です。

 

以上です。

dockerでアプリを自動起動させるようにする

やりたいこと

dockerを立ち上げてアプリを自動起動するまでの流れ

  • docker-compose upでrailsとDBのコンテナを起動できるようにする。
  • Webアプリを自動で起動できるようにする。

コンテナ化の手順

  • 今回はRailsアプリをコンテナ起動による自動化を目指すためrailsとpostgresをコンテナ化します。
  • コンテナ化に必要なDockerfileと2つのコンテナを使うのでdocker-compose.ymlを用意します。
  • DBの設定に必要なdatabase.ymlファイルも適宜修正します。

 

例 Dockerfile

FROM ruby:3.2.2
RUN apt-get update && apt-get install -y \
    build-essential \
    libpq-dev \
    nodejs 
WORKDIR /rails-docker
COPY Gemfile Gemfile.lock
COPY . /rails-docker/
RUN bundle install

 

※アプリ起動の自動化前のため、コンテナを起動するまでに留めてます。

例 docker-compose.yml

version: '3'
volumes:
  db-data:

services:
  web:
    build: .    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'

 

上記設定ファイルを保存したらターミナルにて以下のコマンドを実行しアプリを起動します。

 

railsとpostgresのコンテナを起動

※-dオプションでdetachモード(バックグランド)でコンテナを起動します。

$ docker-compose up -d

 

2つのコンテナが起動したことを確認

$ docker-compose ps

 

コンテナにログイン

※今回の場合は引数にwebを指定してます。

docker-compose exec web bash

 

コンテナにログイン後DBの設定をします。

# rails db:create

# rails db:migrate

rails s -b 0.0.0.0 ※今回はローカルで起動することを想定

 

ブラウザにlocalhost:3000を入力しWebアプリが起動することを確認。

 

上記の記載内容でコンテナ、およびアプリが立ち上がることがわかったので、今度はアプリを自動で起動できるようにdocker-compose.ymlを修正します。

 

例 docker-compose.yml

services:
  web:
    build: .

 以下のDB設定コマンドとrails起動コマンドを追記する

    command: >
      bash -c "rails db:create &&
              rails db:migrate &&
              rails s -b 0.0.0.0"

 

コンテナを一時的に停止し再度立ち上げる

コンテナを停止

docker-compose down

 

コンテナを起動

$ docker-compose up -d

 

ブラウザにlocalhost:3000を入力しコンテナ起動と同時にWebアプリが起動することを確認。

 

まとめ

今回のケースではコンテナ起動と同時にアプリを自動で立ち上げるためにDB設定コマンドとrailsを起動するコマンドを追記するだけでした。

ただ今後より本格的なWebアプリをコンテナ化して自動で起動する際はより複雑な設定をdocker-compose.ymlに追記する必要があるかと思います。

GitHub Pagesの使い方

自己紹介のためにサイトを作成してGitHub Pagesでサイトを公開したので、

簡単ではありますがやり方をご紹介させて頂きたいと思います。

 

目次

GitHub Pagesの作り方

 

GitHub Pagesの作り方を紹介していきたいと思います。

GitHubにログインしてヘッダの「Settings」をクリックします。

すると画面が変わるので「Pages」をクリックします。



Branchのプルダウンを公開したいサイトを格納してるブランチに指定して、

「Save」をクリック。

 

しばらくすると画面上部に「Visit site」が表示されるのでクリック。

 

サイトが公開されていることを確認できます。

 

Linuxの基礎コマンドを理解する

Linuxの基礎コマンドについて学習したのでこちらの記事にまとめたいと思います。

 

目次

学習したコマンド

 

cd

ディレクトリを移動する。

change directoryの略。

 

pwd

現在いるディレクトリを表示する。

print woekingディレクトリの略。

 

ls

カレントディレクトリの中身を表示する。

listの略

 

mkdir

ディレクトリを作成する。

make directoryの略。

 

rmdir

中身が空のディレクトリを削除する。

rm -rで削除することの方が多い。

 

cat

ファイルの中身を見るコマンド。

語源はconcate。

恐らくファイルを結合して参照することができるからconcateが語源になったよう。

user@ % ls -l *.txt

-rw-r--r--  1 user  staff  6 12 30 18:19 test1.txt

-rw-r--r--  1 user  staff  6 12 30 18:19 test2.txt

user@ %

user@ % cat test1.txt

Hello

user@ % cat test2.txt

World

user@ % cat test1.txt test2.txt

Hello

World

 

less

確認したい中身をページャ表示できるコマンド

 

tail

確認したい内容の末尾を表示できるコマンド

tail -fでログの最新の出力を確認する使い方が多い

 

touch

空ファイルを作成する

 

rm

オブジェクトを削除するコマンド

ディレクトリの削除には-rオプションが必要。

 

mv

オブジェクトの移動とファイルのリネームができるコマンド

 

cp

コピーができる

 

ln

シンボリックリンク、またはハードリンクを作成できる。

使う時はほとんどリンボリックリンクの作成で使う。

シンボリックリンクWindowsでいうところのショートカットを指す。

 ハードリンクは実体を指す。

 

find

ファイルを探すときに使う。

使う時の具体的なコマンドは以下。

find . -name "キーワード" -type f (ディレクトリを探すときはg)

 

chmod

パーミッション(権限)を変更するときに使う。

数字でchmod 755 ファイル名のように権限を指定することもできる。

 

chown

所有者と所有グループを変更できる。

 

ps

プロセスを表示できる。

主にps auxで使うことが多い。

 

kill

プロセスを強制的に落とす時に使う。

Kill -9 プロセスID で使うことが多い。