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

仕分けとは

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

具体例

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

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

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

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

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

仕分けの一歩

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

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

仕分けのルール

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

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

勘定科目

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

資産

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

負債

  • 借入金
  • 買掛金

純資産

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

収益

  • 売上

費用

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

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

簿記について

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

簿記?

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

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

単式簿記

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

単式簿記

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

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

複式簿記の意味

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

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

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

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

複式簿記

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

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

勘定科目

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

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

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

複式簿記(勘定科目正)

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

終わりに

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

【Python】Seleniumを使ってジョブカン入力チェック自動化

はじめに

この記事は Webスクレイピング Advent Calendar 2017の24日目です。

最近、何故か業務効率化のシステム自動化に興味津々です。

なので、業務中に困ったことをシステム化しようと思います!

最近、困っていること

ジョブカンの勤怠入力忘れ が激しいことです(汗)

勤怠入力漏れは人事に迷惑をかけてしまうので、入力チェック自動化プログラムを作成していきます!

作成したプログラムはこちら

※注1)ジョブカンは勤怠管理を行う上で非常に便利なサービスです。

※注2)入力漏れを行うのは僕がボケているだけです。

作成手順

ジョブカンAPIを調べてみたら、APIは存しなかったので、Seleniumを用いて、自動化していきます!

Seleniumとは

Googleが開発したWebアプリケーションテスト用 フレームワークです。

(Pythonの他にはrubyJavaなど様々な言語に対応してます!)

処理フロー(概要)

今回の流れは以下の4つの手順にわけてプログラムを作成しました。

といっても、通常の人が使うブラウザ操作をプログラムに置き換えただけなんで処理フローは把握し易いと思います!

1.setup

selenium setupを行います!

今回はヘッドレスブラウザ(ブラウザを立ち上げず、メモリ上でブラウザ操作)を利用しました!

2.page取得

TOPページにアクセス!

3.ログイン

通常のログインのようにID、パスワードを入力します。

Seleniumのmethod find_element~CSS属性を特定して、send_keys でフォームに値を入力すると、

ログイン後のページに遷移します!

ちなみにスクリーンショットを取るのは save_screenshot で出来ます。

ログインページ

f:id:jesushill:20171210010128p:plain

ログイン後のページ

f:id:jesushill:20171210010223p:plain

4.勤怠データ取得

htmlパースは ライブラリ beautiful soupを使いました!

取得した値を標準出力! f:id:jesushill:20171210010605p:plain

最後に

slackやLambda 連携させたらもっと効率化出来るな〜と思いました。

本日は以上です!

【Ruby】形態素解析、ビジュアリゼーション、スクレイピング

この記事は ジーズアカデミー Advent Calendar 2017 の2日目です。

はじめに

ウェブスクレイピングは結構好きで、主にrubyを使ってスクレイピングしているんですが、 blogでは python(記事リンク) しか書いたことがない。

なので、今回は

rubyスクレイピングして形態素解析してビジュアリゼーションしてみます!

対象

せっかくなんで、今回はジーズアカデミーのサイトをスクレイピングしてみます。

画像

f:id:jesushill:20171202175205p:plain

抽出項目

分量が多いほうが良いいので、トップページ下にある

f:id:jesushill:20171202175230p:plain

記事全てを取得します!

f:id:jesushill:20171202175419p:plain

実行準備

利用ライブラリ

主なライブラリは以下の通りです!

を利用します!

手順

手順は以下の通りとなります。

  • open-uri を用いて、トップページを取得し、記事リンク取得
  • 取得したリンクをopen-uriでページ取得、nokogiriを用いて記事ページを取得し、ActiveRecordでDBに保存
  • 形態素解析を用いて英単語(magic_cloud との関係か?日本語の相性がうまくいかなかった汗)をビジュアル化

実行!

スクレイピング

取れた!

f:id:jesushill:20171202180146p:plain

形態素〜ビジュアル化

だらだら、色々とやってたのですが、今回はビジュアルだけにしておきます。

f:id:jesushill:20171202180509p:plain

ソースコード

ココのレポジトリにおきました!

終わりに

スクレイピングpythonが現状優勢ではありますが、慣れているのでrubyは書きやすい! 何より、スクレイピング特有の複雑な条件式やエラーハンドリングに対応しやすいのが良いな〜と改めて感じました!

本日は以上です!

シェルスクリプトその2 制御構文(if文,for文)

はじめに

前回に引き、今回は制御構文をまとめていきます。

if文

他のプログラムと違うところはif文の後ろにつける 条件式 ではなく、コマンド式 ってことです。 最初何行っているのかよくわから買ったのですが、以下の例だとわかりやすいです。

#!/bin/sh
# file名:test1.sh
# []でくくるとbashのコマンドとして評価 スペース注意
if [ true ]; then 
  echo 'true'
end
# test1.sh実行
$ sh test1.sh 
$ true

以下のサンプルコードですと、通常の条件式なら、false では出力されないです。 が、シェルスクリプトだと、あくまでもbash のコマンドとして認識され、出力されます。

#!/bin/sh
# file名:test2.sh
# これでも通る
if [ false ]; then
  echo 'false'
fi
# test2.sh実行
$ sh test2.sh
$ false
#!/bin/sh
# file名:test3.sh
if [ "$1" = "true"  ]; then
  echo 'true'
else
  echo 'false'
fi
# test3.sh実行
$ sh test3.sh 
$ false

$ sh test3.sh true
$ true

for文

for文はあまりハマりどころがなかったので軽くまとめておきます。

for 変数名 in リスト
do 
  # 処理記述
done
#!/bin/sh
# ./test/*.txtを削除するプログラム

for fname in $(find ./test/* -name '*.txt')
do
  rm -rf $fname
done

シェルスクリプト入門 その1 入力、出力、変数

はじめに

動機

シェルスクリプトを最近(ようやく?)、自分で書くようになってきました。 スクリプト言語と違うところ及び自分の頭の整理のために書いていきます。

シェルクスクリプトとは

シェルスクリプトとはunixコマンドを一つのファイルにまとめて実行するプログラムです。

利用シーン

  • ログファイルをリネームして移動したりする
  • VPSMacで作成したプログラム(rubypython)を定期的に実行 (cronと組み合わせる)
  • ...

などなど、使えると色々と便利なのは間違いありません!

入力、出力

とりあえず hello world

#!/bin/sh
echo "hello world" # hello world 

と書いて、実行すると、hello worldと出力されます!

$ sh hello.sh
$ hello world

重要なポイントは以下の点です。

  • 文頭に #!/bin/sh と記述。
  • シェルスクリプトunixコマンドが使える
    • 今回は echo を使用
  • コメントは # と記述した後に記述

標準入力、出力

  • read で値を標準入力
  • echoで値を出力します。
#!/bin/sh
read input 
echo "input=$input"
$ sh read.sh
$ hello
$ input=hello

といった形で標準入力、出力が行えます!

変数

重要なポイントは以下の通りです。

  • 変数に値を与える際、 variable=hoge といったようにスペースをつけない
  • 宣言した変数をアクセスする際は 先頭に$をつける。
  • readonly を用いると変数を上書きされない。
  • readonly を解除するには unsetを用いる。
#!/bin/sh
variable=hoge #スペースを入れない
echo $varible #変数にアクセスする際は$をつける
$ sh variable01.sh
$ hoge

また、readonlyと宣言すると、変数の上書きがされません。

#!/bin/sh
variable="変数"
echo "$variable"
readonly variable
variable="変更"
$ sh variable02.sh
$ 変数
$ variable02.sh: line 5: variable: readonly variable

特別な変数

個人的に使用頻度が高いと思われるものに絞ります。

  • $0 [スクリプト名]
  • $1 ~ $9 [引数をアクセス 数字は引数の順番を示す]
  • $$ [実行したプログラムのプロセスID]
#!/bin/sh
echo $0 #special_varable.sh
echo $1 #1つ目の引数を出力
echo $$ #プロセスIDを出力

Atom ショートカットキー

ココココ が素晴らしかったのでメモ。

暇な時、更新していきたい。

出来ること コマンド
カーソルを上に移動 ctr + p
カーソルを下に移動 ctr + n
カーソルを左に移動 ctr + b
カーソルを右に移動 ctr + f
当該の行まで移動 ctr + g
行の先頭まで移動 ctr + A
次単語の移動 option + F
単語を一つ戻る option + B
プロジェクト追加 cmd + shift + o
単語の選択 cmd + d
末尾までカット ctr + k
当該行を移動 cmd + ctr 上下

2017/11/21: カーソル移動追記