年金試算プログラムとリバースエンジニアリング

年金額を試算するプログラムってどんなもんだろうと,常々考えていましたが,この度,木村剛さんの公的年金タスクフォースの活動の結果,「紙」で公開されたようです。

で,写真を眺めるといくつか分かることがあります。

写真1:
・・・
74 2.7981e-01 1.8521e-03 1.7025e-03
これは写真に写っている全ての数値が1未満なので,「なんらかの比率あるいは割合」であることがすぐにわかります。
それが74行(または75行)並んでいるわけです。3列あるので3種類の表でありましょう。列相互間にあからさまな相関関係は見られないので,これ以上はわかりません。
ですが,3×74乃至75のサイズには何らかの意味があるのでしょう。

写真2:
これは少数以下2桁,整数部最大8桁の数字の羅列のようです。なにかの金額(最大数千万円,少数以下は銭の単位)のようにも見えますが,ゼロも多数含まれています。

写真3:
FORTRANのプログラムのパンチアウトのようです。
行の先頭に「C」とあるのはコメント行です。懐かしいですね。
どうやらPSEID がゼロの時に実行されるIF文のTHEN部分がクロースアップされているようです。
読み進めると,DO文によってSが1,2,3の時それぞれにおいて,Xが15,16,・・・73,74の時全ての組み合わせにおいて,何かの計算を繰り返しているようです。あるいは積算しているのでしょう。
よく見ると,「BONUS」という配列名が見えます。これは十中八九,賞与金額のことでしょう。あるいは比率。
関連してBONUSRFという変数名も見えます。よく見ると,
BONUSRF(これはゼロか1のおそらくフラグ)とPSEID(何かのIDと思われます非負の整数値)の値の組み合わせでBONUS(S,X)に1未満の数値を代入しているようです。
( x, y)は配列ですから,これは3行×60列の表を作っていることが分かります。
やや乱暴ですが,この15〜74の1刻みの数値は「年齢」だと思います。就業者の年齢ではないでしょうか。
私の記憶では義務教育を終えるまで,就業者になれないはずです。
また,74という数字は写真1の表の最後の行の先頭にも書かれていました。これは要チェックですね。定年後15年・・・寿命(余命)でもなさそうです・・・

追記:
写真3が作り出す表は3×60(15〜74)ですから,これの結果が写真1(3列の表で74の行で終わる)であると見当を付けてもても良いような気がします。いや,逆に考えて,見当をつけたところに関連する3枚の写真なのかもしれませんね。
:追記おわり

とまぁ,FORTRANというのは素朴なもので,特にFORTRAN90未満というか以前のものは慣れてる人なら文字通り計算の手順がそのまま書かれているように読めるはずです。
ですので,たとえ紙で数百ページあろうが,ドストエフスキーの長編を読み解くよりは簡単なのです。
(プログラムには情感や主観が入り込めないため)
だから,「公的年金タスクフォース」の第2弾でわざわざ手順公開を求めるまでも無く,大抵のことは分かってしまうような気がするのですが。

私は仕事で10年も15年も前に書かれた資料やプログラムを新しいコンピュータで動くようにしたことが1度だけあります。全ての資料が揃っているはずも無く,ある程度類推して作業しました。ある意味考古学の発掘作業に近いような気もします。仮定が無ければ意味は見えてきませんし,資料が嘘を記述していることもあります。しかし真実とも言うべきプログラムの動作結果は変えようがないのです。
そういう作業では,実現される機能があるレベルを越えなければオゼゼはいただけませんね。プロですから。

やれプログラムパソコン上で読みたいだとか,データが電子データじゃないと解析にかけられないとか言う人は,大抵,自分では大きなプログラムを書いたり,いわんや読んだりしたことがないひとです。数百枚の紙の伝票を「そろばんをはじいて」計算したことが無い人です。そういう人は,「他人が書いたプログラムは詳しい仕様書がなければ読めないものだ」などと言い切ったりします。
自分で大きいものを書いた人なら同じように大きなプログラムを書いた人の意思をプログラムから読み取ることが出来ます。また計算に用いる表や,計算の途中で一時的に使用する表などの意味を汲み取ることもそう難しいことではありません。

ほんとうに「他人が書いたプログラムは読めない」のであれば,世に広まっているオープンソースなどはどうなるんでしょうか。まともな仕様書が存在する方が珍しく,あったとしても内容が更新されずに実態と合わないことが多いです。それでもオープンソース活動では見ず知らずの人がプログラムの改造や改良に参加しています。

過去には米国の暗号技術が輸出禁止の時代に,紙にパンチアウトされた膨大なプログラムリストを手で打ち込みなおして国内で使用した,というような話もあるくらいです。公的年金タスクフォースの賢方は,少し考えが甘いような気もしてしまいますね。
週に1度の打ち合わせに臨むために相当プログラムは読み込むのでしょうが,相手をうならせるくらいの質問が出せなければ,客観的には「時間稼ぎの罠にはまっただけ」ではないでしょうか。

お名前だけを拝見する限りきっと相手をうならせるような賢方なのだと信じたいところですが。

時間あたり8,000円くらい(ざっと相場の倍)いただけるなら喜んでお手伝いしますが^^
霞を食って生きてはいけませんね。

追記:
思い出したこと。
官庁での分析は2重回帰ばっかり使われると聞いたことがあります。データから恣意的に予測データを吐き出させるためのさじ加減が簡単だから,という理由だったような。
リバースエンジニアリングではあまり先入観は持たない方が良いですが,ORの基礎や予測に良く使われる算法くらいは意識して読んだほうが話は早いでしょう。FORTRANが読めるとか書けるというのは「日本語の読み書きができる」というのと同じレベルの話で,日本語で小説が書ける,簿記ができるというのとは全然違うということです。
:追記おわり