原発一機を一年間動かすとどのくらいの残土・劣化ウラン・放射性廃棄物が生じるかを計算してみた

iPad/iPhone向けに開発した計算アプリ neu.Calc。色々な使い方が可能だが、普通の電卓アプリにない機能の一つが、HTML Tableを生成する機能。計算をした後、アクション・メニューから "Mail" を選択すると、テーブルを生成してメーラーに渡す。

下のサンプルは、福島第一の2号機で一年間に燃やす核燃料(濃縮ウラン 78.4トン/年)を採掘・燃焼する過程で生じる、残土、劣化ウラン、高濃度放射性廃棄物などの量を計算したもの。neu.Calcに備わった "Solver" という機能を使って、総採掘量 66.3万トンを逆算してもとめている(差引というフォーミュラはこの"Solver"のために追加した)。

ちなみに、「地球にやさしい」はずの原子力発電が、実はちっともやさしくなんかないことがこの表を見ていただければ分かると思う。たった一基の原発を動かすために、66万トンもの土を掘り返さなければならない上に(含有率の高い良いウラン鉱脈は掘り尽くしてしまったために、今掘っている場所は含有率が低いためこんな量になってしまう)、製造過程で250トンもの劣化ウランを副産物として生み出すし(ちなみに、これは理想的な数字なので、実際にはより多い)、やっかいな高レベル放射性廃棄物が2.3トン、核爆弾の原料になるプルトニウムが0.78トン、劣化ウランと同じようにやっかいな使用済みウランが75トンも生じる。MOX燃料という形でプルトニウムを燃やすことも可能だが、単にプルトニウムを別の放射性元素に変えるだけの話で、絶対値での高レベル放射性廃棄物や使用済みウランの量を減らせる分けではない。

総採掘量(t) 662561.22 662,561.22
ウラン含有率(%) 0.05 0.05
天然ウラン(t) 総採掘量 × ウラン含有率 % 331.28
残土(t) 総採掘量 − 天然ウラン 662,229.94
U-235天然含有率(%) 0.71 0.71
U-235必要濃度(%) 3 3.00
濃縮率(倍) U-235必要濃度 ÷ U-235含有率 4.23
濃縮ウラン(t) 天然ウラン ÷ 濃縮率 78.40
劣化ウラン(t) 天然ウラン − 濃縮ウラン 252.88
年間消費量(t) 78.4 78.40
差引(t) 年間消費量 − 濃縮ウラン -0.00
使用済み核燃料(t) 濃縮ウラン 78.40
プルトニウム(t) 使用済み核燃料 × 1 % 0.78
高レベル放射性廃棄物(t) 使用済み核燃料 × 3 % 2.35
使用済みウラン(t) 使用済み核燃料 × 96 % 75.27

 


neu.Calc 1.0 リリース

Default@2x~iphone ここでも何度か予告してきた neu.Calc。ようやくiTunes ストアに並んだ。「電卓の使いやすさを維持したまま、統計や財務関連の計算がすばやくできる」ことを目指して作った今までにない「計算アプリ」なのでぜひともお試しいただきたい。電卓アプリと表計算アプリのちょうど中間に位置すると考えていただいても良いと思う。

neu.Calc をiTunesで開く(無料)

iPad/iPhone/iPod touchのいずれでも動くが、数列計算をすると、iPhone/iPod touchでは少し手狭に感じると思う。

目標の「Excelで普通の人がすることの80%ができる」段階にはまだまだ到達できているとは言えないが、まずはこの段階でリリースして、ユーザーからのフィードバックを受けて柔軟に対応して行こうと考えている。(その意味では neu.Calc ベータ、と呼びたいところだが、たぶんそれではAppleの審査は通らないだろう)。

「ちょこっとした計算をして、その結果を計算式ごとメールで送ったり、ブログに貼付ける」みたいな使い方は、今までのどんな電卓アプリや表計算アプリよりも簡単にしたつもりだ。

ちなみに、アプリには英文の説明書しか付けていないので、日本語版を読みたい方は、こちらを参照していただきたい。関数やオペレータの説明はボタンを長押しするとポップアップするが、こちらは英文のみなのでご容赦いただきたい。


iPadアプリ開発日誌:neu.Calcの特徴

今週Submit予定のneu.Calc。ようやく最後のバグも解消し、早ければ今日中にもAppleにSubmitできそうである。

今日は、「neu.Calcの特徴」を列挙してみる。

特徴1. リスト(数列)演算が出来る

neu.Calcが従来型の電卓と大きく異なる点の一つが、リスト演算の機能である。たとえば、7人の生徒の数学の点数の平均を知りたければ、数列を入力してから "avg" ボタンをタップすれば良い。

M1 (45, 55, 58, 62, 72, 80, 100) avg 67.43

同じ様に、予想されるキャッシュフローの内部収益率(IRR)を求めたければ、そのキャッシュフローを数列として入力してから "IRR" ボタンをタップすれば良い。

M1 (-1000, 300, 300, 300, 300) IRR 0.0771

特徴2. ラベルと参照

neu.Calcは、"=" ボタンをタップするたびにフォーミュラ(式)が作られ、それに自動的にM1, M2, M3、とラベルを付ける。各フォーミュラの計算結果は、別のフォーミュラから参照が可能である。

M1 45, 55, 58, 62, 72, 80, 100 45.00, 55.00, 58.00, 62.00, 72.00, 80.00, 100.00
M2 M1 avg 67.43
M3 M1 sum 472.00
M4 M1 stdev 16.97
M5 60, 52, 50, 70, 100, 74, 95 60.00, 52.00, 50.00, 70.00, 100.00, 74.00, 95.00
M6 M1 correl M5 0.75

1000ドルの初期投資で4年間の間300ドルの収入が得られる場合、6%の金利での NPV(現在価値) を求める場合は以下のようなフォーミュラを使う。

M1 -1000 -1,000.00
M2 300 300.00
M3 M1, M2 rep 4 -1,000.00, 300.00, 300.00, 300.00, 300.00
M4 6 % 0.06
M5 M3 NPV M4 39.53

 

特徴3. ソルバー

ソルバーは、線形計算に便利なツールである。線形方程式の答えを求めたい場合、まずは適当な初期値をフォーミュラとして入力し、次に片側がゼロになるように変形した線形方程式を別のフォーミュラに入力する。

簡単な例として、"x * 25 = 100" という式の答えを求めるための準備をする(M1に入力する10.0は初期値)。

M1 10 10.00
M2 M1 × 2.5 − 100 -75.00

式の答えを求めるには、フォーミュラM1の "Edit" ボタンをタップし、次にフォーミュラM2の "Solve"ボタンをタップする。すると、neu.Calcは フォーミュラM2 の結果が0になるような値を探し、それを フォーミュラM1 の中身と置き換える。

M1 40.00000000 40.00
M2 M1 × 2.5 − 100 0.00

より複雑な例として、先のキャッシュフローのフォーミュラを再利用する。

M1 -1000 -1,000.00
M2 300 300.00
M3 M1, M2 rep 4 -1,000.00, 300.00, 300.00, 300.00, 300.00
M4 6 % 0.06
M5 M3 NPV M4 39.53

これと同じ条件で、毎年最低限どれだけの収入を得なければならないかを求めたいとする。その場合は、初期値として300が入力されているフォーミュラM2の"Edit"ボタンをタップし、NPVを求めているフォーミュラM5の"Solve"ボタンをタップするとその値が求まる($288.59)。

M1 -1000 -1,000.00
M2 288.591492373 288.59
M3 M1, M2 rep 4 -1,000.00, 288.59, 288.59, 288.59, 288.59
M4 6 % 0.06
M5 M3 NPV M4 0.00

 


iPadアプリ開発日誌:「計算アプリ」の名称とロゴ決定

Icon@2x 今週末にはアップルの審査へ申請予定のiPad/iPhone向け「計算アプリ」。ようやく名称とロゴが正式に決まった。名前は「neuシリーズ」ということもあり neu.Calc に決定。ロゴは一目で「計算アプリ」だということが分かるように演算記号をあしらった。

残るはUIの微調整とテスト。まだ若干やり残したところもあるが、そんなことを言っているといつまでもリリースできないので、例によって、まずは基本的な機能が動いたところでリリースして、ユーザーの声を聞きながら改良して行くという「ship early, ship often」のポリシーを実践。

ちなみに、科学技術計算に加えて、投資判断などに必須なディスカウント・キャッシュフローやローン計算などのファイナンシャル系の関数も充実させたので、経営学の勉強や授業にも役立てて欲しいと考えている。


iPadアプリ開発日誌:計算アプリ(その3)

開発中のiPad/iPhone向けの計算アプリだが、「計算式と結果をメールで送りたい」という相棒の要望に答えて実装した。各行のラベル・計算式・結果からHTMLのテーブルを作りそれをメーラーに渡すだけ。

"1+1"の計算をした結果をメールで送ると、こんなテーブルが作られる。

M1 1 + 1 2.00

"M1"は一行目に自動的に付けられるラベル(行の名前)である。その結果にさらに "+2"を足した場合、こうなる。

M1 1 + 1 2.00
M2 M1 + 2 4.00

二行目が一行目の結果(M1)を参照していることが分かると思う。ラベルは自由に書き換えることができるので、それを応用して以下のような表を簡単に作る事ができる。

放射線強度 3.8 3.80
屋外活動時間 8 8.00
屋内被曝率 40 % 0.40
終日被曝量 放射線強度 × (屋外活動時間 + (24 − 屋外活動時間) × 屋内被曝率) 54.72
年間被曝量 終日被曝量 × 365 19,972.80

だいぶ形になって来た。来週ぐらいにはアップルの審査に提出できると思うので、乞うご期待!


計算言語 neu

先日も述べた様に iPad 用の計算アプリを作っているのだが、「電卓のように手軽に使えるけど、Excelで普通の人がすることの80%は出来てしまう」という目標をを達成するために、色々な工夫をしている。その一つが、計算言語の定義だ。特に名前は付けていないが、仮の名前として neu と呼ぼう。

ご存知のように、電卓に

1 + 2 = 

と打てば、3という答えが出て来る。

1.5 sin =

と打てば、sin(1.5)を計算してくれる。厳密な意味での「プログラミング言語」とは呼べないかも知れないが、「あるシンタックスに従ってキー入力すれば、何らかの計算をしてくれる」という点では、広い意味での「言語」とも読んでもバチは当たらないだろう。

では、さっそく計算言語 neu の定義をしてみる。

  • "+"の様に右と左に置かれた二つの数値にから一つの数値を導き出すものをオペレータと呼ぶ。"-"、"x"、"÷"、"y^x"、"x√y" などもオペレータである。
  • "sin"の様に左に置かれた数値から別の数値を導きだすものをファンクションと呼ぶことにする。"cos"、"tan"、"1/x"、"log"、"!" などもファンクションである。
  • ファンクションは常にオペレータよりも先に実行される(2 + 1.5 sin は、先にsin(1.5) を計算してから、それを2に加える)。
  • 複数のファンクションが連続する場合は、常に左から右に順番に実行される。オペレータも基本的には左から右に順番に実行されるが、"+"と"-"だけは例外的に他のオペレータよりも後から実行される。
  • ファンクションやオペレータの実行順をコントロールしたい場合は括弧を使う。

これだけだと今までの電卓と変わらず、表計算のようなことはできない。表計算に近いことをするために、「リスト」というコンセプトを導入する。

  • リストは、数値の1次元配列(数列)である。
  • リストは、数値もしくはリストを "," オペレータで接続することにより定義する

すなわち、

    1, 2 =

とすれば、リスト [1, 2]が返される。

    1, 2, (3, 4 + 5) =

とすれば、リスト [1, 2, 3, 9]が返される。

多くのオペレーターや関数は、リストをそのまま扱うことができる。

    (1, 2, 3) + 5 =

とすれば、リスト [6, 7, 8] が返される。

    (1, 2, 3) + (10, 20, 30) =

とすれば、リスト [11, 22, 33] が返される。

さらに、リスト専用のオペレータや関数も導入が可能になる。例えば、

    (10, 20, 30) avr =

とすると、三つの値の平均(20)が返される。

    (10, 20, 30) stdev =

とすると、三つの値の標準偏差(8.16)が返される。

    (30, 20, 10) sort =

とすると、順番に並び替えて、リスト[10, 20, 30]を返す。

数値からリストを作る関数もある。たとえば、

    10 [...x-1] =

とすると、リスト[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]が作られる。

これを応用して、

    (10 [...x-1]) x (10 [...x-1] + 1) =

とすることにより、n*(n+1) の数列(ただし、n は 0から9まで)などが簡単に生成できる。

◇ ◇ ◇ 

なぜこんなことをアプリのリリース前に書いたかというと、「これぐらいの説明をざっと読んだだけでどのくらいの人たちに、この言語のポテンシャルを理解してもらるか」を知りたいからである。上の説明を読んだだけで、「これはすごい、ぜひとも使いたい」と言っていただけるのであれば良いが、「これを読んだだけでは、どこが良いのかさっぱり分からない」という意見が多いのであれば少し考え直さなければならない。


iPad向けの計算アプリを開発中

少し前からiPad向けの「計算アプリ」を開発中だが、ようやく形になってきた。iPad向けの電卓アプリはすでに数多くあるが、基本的にはどれも従来型の電卓を「アプリ化」したものである。ちょっとした計算にはそれで十分だが、少し複雑なことをしようとすると、やはりExcelやNumbersなどの表計算アプリが必要、というのが現状である。

しかし、表計算アプリを使いこなすのは電卓と比べてかなり敷居が高いし、モバイル環境で"Quick-and-Dirty"な計算をするには"Overkill"である(Quick-and-DirtyもOverkillも米国のプログラマーが良く使うスラングなので覚えておいた方が良い。"Quick-and-Dirty"は「その場しのぎの」「やっつけ仕事の」ぐらいの意味。"Overkill"は「巨大すぎて・機能が多すぎて、かえって使いにくい・使えない」の意味)。

それならば、「Excel並みの機能を備えながら、電卓のように手軽に使える」アプリを作ることができれば、多くの人たちに使ってもらえるのでは、と始めたのがこのプロジェクト。実際にExcelと同等の機能をすべて詰め込む事は現実的でないとしても、普通の人がExcelを使ってやることの8割がカバーできれば十分だろう。

計算ロジックの実装は順調に進んでいるのだが、UI/UEの最後の詰めがななかな難しい。せっかくの機能もユーザーに使ってもらうことが出来なければ、ないのも同じだ。

ちなみに、今日は、最終出力の部分の実装をしている。下はその出力例。年間の累積被曝量を20ミリシーベルトに抑えるためには、空間の放射線強度を毎時3.8マイクロシーベルト以下に抑えるべき、という文科省が出した数字を検証している。

Neu.Notes+ (1)

計算結果は Copy&Paste でneu.Notes+に渡して、後から注釈を加えたりなどができるように作っている。まずはシンプルな無料版からリリースする予定なので乞うご期待。