ラベル IT の投稿を表示しています。 すべての投稿を表示
ラベル IT の投稿を表示しています。 すべての投稿を表示

2019年11月17日日曜日

公認会計士試験の受験番号の仕組み(関東財務局の場合)

公認会計士試験の受験番号には規則性があるため、受験番号を見ればある程度の情報がわかります。
受験番号は6桁ありますが、少なくとも平成29年以降の3年間は次のような意味があるようです。

  • 1桁目 願書提出期(12月短答→1、5月短答および過年度→2)
  • 2桁目 選択科目(経営学→1、経済学→2、民法→3、統計学→4、過年度?→それ以外)
  • 3桁目 出願方法(書面出願→0~4、インターネット出願→5~9)
  • 4桁目以降 個別番号
2桁目は選択科目を指しているようなのですが、5~9までの数字の使い方は不明です。5月願書の方に振られていることが多いので過年度生の番号のような気もしますが、12月願書にも若干含まれているので、一概にはなんとも言えません。
いずれにしても何らかの免除科目があることを示しているのではないかと思います。

たとえば、12月で経営学のネット出願は115xxx~119xxxになります。5月で統計学の書面出願は240xxx~244xxxになります。

合格率の解析(プログラミング的な話)

関東財務局の受験番号には上記のような特徴があるため12月と5月の短答合格者の受験番号と論文合格者の受験番号を突合させることで、いろいろなデータを取ることができます。

12月生と5月生の受験番号は短答でも論文でもその年度に受ける限りは同じ受験番号になります。なので、短答の合格発表に記載された受験番号が論文の合格発表にあるかどうかをチェックすることで、それぞれの受験者数と合格者数を把握することができて、合格率を求めることができます。
過年度生については、事務局から各財務局ごとの論文受験者数が出ているので、ここから12月と5月の短答合格者数を差し引くことで、過年度の受験者数を推定することができます。実際には欠席者がいるため短答に合格した全員が論文試験を受験しているわけではないと思うので、過年度生の数字は少なめに計上されることになると思われます。
短答合格者の論文欠席者を把握することは困難であり、実際は極めて少ないと思われるので、集計では無視することにします。

このロジックを理解したら、次の手順でデータを加工していきます。
  1. 事務局発表の12月短答、5月短答、論文のそれぞれの合格者受験番号(PDF)を入手
  2. PDFから受験番号をクリップボードにコピーして短答合格者(12月、5月合算)および論文合格者ごとにファイルを分けてメモ帳に貼り付け
  3. メモ帳上で不要な文字を削除(手作業と置換<Ctrl+H>を使う)
  4. 受験番号だけになったテキストを保存してLinuxへコピー
  5. Linux上でsedを使い、さらにテキストを整形
  6. 短答合格者の受験番号と論文受験者の受験番号をプログラムを使って突合させて次の出力を得る
    1. 12月短答に合格した人数と、その中から論文に合格した人の数
    2. 5月短答に合格した人の数と、その中から論文に合格した人の数
    3. 1および2以外で論文に合格した人の数
  7. プログラムが出力した数値をExcelに手入力して見た目を整える
データの前準備に手間がかかっています。すべてをプログラムにやらせることもできると思いますが、プログラムが得意なことと人間が得意なこと、またはExcelの方が得意なこともあるので、適材適所でツールを使い分けるのがコツです。

PDFからコピペしてくると受験番号が「第11xxxx号」と表記されるので、「第」と「号」を消してやる必要があります。日本語の置換機能はメモ帳が一番得意なのでメモ帳にやらせました。メモ帳で開けないくらい大きなデータになるとプログラム等にやらせるとおもいます。
変換しただけでは受験番号が1行に複数書かれている状態だったりPDFからコピペしたことで改行がおかしい時もあります。最終的には1行に1つの受験番号が書かれたデータがあるとプログラムでやることを減らせるのですが、メモ帳はこの作業が苦手です。
得意なのは正規表現が使えるsedやawkといったツール。プログラミングでもできますが、プログラムに書くとデバッグの範囲が増えるため、先にsedでデータを加工しておきます。
1行ごとに受験番号を配置して、改行コードを修正し、不要なスペースやタブを削除して、空の行を削除するsedは以下の通りです。
# sed -e 's/ /\n/g' 【入力ファイル】 | sed -e 's/\r//g' | sed -e 's/[<space><tab>]//g' | sed -e '/^[<space><tab>]*$/d' > 【出力ファイル】
こうして、1行に1つの受験番号の書かれたファイルを作成することができました。

あとはプログラムです。
やり方はいろいろあると思いますが、私はruby使いなので、
  • ハッシュクラスを作り、「受験番号」と「短答合格フラグと論文合格フラグの配列」のハッシュを入れる
  • ハッシュを再展開して12月、5月、それ以外に分けて短答合格者数と論文合格者数をカウントする
  • 集計結果を出力する
といった感じの3ステップで作りました。
pythonユーザはdictクラスが使えるからもっと楽でしょう。

こんな感じであらかじめメモ帳や正規表現を使ったデータ加工をしておけば後のプログラミングが楽になります。
特に正規表現は強力なツールです。絶対覚えましょう。

Excelの処理については割愛します。

2019年10月18日金曜日

海外から日本のVODを見る方法

以前にインド出張したときの経験ですが、海外からの日本のVODへのアクセスは、基本的にはダメです。IPアドレスで制限されていることが原因なので、プロクシかVPNを使えばなんとかなります。
インド出張の時は自宅にVPNルータがあったので、固定IPのプロバイダと契約してVPN経由で日本のコンテンツ見れたりしました。
引っ越しでフレッツを解約してVPNルータを置けないので、今回はVPNサービスを利用することにしました。

VPNサービスについてはググるなりしてもらうとして、VPNサービスを使えばいくつかのVODはみられるようになりましたが、一つのIPを複数ユーザでシェアするようなVPNサービスでは、そのIPがVPNのIPだと特定されてしまうみたいで、一時的に使えてもしばらくすると使えなくなるというようなことがありました。

最終的には1契約に1つのIPを割り当ててくれるVPNサービスを契約することで、なんとかなりました。

それでもRadikoだけは要注意です。
Androidのタブレットで視聴しようとすると、GPSで位置情報を取得できないと視聴できないようです。おそらくiPhoneなども同じかと思いますが。
PC版は位置情報を取得しないので、パソコンで視聴する分には大丈夫です。
ただし、IPアドレスで地域をチェックしてるから、VPNサービスのサーバが置かれている地域のラジオのみが視聴できるようになります。
ほとんどは東京になるかと思います。

いずれにしても利用規約などで禁止している場合があると思いますので、海外から視聴する場合は自己責任でお願いします。

2019年10月7日月曜日

プログラミングの話

何かのデータを処理するとき、まずはExcelを使って作業しようと考えるのが一般的だと思いますが、プログラムを書ける人は、それをプログラムにやらせてみようと考えることになると思います。
でも、実際プログラムを書くとなるとコーディングやテスト、デバッグのための時間と手間がかかるので、そのままExcelで作業を続けるか、手間をかけてプログラムを書くかどちらが時間と手間をかけずに目的を達成できるかを天秤にかけてどちらかを選ぶことになります。
その結果、プログラムを書くほどではないなと思えばそのままExcelで処理しますし、プログラムを書けば効率よいと思えばプログラムを書きます。
プログラムに適している作業はこんな感じです。

  • データの量が多い
  • 手作業によるミスをしたくない
  • 同じ処理を反復的に行う

自分は独学でRubyの勉強してRubyはそこそこ書けるようになりました。ですが、最近Pythonの勢いがすごいので、ちょっと気になってます。
だけど今のところはPythonの勉強をしようとは今のところ思いません。同じことがRubyでできてしまうので、Pythonを覚える手間と天秤にかけて今のところは覚えないという結論に至ってます。
Pythonにしかないライブラリがあったとしても、しばらくすれば有志がRuby用のライブラリを作ってくれます。使い勝手はPythonにはかなわないかもしれないけど、使えるのであれば問題ないと考えると思います。
あとは、部分的にPythonのモジュールを使うかもしれないけど、メインの部分はRubyで作るなどの方法を考えるかもしれません。
たとえRubyが使えずにPythonしか使えない環境しか用意されてなかった場合、さっさとRubyをインストールしてRubyでコードを書き始めると思います。

チームで開発しているとか、お金もらってコード書いてるとかでなければ、これで済んじゃいます。

言語は何でもいいので、プログラミングについては、以下の概念を押さえておけばほかの言語への応用が利くと思ってます。

  • データ型
  • 変数のスコープ
  • 制御構造
  • 正規表現
  • 例外処理
  • モジュール化

会計(監査)ツールとしてのPowerShell(AIもあるよ)

はじめに 会計に携わる人であれば仕訳帳や総勘定元帳を使った分析は一度はやったことがあるかと思います。一方で仕訳帳や総勘定元帳は財務報告に必要な限定的な情報が記録されているに過ぎないため詳細な情報を得ることは難しいです。 ある程度の規模の会社になると、基幹システムが導入されており、...