【勉強まとめ】システム設計のセオリー

1.データ設計

概念データモデル

ビジネスの視点から、ビジネス全体を把握できるデータのまとまり

サブジェクトエリア

ビジネスの観点から、一括りにまとめたり、分割する範囲を決めること

理論データモデル

概念データモデルに対して属性を付け加えていく

データ属性

項目 エンティティに付け加える項目のこと

物理データモデル



2.業務プロセス

プロセスモデル

ビジネスの動的側面を表したもの
対義:データモデル(静的側面)

業務プロセス

経営の目的を達成するための活動

業務プロセスの概要

5W2Hで定義していく
特にWhyの部分が重要



3.機能の概要定義

理論CRUD

エンティティとプロセス、エンティティを機能の更新領域を見える化する
データのライフサイクルの把握が可能になる
C:生成
R:参照
U:更新
D:削除



4.ユーザビリティ

ユーザビリティ

便利さ、使い勝手の良さ

アクセシビリティ

マルチディバイスへの対応

MacでCentOSのUSBブートを作る

USBメモリを初期化

ディスクユーティリティ > USB選択 > 消去


USBドライブを確認

$ diskutil list

/dev/disk2 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *31.3 GB    disk2
   1:                       0xEF                         8.9 MB     disk2s2

diskutil

ディスクの消去や、パーテーションの分割など「ディスクボリューム」の管理を行うコマンド

diskutil list

指定したボリュームのパーテーション一覧を表示
ボリュームを省略すると、マウントしているボリュームが対象になる


アンマウントする

$ diskutil unmountDisk /dev/disk2


ISOをUSBメモリに書き込む

$ sudo dd if=CentOS.dmg of=/dev/disk2 bs=1m

dd

ファイルをブロック単位で読み出し、指定通り変換して出力する
if=ファイル名 標準入力の代わりにファイルから読み出す
of=ファイル名 標準出力の代わりにファイルへ書き込む
bs=バイト数 1回に読み書きするブロックサイズ(バイト数)

rspecの導入

Gemfile

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
  # Adds support for Capybara system testing and selenium driver
  gem 'capybara', '~> 2.13'
  gem 'selenium-webdriver'
  gem 'rspec-rails', '~> 3.7' #追加
  gem 'factory_bot_rails', '~> 4.11' #追加
end
# インストール
bundle

# specファイルを作成
rails g rspec:install


Capybaraを使えるようにする
spec_helper.rb

require 'capybara/rspec'

RSpec.configure do |config|

  config.before(:each, type: :system) do
    driven_by :selenium_chrome_headless
  end

  config.include Capybara::DSL
  config.before(:all) do
    Capybara.default_selector = :css
    Capybara.javascript_driver = :webkit
  end
end
# コントローラーのテストファイルを作成
rials g rspec:controller name

Docker上の既存DBにアクセスできない問題

問題

railsのアプリケーションから既存のデータベースへ接続したいのに接続できない。(app,db共にdocker上にある)



解決

アプリケーションとDBのdockerのネットワークが違うため。
ネットワークを同じにしなければいけない。

docker-composeファイルでネットワーク名を指定しないと、
「docker-composeファイルの入ってるディレクトリの名前 + "_default"」というネットワークになる。

DBのdocker-composeを変更

docker-compose.yaml

...

networks:
  default:
    external:
      name: app_default

...

rails sでアプリケーションを起動しようとすると、A server is already running.と出てきて起動できない問題

問題

$ rails s
A server is already running. Check /app/tmp/pids/server.pid.
=> Booting Puma
=> Rails 5.1.6 application starting in development
=> Run `rails server -h` for more startup options
Exiting

別にアプリケーションを起動させてるわけではないのに、なぜかすでに起動していることになっている



解決

server.pidを削除する