財務会計と管理会計、PL
はじめに
javascriptについて書いてたかと思えばexcelについても書いてるこのブログで、今度はしばらく会計について書いてみたいと思います(*ゝω・)ノ
ノートは東京の住宅事情からいつか捨てざるを得ないし、私の頭の中には残念なことに消しゴムがあるようなのだけれど、ブログならきっと、はてなさんが守ってくれる・・・!
財務会計と管理会計とは
企業会計を2分すると、財務会計(financial accounting)と管理会計(management accounting)があります。
「財務会計」とは、株主さまとかに見てもらうように、法律で提出することを決められたお小遣い帳です。財務諸表を核とします。会社では「経理」の人たちが作ってることが多いです。
財務諸表というのは例えばPLとかBSとかこれから勉強する予定なかっこいいかんじのするやつ色々で、企業は法律で作成・公開が義務付けられています。
ただ、このお小遣い帳は人に見せる用なので、自分で現状を把握したり、今後を予測して計画を立てるのに不便だったりします。そのため自分で事業を把握するように、例えばその会社がやってる事業別とかで「管理会計」もやってたりします。会社では「経営企画」や「事業管理」の人たちが作ってることが多いです。
なんせ自分達が分かる用に作っているので、指標の立て方や項目のつくり方は割とローカルルールだったりだそうです。
まとめ:
財務会計は「法律で提出することを決められた、見せる用の数字」、
管理会計は「自分達が判断するための自分達用の数字」。
損益計算書(P/L=Profit and Loss Statement)
「財務会計」の「財務諸表」のひとつです。以下の通り。
売上
−売上原価
―――――――――
=売上総利益(粗利)
−販管費
―――――――――
=営業利益
+営業外収益
−営業外支出
―――――――――
=経常利益(けいつね)
+特別利益
−特別損失
―――――――――
=税引前当期純利益
−法人税など
―――――――――
=当期純利益(当期未処分利益)
(売上)から、売れた分だけの原価である(売上原価)を引いたら、(売上総利益)となります。(粗利)とか呼ばれたりします、文字通り「おおざっぱな利益」です。
(販管費)というのは、ちゃんと言うと「販売費及び一般管理費」です。「販売費」というのは売るために使ったお金で広告宣伝費とか。「一般管理費」というのは会社を運営するのに使ったお金で、例えば人事や経理の人のお給料とかです。
そんな(販管費)を(粗利)からを引いたら、(営業利益)になります。「本業で稼いだ利益」です。
そんなわけでこっから下は、本業以外も含んだお話。
(営業外収益)や(営業外支出)というのは、企業がお金をもしょもしょしたときに出入りするお金で、利子や配当金、利息です。これらを(営業利益)から足し引きすると、(経常利益)となります。ケイツネとか呼ばれたりするらしく、世間的にはこの数字が会社の実力を示すと言われているそうですが、私の師匠的には違う気がすると言っています。ただじゃあどこだったのかは忘れた。
←聞いてみたら「ワシは営業利益やな」とのことでした!!
(特別利益)や(特別損失)とは、「特別に、例外的に、儲かったり使ったりしたお金」のことです。例えばあんまりウハウハなんで自社ビル建ててみたり、訴えられて数百億賠償しないといけなかったり、自社が本拠地にしている街が大災害を受けて義捐金出したり、ミニボンビーがキングボンビーに変身して無茶しやがったりです。
桃鉄の世界観だと、たぶんP/Lは特別損益ばっかりになる気がします。社長サーン、10月ですよー。
で、このケイツネから、(特別利益)や(特別損失)を引いたら、(税引前当期純利益)となります。
ここまで分かってようやく(経常利益)の言葉の意味が分かります。「常に経験する利益」で(経常利益)と覚えたらいいです。現実社会ではめったにキングボンビーと遭遇することはないのです。
そして(税引前当期純利益)から(法人税など)を引いたらようやく(当期純利益)になります。
この法人税というやつが、「お高いんでしょう?」らしく。日本だと、30%とか40%とかだったり。
アメリカだと州によって法人税や会社法が違くて、デラウェア州というところは何かとイケてるらしい。そんなでニューヨーク証券取引所で上場している会社の約半数は、デラウェア州の会社法に準拠して設立されてるねんて。
デラウェア=ぶどう!状態からひとつかしこくなりました。ついでにアメリカで最初に合衆国憲法を批准したことから「First State」と言われてるらしく、あと、最初にアメリカ大陸の原住民からズルして土地を奪った話の舞台もここだとか。
・・・会計について調べてたときよりも前のめりな自分に、先行き不安になってたりとか(ノ∀`)
以上が財務会計です。これを見て投資家さんは「ええかんじやーん、もっとこの会社の株買うか」とか、「こいつらやべーなw早く株手放さな」とか判断するそうです。こんなんで分かるとか、投資家の方々や金融業界の方々はすごいなと思いました。今、金融の友達を4割増しで尊敬中です。
だからといって、「こんなんじゃ分かんないでしょ、実はね・・・!」ってベラベラ喋っちゃうと「インサイダー」になるそうです。罰せられたらたまったものじゃないので気をつけましょう!!
ではそろそろ出かけるので、管理会計については別の日にまとめます。さらにその次はバランスシート(貸借対照表、B/S)と、キャッシュフローについてです。
エクセルは意思を持っている
ゲイツすごいよゲイツ
「全然勤勉じゃない模様」を晒しているこのおべんきょ日記。在学中から何度か果敢にもプログラミングやデザインに挑戦しては挫折している様が綴られています。
で、社会人になって。2つ気付いてん。
ひとつ。人は、っていうか私は、せっぱつまらないとべんきょしないということ。もうひとつ。プログラミングや adobe より、いくらIT系とはいえ文系の新入社員としてはもっと Microsoft Office をべんきょうしとけばよかったということ・・・!
エクセルは意思を持っている
特にエクセルはまじ半端ない。なんか、意思持ってるもん。すぐ「だが断る」ってなるもん。
とはいえエクセルにやられっぱなしなのも悔しいので勉強し業務してみたら、覚えた技が気に入っちゃって。休みの日にまでエクセル。それはもう美しい家計簿作っちゃうくらい、なんかエクセル面白い。
そんなでエクセルのお役立ち小ワザを、自分用にメモメモ。
....φ(・ω・` )
項目の固定化方法
ウィンドウ>分割>ドラッグして境界線を固定希望の位置に動かす>ウィンドウ枠の固定
合計を求めるときは「オートSUM」
Σボタン>合計したい範囲をドラッグ>エンター
数式はセルをクリックするだけで作れる
計算結果を出したいセルに「=」を入力>計算式に入れたいセルクリック>四則演算記号>セルクリック>enter
cont1
=右クリック>セルの書式設定
桁区切り
セルの書式設定>数値>「桁区切りを使用する」にチェック
数式のコピー
数式の入ったセルを選択>フィルハンドルモード(+)にして数式をコピーしたいセルにドラッグ>貼り付けられた数式を確認
日本語は enter を2回押してセルに入力
1回は文字を確定するための enter、もう1回はセルに入力した内容を確定するための enter
そんなわけで
かいしゃいんがんばります( ´∀`)ノ
2進法と16進法
Cの絵本
もう10回ぐらいプログラミングには挫折してるけど、11回目ぐらいの再挑戦をしてみてる昨今。
そんなゆるふわ脳な私なんやけど、id:Trapezoid がオススメしてくれた「Cの絵本」って本があまりにも名著!これならイケるかも!そんな気がしています。
- 作者: アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2002/03
- メディア: 単行本
- 購入: 4人 クリック: 40回
- この商品を含むブログ (16件) を見る
2進数
えと、コンピュータは電化製品(?)なので、オンとオフでものを考えます。それを0と1として、二進数をつかうのです。私が調子悪いときにうっかり陥っちゃう「ゼロヒャクな考え方」みたい。
・・・だけど一応人間なので、日頃は10進法でモノを考えます。「人間が10進法でモノを考えるのは、人間の指が10本だから」ってトリビアに地味にびっくり。
というわけで、2進数で数を数えた場合の10進法との対応表はこちら。
10進法 | 2進法 |
---|---|
0 | 0 |
1 | 1 |
2 | 10 |
3 | 11 |
4 | 100 |
5 | 101 |
6 | 110 |
7 | 111 |
8 | 1000 |
9 | 1001 |
10 | 1010 |
11 | 1011 |
12 | 1100 |
13 | 1101 |
14 | 1110 |
15 | 1111 |
16 | 10000 |
ここらへんで、ちょっと無理に気付いてみると。ケタ数があがってるのって、2と4と8と16と・・・っていう2の累乗やねんな。これぞ2進数!
つまり、例えば2進数の「10101010」という数は
10101010(2進法)= (2**7)*1 + (2**6)*0 + (2**5)*1 + (2**4)*0 + (2**3)*1 + (2**2)*0 + (2**1)*1 + 2**0*0
= 128 + 32 + 8 + 2
= 170(10進数) なのデス!
10進数を2進法に変換するライフハック(笑)
今度は逆に、2で割っていき、余りを求め、余りを下から上へ並べたらいいそうデス。
16進数
2進数だと冗長になるので、16進数を使うのが一般的であるらしい。
16進数で使うのは、「0 1 2 3 4 5 6 7 8 9 A B C D E F 」の16コ。
2進数を4ケタずつ区切り、この2進数の4ケタで表せていた2**4 =16コの数を置き換えて表現するねんて。
つまり、下のようになります。
10進法 | 2進法 | 16進法 |
---|---|---|
0 | 0 | 0 |
1 | 1 | 1 |
2 | 10 | 2 |
3 | 11 | 3 |
4 | 100 | 4 |
5 | 101 | 5 |
6 | 110 | 6 |
7 | 111 | 7 |
8 | 1000 | 8 |
9 | 1001 | 9 |
10 | 1010 | A |
11 | 1011 | B |
12 | 1100 | C |
13 | 1101 | D |
14 | 1110 | E |
15 | 1111 | F |
16 | 10000 | 10 |
170(10進数)= 10101010(2進数)=AA(16進数)
というわけなのですっ。
身近な16進数表記
日々 photoshop elements で色を変えるときとかに、黒と白の 000000 と ffffff はもう覚えちゃってたけど、これは 24bitカラー(=16777216色)の16進数表記だね実は。
某求人の「0x22歳まで」っていうのは、16進数の「2」は2進数で「10」だから、22(16進法)=「0010 0010」(2進法)=34(10進法) ということだったのです。
34才まで平気とは、けっこう親切なかんじですね( ´∀`)!
めもめも
<head> <title> 負けじとじゃばすくりぷとでたし算ヽ(´ー`)ノ </title> </head> <body> <H1>足し算があきらめきれなかったの><</H1> <script type="text/javascript"> var a , b , c ; a = prompt("なんか数字を入力してみたらいいと思うよ"); b = prompt("もいっこ数字を入力してみたらいいと思うよ."); c = parseInt(a) + parseInt(b) ; document.writeln("たしたら", c , "でしょ、えへへ."); </script> <p>あたいってば天才( ´∀`)!</p> </body>
parseInt(string) で数値計算が出来る。だけど大切なのはそこじゃない。
うごくこと、つくること、うれしーってよろこぶこと。なんていうか、すごい感動した。この気持ちを忘れない用のメモ。
あと関係ないけど、flash は firefox プラグインですくしょとれなくて不便><。いつもは gyazo ってからすくしょとってるけど、もっといい方法がないのであろうか・・・!
食べれないチョコをつくってみた
バレンタイン。それは乙女がメディアに煽られて、わざわざチョコレイトを溶かして固めてみたりしちゃう日。
私も例に漏れずバレンタインに浮かれてはみたものの、今年は「食べられないチョコ」を作るのにてんてこまいだった。じゃん。
ロゴとグラフィックを作るのに、昔にロゴ作ったときのメモ書きがすごい役立ったので作り方をまとめてみとく。
ロゴ
まずは手書きでそれっぽいものをつくる。そして
スキャン→フォトショ で開く。
レイヤーウィンドウの「背景」で右クリック、背景を複製でレイヤー作成
イメージ →色調補正 → 2階調化
(まわりのアウトラインを綺麗にぬくために色を白黒に)
選択範囲 → 色域指定
白い部分と黒い部分を自動でわけてくれたよ!
パスウィンドウ → 右下アイコン「選択範囲から作業用パス作成」
ファイル → 書き出し イラレへのパスの書き出し
イラレで開く 選択するとロゴができてる!
→黒で塗り
つぶれたところをぬく
パスファインダ → 分割 → グループ解除 → つぶれたとこぬける
→ 全体をグループ化しなおす
で完成。
メタリックぽくするために、グラデーションかけてみた。
チョコのオブジェクト
現物を写真撮影 → フォトショで切り抜き
ここで問題発生、初歩の初歩の初歩である「切り抜き」がなぜか出来ないという恥ずかし事態。何度もやったことあるのにー!
そんなで切り抜きについては別途まとめる。
で、文字の上に茶色い四角をかぶせて、消えた金飾りの部分をトレースしてつけた。
制作中に id:mizzusano に skype で見てもらったんやけど、「へたうま」って言われた。全力が「へたうま」です、そうそれが私の実力。なんでも「文字の部分は手作りなのにチョコの部分が実写ぽいのが変」らしい。そうですよね、だって文字の部分手作りだけどチョコの部分は実写ですもん。
そんな私に対して、「フィルタ」という機能を教えてくれた。
第28回 効果フィルタを活用したイラスト作り
フォトショが苦手な私なんやけど、ミズ曰く「レイヤーウィンドウに注目したらなんでも出来る」とのこと。あと「コピー大事」とのこと。
ミズはDJをしたりボードゲームをしたりする人だと把握していたけど、本当は本当にデザイナーだったんだなーと思った。thx!
そんなでチョコの完成でした。おしまい。
フォトショで切り抜き
フォトショで写真開く → レイヤーウィンドウで「背景」をダブルクリック、レイヤー0に → ペンツールで切り抜きたい形をトレース。このとき塗りが入ってウザイので、レイヤーウィンドウで塗りを0%にする → パスウィンドウで「選択範囲を作成」 → レイヤーウィンドウで切り抜きたい画像のレイヤーを指定して contC → 新規作成 → contV → 背景を非表示にすると切り抜き完成!!!!
条件分岐の問題の残り
閏年の判定プログラム
閏年の判定プログラムを完成させなさい.西暦の読み込みにはprompt()を使い,入力された西暦が閏年かどうか判定して結果をメッセージで表示します.
うるう年とは1年間が366日の年、2月29日がある年。4年に1回。
はてなキーワード曰く、
1. 西暦が400で割り切れる年はうるう年である。
2. 400で割り切れない場合、西暦が100で割り切れる年はうるう年ではない。
3. 100で割り切れない場合、西暦が4で割り切れる年はうるう年である。
4. 4で割り切れない場合、うるう年ではない。
らしい。
調べてみたら、確かに去年の2008年は2月29日があったぽい。ちなみに日記によると、去年のその日私は「のんびりまったりして」「夜は焼き豚屋行った」らしい。
余分な1日らしい1日の使い方をしてしまっていた(´∀`;)
あとwikipedia 曰く
近代オリンピックの夏季オリンピックは4年に1度、4で割り切れる年に開かれる。そのため100で割り切れて400で割り切れない年の1900年の第2回パリオリンピックを除き、閏年に開催されている。そういやオリンピックもあった気がする!
さて、そんなで解答。自分のつくったへっぽこプログラムで西暦をつっこんではワクワクしてたのはここだけの話。
<html> <head> <meta http-equiv="content-type" content="text/html; charset=Shift_JIS"> <title>うるう年の判定プログラム</title> </head> <body> <script type="text/javascript"> var n; n = prompt( "西暦を入力してください" ); if ( n % 400 == 0 ) { document.write("その年はうるう年です."); } else if ( n % 100 == 0 ) { document.write( "その年はうるう年ではありません" ); } else if ( n % 4 == 0 ) { document.write( "その年はうるう年です" ); } else { document.write( "その年はうるう年ではありません" ); } </script> </body> </html>
問9
西暦を入力し,その1年間は何時間か,また,何秒かを出力するプログラムを書きなさい.
うるう年の判定プログラムに、1年間の時間と秒を計算するプログラムを足せばよいのではないかと思われる。
・通常の年
1年は
24*365 時間
60*60*24*365 秒
・うるう年
1年は
24*366 時間
60*60*24*366 秒
これを電卓で計算して返す値に入れておけばバッチリなんやけど、きっとこの問題の主旨はプログラムで計算させるところにあると思われる。
ううむ・・・
<html> <head> <meta http-equiv="content-type" content="text/html; charset=Shift_JIS"> <title>1年間の時間と秒</title> </head> <body> <script type="text/javascript"> var n ,h , s ; n = prompt( "西暦を入力してください" ); if ( n % 400 == 0 ) { h = 24 * 366 ; s = 60 * 60 * 24 * 366 ; document.writeln("その1年間は", h ,"時間、また", s , "秒です."); } else if ( n % 100 == 0 ) { h = 24 * 365 ; s = 60 * 60 * 24 * 365 ; document.writeln("その1年間は", h ,"時間、また", s , "秒です."); } else if ( n % 4 == 0 ) { h = 24 * 366 ; s = 60 * 60 * 24 * 366 ; document.writeln("その1年間は", h ,"時間、また", s , "秒です."); } else { h = 24 * 365 ; s = 60 * 60 * 24 * 365 ; document.writeln("その1年間は", h ,"時間、また", s , "秒です."); } </script> </body> </html>
変数間違えて動かなくなっててんぱってたら、ハチロクチャットで助けてもらえた、thx( ´∀`) 私恥ずかしくてしねる。エラーコンソールなりfirebugを上手に使う。
そしてそこで「うるう秒」に関して指摘を受ける、うるう秒とか初めて知った。「紀元前はどうするんだ」「ていうか年代によって閏年の仕様が違う」とかあの人たちはいちいちすごい。
うう・・・><
id:harajune が書いてみてくれたやつ。
<script type="text/javascript"> n = prompt( "西暦を入力してください" )-0; document.writeln("その1年間は", (n = (365 + (n%4 == 0 && n%100 != 0 || n%400 == 0))* 24) ,"時間、また", n * 3600 , "秒です."); </script>
なんという2行!Σ(・ω・ノ)ノ だがしかし理解出来ない!!
というわけで、続きはこれの理解から。
こうやって短く書くことを「ゴルフ =codegolf」と言うらしく、できるだけ少ない文字数で同じ結果を得られるプログラムを書く遊びなんやって(・∀・)
JavaScript でif文の条件分岐・switch文を使った分岐
とりあえず先に解説
ちょっとむつかしくなってきた気配!....φ(・ω・` )
問1ー問3: if文による条件分岐
<script type="text/javascript"> var n; s = prompt( "入れてもらうものを指定する日本語でおk" ); if ( 条件式 ) { 条件式が真の場合の処理 } else { 条件式が偽の場合の処理 } </script>
・問1はそのまんま、n > 0 かどうか。
・問2の n % 3 == 0とは、nが3の倍数かどうか判定するために、nを3で割ってみてます。割り切れたら3の倍数です。
=を一つだけしか書かないと代入演算になって等しいかどうかの判定にならないので注意!
式 | true | false |
---|---|---|
a > b | a が b より大きい | a が b 以下 |
a < b | a が b より小さい | a が b 以上 |
a >= b | a が b 以上 | a が b より小さい |
a <= b | a が b 以下 | a が b より大きい |
a == b | a が b に等しい | a が b に等しくない |
a != b | a が b に等しくない | a が b に等しい |
・問3もそのまんま。
問4ー問6: switch文による条件分岐
<script type="text/javascript"> var n; s = prompt( "入れてもらうものを指定" ); switch( s ){ case "a": aの場合の処理 break; case "b": bの場合の処理 break; ... ... default: どのケースにもあたらない場合の処理 break; }
問7:else if による条件分岐
各企業の就活サイトでよく見たシステム。変なごあいさつをしてくれるやつは else if で書かれていたの巻
<head> </head> <body> <script type="text/javascript"> var n; n = prompt( "0から23の数を入力してください" ); if ( 0 <= n && n < 6 ) { document.write( "よい子は寝る時間ですよ〜.", "<br>" ); } else if ( 6 <= n && n < 10 ) { document.write( "おはようございます,今日も一日がんばりましょう.", "<br>" ); } else if ( 10 <= n && n < 18 ) { document.write( "こんにちは,調子はどうですか?", "<br>" ); } else if ( 18 <= n && n < 24 ) { document.write( "こんばんは,そろそろ寝る準備開始.", "<br>" ); } else { document.write( "0から23の数を入力してください", "<br>" ); } </script> </body>
そんなで回答
<html> <head> <meta http-equiv="content-type" content="text/html; charset=Shift_JIS"> <title>第三回課題</title> </head> <body> <H1>第三回課題</H1> <H4>問1</H4> <p>nを読み込んで,nが正の数かどうか判定するプログラムを書きなさい.<br> データの読み込みはprompt()を使います.</p> <script type="text/javascript"> var n; n = prompt( "数字を入力してください" ); if ( n > 0 ) { document.write("nは正の数です."); } else { document.write("nは正の数ではありません."); } </script> <H4>問2</H4> <p>nを読み込んで,nが3の倍数かどうか判定するプログラムを書きなさい.</p> <script type="text/javascript"> var n; n = prompt( "数字を入力してください" ); if ( n % 3 == 0 ) { document.write("nは3の倍数です."); } else { document.write("nは3の倍数ではありません."); } </script> <H4>問3</H4> <p>2つの数xとyを入力し、xがyで割り切れるかどうか答えるプログラムを書きなさい.</p> <script type="text/javascript"> var x,y; x = prompt( " x の値を入力してください" ); y = prompt( " y の値を入力してください" ); if ( x % y == 0 ) { document.write(" x は y で割り切れます."); } else { document.write(" x は y で割り切れません."); } </script> <H4>問4</H4> <p>switch文を使った月の英語名を出力するプログラムを完成させなさい.</p> <script type="text/javascript"> var s; s = prompt( "1から12の数を入力してください" ); switch ( s ) { case "1": document.write( "january", "<br>" ); break; case "2": document.write( "february", "<br>" ); break; case "3": document.write( "march", "<br>" ); break; case "4": document.write( "april", "<br>" ); break; case "5": document.write( "may", "<br>" ); break; case "6": document.write( "june", "<br>" ); break; case "7": document.write( "july", "<br>" ); break; case "8": document.write( "august", "<br>" ); break; case "9": document.write( "september", "<br>" ); break; case "10": document.write( "october", "<br>" ); break; case "11": document.write( "november", "<br>" ); break; case "12": document.write( "december", "<br>" ); break; default: document.write( "1から12の数を入力してください" ); break; } </script> <H4>問5</H4> <p>上の問題のswitch文でbreak文を省略するとどのような動きをするか確かめなさい.<br> <br> 入力した数字の月以降の月がすべて表示される。</p> <H4>問6</H4> <p>数字の0が入力されると「日曜日」,1が入力されると「月曜日」・・・のように表示されるプログラムを書きなさい.</p> <script type="text/javascript"> var s; s = prompt( "0から6の数を入力してください" ); switch ( s ) { case "0": document.write( "日曜日", "<br>" ); break; case "1": document.write( "月曜日", "<br>" ); break; case "2": document.write( "火曜日", "<br>" ); break; case "3": document.write( "水曜日", "<br>" ); break; case "4": document.write( "木曜日", "<br>" ); break; case "5": document.write( "金曜日", "<br>" ); break; case "6": document.write( "土曜日", "<br>" ); break; default: document.write( "0から6の数を入力してください" ); break; } </script> <H4>問7</H4> <p>入力値に応じて以下のようなメッセージを出力するプログラムを書きなさい.</p> <script type="text/javascript"> var n; n = prompt( "0から23の数を入力してください" ); if ( 0 <= n && n < 6 ) { document.write( "よい子は寝る時間ですよ〜.", "<br>" ); } else if ( 6 <= n && n < 10 ) { document.write( "おはようございます,今日も一日がんばりましょう.", "<br>" ); } else if ( 10 <= n && n < 18 ) { document.write( "こんにちは,調子はどうですか?", "<br>" ); } else if ( 18 <= n && n < 24 ) { document.write( "こんばんは,そろそろ寝る準備開始.", "<br>" ); } else { document.write( "0から23の数を入力してください", "<br>" ); } </script> </body> </html>