簿記2級を二ヵ月かけて合格しました

簿記2級に合格しました。 CPA ラーニングはいいぞ

試験科目 日商簿記2級
受験回数 1
合格日 2025/1/29
点数 70/100
合計費用 8,790 円
準備期間 55日間

簿記2級の難易度と試験概要

簿記 2級 | 商工会議所の検定試験によると

経営管理に役立つ知識として、企業から最も求められる資格の一つ。 高度な商業簿記・工業簿記(原価計算を含む)を修得し、財務諸表の数字から経営内容を把握できるなど、企業活動や会計実務を踏まえ適切な処理や分析を行うために求められるレベル。

という位置づけのようでした。合格点は100点のうち70点以上を取ることが条件で、

  • 3級の延長でもある商業簿記から 60 点
  • 2級から新たに登場する工業簿記から 40 点

が出題されます。

簿記 受験者データ | 商工会議所の検定試験によると、会場で受ける方式とネットで受ける方式で合格率に差があり、

  • 会場で受ける統一試験はおおむね2割だが問題セットによる分散が大きい
  • CBTを介したテストセンターで受けるネット試験は4割弱の合格率

となっています。直感的には気軽に受けられるネット試験のほうが倍率が高そうですが、統一試験のほうが難易度が高くなりがちのようでした。

統一試験を受ける理由がこの時点でなくなったので、ネット試験を受験することにしました。

勉強前の自分

4年ほど前に簿記3級を取得していました。 これに加えて、法人を3期運営していたので、仕訳を行い決算をするという実務はある程度経験している状態でのスタートです。

勉強方針

下記のようなスケジュールとなりました

簿記二級試験日までの日程

商業、工業ともに CPAラーニング|簿記や会計を完全無料で学ぶならCPAラーニング の講義、問題集、模試をメインに勉強しました。

  • 商業簿記
    • ほぼ飛ばさず、講義の動画を見ていました
    • 4~5 個の動画を見終わったタイミングで、その範囲の問題集を解き知識の定着を図りました
  • 工業簿記
    • 講義を1章進めるごとに、問題集も1章解く形で進めました
    • 個別/総合原価計算のあたりから、30分かけて1つルールが増えるだけみたいな感じになっていたので問題集を解かなくなりました
  • 模試

これらのことをほぼ順番に、1日1時間程度の勉強を目安に継続していました

かかった費用

  • CPA ラーニング ... 0 円
    • 講義動画、問題集、模試はこれメインでした
    • 全部無料なのすごい
  • パブロフ簿記2級商業簿記iOS アプリ) ... 320円
    • PCのないスキマ時間にも簿記の知識を仕入れたくて購入しました
    • すぐに全問覚えてしまいましたが、結局簿記検定自体が覚えゲーなので覚えるつもりでやってよさそうです
    • このアプリに限らず、多くのアプリは一問一答形式なので誤解しがちですが、仕訳そのものを問うのは全体の3割程度しかありません。ご注意を。
  • TACの合格するための本試験問題集 日商簿記 2級 2024年AW対策 ... 2420 円
    • 解いていてCPAラーニングの模試が難しいような気がしたので、比較のために定評のあるTACの参考書を買いました
    • 同じくらいの難易度でした・・・
  • 検定料 ... 6050円
    • 受験料に加えて、手数料が加算されているらしい(理屈がよくわからない)
    • 高いので、なるべく試行回数は増やさずに合格する必要があります
    • 一回で合格できてよかった・・・

試験本番

CBT会場に電車で向かい、会場PCから受験しました。 会場のPCはマウスが鋭敏に反応し、カーソルが大きく移動してしまうので変なところをクリックしないかと心配になりました。

速く解ききれる問題から対処するために、以下の順に問題に対処しました(かっこの中は自分で勝手に名前つけて得ます)

  1. 大問1(商業の仕訳)
  2. 大問4(工業の仕訳+総合原価計算
  3. 大問5(工業の直接原価計算・全部原価計算
  4. 大問2(商業の連結会計
  5. 大問3(商業の本店支店会計の損益計算)

この順番はCAPの試験対策編で薦められているとおりです。

仕訳と工業がかなりすんなりいった一方で、やはり連結会計が鬼門となり時間を費やしてしまいました。 それでも8割は堅い印象でしたが、採点結果はなんと仕訳でポロポロ失点があったようで7割きっかりというギリギリ合格でした。 見直しする時間をしっかり取れればよかったなあと思います。

どこで間違えたのか知りたかったのですが、試験問題や自分の回答を持ち帰ることができない規定だったのでどこ間違えたかはわからずじまいとなりました

反省

  • 短期間、短時間の割には効率よく勉強できました。CPAラーニングさまさま。
  • 試験問題や自分の回答は持ち帰れないので、本番試験での失敗は学びが少ないです
  • 連結会計のあたりは講義を見てもしっくり来ず、問題集を解いて解説読んでも自信が持てませんでした
  • 一通り講義動画を見終わった段階では範囲の広さにおののいてしまいますが、一方で一つ一つの論点から出せる問題のバリエーションは限られているようです
    • なので、模試形式や過去問を繰り返し解いて、知識の漏れをつぶしていく対策が非常に有効でした
    • あまり模試を繰り返さなかったが、倍くらいやれば本番の失点も少なくできただろうなぁと思います

感想

  • それなりの難易度の資格だったけど、しっかり予定を組み実行すれば合格まで持っていけるとわかりよかった
  • 動画で講義を学ぶことに対して懐疑的だったが、自己流で本を読むよりも講師の話すペースのほうが思考に近いと感じた
    • こういった新しいことを学ぶのには、動画でペースを掴みつつ、自分のペースで読める教科書・参考書を組み合わせて行うのがよさそう
  • 無料のコンテンツで学べてしまうのがすごい
  • 「勉強が楽しい」だけになると永遠に時間をかけるようなスタイルに落ち着いてしまいがちなので、試験のような具体的な目標に置くと引き締まるので良いと思った

ChatGPT に任せがちな話題

  • リンクトインの返信
    • 特に英語だとどれくらい深く掛けばちょうどいい距離感かがわからないので、使っちゃいがち
    • 最近はもはや日本語で下書きして、「改善点があれば指摘してください」と任せてしまうことも多い
  • 正規表現
    • しょっちゅう忘れちゃうので使っちゃう
続きを読む

小数点を桁数指定して print する

>>> import numpy as np
>>> p = np.pi
>>> print(p)  # 表示される桁数が多すぎる
3.141592653589793
>>> print(f"{p:.2f}")  # 小数点以下二桁まで表示する
3.14
>>> print(f"{p=:.2f}")  # f-string で = 指定子を用いると式(ここでは変数)が表示される
p=3.14

Cloud Build で呼び出した Python 内から subprocess でも仮想環境を使う

解決したい問題

from subprocess import run

run(["python", "-m", "hoge.fuga"])
# hoge/fuga.py
import numpy as np

を Cloud Build上で実行しようとすると

ModuleNotFoundError: No module named 'numpy'

などと言われてしまう

解決方法

こうする

import sys
from subprocess import run

run([sys.executable, "-m", "hoge.fuga"])

解説

sys.executablePython インタプリタの実行ファイルの絶対パスを示す文字列となっている https://docs.python.org/ja/3/library/sys.html#sys.executable

リンク

Cloud Functions については、 https://stackoverflow.com/questions/54938099/how-to-run-a-subprocess-inside-google-cloud-function-in-python の回答がまさにそれ。python3を使うという手もあるらしいが、現時点(2024年3月)ではうまくいかなかった

ゆっくり仕事をするインセンティブ

はじめに

早々に仕事を終わらせられるような能力があったとしても、合理的な判断をした結果、あえてゆっくり仕事をすることがあります。ここでは、労働者の立場になってみて、仕事をゆっくり行うかどうかの判断基準を検討してみましょう。

仕事を遅く行うメリット

重要な仕事だと思ってもらえる

具体的にどんなことをやったのか、どんな成果が得られたのかを知らない状態で、有能そうな人に「この仕事、意外と難しくて二徹くらいかかっちゃいました」などと言われると、とても大きな仕事を成し遂げたかのように見えます。そこに寝不足みたいな雰囲気が付いていると、なおさら苦労してやってくれたかのような感謝の気持ちが芽生えます。

これを逆手に取って、実際には簡単だった仕事の報告を遅らせることで仕事の成果を盛ることができます。ゆっくり仕事をすることで、この仕事は難しく、複雑で、重要なものなんだということを印象付けましょう。ただし、既に貴方が無能であることがバレている場合や、報告相手がその業務内容をよく理解している場合は逆効果なのでやめておきましょう。

残業代が貰える

続きを読む

airflow で CPU が100パーセントに張り付いてしまうときに見直したい設定

結論

Apache Airflow の起動時に CPU が 100% に張り付いてしまう際には、 AIRFLOW__CORE__MIN_SERIALIZED_DAG_UPDATE_INTERVAL などの設定値を変更することで改善される可能性があります:

AIRFLOW__CORE__MIN_SERIALIZED_DAG_UPDATE_INTERVAL=600
AIRFLOW__CORE__MIN_SERIALIZED_DAG_FETCH_INTERVAL=300
AIRFLOW__SCHEDULER__MIN_FILE_PROCESS_INTERVAL=600
AIRFLOW__SCHEDULER__SCHEDULER_IDLE_SLEEP_TIME=5
AIRFLOW__SCHEDULER__PARSING_PROCESSES=1

背景

極力リソースを割かずに検証を進めていた*1ため、 Apache Airflow の DB バックエンドはデフォルトの SQLite のままになっていました。 ところが、この方法は公開環境では推奨されない設定であり、

  • ジョブの並列実行ができないため、今後のデータ基盤のスケーラビリティが悪い
  • リリースのたびに過去の実行ログが消えるため、過去のジョブの動向の把握が困難になる可能性がある

という問題を抱えています。

実際、airflow web server を起動してアクセスするとこれらの設定を見直すことを促す警告が現れます。

そこで、 DB バックエンドを MySQL にするように、起動時の環境変数として以下の変更を加えました。

設定名 変更前 変更後
AIRFLOW__CORE__EXECUTOR SequentialExecutor LocalExecutor
AIRFLOW__CORE__PARALLELISM (not set) 1
AIRFLOW__DATABASE__SQL_ALCHEMY_CONN (not set) mysql+pymysql://(自前のMySQL環境への接続情報)

すると、具体的なジョブが実行されていない状態で(=scheduler の起動だけで)使用中のインスタンスの CPU がほぼ 100 パーセント使われてしまうようになっていました わかりにくい画像ですが縦軸の下端は 99.5% であり、常にほぼ 100%に張り付いていることがわかります

※この変更の導入前では、何もしない時間帯にはほぼ0で推移していました

対処したこと

https://github.com/apache/airflow/issues/13637#issuecomment-892768703 のコメントを参考にして、設定値を見直しました。 具体的には以下の設定を環境変数として追加しています*2

AIRFLOW__CORE__MIN_SERIALIZED_DAG_UPDATE_INTERVAL=600
AIRFLOW__CORE__MIN_SERIALIZED_DAG_FETCH_INTERVAL=300
AIRFLOW__SCHEDULER__MIN_FILE_PROCESS_INTERVAL=600
AIRFLOW__SCHEDULER__SCHEDULER_IDLE_SLEEP_TIME=5
AIRFLOW__SCHEDULER__PARSING_PROCESSES=1

それぞれの値の意味は https://airflow.apache.org/docs/apache-airflow/stable/configurations-ref.html を参照してください。これらの設定値を反映させることにより、100%に張り付かなくはなりました

おそらくDBアクセスに関係する AIRFLOW__CORE__MIN_SERIALIZED_DAG_UPDATE_INTERVAL あたりが功を奏したのだと思います。どの設定が最も効いたかは気になるところですが、 scheduler の設定値見直しもパフォーマンスに寄与しているはずなので、この際全ての設定を反映させたままにしておきます。

今回は Database Backend を SQLite から MySQL に変更したタイミングでパフォーマンスの限界に対面することになりましたが、データ基盤の規模やアーキテクチャに応じて、今後もこまめに設定値を見直す必要があると感じました。

*1:フルマネージドサービスである MWAA や Cloud Composer はスモールスタートには不向きと判断していました

*2:公開環境/ステージング環境で異なる設定値をデプロイ時に代入することを意図して、設定は全て環境変数に寄せています。airflow.cfg に設定する場合は、適宜読み替えてください

AHC027(マラソンマッチ)の参加者の使用言語の分布を調べてみた

競技プログラミングコンテストサイトである AtCoder のマラソン部門のコンテストが開催されていました atcoder.jp 本記事では、コンテスト参加者の使用しているプログラミング言語はどういうものがあるのかを順位から調査してみました。

本記事は、前回の調査から約二年半程度経過したということで、上位層の使用するプログラミング言語に大きな変化があったかを検討します wakabame.hatenablog.com

続きを読む