2010-08-17

第0回『ガロアの群論』読書会、第1-3章読書ノート公開

第0回『ガロアの群論(ブルーバックス)』読書会 まとめ - ツルマウソフト

第0回『ガロアの群論』読書会というのに参加しました。もうひと月前の事なんですが、読書ノートをちゃんとまとめて無かったので、ざっくりまとめたPDFを公開します。
たぶん『ガロアの群論』を読んでないと意味不明ですが、最後の「方程式の係数」「対称式」などの相関図は読んだあとに見直すと頭の中が整理できるかなーと思います。

ガロアの群論(1−3章)読書ノート(PDFリンク)


あ、『ガロアの群論』は講談社ブルーバックスの群論初心者向け解説書です。ふつうの数学書では省いてしまうような具体的計算を丁寧にしてくれて、私のような凡人には有難い本です。数学好きで「ガロアが五次方程式に解の公式が無いことを証明して、その過程で群論が発明されたってことは知ってるけど、いまいち詳細が分からなくてすっきりしない」って人にはおすすめです。

明日(18日)、第1回『ガロアの群論』読書会があるので、急いでまとめてみました。気分は8月31日の小学生。

【定期】明日18日、第1回『ガロアの群論(ブルーバックス)』読書会を開催します!場所は前回と同じエクセルシオールカフェ赤羽東口店にて、時間は13〜15時です。飛び入り参加も歓迎です。第0回のまとめ→ http://bit.ly/9GBaxu
Twitter
追記:PDF内の相関図だけキャプチャして載せときます。あくまでザックリ。
『ガロアの群論』1−3章 各概念の相関図



2010-08-12

「お前のブログをePubにしてやろうかぁ!」、feed2epub-clj作りました。

deltam's feed2epub-clj at master - GitHub

RSS2.0とAtomのURLを指定して、そのフィード内容をePubにするツールを作りました。
上リンクのダウンロードから、feed2epub-clj-0.0.2-alpha-standalone.jarを持ってくればJava実行環境だけでMac、Win関係なく動かせます。もろもろ至らない点はありますが、とりあえず使えるので公開してみました。

text2epub-cljと同じくシンプルなコマンドラインツール。

これで実際に配信されているブログ記事をePubにするのを説明します。
サンプルとしてコトリコさんのrss2をePubにしてみました。


$ java -jar feed2epub-clj-0.0.2-alpha-standalone.jar "http://d.hatena.ne.jp/kotorikotoriko/rss2"


これで”コトリコ.epub”が作られるので、iTunesにドラッグアンドドロップしてください。あとはiPhone/iPod touchで同期させて、iBooksで開けるか確認。
こんな感じで表示されます。





以下、このツールについて少し。

「これって単にiBooksがRSSリーダになっただけじゃないの?」っていうのはちょっと違います。目次の画像をよく見てもらうと分かりますが、RSSリーダみたいな新→旧ではなく旧→新に並んでます。
Blogってサイトの更新情報を配信することから始まりました。だから基本的に読み捨ての情報を書くためのメディアでした。しかしブログがこれだけ普及すると、繰り返しなんども読みたいような文章を書く人が出てきます。
具体的にはこのid:kasawoさんのブログ。

傘をひらいて、空を

これって過去ログ含めて全部読み直したいレベルの文章群です。
でもブラウザやRSSリーダの制約で過去記事が読みにくいのはムカつく。なにより勿体無い。
つーことでこのツール作りました。

あとAtomPubとかも調べているので最終的にブログ全記事をePubに出来るようにするする予定です。

はてなダイアリーAtomPubとは - はてなキーワード

2010-08-04

秀吉とMapReduce

高校のとき数学の先生がよく授業の合間に雑談をしてくれた。そのなかで聞いた豊臣秀吉の話しが面白かったのでいろいろ絡めて紹介。

あなたはいきなり鬱蒼とした森に連れてこられて、「あの山に生えている樹の本数を可能なかぎり正確に数えてこい」って命令されたらどうしますか? もちろん秀吉の話しなので部下はそれなりにたくさん居るとします。

山の表面積を計測して、ランダムに区画を選んでその中の樹を数えて、ひと山の概算をしますか?
それとも部下を何グループかに分けて麓から地道に樹の本数を数えながら登らせますか?
秀吉はどっちの方法もとらず、さらに精度が良い方法で樹の本数を部下たちに数えさせました。

それはこんな話し。

豊臣秀吉はあるとき、一つの山に何本の樹が生えているか調べるという任務を仰せつかった(理由は建築資材の見積もりだったかな?)。ひと山は広い。いちいち数えていたのでは何日経っても終わらないし、重複して数えるミスも出てくるだろう。

秀吉はどうしたか。

まずたくさんの紐を用意した。そしてその紐を部下たちに配りこう言った。
あの山にある樹に紐を縛り付けてこい、ただし一本の樹に紐は一本だけしか縛ってはいけない
たくさんの部下たちを動員してもう縛り付ける樹が見つからないほどその作業を続けた後、今度はこう言った。
樹に縛り付けた紐を解いて持ってきなさい
そして秀吉は集めた紐の数を数えてひと山の樹の本数を調べた。

これは数学における1対1対応の応用である。秀吉はとても数学的な思考力を持った武将であった」と数学の先生は最後に付け加えた。



これってMapReduceの考え方とも似てないだろうか?

MapReduceっていうのは、Googleが膨大なサーバ群で分散処理を実行するときに使われているプログラミングフレームワーク。

MapReduceでは処理するデータをKey-Valueの組みとして扱い、それをプログラマが書いたMap関数とReduce関数で処理していきます。
ラフに説明するとMap関数では「Keyの値ごとにValueをどう処理するか」を書いて、Reduce関数では「処理結果を各Keyに対してどのように集計するのか」書く感じ。


MapReduce論文(PDF)
のP.3, Figure 1の処理手順を書き出して、それに上記の秀吉の数え方を対応させてみよう。処理の詳細は同論文の”3.1 ExecutionOverview”から抜粋。
  • Input files
    • MapReduce(以下MP):処理するデータを一定サイズに切り分ける
    • 秀吉: 兵たちに紐を配る
  • Map phase
    • MR : 複数のWorkerがUser Programに従って切り分けたデータを処理する
    • 秀吉: 兵たちが山に登って木に紐を縛り付ける
  • Intermediate files
    • MR: Map phaseで処理した結果を保持する
    • 秀吉: 縛り付けられた紐(でいいのかな?)
  • Reduce phase
    • MR: Keyごとに保持された結果を集計する
    • 秀吉: 兵に命じて縛り付けた紐を回収すると同時に本数を集計。
  • Output files
    • MR: 集計結果
    • 秀吉: 紐の数すなわちひと山にある樹の本数

秀吉の方法が優れているのは動員する部下を増やせば増やすほど早く数えられるというところだろう。つまり作業の並列化によるスケールアウトができる。サーバを増やせば性能が比例して上がるWebのバックグラウンドシステムみたい。
1、2、3と数えて行く方法は並列化しづらいし、間違い防止やらで末端作業者の負担が大きい。
秀吉の方法では、末端の作業者には単純なルールを守らせるだけでミスを減らすことが出来る(一本の樹に一本の紐)。だから人員の調達も低コストで行える。
さすが後に天下を取る男、素晴らしく頭が切れて無駄がないですね。

ということで、
「豊臣秀吉は戦国時代からMapReduceを駆使する関数型武将だったんだよ!」「な、なんだってー!!」
というエントリでした。



・・・・・・正直言いまして、上記のリストがMapReduceの説明に本当に合っているのか自信がありません。あと秀吉の逸話もソースが不明です。そこらへん、コメントで教えてくれる方がいたら有難いです。m(__)m