2013年6月20日木曜日

C++ポケットリファレンスを書き終えて

C++ポケットリファレンスを書き終えて、Boost.勉強会を出版記念イベントにして、参加者の人たちに話をしました。

普段いろんなところで、「C++11対応の本まだー?」という声を聞く中で、実際にC++11対応の本を書き、出版記念イベントで「待ってるだけじゃ本は出ないんだよ!」と伝えられたことが、今のところ最大の成果かなと思います。

Boost.勉強会には、日本各地のC++に詳しい人が集まってくるので、そういう人たちが本を書かないと本が出ないのは、当たり前と言えば当たり前だと思いますが、出版業界というのはやはり閉じた異世界というイメージがどうしてもあって、自分の知らないすごい人が本を書いてるんだろうなー、と感じることがあります。
でも実際にはそんなことなくて、とくに最近はブログや勉強会で活動してる人に、出版社から話がかかります。なので、こういう場所に集まってくる人が書かないと、本当に本は出ないのです。

今回、6人の共著で書き、本を書いた経験を積んだ人が一気に増えました。この著者たちが、自分の経験をより多くの人に伝え、出版社がこの著者たちの紹介で新たな著者を見つけ、本を書く人をどんどん増やせていけたら、自分から「本を書きたい!書くぞ!」という人が出てきてくれるんじゃないかな、と思っています。

今のところは、ようやく一冊書いて経験を伝えた、という段階ですが、これから後に続く人が出てきてくれることを切に願っています。

プログラマという生き方

私はプログラマという職業を超えて、プログラマという生き方をしています。

このプログラマという人種のおもしろいところは、「明日の自分は常に今日を超える」ということが在るべき姿だと、広く認知されていることだと思います。現実にそうなれていない人は多くても、目標にブレはないように思います。

この一点だけでも、私はこの生き方を選択したことに、誇りを持てます。

2013年6月16日日曜日

読了: 新版暗号技術入門

結城先生の書籍、『新版暗号技術入門 秘密の国のアリス』を読み終わりました。




この本はタイトルの通り、暗号化の技術に関する入門書です。
共通の鍵を使用する対称暗号、最近よく使われる公開鍵暗号、認証や証明といったものの仕組みを、非常にわかりやすく解説しています。

暗号化は、普段からプログラミングに限らずソフトウェアをユーザーとして使うだけでもふつうに使っているのに、その仕組がよくわかっていませんでした。私はべつに暗号化のアルゴリズムを考える人間ではないのですが、自分が使っているものをもっとよく知りたい、安全とはどういうことなのかを知りたい、という動機から本書を読みました。

この本で、暗号化を何らかの形で使うプログラマが学ぶべき重要なことは、

オレオレ暗号化アルゴリズムは絶対使うな!世界的に使われていてもなお安全だと言われているアルゴリズムを使うべし!

の一点に尽きると思います。

なにげに、結城さんの本は、数学ガール以外では初めて読んだのですが、文章が完全無欠すぎてすごかったです。なんでこんな文章が書けるんだー、と関心しながら読ませていただきました。


暗号化で使う乱数生成器について、線形合同法は絶対使うな!とかは書いてありましたが、ではどれを使えばいいのかがとくに書かれていなかったので、後日暗号化アルゴリズムを実際に書いている、サイボウズ・ラボの光成さんに聞いてみました。

アキラ 「暗号化にメルセンヌ・ツイスターって使っていいんでしょうか。予測不可能性が重要だと聞いたのですが…」

光成 「メルセンヌ・ツイスターはもちろん、擬似乱数は数学的に次の値が計算できてしまうので、基本的には暗号化に使ってはだめですね。」

ぺぷしそ 「たしか、メルセンヌ・ツイスターの作者が、暗号化に使ってはいけないと書いてましたよ」

この辺りに書いてます: http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/mt.html

光成 「メルセンヌ・ツイスターは、周期は長いけど、624個の過去の数列があれば、次の値が特定できてしまいます。(追記:http://homepage1.nifty.com/herumi/diary/1505.html#18)」

光成 「UNIX系なら/dev/randomや/dev/urandomから読んで、WindowsならCryptGenRandomを使いましょう。前に簡単なラッパーを書きました。 https://github.com/herumi/cybozulib/blob/master/include/cybozu/random_generator.hpp 」

アキラ 「あぁ、それは知ってます。ハードウェアの誤差なんかを使う真の乱数ですよね。」

光成 「真ではないけど、限りなく真に近い乱数ですね。ただ、その乱数を生成するために、マウスの動きとかを必要とするのだけど、サーバーで計算させるとマウスとか使わないので、計算に時間がかかってしまうから/dev/randomは使いにくいです。/dev/urandomの方を使いましょう。」

ちなみに、C++11やBoostなら、random_deviceクラスを使えばOKです。


くわしい人が近くにいてくれたおかげで、さらに理解が深まりました!


ちなみにこの本は、私の誕生日プレゼントで道化師さんから送っていただきました。
ありがとうございます!


2013年6月5日水曜日

1ヶ月点検

2013/06/02(日)

Boost.勉強会 #11 東京の次の日。
バイクの納車から1ヶ月ちょっとが経過したので、1ヶ月点検に行ってきました。

お店に着いたときの総走行距離が705kmだったので、オイル交換は見送り。(今回と1,000kmで2回やってもいいですよ、とは言われましたが)

点検自体は10分くらいで終わりました。
まぁ、修理から戻ってきて3週間くらいなので、おかしくなるわけがないのですけどね。
点検ついでに、別売りのヘルメットホルダーを取り付けてもらいました。

帰り道にバイク用品店の「2りんかん」があるので、寄ってきました。いつもながら、ここはいろんなバイクが停まってていいですね。Ninja 250の2013年モデルとかいましたよ。実際に走ってるの始めて見た気がします。

そして、一目惚れしてしまったのでグローブ買っちゃいました。




うむ、カッコイイ。
やはり、夏用なので風通しがよくて涼しいです。ネット上ではうまく探せなかったですが、YELLOW CORNのYG-099DSのブルー、Mサイズです。6,700円になります。
zakさんからいただいたグローブの登場は秋ですね。

帰り道にたっかの家のあたりを通ったので、一緒にお昼でもどうかなーと思って電話したら・・・出ない。仕方がないので帰りました。あとでたっかから電話があったのですが、寝てたそうです。「もっと根気よくかけろよー」と言われました。まぁ、また来週くらいに行くので。

そしてさらに帰り道にガソリンスタンドに寄ったら、店員さんに

「バイクめっちゃカッコイイですね!!」

と話しかけられました。

アキラ:「ですよね!!」

と何も間違っていない返事をし、

「これNinjaですよね!いいなぁ、ぼくもこれほしいんですけど高いんですよねー」

など、数分話していました。

わかる人に出会えてよかったですw
バイクに乗ってると、よくこんな感じで話しかけられて楽しいですね。