Bluepostech

まじめなことを書きます

ドラえもんのエネルギー収支

あまり知られていないことだが、ドラえもんはきわめて優れたエネルギー装置である。子育てロボットにしてはいささかオーバースペックで物騒な気もするが、現実離れした原子炉*1を装備しており、食べた物質をすべてエネルギーにすることができる。

アインシュタインの有名な公式
E=mc^2
から、すべての物質は質量×光速度の二乗というすさまじい量のエネルギーを持っている。これは一円玉1枚でTNT火薬何トン分にもなる量だ。食事は普通の人くらい食べるドラえもんはどれほどのエネルギーを摂っていることになるのだろうか。

まず、「ドラえもんは成人男性と同じ量の食事をとる」と仮定しよう。ネットで検索すると、成人男性はおおよそ1日1.5kgの食物を食べているらしい。1食500gと考えると妥当だろう。

1.5kgの物質が持つエネルギーは
E=1.5\times(2.9979\times10^8)^2=1.35\times10^{17}[\mathrm{J}]
になる。日本の年間一次エネルギー消費量が1.85\times10^{19}[\mathrm{J}]*2なので日本全国で消費される一次エネルギー2.6日分をドラえもんは1日で消費することになる。単位をワットに直すと、
\frac{1.35\times10^{17}}{24\times60\times60}=1.56[\mathrm{TW}]
となる。*3原発1基の発電量が数[GW]と考えるとどれほどの量かがわかるだろう。

当然エネルギーのすべてを使い切るのは難しいだろうから、ドラえもんにも廃熱というものがあるだろう。仮にドラえもんの熱効率が50%で残りは熱輻射として排熱されるとしよう。このとき1[m]の位置でドラえもんから感じられる熱は
\frac{0.5\times1.560}{4\times3.14159}=62[\mathrm{GW/m}^2]
にもなる。太陽光のエネルギー密度で1[\mathrm{kW/m}^2]だから、その10万倍だ。虫眼鏡で集める程度でも紙が焦げるので、これではドラえもんの周囲1mが丸こげになってしまう。

なのでおそらくドラえもんは日本全国で消費される量の2倍もの膨大なエネルギーを何らかの形で消費しているのだろう。よく考えてみれば四次元ポケットという空間を切ってつなげてしまうような道具も多用しているので、その充電といった形で消費しているのかもしれない。しかし、四次元ポケットをはずしたシーンもあることが説明できない。そのため結局どのようにエネルギーを消費しているのかは不明である。

*1:最近は例の事故もあってこの記述は削除されているらしい。

*2:http://www.globalnote.jp/post-4911.html

*3:1[\mathrm{TW}]=10^{12}[\mathrm{W}]

【win10】インラインでemacsが使えない【解決済】

今年初めての投稿で縁起がよくない記事だが、どうしても解決しないので投稿しようと思う。

先日windows10のPCを購入し、開発環境を整えようとしたのだが、今まで使ってきたEmacsがうまく動く方法を見つけることができなかった。その顛末をまとめようと思う。

1.bash on windows

windows10の最大の目玉といっていい機能が、bash on windowsだ。これはwindowsでネイティブなbashやapt-getが使える機能で、当然Emacsも使用することができる。

bash on windowsEmacsやその他gccなどソフトを使うことができた。しかしひとつ決定的に困ったものがある。それは、cygwinでの「cygstart」に相当するものがないということだ。
cygwinでは、たとえば

cygstart ./

でカレントディレクトリをエクスプローラで開くことができる。またパスを指定すればそこを開くこともできるし、ファイルを指定すれば対応するソフトで開くことができる。

bashでもexplorerを直接うちこめばエクスプローラを開くことができる。しかしbash on windowsdosのシステムとパスの指定の仕方がことなるので、パスを指定しても読み込めず開けないのである。
また、表記が欠けたりとbash on windows自体まだ発展途上な部分がある。

追記(2017.09.17):Powershellでは次のコマンドでカレントディレクトリをエクスプローラで開くことができる。

explorer .

2.MSYS2

結局bash on windows以外の環境をいれることになったのだが、MSYS2がいいと聞いたので使ってみることにした。

MSYS2はMinGW系のパッケージで、minttyというcygwinと同じターミナルソフトからLinuxライクなターミナル環境を構築するパッケージだ。
これでpacmanを使ってEmacsを入れてみた。すると別ウィンドウで開くGUIでは使うことができた。

Emacsをインラインで使う場合は-nwというオプションをつければよい。しかしそれではエラーメッセージが出て起動できなかった。

調べたところ、win8からminttyの入出力の問題で対話型ソフトがほとんど使えないらしい。しかしそれを修正するwinptyというラッパーができているとのことだったのでインストールして使ってみた。すると起動できずにプロンプトに戻ってしまい、その上入出力がめちゃくちゃになってしまった。pythonなどに対しても同じことになったのでwinptyの問題らしく、winptyをpacmanではなくソースからビルドしたりもしてみたが、直らなかった。それにそもそもMSYS2もcygstartは使えない(ただし調べていないだけで調べればそれっぽい機能はあるかもしれない)。

2017.02.08 追記:windows7でも同様の問題を確認した。さらにMSYS2ではリンクを張るのが少々面倒なようだ。

3.cygwin

というわけで、結局cygwinを入れてみた。インストールの仕方はwin7と変わらない。インストールはうまくいった。しかし動作はもっさりする。

まずはapt-cygからEmacsを入れてみたが、起動せずにそのままプロンプトに戻るという状態だった。しかしpythonは使うことができた。

cygwinにもwinptyをビルドしてみたが、MSYS2の場合と同じことになった。またソースからビルドもしてみたがうまくいかなかった。

4.AtomEmacs

というわけでEmacsCUIで使うのは断念して、Atomに乗り換えてみることにした。

Atomもインラインで使うことはできないが、コマンドラインから起動することができる。なので現在はcygwinからatomを起動して使っている。

AtomにはEmacsに近いキーバインドを使うパッケージatomic-emacsが用意されている。コメントアウトするときのM-;などが異なるが、大まかには同じようなショートカットが使える。

というわけなので、もしwindows10のLinuxライクなシステムでいい感じにEmacsCUIで使える方法を知っている人がいたら教えてください。

2017.10.14 追記
BoWのアップデートで解決しました。
bluepost69-tech.hatenablog.com

【python】matplotlibがdvipngを見つけられない

最近理論の話が続いたのでプログラムの話に戻ろう。

先日matplotlibを使ったpythonコードを移植しようとしたところ、以下のようなエラーを吐いて動かない、ということがあった。

Could not obtain dvipng version

直訳すると「dvipngのバージョンを特定できない」というような意味だが、実はそうではないらしい。

そもそもdvipngとはtexで出力に使われるdviをじかにpngに変換するソフトで、一度このブログでも取り上げている。texliveに含まれているソフトで、texliveをインストールすれば一緒に入ってくる。
移植先の環境にはtexliveがすでに入っていると思っていたのだが、まずwhichでdvipngを調べても入っておらず、platexを調べても入っていないことがわかった。

そこで「dvipngだけ入ればいいや」とdvipngだけインストールしようとしたら、今度はlibkpathseaだったかがないというエラーが出た。仕方なしにtexliveをまるごと入れると、無事matplotlibまで動くようになった。

ごく簡単なことだが、エラーメッセージで検索をかけると英語のページしか出てこなかったので。