ポリモーフィックアソシエーション

ポリモーフィズムとは

rails でリレーション(1対多関係) を組む際に、一つのモデルに対して 複数のモデル リレーション を組む際に非常に便利です。

利点としては以下の通りです。

  • リレーション元のデータがどの モデル ID と紐付いているか、保存されている。
  • ↑により、外部キーは一元管理される。(複数の外部キー作らなくて良い!)

実行してみる

# relation
class Review < ActiveRecord::Base
  belongs_to :resource, :polymorphic => true
end

class Artist < ActiveRecord::Base
  has_many :reviews, :as => :resource
end

class Live < ActiveRecord::Base
  has_many :reviews, :as => :resource
end

class Disc < ActiveRecord::Base
  has_many :reviews, :as => :resource
end
#実行ファイル

disc = Disc.create(name: 'disc_test', info: 'disc_info')
disc.reviews.create(review_content: 'disc_review')

live = Live.create(name: 'live_test', info: 'live_info')
live.reviews.create(review_content: 'live_review')

artist = Artist.create(name: 'artist_test', info: 'artist_info')
artist.reviews.create(review_content: 'artist_review')

結果

Review f:id:jesushill:20180211142319p:plain

Artist(抜粋) f:id:jesushill:20180211142428p:plain

link

今回作成したプログラム Rails ガイド

Redis勉強[メモ]

Redisの特徴

  • データは全てメモリ上に保存される → HDDやSSDより早い
  • シングルスレッド
  • データ型は String型 Hash型 List型 Set型 SortedSet型 

プログラム例

以下、pythonで実装。ライブラリはこちら

import redis

# 接続 port は6379がwell known port
r = redis.Redis(host='localhost', port=6379, db=0)

print(r)

r.set("KEY", "VALUE")

# キーに対応する値を取得
print(r.get("KEY"))
# キーが存在するのか
print(r.exists("KEY"))

# キーに値を追加する。
r.append("KEY", " TEST")
print(r.get("KEY"))

# 削除
r.delete("KEY")
print(r.get("KEY")) # None

# hash形式で保存
r.hset("parent", "data_field", "child1")
print(r.hget("parent","data_field"))
print(r.hdel("parent","data_field"))
print(r.hget("parent","data_field"))

よく使われるシチュエーション

一時的にメモリに保存されるので大量アクセスや即座にreadを行うのに向いている ウェブアプリのセッション管理など

【会計】-残高試算表-

 残高試算表

総勘定元帳

前回 の総勘定元帳を作成し 各勘定科目(現金、預金など)の推移がわかるようになった。

面倒な点

決算(後述)の際には残高がわかれば良いので、一つ一つの勘定科目を確認するのに、 各総勘定元帳を見るのは面倒!

残高試算表の利点

残高試算表 を作成することで、面倒なことがなくなる。

利点

  1. 各勘定科目の残高がわかる!
  2. 間違えに気づくことが出来る

作成の流れを整理

  1. 総勘定元帳で勘定科目ごとの増減を作成
  2. 勘定科目の残高を残高試算表に転記
  3. 各勘定科目ごとの残高がわかる(会社の積み上げた数値がわかる!)

総勘定元帳(-1.)

  • 資産
日付 摘要 借方 貸方 残高
1/1 現金 10,000 10,000
  • 負債
日付 摘要 借方 貸方 残高
1/1 支払手形 10,000 5,000
  • 費用
日付 摘要 借方 貸方 残高
1/1 現金 5,000 5,000
  • 純資産
日付 摘要 借方 貸方 残高
1/1 売上 10,000 10,000

残高試算表(-2.)

総勘定元帳を合体!

  • 残高試算表
借方 貸方
現金
10,000
支払手形
5,000
費用
5,000
純資産
10,000
合計
15,000
合計
15,000
  • 各勘定科目の残高を合計すると、残高は一致(借方と貸方)
  • ミス防止かつ、パッと各勘定科目の合計がわかる!

【会計】-総勘定元帳-

総勘定元帳

  • 総勘定元帳 勘定科目ごとに増加・減少の流れを整理
  • メリット 各勘定科目ごとに残高がひと目でわかる。

具体例

以下の例を考える。

売上仕訳

借方 貸方
当座預金
100000
売上
100000

家賃支払仕訳

借方 貸方
家賃
20000
当座預金
20000

総勘定元帳

  • 家賃
日付 摘要 借方 貸方 残高
1/1 当座預金 20,000 20,000
  • 売上
日付 摘要 借方 貸方 残高
1/2 当座預金 100,000 100,000
日付 摘要 借方 貸方 残高
1/1 家賃 20,000 20,000
1/2 売上 100,000 80,000

※ 総勘定元帳を作成すると、各勘定科目がどんな要因で増減したか、残高がわかる。

【会計】簿記 -仕分け-

仕分け

前回 は5つのグループを 紹介しました。

今回は5つのグループに属する勘定科目の仕分けを紹介します。

資産のグループ

資産の増加は借方、資産の減少は貸方に表記する

代表的な勘定科目

  • 現金
  • 普通預金
  • 有価証券
  • 建物
  • 備品(PC、文房具など)

仕分け例

現金で10万円のPCを買った場合

借方 貸方
備品
100000
現金
100000

※ 備品(資産の増加なので、借方)、現金(資産の減少なので、貸方)

負債のグループ

負債の増加は貸方、負債の減少は借方に表記する

代表的な勘定科目

  • 借入金
  • 買掛金
  • 未払金

仕分け例

銀行から100万円を借り入れした場合

借方 貸方
現金
100000
借入金
100000

※ 借入金(負債の増加なので貸方)、現金(資産の増加なので、借方)に記載

純資産のグループ

純資産の増加は貸方、純資産の減少は借方に表記する

代表的な勘定科目

  • 資本金
  • 繰越利益剰余金

仕分け例

繰越利益剰余金 100万を利益準備金、株主配当金に50万円ずつ処分

借方 貸方
繰越利益剰余金
100000
利益準備金
500000
株主配当金
500000

利益準備金は資本金の4分の1に達しない場合、一定の割合(剰余金の10分の1)を出すことが会社法で決められている。

収益のグループ

収益の増加は貸方、収益の減少は借方に表記する

代表的な勘定科目

  • 売上
  • 受取配当金
  • 有価証券売却益

仕分け例

1個2万の商品を50個現金で販売

借方 貸方
現金
100000
売上
100000

費用のグループ

費用の発生は借方、費用の取り消しは貸方に表記する

代表的な勘定科目

仕分け例

家賃1000万円を現金で支払い

借方 貸方
家賃
100000
現金
100000

【会計】簿記 -仕分け、勘定科目-

仕分けとは

仕分けとは取引を2つの面に分割することです。 2つの面のことをそれぞれ、借方・貸方と呼ぶ。 仕分けのルールは一連の取引を勘定科目で表現して、借方・貸方に表現すること

具体例

例えば、ビットコインを投資目的で預金口座から出金して購入した仕分けは以下となる。

借方 貸方
投資その他の資産
10000
普通預金
10000

取引の2面性を具体的に記述すると以下の通りとなります。

  1. ビットコインの資産が増加(借方)
  2. 預金が減少(貸方)

勘定科目 誰が行っても同じようになるように同じ性質の取引につけられた名前

仕分けの一歩

仕分けには5つのグループがあると認識するのが非常に重要です。 具体的に言うと、以下となります。

  • 資産
  • 負債
  • 純資産(資産-負債)
  • 費用
  • 収益 (ざっくり言うと、売上)

仕分けのルール

5つのグループの仕分けルールは以下の通りです。 ※(5つのグループの元に勘定科目が紐付いているため、最初はグループを意識したほうが理解が早い)

借方 貸方
資産の増加 資産の減少
負債の減少 負債の増加
純資産の減少 純資産の増加
負債の減少 負債の増加
費用の発生 収益の発生

勘定科目

勘定科目は上記にあげた5つのグループに応じて勘定科目グループが決められています。 以下ではグループに応じた代表的な勘定科目を書いていきます。

資産

  • 現金
  • 普通預金
  • 有価証券
  • 建物
  • 備品(PC、文房具など)

負債

  • 借入金
  • 買掛金

純資産

  • 資本金(出資金)
  • 繰越利益剰余金(ざっくり 会社が出した利益 - 株主配当)

収益

  • 売上

費用

  • 給料
  • 支払家賃
  • 通信費

【会計】簿記 -単式、複式簿記-

簿記について

最近、仕事で簿記やら会計などを扱うケースが多いので定期的にアウトプットしていきます。 ある程度の量が溜まったら、別ブログに移行するかもです。

簿記?

一言で言うと、 お金やモノの出入りを記録 するためのツールです。

ちなみに簿記には2つのやり方があります。

単式簿記

単式簿記は取引を一つの科目に絞って記録する方法です。 表にすると以下のような形です。

単式簿記

勘定科目 金額
ビットコイン 10000

いくら支払っただけが記述されています。家計簿でよく使われています。

複式簿記の意味

単式簿記とは異なり、 複式簿記は 取引を 2つの面 から評価を行います。 2つの面とは 何を得て 代わりに 何を失ったか を記述することです。

例えば、 ビットコインを1万円分買った複式簿記で書くと

という2つの面を記述することが出来ます。

複式簿記で表すと以下の通りとなります

複式簿記

借方 貸方
ビットコイン
10000
預金
10000

※ 勘定科目は不正確です。また借方、貸方についても後日説明します。

勘定科目

誰が見ても同じようにグルーピングをすることを 勘定科目 という。 平たく言うと、みんなが見ても同じような会計処理にするように定義を決めておくことです。例えば、

複式簿記出ていた ビットコイン という単語も人によって bitcoin だったり 仮想通貨(ビットコイン) と記述するケースもあると思うので定義は決めておきましょうということです!

ビットコイン を 正しく勘定科目に治すと以下のような形となります。

複式簿記(勘定科目正)

借方 貸方
投資その他の資産
10000
普通預金
10000

終わりに

本日は以上となります。会計はムズかしい。