業務効率化App制作ブログ vol.5

こんにちは、今日は引き続き業務効率化Appの制作に取り掛かりたいと思います!

今回はRuby on Railsアプリのひな形を作っていこうと思います!!

1. rails new

ローカルにRuby on Railsの環境構築を行った後、アプリのひな形を作っていきます。 ターミナル(mac)に

$ rails _5.2.4_ new アプリ名 -d mysql

上記のコマンド入力をします。すると、空っぽの新しいRailsアプリが作成されます。
5.2.4というのはRailsのバージョン指定で、-d というのはオプション設定、今回はmysqlを使用したいので設定してあります!

2. rails db:create

続いて作成したアプリのディレクトリに移動し、データベースを作成します。

$ rails db:create

データベースは後ほどいじります。

3. rails s

データベースが作成できればサーバーを起動できます。

$ rails s

サーバーはCtrl+Cで停止するまで動作し続けます!サーバを起動したらhttp:://localhost:3000にアクセスしましょう!ちゃんと動いていれば成功です!


次回はコントローラーの設定やルーティング、gemの導入などを行っていきます! ではまた!

業務効率化App制作ブログ vol.4

こんにちは、今日は引き続き業務効率化Appの制作に取り掛かりたいと思います!

今回はDB設計を行います!

(業務秘密保持の為、ある程度架空のお話を混ぜたり、省略しながら書いてみます!ご了承ください!)

 

1. DBで管理するエンティティを考える

ユーザー

現場社員や本社社員・運送業者が使うアプリで、所属や管理者の有無などを識別したいのでユーザーという概念が必要

荷物

荷物の搬入搬出の手配を行うアプリで、各荷物は一つずつ異なる仕様を持つ。どの荷物か判別するために荷物という概念が必要

住所

各荷物はそれぞれ現場が管理する住所へ割り当てられる。住所という概念が必要。

 

以上?意外にシンプルに出来るかもしれない。

 

2. それぞれのエンティティの持つ属性を考える

業務秘密保持の為省略

 

3. エンティティ同士のリレーションを考える

  • ユーザー(現場社員)が管理する住所なので、ユーザーと住所を関連づける
  • 住所に荷物を搬入出するので、住所と荷物を関連づける

4. エンティティとエンティティの属性をDBのテーブルとして定義する

ER図の作成を行い、テーブルを作成してみました!

f:id:takesan0113:20200611220823p:plain

業務効率化AppER図

※穴あき部分は業務秘密保持の為

 

- - -

うまく出来るのでしょうか!次回は実際にアプリケーションをRuby on Railsで作成してみます!!

SQL SELECT文でデータを分析する 2 学習メモ

SELECT文の構造

SELECT文の基本的な構文は下記

SELECT
    < 値式 (列名か関数か式か定数) >
FROM
    < テーブル名 >
WHERE
    < 条件 >
GROUP BY
    < カラム名 >
HAVING
    < 条件 >
ORDER BY
    < カラム名 >
LIMIT
    < 数値 >

SELECT文で利用できる句は下記の7つ

  • SELECT句  :カラムを指定できる

  • FROM句   :テーブルを指定する

  • WHERE句  :抽出条件を指定する

  • GROUP BY句 :グループ化の条件を指定する

  • HAVING句  :グループ化した後の抽出条件を指定する

  • ORDER BY句 :データの並び順を指定する

  • LIMIT句   :取得する行数を制限する

必ず上記順番で記載する必要がある。



学習教材

www.socym.co.jp

SQL SELECT文でデータを分析する 1 学習メモ

分析は「分ける」「数える」「モデル化」する

データと向き合い、データの深堀りや集約、確認と言った作業を繰り返すことをアドホック分析という。アドホック分析のプロセスは以下の流れ

  1. 分ける
  2. 数える
  3. モデル化する

分ける

データを「いる・いらない」モノに分ける。残ったいるデータを「〇〇ごとに分ける」という分類・グループ化の作業を行う。

例) 天気データ:気温をいるデータとし、風速はいらないデータとする。残った気温データを地域ごとに分けグループ化する。

数える

データの個数を数えたり、数値の合計や最大値・平均値などを算出すること。

モデル化する

分析を成果物としてまとめること。モデルとは数理モデルのこと。数理モデルは数式やプログラムの形で実現され、なんらかのインプットに対してアウトプットを出すもの。気温の分析で言えば、「日次の平均気温推移」のデータから「明日以降の気温予測が可能になる」などの価値を見出せれば、そのプログラムや式をモデルとし、ビジュアル化しレポートするなど様々なデータ活用が可能になる。

データを活かす、SQLによるアドホック分析

SQLによるデータ分析の場合、先述の「分ける」「数える」「モデル化する」というプロセスはどのように対応するのか。

その前に、SQLのクエリの種類を説明する。クエリは3種類に分類される。

  • DDL(Data Definition Language)
  • DML(Data Manipulation Language)
  • DCL(Data Control Language)

DDLは、テーブルの生成や削除変更を行うコマンド。DMLは、SELECT / INSERTなど、テーブルに対するデータの取得・追加・更新・削除を行うコマンド。DCLは、トランザクションの制御を行うためのコマンド。トランザクションとは、データベースにおけるデータ保存処理などの一連の処理のこと。

このうち、データ分析で利用するのはほぼDMLだけ、しかもSELECT文のみ。データ分析ではいかにSELECT文を使いこなすかが鍵。SELECT文によるデータ分析は以下のように行う。

分ける
  • いるデータ・いらないデータに分ける => WHERE句などで絞り込み
  • 〇〇ごとに分ける => GROUP BYなどでグループ化
数える
  • 集約関数などによる集計
モデル化する
  • SQLクエリ文の完成

 

学習教材

www.socym.co.jp

Ruby 正規表現 学習メモ

正規表現とは

文字列に特定の文字が含まれているかを確認することや、特定の文字を取り除くなどの操作を行うための技術

subメソッド

指定した文字列の部分を別の文字列に置き換えるためのメソッド。

irb > hoge = "おにぎりは美味しい"
irb > hoge.sub(/おにぎり/,"ラーメン")
=> "ラーメンは美味しい"

matchメソッド

引数に指定した文字列がレシーバの文字列に含まれているか否かをチェックする。含まれている場合は、指定した文字列がMatchDataオブジェクトの返り値で得られる。含まれていない場合はnilが返り値となる。

irb > hoge = "Mineral water"
irb > hoge.match(/Mineral/)
=> #<MatchData "Mineral">

irb > hoge.match(/juice/)
=> nil

MatchDataオブジェクト

マッチした文字列などはMatchDataオブジェクトで返される。MatchDataオブジェクトから文字列などを取り出す際は、配列からデータを取り出す。

irb > hoge = "Mineral water"
irb > md = hoge.match(/water/)
irb > md[0]
=> "water"

gsubメソッド

gはグローバルマッチのg。グローバルマッチとは文字列内で指定した文字が複数含まれている場合、全てを置換する。

[a-z]

角カッコで囲まれた文字のいずれか1つにマッチ

\d

数字にマッチ。[a-z\d]は「英数字のいずれか1つにマッチ」という意味。

{n,m}

直前の文字が少なくともn回、多くてもm回出現するものにマッチ。

i

大文字・小文字区別なく検索する。

.

どの1文字にもマッチ

+

直前の文字の1回以上の繰り返しにマッチ


学習教材 TECH::MASTER(テックキャンプ)

tech-camp.in

Dockerとは? 学習メモ

Dockerとは?

コンテナ型仮想化技術を実現するために実行される常駐アプリケーションと、それを操作するためのコマンドフロントインターフェースから成るプロダクトのこと。

アプリケーションのデプロイに特化しており、コンテナを中心とした開発・運用を可能にする。

コンテナ型仮想化技術

 従来の構造では、1台のパソコンに1つのOSが起動し、その上に様々なアプリケーションやソフトウェアが動いている構造だった。しかし、近年では仮想化技術を用いることで、1台のパソコンに複数のゲストOSを起動することが可能になった。

1つのホストOS上に複数のコンテナと呼ばれる独立空間を形成。そこでアプリケーションをそれぞれ構築することができる。この技術をコンテナ型仮想化と呼ぶ。

ホストOSとコンテナの間の仲介役を担うコンテナ管理ソフトウェアとして、Docker等が存在する。 

既存のコンテナ管理ソフトウェアと比較したDockerの優位点

  • Dockerは開発環境の準備だけではなく、その後の本番環境への展開や、アプリケーションのプラットフォームとして機能する
  • Dockerは軽量に動作する
  • Dockerは開発環境と本番環境をほぼ同等に再現できる優れたポータビリティを持つ

Dockerを利用する意義

  • 不変な実行環境による冪等性
  • 実行環境構築とアプリケーション構成のコード化
  • 実行環境とアプリケーションの一体化によるポータビリティ性の向上
  • システムを構成するアプリケーションやミドルウェアの構成管理の容易さ

 

学習教材

Docker/Kubernetes 実践コンテナ開発入門

著者  山田明憲

発行所 株式会社技術評論社

gihyo.jp

業務効率化App制作ブログ vol.3

こんにちは、前回に引き続き業務効率化Appの制作に取り掛かりたいと思います!

今日はアプリのデータベース設計を適切に行うため、DB設計の学習をしたいと思います!!

DB設計とは

多くのWebアプリケーションサービスはDBを持つ。DBには顧客の情報や商品の情報など様々なデータが保管される。データのやりとりを円滑に行うため、データ同士の関係性をプログラムを書く前にあらかじめ設計する必要がある。

DBを構成する要素

  1. エンティティ
  2. エンティティの属性
  3. エンティティ同士のリレーション

エンティティとは

サービスの中で管理する必要のある概念を指す。ユーザーや商品などの情報がエンティティ。

エンティティの属性

エンティティが具体的に持つ情報。ユーザーのエンティティの属性は名前やメールアドレスなど。

エンティティ同士のリレーション

エンティティ同士の関係性を決める。チャットの投稿に投稿したユーザーを関連付けるなど。

DB設計の手順

  1. DBで管理するエンティティを考える
  2. それぞれのエンティティの持つ属性を考える
  3. エンティティ同士のリレーションを考える
  4. エンティティとエンティティの属性をDBのテーブルとして定義する

--

分かったような分からないような・・・。 次回は実際に業務効率化AppのDB設計をしてみます!

ではまた!!