トップページへ戻る
過去の日記へ


予定


博士研究員公募のお知らせ(東北大理・東大物性研) 公募締切:平成28年8月21日(日)

 上記のような公募が出ています。募集するカテゴリに(A)(B)の二つがありますが、(B)の 「MSSP構築の基礎情報を得るための超並列分子動力学シミュレーションによる気泡を含む混相流及び高分子等の添加物を含む複雑流体の解析」は、物性研の野口博司准教授、そして渡辺と共に、大規模古典MDの究極を突き詰めるのが目的です。これまでの経験等は問いませんが、並列化やチューニングなどが好きな人を歓迎します。一緒に世界初、世界一を目指す人を希望します。詳細については渡辺までご連絡ください。


7月26日(火)

 しばらく前まで、自分のことをプログラマだと思ってた。しかし今はSEだと思っている。っていうかプログラム組んでない。 仕事としては別にそれで良いと思うんだけど、これまでずっと趣味でプログラム組んでたのが全く組めなくなって久しい。

 僕が一番プログラム組んでたのは、大学生〜大学院生の頃、それもB3〜D1あたりがピークだと思う。 研究でもプログラムを組み、趣味でもプログラムを組み、バイトでも組んでた。いまから思うとプログラムはド下手だったけれど、 それでも毎日組んでた。組むだけじゃなくて、何か作って公開してた。 で、プログラムを毎日組んでると、プログラムを組み始める時に「すっ」と入れる。っていうか基本プログラミングの頭になってるので 切り替えとか必要ない。だけど、しばらく組んでないと、さぁプログラムを組もう、としたときに「よっこいせっ!」ってなる。これがたまらなく悲しい。

 プログラミングって、アスリート的なところがある。毎日組んでないとすぐ衰える。衰えると、 なんというか、勘というか、頭で考えたことがうまく手に伝わっていかない、イメージがソースに変換されない感じがあってすごく悲しい。 もちろん持って生まれた才能も関係するんだろうけど、才能云々抜きにしたって、日々の仕事の合間を縫って「よっこいせっ!」で組んでる奴は どうしたって毎日組んでる奴には絶対に勝てないんだよ。


7月25日(月)

 git diffで色がうまく出ない問題、過去にあったなと思って曰記にgrepかけたら、 環境変数LESSに-Rを設定することで解決。で、今のシステムはもともと-Mと-Iが指定されてた。 なんだこりゃと思って調べてみると、

       -M or --LONG-PROMPT
              Causes less to prompt even more verbosely than more.

       -i or --ignore-case
              Causes searches to ignore case; that is, uppercase and lowercase
              are  considered identical.  This option is ignored if any upper-
              case letters appear in the search pattern; in other words, if  a
              pattern  contains  uppercase  letters, then that search does not
              ignore case.

       -I or --IGNORE-CASE
              Like -i, but searches ignore case even if the  pattern  contains
              uppercase letters.

 とのこと。-Iは要するに「検索で大文字小文字完全無視」なのでわかりやすいが、-Mの長いプロンプトってどうなるかよくわからんな。 試してみる。一度LESSを空にしておいて、適当なファイルを作ってlessで開いて見る。

$ less test.txt
Hello World
Hello World
Hello World
:

$ less -m test.txt
Hello World
Hello World
Hello World
11%

$ less -M test.txt
Hello World
Hello World
Hello World
test.txt lines 116-138/1001 14%

 なるほど、指定無しだと何もなし(コロンだけ)。-mだとファイルの%だけ表示、-Mだとファイル名、lines、何行中何行目か、それは何%かが表示される・・・と。

 LSW理論のまとめ(PDF)が、なかなかGoogleで検索されるようにならないなぁ、と思ってたら リンク先間違ってた・・・。いや、せっかく書いたんだし、多くの人に見てもらいたいわけで。細かい式変形を追ってる文献って見たことないし、そのせいか、LSW理論の使い方に誤解があるように見受けられる文献もいくつかあるので。

 LSW理論は現象論なんだけれど、現象論は現象論の面白さがある。何を現象論と呼ぶかはさておく。 LSW理論が記述するのは、ある平衡状態から、急にクエンチして別の平衡状態へ緩和する過程なんだけれど、 この時のダイナミクスは強烈に系の詳細に依存する。依存するが、その依存の仕方にある程度(臨界現象とは異なる)普遍性がある。 特に効いてくるのが系が保存系か非保存系かなんだけれど、保存系の場合に、拡散と反応のバランスを考慮したのがLSW理論で、 そのあたりを先のノートでは丁寧にまとめたつもり。


7月24日(日)

 NOP


7月23日(土)

 NOP


7月22日(金)

 学会予稿提出した。えーと、最終日の午後?うーん。

 しかも一週間前は仙台か。

 一応仕事でコサイン類似度チェックスクリプトを作った。その目的から単純に「ある単語がその文書に出現するかどうか」のみを判定基準として、0か1のみを要素とするベクトルの内積から類似度判定をしたのだが、これだと全ての単語を同じ重みでカウントしてしまっているため、 一般にはあまり良くない。

 そこでよく使われるのがTF-IDF法。TFというのはTerm Frequencyのことで、「ある文書で頻出する単語」はその文書内で重要であると判断する。ある文書にN個の単語があった場合、ある単語がn回出現したならn/NがTF。 しかし、この曰記には「僕」といった単語が頻出するが、これらの重要度は低いと考えられる。 そこで、今度は文書全体のうち、その単語がいくつの文書に登場したかを調べる。 例えばM個の文書を調べたとして、そのうちm個の文書に登場する単語の重要度(IDF, Inverse Document Frequency)は -log(m/M)で定義される。これだと全ての文書に登場する単語の重要度(情報量)はゼロ、一つにしか出てこない単語の重要度が最大となる。

 このTFとIDFの積をそれぞれの文書における単語の重みとし、それでベクトルを作って内積を取るのがTF-IDFコサイン類似度。 これを実装し、自分の曰記にかけてみた。

 横軸は月の差で、縦軸は類似度の平均。例えば12のところは、一年離れた曰記録同士の類似度の平均。 12年弱のデータがあるので、144ヶ月分。となりの月の曰記は、1年後の曰記よりも似ている。 なんかベキっぽいな。両対数グラフにしてみる。

 あら、きれいにベキだわ。傾きは0.18くらい。だからどうってことはないんだけど。

 ちなみに単語の重みを考慮しないコサイン類似度だとベキにならず、月日がたっても類似度がなかなか下がらない。 これは「全ての曰記に共通して出現する単語」を類似判定に使ってしまっているため、類似度が嵩上げされてしまうためだと思われる。

 いや、だからべつにどうってことはないんだけれども。せっかくMeCab使えるようになったし、普段からこういうスクリプト書いていないと 精神衛生上良くないんだよ。

Shoubuプログラミング入門講座、ちょっと気になったけど、 モロに共同利用委員会にぶつかってた・・・。まーこういうのは人外にまかせて、僕は人間の仕事をしよう。

 うーん、今日も集中力が・・・


7月21日(木)

 なーんにもできないまま日々が過ぎていく。

 新手のスタンド攻撃だろうか?


7月20日(水)

 なーんにもできないまま日々が過ぎていく。


7月19日(火)

 再投稿した論文、Editorから「査読者の質問にほとんど回答していると思われるが、英語がおかしいのでなおせ」 というメール。「この英文がこうおかしい。こういう意図ではないか?」と具体例をいくつか出して指摘してくれて大変ありがたい。 僕はこれまでEditorをやったことがないが、Editorって採否の最終判断以外は論文やコメントへの返事をななめ読みして、大きな問題がなければそのまま査読者にまわしてしまうもんだと思っていた。ここまで仕事が丁寧なEditorは初めて。

 分野や雑誌にもよるんだろうけど、僕はEditorとRefereeの「ツモ」がかなり良い部類らしい。あからさまな「ハズレ」をひいたことはなく、 ほとんどの場合に真摯に論文を読んでコメントがもらえている。Editorの判断も(Reject判定も含めて)あまり理不尽に感じたことはない。 それが普通だと思っていたが、他の人はもっと変な査読レポートをもらった経験があるようだ。

 Editorの指摘に「節の番号が欠けてる」というものがあった。「そんな馬鹿な?ちゃんと確認したぞ?」と思って調べてみると、REVTeXで、documentclassのオプションに「prl」を指定すると、節番号が消え、「\ref」で参照した時も空白になることがわかった。プリアンブルに

%\documentclass[pre,twocolumn,amsmath,amssymb,showpacs]{revtex4}
\documentclass[prl,preprintnumbers,amsmath,amssymb,showpacs]{revtex4}

 とあり、印刷して確認した時には「pre,twocolumn」を指定していたので節番号がついており、投稿直前に preprintスタイルにするために「prl,preprintnumbers」の方を選んでビルドして投稿したので気が付かなかった。 「あれ?それじゃ最初に投稿した時はどうなってたんだ?」と思って調べたら

\documentclass[preprint]{revtex4}
%\documentclass[pre,twocolumn,amsmath,amssymb,showpacs]{revtex4}
%\documentclass[prl,preprintnumbers,amsmath,amssymb,showpacs]{revtex4}

 となっていて問題なかった。以前、PRLに投稿した時のスタイルをコピーして作ったため、prlのところが残っており、 再投稿時に間違えてそっちを選んでしまったらしい。最後の最後にPDFをvalidateする際に、節番号が落ちていることに気が付かなかった。 なんというか注意力散漫過ぎるな。これではダメだ。あー、cond-matのもおかしいから直さないと。

 あと、単複をよく間違えている(三単現のs忘れや、その逆)という指摘。これ、少なくとも最初は気をつけて書いてたつもりなんだけど、改訂中 に気が抜けてきたかな。こういうのがキチっとできていないのはダメだよなぁ・・・。


7月18日(月)

 NOP


7月17日(日)

 NOP


7月16日(土)

 NOP


7月15日(金)

 再投稿した気泡論文、cond-matに出た。

 再投稿にあたり、オストワルド成長の古典論である Lifshitz-Slyozov-Wagner (LSW) 理論をちゃんとマスターしたつもりになったので、 忘れないうちにノートにまとめた。→ LSW理論のまとめ

 LSW理論については解説はたくさんあるんだけど、細かい式の導出が飛ばされていたり、物理的な描像がわかりづらかったりしたので、僕の理解をもとに僕が一番わかり易いと思う形で導出しなおした。

 このノート、8頁ちょっとあって、まとめるのはそれなりに手間がかかった。で、これまでこういうノートをまとめて公開するのに疑問なんてまったく抱いたことなかったのだが、今回「こんな業績にもならんことしてていいんかな」とちらっと思った。自分の研究人生で初めてだと思う。

 自分がなんか理解したことをノートにまとめて公開するのは、おそらくKTHNY理論のノートが初めてだと思う。 理論の理解にえらく苦労したので、同じ苦労をほかの人がするのは嫌だなと思って。結局そのノートは理解が甘く、あまり公開しないほうが良いかなと思ったのでいまは公開していないが、以来、いろんなノートを書いて公開してきた。研究者になる前も、プログラムで気がついたこととかウェブで公開したりしてた。まだブログという単語もなく、最新の情報を得るのが主に技術系メーリングリストだった時代。

 自分の行動原理は第一に「自分がやりたいことをやること」で、第二に「他の人のいらん苦労を減らすこと」だった。 学会誌のスタイルファイル作ったりとか、物性研スパコンの管理とか、ポスターパネルの購入とかそういうのは全て後者から。 ノートをまとめるのもそうだったはず。

 そんな、「自分が得た知識は公開して当然」という意識に変化があらわれたのはいつごろだろう。直接の原因はやはり任期だと思う。 あと何年か以内に次の職を探さねばならない。そのためには論文をたくさん書く必要がある。質はもちろん量も。 そういう立場にいるのに、こんな評価対象とならない、計算の詳細を追っただけのノートを手間かけて公開する意味なんてあるんだろうか?と、ちらっとだけ思ってしまった。悲しいことである。


7月14日(木)

 論文再投稿覚書。

 cond-matのもreplaceした。

 J. Chem. Phys.の奴はLaTeXファイルのプロセスが非同期になってる。 つまり、ファイルがアップロードされた時点で裏でビルドが走り、それが完了していなくても投稿システムが続く。 ファイルをアップロードしてから、メタデータその他の修正でかなり時間がかかるから、最終的にPDFをvalidateする頃には ビルドが完了しているであろう、というのは合理的ではある。

 だが、Validateでミスが見つかって、そこでまた修正すると、しばらくPDFがN/Aのままになり、「Check completion」を押して手動で状態を更新しないといけない。これに気が付かなかったユーザによるトラブルは多そうな気がする。

 そもそも、ファイルのビルドを非同期にするシステムは珍しい気がする。他がどうか忘れたけど、少なくともcond-matのは同期型で、 ファイルを更新したらビルドが終わるまで次に進めない仕組みになっている。エラーが出たらその時点でわかるし、こちらの方が安全なUIデザインな気がする。

 まーとにかく再投稿が済んで肩の荷が下りた。本当はpublishするまで荷は下りてないんだけど、何しろ時間がかかったので・・・。 この論文は、もともとは2013年10月から2014年3月にかけて「京」でやった計算のデータ解析の残りだった。 その当時は7億粒子とかの計算は「京」でないと苦しかった。しかしあれから2年半、同様な計算が物性研の通常キューでできるようになってしまった(なので論文のhugeという言葉を全部消した)。これをムーアの法則というと誤用だとか怒るひともいるだろうが、とにかく国策スパコンクラスの計算が数年たったら研究所クラスのスパコンでできるようになったわけだ。ソースコードもほとんどいじってない。ユーザサイドとして「この成長がずっと続いて欲しい」と思うのは無理からぬことだと思う。

 再投稿後、svnのコミットログで、「再投稿官僚」って書いてコミットしちゃった。こういうところで落ち着いて行動しないから最後にミスが見つかるんだ。


7月13日(水)

 Perlによる類似度チェックのためString::Trigramを入れる。

$ sudo perl -MCPAN -e shell  
cpan > install String::Trigram

 これはいわゆるN-Gramのち、3-gramで類似度を測る。 こんなスクリプトを書いてみよう。

use strict;
use warnings;
use String::Trigram;

open(TEXT1, $ARGV[0]);
local $/ = undef;
my $text1 = <TEXT1>;

open(TEXT2, $ARGV[1]);
local $/ = undef;
my $text2 = <TEXT2>;

my $score =  String::Trigram::compare($text1, $text2);
print "$score\n";

 論文の改定前と、改定後の論文の類似度を測ってみる。

$ perl trigram.pl before.tex after.tex
0.68319917690492

 一つ前の関連論文との類似度。

$ perl trigram.pl paper1.tex paper2.tex
0.555984656733554

 ありゃ、続報とはいえ別論文なのにだいぶ高い値が出たな。 同じテーマを扱っていると高くなりがちなので、気泡論文とチューニング論文を比較してみよう。

$ perl trigram.pl bubble.tex tuning.tex
0.341923749562784

 まぁ、そんなもんですかね・・・。

 さっき突っ込んだのは英語だけど、判定したいのは日本語の文章なので、真面目に形態素解析するか。mecabを入れる。

$ sudo port install rb-mecab 
--->  Computing dependencies for rb-mecab
--->  Building rb-mecab
Error: org.macports.build for port rb-mecab returned: command execution failed
Please see the log file for port rb-mecab for details:
    /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_ruby_rb-mecab/rb-mecab/main.log
To report a bug, follow the instructions in the guide:
    http://guide.macports.org/#project.tickets
Error: Processing of port rb-mecab failed

 ありゃ、失敗した。ソースから入れるか・・・。

require 'natto'
text = "私の名前は渡辺宙志です。"
nm = Natto::MeCab.new
nm.parse(text) do |n|
  puts "#{n.surface}\t#{n.feature}"
end
$ ruby test.rb
私	名詞,代名詞,一般,*,*,*,私,ワタシ,ワタシ
の	助詞,連体化,*,*,*,*,の,ノ,ノ
名前	名詞,一般,*,*,*,*,名前,ナマエ,ナマエ
は	助詞,係助詞,*,*,*,*,は,ハ,ワ
渡辺	名詞,固有名詞,人名,姓,*,*,渡辺,ワタナベ,ワタナベ
宙	名詞,一般,*,*,*,*,宙,チュウ,チュー
志	名詞,一般,*,*,*,*,志,ココロザシ,ココロザシ
です	助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
。	記号,句点,*,*,*,*,。,。,。
	BOS/EOS,*,*,*,*,*,*,*,*

 ちゃんと入ったな。

 えーと、何するつもりだったんだっけ?そうだ、文書の類似度を評価するのに形態素解析した上で コサイン類似度を計算しようかと思ってたんだっけ?まぁいいか(おい)。

 ちょっと探したらここにコサイン類似度の計算コードがあったのでありがたく使わせていただく。内積なので、0に近いと似ていない、1に近いと似ている。 直近の自分の物性研の申請書を二年度分食わせてみたら、わりと高いスコアを叩きだして変な汗がでた。

 しかし、これで気軽に形態素解析できる環境が整ってしまったな。現実逃避のネタが増えてしまった。


7月12日(火)

 お客さんと久々に熱浴、というか力学系と温度の関係について議論。 これについてもいずれ続きをやりたいと思ってるのだけれど・・・。

 気泡論文、共著者から来たコメントを取り込んで原稿と返事案を修正。 これで収束したかしらん。もう少しもんだら発射しよう。


7月11日(月)

 僕はもともとはemacs(最初期はmule)ユーザだったのだが、ある時にvimを使い始めて、そのうちemacsを使わなくなったようだ。 おそらく決定的だったのはLet's noteのキー配列変更。それまで、カーソルキーとpage up/downキーは 別キーだったのだが、他のノートと同様、Function+↑↓に変えられてしまった。 僕はそれまでemacsのキーバインドであるCtrl+v/ESC+vを使ったことがなく、それにどうしても馴染むことができなかった(進むと戻るでなぜ修飾キーが変わるのか!)。それでvimになった。vimもctrlキー使うけど、進むがforwardだからf、戻るはbackだからbと覚えやすかった。

 また、当時使っていた某スパコン、ってもう時効だろうから書いちゃうけどCP-PACSのログインノードには(少なくともデフォルトでパスが見つかる範囲には)emacsなんか入っておらず、おそらくvimも入ってなく、viしかなかったので、viを使っているうちに慣れたっぽい。vimが入ってなくてviしかなかったどうかは記憶が曖昧なのだが、lessが入ってなくてmoreしかなかったので、たぶんvimも入ってなかったのだと思う。あと、初代地球シミュレータのデフォルトエディタもえらく使いづらくて、結局vi使ってたんじゃないかなぁ。かすかな記憶ではemacsなかった気がするし(これはかなり記憶が曖昧なので違うかも)。

 当時の地球シミュレータ、鎖国政策をしてて、現地にいかないと作業ができないわりに、用意されてたフロントエンドの作業環境がいろいろ貧弱だった記憶がある。

 僕が博士課程の時に使った主なスパコンは物性研、CP-PACS、地球シミュレータだが、ダントツに物性研が使いやすかった。これは別にx86だったからではない(当時はMIPSだったはず)。 これはフロントエンドにそれなりにユーティリティがそろっており、かつ「よく使う機能がデフォルトでオンになっている」ことが重要だった、と気がついたのはだいぶ後のことだった。また、「使いやすい環境」を維持するには、中の人の努力が必要不可欠なのだとも。

 僕は、知的活動は極めてナイーブなので、それを阻害する要因はたとえ瑣末であっても徹底的に排除すべきと考える。 CP-PACSはデフォルトでコンパイラへのパスも通ってなかった。「スパコンユーザなら自分でマニュアル読んでパスくらい通せ」という態度ももちろんありだと思う。でも、僕はそうではないスパコンの方が好きだし、ユーザを細かいストレスからなるべく解放してあげたい。


7月10日(日)

 NOP


7月9日(土)

 NOP


7月8日(金)

 重くのしかかっていた論文改訂が一段落ついたので、様々なプロジェクトをresume。 数独含む。

 しかしなんつーか、すごい人を見ていると、自分がほんとに無能に思えてきていかん。 なんでこの短期間にこれが理解できるの?とか、なんでこれ思いついたの?とか。


7月7日(木)

 査読の返事書き、終わったことにする。しばらく寝かせてから発射。おそろしく時間がかかった・・・。 しかし、おかげでLSW理論はほぼ完璧に理解できたはず。特に、Wagner理論はあまり理解されないまま引用だけされている印象がある。 後でノートを公開する予定。

 PDFからコピペしたらへんな文字が混ざって文字化けするように。いろいろ探した結果、ここに紛れ込んでた。

 このYoung--Laplaceの二つ目がマイナスじゃなくてダッシュになってる。最初二分法で探してたが、 miに「現在のエンコーディングで表示不可能な文字一覧」を表示する機能があった。

 しかし査読レポートもらってから返事に2ヶ月以上かかったのか・・・。ダメダメだ。


7月6日(水)

 なんか「Journal of General Physiology」というところから査読依頼が。 Physiologyって生理学?とにかく畑違いなのでお断り。ついでに「東大にはHiroshi Watanabeが死ぬほどいるので気をつけろ」とEditorに伝えた。

 わりと僕のところに人違い査読が来るんだけど、向こうさんは名前と大学名だけで名寄せしてんのかなぁ。

 誰と勘違いしてたかわかった気がする。おそらく新領域の「渡邉浩志」さんだ。まぁ、建物もお隣さんだし、間違えるのも無理は無いか。

 査読の返事書き。なんか書いても書いても終わる気がしない・・・。


7月5日(火)

 査読の返事書き、80%くらいできたかな。


7月4日(月)

 恐ろしくつまらないところで詰まって数時間無駄にする。最近こんなのばっかり。 頭が腐ってる。他の複数のプロジェクトが完全にストップしてて、こんなことに時間使ってる場合じゃないのに。


7月3日(日)

 返事書き。


7月2日(土)

 NOP


7月1日(金)

 もう7月なの?マジで?

 査読レポートへの返事書き。もう式は全て通ったので書くだけなのだが、図を作ったり表現を直したり、 あとすこし論文を読んだりしないといけないので、1,2週間はかかりそう・・・。 3月に投稿して5月に返事が来た論文なのに・・・。これ片付けないと他のプロジェクトに手をつけられないんだけどなぁ。


トップページへ戻る