ボンジュール、夏

ポストに手紙が挟まれてた。エミと名乗る外国人女性から、「一言で言うと、仲良くなりたいです。」という手紙が。

そんなフィクションのようなノンフィクションが昨夜起きました。麦茶を片手に世田谷公園まで散歩して、いろいろとお話をしてきました。

忘れられない夏が始まりそうな予感!

それはともかく、「暇と退屈の倫理学」という本が人生のペアプロをしてくれて最近は読書が楽しいです。

「消費、浪費、退屈、興奮、暇、忙殺、労働、自由」等、僕には近づき難かった哲学的思想を噛み砕いて一緒に考えてくれます。最初50pでもいいから読んで感想を聞かせて欲しいです。笑

 

 

docker-compose とは

docker-composeはdockerを使って行う環境構築をより簡潔に行うことができるファイルのこと。

docker-compose.ymlにフロントエンドとバックエンド、データベース、インフラで使うパッケージ()を記述してdocker-compose build を実行後、docker-compose upを実行するだけでDockerネットワークを構築することができる。

Docker Composeとは?使い方やコマンドを紹介(Rails,MySQL,Nginx)

Cmposed Methodパターン

単一責任原則を実現する時に使う、肥大化した関数を分割する方法の一つ。

def a
 puts 'a'
 puts 'b'
 puts 'c'
end
def a
  puts 'a'
  b
  c
end

def b
  puts 'b'
end

def c
  puts 'c'
end

「文章のように読めるメソッドを作る」 Composed Method パターン - Qiita

Rubyのクラスメソッドがリファクタリングに抵抗する理由(翻訳)|TechRacho by BPS株式会社

Extract Function

データモデリング

アプリのモデルを設計したいときは、メインの機能をまず抽出。

そして、「何が」「誰が」「何を」「どうする」「どんな」などを意識して、エンティティを抽出していく。

そうすることでテーブル設計(正規化)がしやすくなる。

  • 業務ルールの確認

業務で使われている帳票や、すでにあるシーケンス図を確認する

  • エンティティの抽出

「人」「物」「金」「時間」「やり取り・活動・行為」に注目してテーブルの要になるエンティティを抽出する。

  • 過不足の確認

業務ルールを表現するためのエンティティに過不足がないかを確認する

  • リレーションの確認

それぞれのエンティティをつなぎ合わせる関連づけを行う

git ls-files —stage

現在ステージに上がっているファイルのパスを確認するコマンド

Git - git-ls-files Documentation

集約操作(GROUP BY句)

データセットを見ていると国によっては複数のレコードを持っていることが分かります。GROUP BY 句を利用すると指定したカラムの値でグループ分けした結果に対して COUNT 関数などを利用した集計を行うことができます。

    SELECT
      <カラム>
    FROM
      <テーブル>
    WHERE
      <条件>

    GROUP BY
      <集約するカラム> -- 複数指定可能
    HAVING
      <集約後の結果に対する条件>
  • HAVING

集約後の結果に対する条件付与

→GROUP BYで特定のデータ条件に絞って集約

→その結果に対してさらに条件を絞る

  • WHERE

集約前の結果に対する条件付与

FROMやJOIN ONで調べた結果に対して条件を絞る

SQLの評価順序が下記のようになっているため、条件を絞るタイミングを意識してクエリを作成するといい。

基本的にSQLは以下の順番で実行される。

1.from  2.where  3.group by  4.having  5.select  5.union  6.order by  7.distinct

※上記の基本があるため、下記のようにselect句で別名をつけても、where句では評価されない。

select nickname AS n
  from Person
 where n = 'subaru'

-> エラー発生

下記数字の順番で読み込まれるため、2のnが何を示しているのかが読み取られていない。
3 select nickname AS n
1  from Person
2 where n = 'subaru'

 http://www.postgresql.jp/document/8.1/html/sql-select.html

 

機能要件 非機能要件

機能要件は、「ソフトウェアやシステム開発において、クライアントから求められる『機能』のこと」。

一方、非機能要件とは『機能以外』のユーザービリティ、性能、拡張性、セキュリティなどの品質的に関連するもの全般を指す。

機能だけを追加すればいいのではなくて、その機能を追加した結果、どんな体験、安全性を与えてくれるかまでを定義しないといけないんですね。

機能要件とは?システムの品質向上にかかわる非機能要件との違い|発注成功のための知識が身に付く【発注ラウンジ】