黄昏より暗きもの、血の流れより赤きもの

読者です 読者をやめる 読者になる 読者になる

黄昏より暗きもの、血の流れより赤きもの

自分の好きな事を好きなように書いて行きます。

会計、金額計算のアプリケーションを作成する際の5つのポイント

昨今仕事で金額計算のアプリケーションを作る事となり、その際に注意したり覚えておきたい5つのポイントをまとめてみた。金額計算に関する用語や便利な関数をまとめてみたので是非ご覧頂きたい。

1.売上の名目を把握する

売上と利益について

まず売り上げで関わってくることが多いのは、売上高、営業利益、経常利益、純利益などだ。ここで各項目と計算式をまとめてみたので、見てほしい。

日本語(English) 計算式
売上高(sales)
営業利益(operating profit) 営業利益 = 売上高 - 売上原価 - 販売費 - 管理費
経常利益(ordinary profit) 経常利益 = 営業利益 + 営業外利益 - 営業外費用 - 支払利息
純利益(net profit) 純利益 = 経常利益 ± 特別損益 - 住民税、法人税

営業利益や経常利益の名目を掴む

さて上記の各種名目を計算するにあたって、営業利益などは業種や会社毎に式が違う場合があるので注意。自分の経験上「営業利益 = 売上高 - 固定費 - 変動費」で計算や見積もりをする場合があった。そのため計算をする場合は、営業利益をどのように計上するかを担当者に確認すると良い。

さて営業利益を計算するにあたって、売上原価、販売費、管理費。特に固定費、変動費の名目を具体的に把握することが肝心だ。例えばあなたが車を乗り回すとしよう。毎月の自賠責保険車検費用などは一定の期間毎に変動しにくいので固定費、ガソリン代やパーツ費用は一定の期間毎に変動しやすいので変動費として計上していこう。このように固定費や変動費はいくつかの項目に切り分けられており、そこの切り分けを担当者に確認することとなる。

2.小数点の四捨五入、切り上げ、切り捨てに気を配る

計算の名目で「小数点以下四捨五入」と言う局面が登場することが多い。例えば1円の3%は「1(円) * 0.03(倍) = 0.03(円)」だ。ここで割合等を扱うとどうしても小数や分数が出て来る。又割り算で1/3 = 0.333333...の場合で循環小数の同じ数字の羅列が画面に並び、かっこわるい様を露呈することとなるだろう。こんなときに役に立つのが切り上げ、切り捨て、四捨五入だ。ここで各アプリケーションや言語における切り上げ、切り捨て、四捨五入の関数をまとめてみた。

Excel JavaScript PHP
切り上げ ROWNDUP(数値,桁数) Math.ceil(変数) ceil(変数)
切り捨て ROWNDDOWN(数値,桁数) Math.floor(変数) floor(変数)
四捨五入 ROWND(数値,桁数) Math.round(変数) round(変数)

又小数点以下切り上げや小数点以下切り捨てを多様すると、1円単位で誤差が生じる可能性が高くなる。そこでどこまで誤差を許容していいものなのかも担当に確認しておく必要がある。又1円単位で誤差が生じている場合は、各種名目の計算式毎に確認を行ってどこでずれているかも確認したい。

3.同じ計算式をつかうときは、関数を使ってまとめる

又同じ計算式を複数の項目で計算する場合は、関数でまとめておくと良い。例えば「一月○○円かかる名目の日割り計算」と言った日割り計算の場合ならば、

//日割り計算のスクリプト
function CalcPerday(cost,day)
{
	//0日となったとき
	if(day == 0)
	{
		return 0;//分母が0のときは0で出力
	}
	else
	{
	return Math.ceil(cost/day);//dayで日割り計算
	}
}

また消費税込み価格の場合「販売額 = 原価 * (1 + 税金[利率])」よりJavaScriptの関数は

//税金、利率込みの価格(小数や分数で入力する場合)
function TaxIncluded(cost,tax)
{
	return Math.ceil(cost*(1+tax));//dayで日割り計算
}

//税金、利率込みの価格(%で入力する場合)
function TaxIncludedPercent(cost,tax)
{
	return Math.ceil(cost*(1+tax/100));//dayで日割り計算
}

と言うようになる。場合に依ってはコードスペニットやコードテンプレートに登録して使うのも良いだろう。又計算結果をWebブラウザに表示する場合は以下のjQueryを参照してほしい。尚DOMの部分をjQueryで置き換えているので、jQuery使用不可能な場合は書き換えが必要だ。

4.名目はわかりやすい変数名、コメントでくくる

又固定費の名目などは分かりやすい変数名やコメントでくくると良い。名目をコメントしておくと、名目を合算しやすくなるだけでなく万一式が間違っていたときの発見が容易になる。実装の過程で名目が増えて来るにつれて発見が困難になるので注意だ。例えば「営業利益 = 売上高 - 固定費 -変動費」と簡単に営業利益を計算する場合について、

//営業利益[operating profit] = 売上高[sell] - 固定費[fixed cost] -変動費[variable cost]
//を計算

var sell = 1000000;//売上高
var fixed_cost = 200000;//固定費
var variable_cost = 300000;//変動費

var operating_profit = sell - fixed_cost - variable_cost;//営業利益
alert(operating_profit);

と横にきちんとコメントを振ったり、変数に正しい英語を振る事も肝心だ。筆者の場合日本の歌謡曲のように日本語と英語が水と油*1で後で何がなんだかと言う現象が後をたたない。

5.数値は3桁毎に区切って表示するなど、財務諸表を参考にデザイン作成を

IT系の職種でプログラムをやっていると、どうしてもプログラム毎の知識は身に付くが、会社のお金の知識は身に付きにくくなる。さてよく財務諸表などでは金額は3桁毎に区切られている事が多い。お金が絡んでる人間程「3桁毎に区切って」と言う声はよく出て来る。PHPの場合ならばnumber_format関数を使う事が有効だ。しかしながらJavaScriptの場合は専用の関数を使う事となる。

function addFigure(str)
{
	    var num = new String(str).replace(/,/g, "");
	    while(num != (num = num.replace(/^(-?\d+)(\d{3})/, "$1,$2")));
	    return num;
}

尚この関数addFigureは「数字を3桁区切りで表示するJavaScript:サラリーマンのすらすらIT日記」さんを筆頭に数多くのブログで取り上げられていた。ちなみに上記ブログではこの関数で使われている正規表現と言うテクニックの解説もされている。より深く知りたい方は上記のブログを見てみると良い。

関連ブログ、読んでみると良い書籍

この他1.の利益の計算はwikipediaや各種辞書サイトを用いた。5で正規表現をもっと極めたい人は以下の書籍を読んでほしい。

詳説 正規表現 第3版

詳説 正規表現 第3版