ぺんぎんノート

momoiro_tjのノート (旧:システムオペレータの週末)

【Hugo】Hugoによる静的サイトジェネレータ入門

1. この記事について

この記事では、Hugo環境構築で調べた内容をまとめます。 基本的な使い方、katexの導入、カスタマイズ、テンプレートファイルの見方の触り、までの内容を含みます。 この記事では、実際にweb上への公開は行うことはスコープ外となることに注意してください。

1.1 環境構築

Windows11 64bitへの導入方法について説明します。 実行ファイルをgithubからダウンロードし、環境変数へパスを通すのみです。

  1. Releases · gohugoio/hugo から、最新リリースを選択する
  2. Assetsの一覧から、hugo_0.163.3_windows-amd64.zipをダウンロードする (arm64と間違えないように注意)
  3. 任意のディレクトリで解凍し、hugo.exeが入っていることを確認する
  4. hugo.exeへのパスを環境変数に設定する

私が導入した際の最新はhugo_0.163.3だったので、以降は本バージョンのhugoについての説明となります。

2. 最小限のサイトをリリースする

最小サイトをローカルマシン上で確認するまでの手順を説明します。

2.1. 新規サイトを作成する

次のコマンドで新規サイトが作成され、my-minimal-siteというディレクトリ内にHugoファイル群が作成されます。

hugo new site my-minimal-site

2.2. テーマを導入する

themesディレクトリ配下にテーマを追加します。 テーマは自作することもできますが、gitリポジトリで提供されているものもあります。既存のgitリポジトリを使用する場合、リポジトリをダウンロードしtheme配下に格納するか、git submoduleで管理することができます。 次のコマンドでは、anankeテーマをgit submoduleとして取得します。

cd my-minimal-site
git init
git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke.git themes/ananke

[!補足] 取得したテーマは変更しないこと

テーマをカスタマイズする場合、テーマのファイルを直接編集はしないでください。 例えばレイアウトであればlayoutsディレクトリ配下にファイルを置くことで、テーマのレイアウトを上書き/追記することができます。 つまり、Hugoではサイトのデザインに関する設定は複数個所に記述することができ、優先度があるということです。
(自サイトの設定 > テーマによる設定 > Hugoのデフォルト設定)

themeを取得後、サイト直下にhugo.tomlを作成し、に次の内容を追記します。

baseURL = 'https://example.org/'
title = 'hugoクイックスタート'
theme = 'ananke'

2.3. 記事を作成する

次のコマンドでmarkdown形式の記事を作成することができます。

hugo new content posts/my-first-post.md

content/posts/my-first-post.md が作成されるので、テキストエディタで編集してください。

+++
title: "初めての投稿"
date: 2026-06-29T11:05:00+09:00
draft: false
+++

こんにちは!これはHugoで作成した最小限のサイトです。

+++で囲まれた情報は、フロントマターと呼ばれ、記事のメタデータを記述します。例えば、記事のタイトルやカテゴリ、表示順序など様々な情報を記述することができます。 draftは下書きかどうかを表す情報で、draft: false にすることで、公開記事としてHugoに認識されます。

[!補足] 記事の見出しはレベル2から

通常のwebページでは、見出しレベル1は記事のタイトルで使われる想定のため、 記事の見出しレベルはレベル2(##)から始めるようにしてください。

2.4. ローカルサーバで表示する

Hugoにはローカルサーバ機能があり、次のコマンドで起動し記事をPC上で確認することができます。

hugo server

Web Server is available at http://localhost:1313/とターミナルに表示され、URLにアクセスするとサイトが表示されます。 実行したターミナル上は実行状態となり、Ctrl + Cを入力すると終了する。

[!補足] 下書き記事を表示するには

draft: true のまま、ローカルで記事を確認したい場合、次のようにローカルサーバを起動することで下書き記事を表示することができます。

hugo server -D

3. Hugoのディレクトリ構成と主要なファイル

Hugoの基本的なディレクトリ構成と、各ディレクトリ/主要なファイルは以下の通りです。

my-minimal-site/
├── archetypes/             < 新規記事のテンプレートを格納する
│   └── default.md
├── assets/                 < Hugoで高度な設定ファイル(scssの利用など)を格納する
├── content/                < markdownやhtmlなどの記事を格納する
│   ├── posts/
│   └── _index.md           < 記事一覧ページ
├── data/                   < サイト全体で共有するファイルやデータを格納する
├── i18n/                   < テンプレートの国際化に関する設定を格納する
├── layouts/                < 独自のテンプレートファイルを格納する
│   ├── partials/
│   └── _default/
├── public/                 < Hugoでビルドした本番公開用の出力ディレクトリ
├── static/                 < 画像やcssなどの静的ファイルを格納する(publicにそのままコピーされる)
│   ├── images/
│   ├── css/
│   └── favicon.ico
├── themes/                 < ダウンロードしたテーマを格納する
└── hugo.toml               < サイト全体の設定ファイル

4. Hugoにkatexを導入する

Hugoに、計算式表示用のライブラリkatexを導入する手順を説明します。 CDNではなく、ローカルにライブラリをダウンロードしサイトからライブラリを参照できるようにします。

4.1. katexをダウンロードする

サイトにkatex用のディレクトリを作成します。

mkdir static/katex

次に、Releases - KaTeX/KaTeX より、zipまたはtarballをダウンロードしstatic/katexディレクトリ内に解凍します。次のようなディレクトリ構成となります。

site root/
└── static/         <-- ここに配置します
    └── katex/      <-- 分かりやすいようにkatexフォルダを作成
        ├── katex.min.js
        ├── katex.min.css
        ├── contrib/
        │   └── auto-render.min.js  (自動パース用。これがあると便利)
        └── fonts/  <-- フォントファイル群(これがCSSから読み込まれます)
            ├── KaTeX_Main-Regular.woff2
            └── ...

4.2. 数式用のパーツを作成する

layouts/partials/math.htmlを作成し、サイトのhead内に追記する内容を記述します。

<link rel="stylesheet" href="{{ "katex/katex.min.css" | relURL }}">

<script defer src="{{ "katex/katex.min.js" | relURL }}"></script>

<script defer src="{{ "katex/contrib/auto-render.min.js" | relURL }}" 
        onload="renderMathInElement(document.body);"></script>

<script>
    document.addEventListener("DOMContentLoaded", function() {
        renderMathInElement(document.body, {
            delimiters: [
                {left: "$$", right: "$$", display: true},
                {left: "$", right: "$", display: false}
            ],
            throwOnError : false
        });
    });
</script>

4.3. パーツをheadに組み込む

作成したパーツをheadに読み込ませるためのパーツを作成します。 anankeテーマの場合、layouts/_partials/head-additions.htmlを作成し、次のコードを書きこみます。 (headにフックするパーツは、テーマごとに異なるので注意が必要です)

{{- partials.Include "hook.html" (dict "hook" "head-end" "context" .) -}}
{{/* ホームまたはmath=trueのときkatexを追加 */}}
{{ if or .IsHome .Params.math }}
      {{ partial "math.html" . }}
{{ end }}

if ... .Params.mathの箇所に注目してください。これによりmathパラメータがtrueの場合にmath.htmlを読み込むようになります。

[!注意] partialsと_partialsは異なるディレクトリです

partialsはHugoにテンプレートとして認識され、例えば partial "math.html" のように構文を使用し参照することができます。
_partialsは、Hugoにテンプレートとして認識されません。テーマが独自のテンプレートファイルを格納し、任意のタイミングで呼び出せるようにする慣習により作成されています。

4.4. 記事でkatexを有効化する

katexを読み込ませたい記事のフロントマターに次の1行を追加します。

math = true

例えば、記事に$ a^2 + b^2 = c^2 $ や $$e = mc^2$$のような数式を埋め込むと、正しく表示されます。

4.5. katex記述内はmarkdownの変換を行わないように設定する

ここまでの手順でkatexは問題なく表示されますが、Hugo内部では次の順序でkatexの表示を行います。

[Markdownファイル] 
       ↓
(1) Hugoのレンダラー (Goldmark) が HTML に変換
       ↓
(2) ブラウザで KaTeX (JavaScript) が 数式にレンダリング

つまり、先にmarkdown -> htmlに変換するため、 katexとして記述した箇所がmarkdownとして先に変換されてしまうことがあります。 具体的には\\のようなエスケープ文字などが意図せず変換され、数式が正しく表示されない、等です。

この問題を回避するため、Hugoのレンダラー (Goldmark) にkatex記述内は markdown -> htmlへの変換を行わないように設定することができます。

[markup.goldmark.extensions.passthrough]
  enable = true
  delimiters.block = [['$$', '$$']]
  delimiters.inline = [['$', '$']]

これにより$$...$$や$...$のようなkatex記述内のmarkdown変換を行わずスルーするようになります。

[!注意] 完全に意図しない変換を回避できない

上記の設定を行っても、改行を含む場合など意図せずmarkdownとして認識される場合があります。 例えば数式の=を行頭に書いた場合、見出し<h1>...</h1>に変換されるなどです。 特に行の先頭などは注意が必要です。katexが正しく表示されない場合、 誤ってmarkdownとして変換されていないかを確認することをお勧めします。

5. サイトをカスタマイズする

5.1. htmlファイルで記事を書く

Hugoでは、markdownで記事を書くことをデフォルトとしています。 htmlで記事を書きたい場合、hugo.tomlに次のように設定を追加し、htmlを許可する必要があります。

[security]
  allowContent = ['text/markdown', 'text/html']

設定を行うと、markdownと同様に記事を作成することができます。

hugo new content posts/html-posts-sample.html

[!補足] markdown内ににHTMLの混在は非推奨

Hugoでは、markdown内にHTMLを直接記述することは、 XSS(クロスサイトスクリプティング)などの攻撃に対して脆弱となるため安全ではないとされています。 危険を認識の上で、hugo.tomlに次のようにすればmarkdown内でのHTML表示を許可するこができます。

[markup.goldmark.renderer]  
  unsafe = true

5.2. カスタムcssを読み込む

cssを設定することで記事のデザインを変更することができます。 高度にデザインを変更する場合、記事のテンプレートを書き換えることもできますが、 テーマのアップデートに追従できなくなるなど問題がある場合があります。 (その場合、テーマの見直しを検討することをお勧めします) 適用させたいcssファイルをstaticディレクトリ配下に格納します。

static/css/custom.css

layouts/partialsにパーツとしてcss読み込みタグを作成し、読み込ませることもできますが、 anankeテーマでは、hugo.tomlへの設定でカスタムcssを読み込ませることができます。

custom_css = ["css/custom.css"]

右辺は配列になっているため、複数のcssファイルを指定することができます。

[!補足] cssはテーマによって変える

適用するタグの構成やcssによるクラス構成はテーマごとに異なるので、 カスタムcssはテーマごとに変えることを推奨します。 例えばテーマでTailwind CSSのようなCSSフレームワークを採用している場合、 CSSを指定する際.proseのようなクラスを基準とすることが有効と考えられます。 CSSフレームワークの利用、設計はテーマごとに異なるためテーマごとに調整が必要です。 custom_cssは次のようにテーマごとに定義することができます。

[params.ananke]  
  custom_css = ["css/ananke/custom.css"]  

5.3. サイト設定をする

サイトのロゴや代替テキストはhugo.tomlに次のように記述します。

[params]
  # ロゴ画像のパス(static/ からの相対パス)
  logo = "images/logo.svg"
  
  # ロゴが表示されない場合の代替テキスト
  title = "Hugo Sample Site"

5.4. カテゴリページを作成する

カテゴリページのようなことをタクソノミー(Taxonomies)と呼びます。

カテゴリはフロントマターに次のような定義を追加します。

categories = ["プログラミング"]

ローカルサイトでの確認の際、次のようなURLにアクセスすると自動でカテゴリ一覧ページが作成されます。

  • カテゴリの一覧 : http://localhost:1313/categories/
  • 特定のカテゴリの一覧 : http://localhost:1313/categories/プログラミング

ナビゲーションメニューにリンクを追加するならhugo.tomlに次のように追記します。

#記事一覧ページをナビゲーションに追加 
[[menu.main]]
  name = "記事一覧"
  url = "/posts/"
  weight = 1

# カテゴリ一覧ページをナビゲーションに追加
[[menu.main]]
  name = "カテゴリ"
  url = "/categories/"
  weight = 2

カテゴリ一覧ページを変更するには、content/categories/_index.mdを作成します。

+++
title = "カテゴリ一覧"
date = 2026-07-01T06:00:00+09:00
description = "当ブログの投稿記事をジャンル別にまとめています。"
+++

ここに書いた文章は、カテゴリ一覧ページのタイトルの下に説明文として表示されます。
自由に編集してください!

[!補足] タクソノミー(taxonomies)について

タクソノミーはカテゴリ以外にも、デフォルトではタグが定義されています。 また独自のタクソノミーを追加することもできます。

5.5 GitHubスタイルのAlerts機能を使用する

Hugoでは、> [!NOTE]や> [!WARNING]のような、記述をすることで 注意書きや補足情報をmarkdownの引用形式で装飾することができます。 (Hugoバージョン 0.131.0 以降)

ただし、この機能を有効化するには次の手順を実施する必要があります。

まず、サイトにlayouts/_markup/render-blockquote.html のパーツを追加します。

{{- if eq .Type "alert" -}}
  <blockquote class="markdown-alert alert-{{ .AlertType }}">
    <p class="markdown-alert-title">
      {{- if .AlertTitle -}}
        {{ .AlertTitle }}
      {{- else -}}
        {{ .AlertType | upper }}  {{/* 空の場合は「NOTE」等に自動変換 */}}
      {{- end -}}
    </p>
    {{ .Text }}
  </blockquote>
{{- else -}}
  <blockquote>{{ .Text }}</blockquote>
{{- end -}}

記事のmarkdown内で、次のように指定します。

> [!WARNING] 注意書きのタイトル
> ここに注意書きを書きます。

> [!NOTE] 補足情報のタイトル
> ここに補足情報を書きます。

Hugoをビルドすると次のようなHTMLに変換されます。

<blockquote class="markdown-alert alert-warning">
  <p class="markdown-alert-title">注意書きのタイトル</p>
  <p>ここに注意書きを書きます。</p>
</blockquote>

<blockquote class="markdown-alert alert-note">
  <p class="markdown-alert-title">補足情報のタイトル</p>
  <p>ここに補足情報を書きます。</p>
</blockquote>

markdown-alert、alert-note、markdown-alert-titleのようなクラスに対して、 任意のcssでデザインを指定することができます。

5.6. 記事の前後関係を整理する

デフォルトで記事は時系列順に表示されます。 例えば.PrevInSectionまたは.NextInSectionなどでテンプレート内で前後の記事の情報を取得することができます。

日付以外の方法で記事の順序を制御したい場合は、weightを使用します。 weightは、記事のフロントマターに次のように記載します。

weight = 10

デフォルトでは、weight(重み※小さいほうが優先) > date(日付) > linkTitle(アルファベット順)の優先順位で記事が表示されます。 weightを設定していない記事はweight = 0として設定されます。 例えば、常に先頭に表示させたい記事などはweight = -1のように指定するとよいことがわかります。

weightで記事の順序を管理する場合1,2,3,...と詰めると、間に記事を挟むことが難しくなります。 なので、100,200,300,...のように間をあけてweightをつけることが推奨されます。 weightの最大値はgo言語に基づき32bit整数または64bit整数で規定されているので、 21億のような非常に大きな数値でも取りうることができます。

また、weightなどの順序はセクションごとに管理することができます。 セクションとは、次のように、content以下のディレクトリ分けされた単位になります。

my-hugo-site/
└── content/
    ├── blog/               ← 「blog」セクション
    │   ├── post1.md
    │   └── post2.md
    ├── news/               ← 「news」セクション
    │   ├── announcement.md
    │   └── press.md
    └── _index.md           ← これはトップページ(セクションではない)

セクションへのアクセスは 特別な設定をしなくても、フォルダ名がそのままURLの階層になります。

  • content/blog/post1.md → https://example.com/blog/post1/
  • content/news/press.md → https://example.com/news/press/

セクションのタイトルは次のように_index.mdを作成することで指定できます。

content/
└── blog/
    ├── _index.md   ← セクション全体の設定ファイル
    ├── post1.md
    └── post2.md

_index.mdに次のようにtitleを指定します。

+++
title = "ブログ記事一覧"
description = "最新の技術動向や日々の雑記を投稿しています"
+++

6. テンプレートファイルの詳細

layouts以下のテンプレートファイルを理解するうえで必要な事柄について説明します。

6.1. テンプレート構文

テンプレートファイル内の文法は、htmlおよびGo言語のテンプレート構文に準拠しています。

フロントマター情報の呼び出し

フロントマターで定義しているTitleやDescriptionの情報を呼び出す場合、{{ .ParameerName }} で呼び出すことができます。例えば、フロントマターのTitleをテンプレートファイル内で呼び出す場合、次のように使用します。

<h1>{{ .Title }}</h1>   

[!補足] 独自パラメータはParamsをつけること

独自パラメータはパラメータ名の前にParamsをつけることに注意してください。 例えば、katexの例で見たmathは、{{ .Params.math }} のようにして使用します。

条件分岐

{{ if .Params.vars }} ... {{ end }} のようにすることで条件分岐を作ることも可能です。 例えば、mathが定義されている場合のみ、katex.js を読み込む場合は次のようにします。

{{ if .Params.math }}
    <script src="katex.js"></script>
{{ end }}

ループ処理

ループ処理は {{ range .Pages }} ... {{ end }} のように記述します。 例えば、記事の一覧.Pagesに対して、処理を行う場合は次のようにします。

<ul>
{{ range .Pages }}
    <li>
    <a href="{{ .Permalink }}">{{ .Title }}</a>
    </li>
{{ end }}
</ul>

別ファイルの読み込み

{{ partial ""file-name.html" . }} のように記述することで、layouts/partials内などのファイルを読み込むことができます。 末尾のドットを記述することで、読み込んだファイル内の変数を呼び出せるようにしていることに注意してください。

6.2. baseof.html

baseof.html は、Hugoでサイトをビルドするすべてのhtmlファイルのベースとなるテンプレートファイルです。 baseof.html は、mainパラメータを参照し各ページの内容を読み込みます。anankeテーマでは、例えばhome.htmlがトップページで読み込まれます。

このように、自作でテンプレートを作成する場合や、テーマで使用されているテンプレートの構成を理解するには、 baseof.html から読んでいくと理解が進みます。

7. まとめ

Hugoは静的サイトジェネレータとして、かなり便利なツールです。 ここまでで紹介した内容はHugoのごく一部ですが、 テンプレートなどについてさらに学習しテーマを自作したりするのもおもしろそうだと思います。 また、GitHubと組み合わせて実際にサイトを公開することも簡単にできるので、 コンテンツが増えてきたら試してみたいと思います。

【簿記1級】現価係数と終価係数について

導入

簿記1級では、リース会計や貸倒引当金の算出、退職給付会計など、様々なところで割引現在価値を求めて、当期における資産や負債の額を算出することがある。簿記1級の問題で割引現在価値を求める際、年金現価係数などを用いて簡単に求める場合がある。この記事では、この年金現価係数などいわゆる『6つの係数』について、数学的な観点を踏まえ個人的に整理する。数学的な観点を含める理由は、『6つの係数』の本質的な意味を理解し、より覚えやすくするためである。

6つの係数の概要

本記事では、以下の用語を定義する。

用語 説明
元本 投資、または貸付における元手となる資金
元利 元本とその利息の合計額
一括投資額 投資資金を初回に一括で投資する場合の元本
分割積立額 投資資金を分割して運用する場合の1回あたりの元本
元利合計 投資資金の一定期間後の元利
一括回収額 貸付金を一括で回収する場合の元利
分割回収額 貸付金を分割して回収する場合の1回あたりの元利
貸付元本 初回の貸付金となる元本

6つの係数について、投資における複利の効果と貸付における複利の効果に分類し、 以下のようにとらえるとわかりやすい。

投資における複利の効果・・・いくら投資すれば、将来いくらになるか(現在→将来を考える)
貸付における複利の効果・・・現在いくら貸付すれば、いくら回収できるか(将来→現在を考える)

係数 分類 計算式
終価係数 投資(現在→将来)  (一括投資額) \times (\textbf{終価係数}) = (\textcolor{red}{元利合計})
年金終価係数 投資(現在→将来)  (分割積立額) \times (\textbf{年金終価係数}) = (\textcolor{red}{元利合計})
減債基金係数 投資(将来→現在※)  (\textcolor{red}{元利合計}) \times (\textbf{減債基金係数}) = (分割積立額)
原価係数 貸付(将来→現在)  (一括回収額) \times (\textbf{原価係数}) = (\textcolor{red}{貸付元本})
年金現価係数 貸付(将来→現在)  (分割回収額) \times (\textbf{年金現価係数}) = (\textcolor{red}{貸付元本})
資本回収係数 貸付(現在→将来※)  (\textcolor{red}{貸付元本}) \times (\textbf{資本回収数}) = (分割回収額)

2点補足する。

ひとつは、すべて係数なので、ある金額にかける、求めたい金額を簡単に計算することができる点である。 暗記に集中すると、意外とこの点について取りこぼしがちである。

もうひとつは、減債基金係数と資本回収係数のみ、投資/貸付と将来/現在の関係が逆となっているが、それぞれ投資/貸付にグルーピングしている点である。 これは、年金終価係数と減債基金係数、年金現価係数と資本回収係数が、逆の関係に対応していることに起因する。具体的にはこの後数式で示す。

終価係数

例えば、元本から1年後の元利を求める場合、以下で求めることができる。

 (1年後の元利合計) = (元本) + (元本) \times (年利)
 (1年後の元利合計) = (元本) \times (1 + 年利)

これを、2年後、3年後、と計算していくと、以下のようになる。

 (1年後の元利合計) = (元本) \times (1 + 年利)
 (2年後の元利合計) = (元本) \times (1 + 年利) \times (1 + 年利)
 (3年後の元利合計) = (元本) \times (1 + 年利) \times (1 + 年利) \times (1 + 年利)
:
:
 (n年後の元利) = (元本) \times (1 + 年利)^{年数}

上記より、元本を除く部分が終価係数となる。

 (終価係数) = (1 + 年利)^{年数}

年金終価係数

等比数列との比較

 (n年後の元利) = (元本) \times (1 + 年利)^{年数}は、等比数列と考えることができる。
初項 a、公比 r、項数 nにおける、等比数列 a_{n}の一般項の定義は以下である。

 a_{n} = ar^{n - 1}

初項 a = (元本)、公比 r = (1+年利)、指数部分 (n - 1) = 年数とすると、等比数列の定義と対応することがわかる。

指数部分について補足する。終価係数は、期首に投資を行ったと考える。
投資を行った期首を n = 1とすると期末は n = 2となり、以降は期末ごとに nを増やす。
これにより nのカウントと年数がずれるため、関係は 年数 = n - 1となる。

年金終価係数は等比数列の和と考える

年金終価係数で求める元利合計は、終価係数で求めた元利の合計額となる。
なので、等比数列の和を考えれば、年金終価係数を求めることができる。

等比数列の和 S_{n}は、初項 a、公比 rとし、 r \neq 0のとき以下のように定義される。

 S_{n} = \dfrac {a(r^{n} - 1)}{r - 1}

初項 a = (投資積立額)、公比 r = (1 + 年利)、項数 n = 年数とする。

年数と項数の関係について補足する。終価係数では 年数 = n - 1であったが、年金終価係数は期末に投資すると考える。
そのため、 nと年数は一致するため、 n = 年数と考えてよい。

n年後の元利合計は以下となる。

 (n年後の元利合計) = \dfrac {(投資積立額)((1 + 年利)^{年数} - 1)}{(1 + 年利) - 1}
整理すると
 (n年後の元利合計) = (投資積立額) \dfrac {(1 + 年利)^{年数} - 1}{(年利)}
さらに、終価係数の定義より
 (n年後の元利合計) = (投資積立額) \dfrac {(終価係数) - 1}{(年利)}

上記の元本を除く部分より、年金終価係数は以下の通りとなる。

 (年金終価係数) = \dfrac {(1 + 年利)^{年数} - 1}{(年利)}
または
 (年金終価係数) = \dfrac {(終価係数) - 1}{(年利)}

減債基金係数

前述したが、減債基金係数と年金終価係数は逆の関係になっている。 年金終価係数の定義の逆数をとると、以下の通り求めることができる。

 (減債基金係数) = \dfrac {1}{(年金終価係数)}

 (減債基金係数) = \dfrac {(年利)}{(1 + 年利)^{年数} - 1}
または
 (減債基金係数) = \dfrac {(年利)}{(終価係数) - 1}

原価係数

現価係数は、 (元本) = (原価係数) \times (元利)となる。これは終価係数と比較すると元本と元利の関係が逆となる。

 (元利) = (終価係数) \times (元本)
 (元本) = (原価係数) \times (元利)

 (終価係数) = (1 + 年利)^{年数}の逆数をとれば、原価係数の定義を導出することができる。

 (現価係数) = (\dfrac {1}{1 + 年利})^{年数}
または
 (現価係数) = (1 + 年利)^{-年数}

年金現価係数

年金終価係数を求めた時と同様に、等比数列および等比数列の和を使って求める。

等比数列

等比数列の一般項の定義(再掲)

 a_{n} = ar^{n - 1}

原価係数の定義より、

 (元本) = (元利) \times (原価係数)
より、
 (元本) = (元利) \times (\dfrac {1}{(1 + 年利)})^{年数}

初項 a = 元利、公比 r = \dfrac {1}{(1 + 年利)}、指数部分 (n - 1) = 年数とすると、等比数列の一般項の定義と一致する。

等比数列の和

等比数列の和の定義(再掲)

 S_{n} = \dfrac {a(r^{n} - 1)}{r - 1}

または

 S_{n} = \dfrac {a(1 - r^{n})}{1 - r}

初項 a = (分割回収額)、公比 r = (\dfrac {1}{1 + 年利})、項数 n = 年数とすると、債権を n年にわたり回収する場合の貸付元本は以下となる。

 (貸付元本) = \dfrac {(分割回収額)(1 - (\dfrac {1}{(1 + 年利)})^{年数})}{1 - (\dfrac{1}{1 + 年利})}
整理すると
 (貸付元本) = (分割回収額) \times \dfrac {(1 - (\dfrac {1}{(1 + 年利)})^{年数})}{(年利)}
または
 (貸付元本) = (分割回収額) \times \dfrac {1 - (1 + 年利)^{-年数}}{(年利)}
さらに、原価係数の定義より
 (貸付元本) = (分割回収額) \dfrac {1 - (現価係数)}{(年利)}

上記より、元利を除く係数部分より、以下が年金原価係数となる。

 (年金現価係数) = \dfrac {1 - (1 + 年利)^{-年数}}{(年利)}
または
 (年金現価係数) = \dfrac {1 - (現価係数)}{(年利)}

資本回収係数

前述の通り、資本回収係数は年金現価係数と逆の関係となる。そのため、以下のように定義できる。

 (資本回収係数) = \dfrac {1}{(年金現価係数)}
展開すると
 (資本回収係数) = \dfrac {(年利)}{1 - (1 + 年利)^{-年数}}
または
 (資本回収係数) = \dfrac {(年利)}{1 - (現価係数)}

以上で、6つの係数の導出が完了した。

まとめ

等比数列、等比数列の和の公式を用いて6つの係数の導出を行った。
等比数列は高校数学で学ぶレベルだし、知らない人でもすぐ理解することができると思う。
6つの係数をそのまま覚えるより、理屈を考えることで理解が深まるのではないだろうか。

最後に、6つの係数を表にまとめておく。

投資に関する係数

終価係数 年金終価係数 減債基金係数
 (1 + 年利)^{年数}  \dfrac {(終価係数) - 1}{(年利)}  \dfrac {(年利)}{(終価係数) - 1}

貸付に関する係数

原価係数 年金現価係数 資本回収係数
 (1 + 年利)^{-年数}  \dfrac {1 - (現価係数)}{(年利)}  \dfrac {(年利)}{1 - (現価係数)}

以上。

【簿記1級】個人的チートシート1

記憶のとっかかりとしてのメモ1。間違いあるかもしれません。

テーマ 解法
現金実査 修正仕訳 → 帳簿残高と実際有高を計算する
銀行勘定調整表 企業側の修正仕訳と銀行側の修正仕訳を分ける
(銀行側がわからなければ、企業側を確実に合わせる)
減価償却
新定率法(200%定率法)
保証率での金額まで:定率法
保証率での金額以下:改定償却率で計算した金額で定額法
減価償却
総合償却
取得原価の合計 / 減価償却費の合計 = 耐用年数(切り捨て)
固定資産の火災 前準備:後片付け費用を火災未決算へ、廃材を貯蔵品へ
(火災)未決算 → 火災損失または保険差益
無形固定資産
繰延資産
株式交付費・社債発行費等は3年、その他は5年で償却
商品売買 仕入割引以外は仕入から減額
グループ別の棚卸資産 商品評価損を洗替する場合、「商品低下切下額」「商品低下切下額戻入」で処理
売価還元平均法 売価合計と現価合計により原価率を計算する
期末商品の正味売却価額を下回る場合、商品評価損を計上する
売価還元低下法(商品評価損を認識する) 値引を取り消して原価率を計算し、
平均法の原価率の期末帳簿棚卸高との差額を商品評価損とする
売価還元低下法(商品評価損を認識しない) 値引を取り消して原価率を計算し、
期末帳簿棚卸高とする
経過勘定 前払費用のみ1年基準で流動資産と固定資産を分類
その他はすべて流動資産
満期保有目的債券 取得原価をもって貸借対照表額とする
額面金額との差額が金利の調整と認められる場合、償却原価法により取得原価を修正していく
その他有価証券 期末に時価評価し、翌期首に洗替
その他有価証券(満期保有目的債券) 額面金額との差額を償却原価法で修正後、時価評価する
端数利息 売却側:端数利息受け取り
購入側:端数利息を支払い(有価証券の取得価額に含まれている場合は取得価額から減額)
有価証券の保有目的変更 変更前の保有目的に基づいて時価評価するかしないかを決める
債権債務(一般債権) 貸倒実績率法:貸倒実績率 = 実際貸倒高 / 債権の当初元本(年度ごとに計算)
債権債務(貸倒懸念債権) 財務内容評価法:与えられた設定率で計算する
キャッシュフロー見積もり法:債権額と将来CFの割引現在価値の差額を引当金に計上
債権債務(破産更生債権等) 担保額を控除し、元本の100%を貸倒引当金に計上
貸倒れ 貸倒時:貸倒引当金を控除した額を貸倒損失に計上
回収時:償却債権取立益を計上
デリバティブ 毎年時価評価し損益を計上、翌期首に洗い替え
金利スワップ 金利スワップ資産に対し税効果を適用、特例処理の場合金利スワップ資産を計上しない
ファイナンス・リース
(基本)
リース開始時にリース資産とリース債務を計上
リース料支払い時、支払利息を除く額をリース債務の返済とする
ファイナンス・リース
(リース資産額)
リース資産の割引現在価値と原価(見積購入価額)のどちらか低いほう
ファイナンス・リース
(減価償却)
所有者移転:経済的耐用年数で通常の固定資産として償却
所有権移転外:リース期間で償却
ファイナンス・リース
(セール・アンド・リースバック)
固定資産の売却(売却益は長期前受収益)→リース資産の計上
減価償却を長期前受収益の取り崩しで計上
研究開発費 別目的流用可能な固定資産は取得時は固定資産を計上し、減価償却時に研究開発費を計上する
市場販売目的のソフトウェア 翌期の見込販売収益(数量)に合うように、当期のソフトウェア償却を計上する
減損会計 ①現存の兆候→②割引前将来CF < 帳簿価額
→③回収可能額(正味売却価額と使用価値の高いほう)を超える額を減損損失に計上
※将来CFは最終売却額も含む
減損会計
(共用資産)
原則:共用資産を含むグループの合計額で減損を認識
容認:共用資産を各資産に按分し減損を認識
税効果会計
(将来加算一時差異)
会計と税法の差額を計上 → 税率をかける → 前期との差額を法人税等調整額へ
実際残高の世界と税金の世界を間違えないこと
税効果会計
(その他有価証券)
利益:繰延税金負債、費用:繰延税金資産(※相殺する)
税効果会計
(積立金方式)
税法と会計の固定資産の差額を対象とし、
税率:繰延税金負債→法人税等調整額
1 - 税率:圧縮積立金→繰越利益剰余金

【簿記1級】CPAラーニング"簿記1級 工業/原計"の動画を見た

momoiro-tj.hateblo.jp 前回に引き続き、CPAラーニングの動画を見た報告である。

前回は簿記1級、商業簿記/会計学についての動画、今回は工業簿記/原価計算の動画を視聴完了した。 これでひとまず簿記1級の試験範囲を一巡したかたちとなる。 まず感想としてはとにかく試験範囲が広い。広さでいうと基本情報技術者試験とかも広いといえば広い。 情報処理技術者試験は広いといえど、一つ一つの論点が浅い。計算も少ない。用語を知っていればいいと理解している。 まだ過去問をやってないので想像になるが、簿記1級は理論を理解してないと解けない問題が多い。要するに計算が多い。 しかも計算はちゃんと勉強しだすと結構難しい。なのでとにかく短期間で受かりたい場合、丸暗記するしかない。

対策としては、選択と集中である。 おそらく、中心となる論点は限られる。例えば商業簿記なら連結会計、工業簿記なら総合原価計算、標準原価計算あたりだろう。 それ以外の論点はいわゆる理論問題といわれるもので細かい計算はなく、得点源にもなりにくいと思われる。 なので、中心となる論点について選択と集中を行えばいいと考えている。 簿記1級は傾斜配点(相対評価)なので全試験範囲を完璧にするのは時間の無駄、ともいえるらしい。 確実に得点を獲得していくことが重要。 全体の感想と意気込みは以上である。

さて、工業簿記の感想。全体像をぼんやりとらえると、簿記2級でやったことと基本はさして変わらない。 材料費、労務費、経費を計算して、仕掛品、製品に仕訳けていく、標準原価を使う場合は実際原価との差異に注目する、というのが基本である。 この基本に対して発展的な考え方(直接原価計算、仕損の処理など)が増え、さらに経営レベルの意思決定分析手法についての論点が増える。 経営レベルの意思決定分析手法についても、基本の考え方に毛が生えたようなもの、と考えれば難しくはない。 例えば、予算と実績の比較、そもそも予算を作る時の考え方(過去の実績からの逆算)など。 これから身に着けていくものであるが、基本が理解できれば特段難しいことはしていないと考えている。 (基本を身に着けるまで時間がかかりそうであるが。。。)

工業簿記/原価計算の主な論点

  • 原価計算基準(理論)
  • 費目
    • 材料費・労務費・経費
    • 製造間接費
  • 製品原価
    • 実際原価計算/標準原価計算
      • 差異分析
    • 個別原価計算/総合原価計算
      • 仕損・減損
      • 連産品
    • 全部原価計算/直接原価計算
  • 意思決定会計
    • 予算管理・資金管理
    • 戦略的意思決定
      • 在庫管理
      • 価格決定
    • 戦術的意思決定
      • 設備投資
      • 資金回収
  • その他論点
    • 分権組織
    • 戦略的原価計算

費目に関する理解が根底にあり、製品原価の各種原価計算と意思決定会計がメイン論点となってくるイメージだと理解している。 とにかく社内での意思決定に関する内容に絞られるため、個人的には試験範囲は広いものの、商業簿記のような広がりは感じていない。 どちらかというと社内の意思決定に関する話に絞られているため、こじんまりとした印象である。 商業簿記は、たとえば在外子会社であったり、子会社、持分法適用会社に関する処理であったり、 多種多様な状況に応じた会計処理が用意されているイメージがあるため、試験範囲を広く感じる。 実際、動画の時間も商業簿記60時間超に対して、工業簿記は40時間超程度である。 動画の時間でいうと、商業簿記は雑談ほぼなし、工業簿記は冒頭10分程度雑談のため、実質工業簿記は30時間超程度だと思う。(商業簿記の半分) とにかく、動画の再生時間を考えても工業簿記は比較的規模が小さい。

試験とは関係ないが、工業簿記で特に予算管理の部分は実務にも応用できそうだと感じた。 計画をたて、実作業し、評価する。当たり前といえば当たり前なのだが、実際手を動かすと難しい。 特に評価の部分があいまいになりがちなのである。ソフトウェア開発においては、計画通りことが進むことはめったにない。 多少または大きく計画と外れてしまうことがある。いってしまえば成果物主義なので成果物さえできればよいのである。 企業によっては厳密に計画と実績を比較するところもあるかもしれないが、良くも悪くも私の経験上厳密な計算はしたことがない。 予算管理では、予算(計画)と実績との差異を比較し、何が悪かったかを特定し次のアクションにつなげる。 いわゆるPDCAである。PDCAというとあいまいだが、予算管理では厳密に計算方法を規定しているため、具体的なイメージがしやすい。 どこまで実務に応用できるか、という課題はあるが具体的な計算を持っていければより品質の高い仕事ができそうに感じている。

最後にまとめ。 商業簿記は仕訳けメインなので暗記の範囲が広いイメージであるが、計算は工業簿記のほうが多い。 試験範囲は狭いといえど、工業簿記でも気は抜けないのである。 ここまで2.5カ月かけて簿記1級試験の全体像を把握した。ここから問題種などを使い身に着けていく。 ここからが大変なのである。なんとなく理解している個所を突き詰めて自分の血肉にしていかなければならない。 できれば2026年11月試験で一度受験し、受かればラッキーである。受からないと思うが、試験の感触をつかんでおきたい。 なのでしばらく読書はお預けとし、勉強に専念したいと思う。また、マイルストーンが来たタイミングで本ブログを更新したいと思う。

【簿記1級】CPAラーニング"簿記1級 商簿/会計学"の動画を見た

1月~2月、このブログの更新を止めていた。意図的に止めていたというか、読書をしなくなってしまったので更新できなかった。 理由は、今年は一念発起で簿記1級の取得を目指そうと考えているため、簿記1級の勉強をしていたからである。 簿記1級は大きなテーマとして2つの出題範囲がある。商業簿記/会計学と工業簿記/原価計算である。

今回の記事は、1月~2月にかけて商業簿記/会計学について、CPAラーニングのサービスを利用し、ひとまず概要レベルの勉強(動画視聴)が完了した、という報告である。試験に受かるレベルになったかというと、座学をしただけで問題演習を行っていない、かつ工業簿記が残っているのでまだまだ。ここまで勉強した感想、簡単なまとめができればと考えている。

CPAラーニングについて

まず、教材に使用したCPAラーニングについて紹介する。CPAラーニングはCPA会計学院が運営する簿記/会計を学習できるオンラインサービスである。講師による講義動画やテキスト、問題集などを、基本的にすべて無料で利用することができる。資格試験としては日商簿記検定3級から1級をフォローしている。

個人的には2020年のリリース当初から存在は知っていたが「簿記1級の勉強が無料でできるなんてありえない」と考え怪しいサイトとしてとらえていた。簿記1級は全科目分のテキスト/問題集を購入するだけで余裕で数万円飛んでいく。とにかく試験範囲が広い。上位資格の税理士試験(のうち簿記論/財務諸表論)よりも広いともいわれる。そんな簿記1級の学習が無料でできるなんて当時は信じられなかった。今でも騙されているのではと思うことがあるくらいである。

なぜ無料なのか、裏側を考える。CPA会計学院は公認会計士を目指す諸氏が通うためのスクールである。公認会計士試験でも一部簿記を扱う論点が出題される。なので公認会計士試験からすると簿記検定は登竜門のようなもの、と考えることもできる。簿記を取得してから公認会計士を目指す諸氏も少なくはない。試験を受けなくとも、簿記1級の内容を勉強していて損はない。とすると、簿記→公認会計士へステップアップする学生や社会人をターゲットにCPA会計学院の知名度アップの広告宣伝として簿記検定講座を無料で公開するのは大きなメリットがあり、無料であることに納得できる。(にしても簿記1級はやりすぎではないか、と個人的に思う)

簿記1級(商業簿記/会計学)について

商業簿記/会計学ではどのようなことを勉強するのか、全体像について話す。大前提として簿記1級を取得するとどのようなことができるか、というと上場企業の会計処理や子会社や関連会社を持つような大企業の会計処理ができるようになる、そのようなイメージである。 なお、簿記3級では個人商店(青色申告ができる)レベル、簿記2級では中小企業(本支店があるなど)レベルのようなイメージである。近年の試験範囲の改正で簿記2級でも子会社を持つ企業の会計処理を対象としているが、簿記2級では触りのみで、本格的に学ぶのは簿記1級と考えて差し支えない。

私が学習して感じた、学習範囲の大きなくくりとしては以下である。

  • 会計学
    • 企業会計原則(さわり)
  • 商業簿記
    • 個別論点
      • 日々の仕分け
      • 個別財務諸表
    • 構造論点
      • 本支店会計
      • 在外関連会計(在外支店、在外子会社)
      • 連結財務諸表
      • その他の財務諸表(包括利益計算書、キャッシュフロー計算書など)
      • 配当

このようにまとめると至極シンプルだが、それぞれ内容がかなり濃い。細かい計算が多いが、もちろん微積分を使ったりするような高度な計算はほとんどない。また、理屈がほとんどないものもある(会社法や金融商品取引法で定められているから、どまり)。なので文系でも取り組みやすい内容であると感じた。

※上記には工業簿記の範囲は含んでいない

感想

一通り学習した感想としては、とにかく試験範囲が広い。この一言に尽きる。ただ、個別論点としてはほとんどが2級で学習済みの内容であるので、2級からステップアップとしては入りやすいのかもしれない。私が2級を取得したのは10年以上前なのでほとんど忘れてしまっていたのでほぼ1からの学習となった。動画の再生時間としては60時間以上となり、最後の講義を再生したときの達成感は大きかった。(もちろん動画を見ただけで終わりではないが)

簿記を学ぶメリットとして、会社の数字に強くなれる、とよく言うが全くその通りだと思った。特に、キャッシュフロー計算書については簿記2級まででは学習しない。1級で初めて出てくるが、計算方法を知ることで理解が深まったと感じる。 また、企業、特に上場している企業のほとんどは子会社をもつ大企業である。大企業は当たり前のように子会社や関連会社を持つため、連結財務諸表を提出する。 なので一般がみられる財務諸表(有価証券報告書)としては連結財務諸表を目にすることがほとんどである。連結財務諸表がみられるようになると、たとえばNISAなどで株式の取引をする際に、企業の財政状況を把握するハードルが格段に下がる。簿記で投資家としての財務諸表の見方を学べるわけではないが、中身を知っているのでイメージがしやすくなる。この勘定科目を上げているということは、この会社はこのようなことをしているんだろうな、など。視野の広がりを感じることができることがメリットの一つだと思う。

工業簿記が残っているため、まだ半分。また、問題演習などで身に着ける必要があるため、試験合格を目指すにはまだまだ1歩目というところであるが、マイルストーンをクリアしたのでひとまずここで記事を上げておく。

有賀夏紀・油井大三郎編『アメリカの歴史』を読んだ

 

 

 

以前『福音派』を読み、アメリカの歴史について興味を持ち、今回読んでみた。アメリカの歴史をさまざまなテーマ、切り口から紐解くような内容になっている。個人的にはやはりアメリカの歴史全般、それと宗教との関わりが気になる点として読み進めた。テーマ別に章がわかれており、各章でテーマごとの切り口でアメリカの歴史を述べており、何度も同じアメリカの歴史を追うことになり、通読するには少々退屈かもしれない。

 

テーマの入り口としては、やはり人種が最大の論点として重点的に述べられていた。人種と一言で言っても、白人黒人、ヒスパニック、アジア系、アフリカ系、先住民などさまざまな視点があることは、今まで意識できていなかった。とくにヒスパニックやラテン系アメリカ人と移民問題については興味深く読み進めた。人種と関係ないと思われる別のテーマ、例えば宗教などのテーマでも、少なからず人種差別や奴隷制度について触れざるを得ない形で触れられており、アメリカ人と人種の問題は根深い問題として捉えられているのだと思った。「アメリカ人とは何か」という問いについては、読み進めていくうちに問題点について考えさせられ、最終的に何によってアメリカ人というのかよくわからなくなった。

 

宗教については、人種問題を考えると様々な宗教が入り混じっているのに、キリスト教勢力が大きな力を持っていることについて、改めてすごさを実感できた。ただ実際のアメリカ人が宗教をどのようにとらえているか気になるところである。実際のところ、日本人にとっての神道のように、「私はキリスト教徒だ」と意識することなく生きているのかもしれない、とも考えられなくはない。無意識下で神の存在を信じているが、日常生活で教会に行くことはめったにないが、クリスマスやイースター、サンクスギビングなどの行事は積極的に参加する、というような感じなのかな、と思った。宗教というか国民性の根幹のようなものになっているのかもしれない。そう思うと、日本人にとっての神道や仏教も同様の性質を持っていると思うと、類似点を感じおもしろい。

 

キリスト教を学ぶ上でアメリカという国は知らざるをえないとおもうので、今回本書を読んでよかった。どこかで一度、アメリカの歴史を整理して自らの血肉としたいと思う。

小森裕介『なぜ、あなたはJavaでオブジェクト指向開発ができないのか』を読んだ

 

 

 

BOOKOFFで220円になっていたので購入した。私自身、実務でオブジェクト指向開発を行っていないので、この辺の知識が独学レベルでしかない。クラス図はかけても実装できないし、そもそもクラス図がちゃんとかけない。文法くらいしかわからない。

 

トランプゲームという簡単なプログラムを例に、モデリング、コード、フレームワーク化にいたるまで、具体的な実例を通して説明しているので、めちゃくちゃわかりやすい。最大のメリットは、モデリング(UML)とソースコードの対応がわかることだ。さらにいうと、インターフェースや抽象クラスをどういうときに使うか、具体的なイメージを持てるところだと思う。

 

モデリングではオブジェクト図、コミュニケーション図など、あらゆるUMLを使い順を追って設計の説明をしてくれているので、おそらくこれを読めばJavaでの設計ができそうな気がする。オブジェクトとクラスの違いも分かっていなかったが、本書で何となくイメージをつかめたと思う。ただ改めて、オブジェクト指向開発では要件定義のフェーズがめちゃくちゃ重要であることを理解した。何がやりたいか、が明確でなければオブジェクトもクラスも作ることができないと思う。

 

値上げ前に駆け込みで購入したAstah*を活用できていなかったが、これを気に使ってUMLで設計をやってみたいと思う。