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
バイクに乗ってると、よくこんな感じで話しかけられて楽しいですね。

2013年5月27日月曜日

qualified Ninja

Ninja 400R (2013)に使ってるバイク用品等についてのまとめ。いろいろ買ったので、何がどれだったか覚えておく用。


BAGSTER(バグスター) シートバッグ SPIDER ブラック 44×30×18 4899B1
シートに載せるバッグです。見た目がけっこうカッコいい上に大容量。
やはりリュックサックは肩が疲れるので、荷物はバイクに任せたほうがいいですね。


EFFEX(エフェックス) GEL-ZAB [ゲルザブR] 300mmx300mm EHZ3030R
ゲルザブ。長時間のツーリングでも、あまりお尻が痛くならない座布団的なもの。けっこうお高い。
2~3時間乗ってるとさすがに痛くなりますが、ないよりはだいぶいいです。


LUXA2 H10 自転車やバイクのハンドルに装着できるホルダー Bike Mount LH0012

バイクにiPhoneを固定するためのもの。iPhone 4S専用なので、ガタガタすることはありません。
もちろん防水です。
これからはiPhoneの新型が出ても、機種変更するのは専用ケースが出てからになりますね。


ニューイング(NEWING) USBステーション NSMS-004
USBの電源。納車時にバイク屋さんに付けてもらったので、どれかは厳密にはわからないのだけど、たぶんこれ。ソケットはひとつです。
これとiPhoneホルダーを組み合わせれば、充電を気にしなくていいカーナビになります。
防水と書いてはあるけれど、USBの挿入口は当然防水ではないので、簡単に外れる(外れてしまう)キャップで防水にします。


ラフアンドロード(ROUGH&ROAD) ゴアテックスプロテクショングローブ BLACK M RR8904BK2

グローブです。Mサイズ。これはバイク購入記念にzakさんからいただきました。お高いものをありがとうございます。
振動が続いても手が痺れないので、長距離ツーリングにとてもいいです。
スマートフォン対応してないことだけが難点なので、後付のスマートフォン対応キット的なものを注文中。


キジマ(KIJIMA) ヘルメットロック(車種別) ブラック KAWASAKI:ニンジャ4​00/R,ER-4n/6n用 303-1521
Ninja 400R標準のヘルメットロックは使い物にならないので、別売りを購入。
付け方がよくわからなかったので、まだ付けてません。今度点検に行った時にでも、バイク屋さんに付けてもらおうかと。


ラフ&ロード ラフツーリングネット RR5288 XL カラー:ブルー
大きい荷物用のネットです。こちらもzakさんからいただきました。


TANAX [ タナックス ] [ NAPOLEON ] AEX3 カウリングミラー3
立ちゴケしてミラーが折れたので、修理するついでにミラーを変えました。
純正のに戻すと精神的に落ち込みそうだったので、「壊れて直したんじゃなく、カスタマイズしたんだよ!」と思うことにする用。
純正のものより少し短いですが、不都合はないです。


この他にロックやカバーを購入していますが、ここでは紹介しません。
次はそろそろインカムですねぇ。高くてなかなか手がでない。


いやー、お金のかかる趣味ですね。
ヘルメットとかも入れると、いったいいくら使ったのかもう考えたくないですねw


ちなみに、私のAmazonウィッシュリストはこちらになります。
ほしいものりすと - 高橋晶

2013年5月26日日曜日

富士山へ

2013年5月24日(金)

夜ツーリングから帰ってきてFacebookに写真を投稿したら、すけさんからコメントが付いた。

「ツーリング、行きたい」

いやー、今週末は近場を散策しようと思ってたのですけどね。と返信。
そしたらSkypeですけさんから連絡がきた。

「アキラさん、山梨行こう!近場はまた今度でw」

道志みちというところが楽しいらしく、そこ行こう!とのことで、山梨に行くことになりました。
朝10時に横浜線の橋本駅前に集合。そしてこのとき0時40分。早く寝ないと。


2013年5月25日(土)

渋滞に捕まって少し遅れたけど、10時15分くらいにすけさんと合流。
「道の駅 道志」を目指してGO!

カーブがすごくて怖かったですが、いろんなバイクが走ってて楽しかったです。

道の駅に到着!


バイクがすごいたくさん停まってます!こういうところは、ビッグスクーター全然いないですね。
ちなみに、この中で一番カッコイイ青いバイクが、ぼくのバイクです。


鮎の塩焼きもぐもぐ。

川!これも道の駅にあります。
こんな橋もありました。(あれはすけさん)

ここから、山中湖まで移動!

着いた!さすがにでかい!

ここから、ついでに富士山の五合目まで行ってみよう、ということに。
登る道は2つあるそうで、今回は富士山スカイラインというので行ってみることになりました。だんだん寒くなってきたので、ここからマフラーを装着。

富士山の五合目に着きました!
登ってる途中で「霧が出てきたなー」と思ってたら、じつは雲でした。
しかし、ここの登り坂にあるカーブは、なかなかの強敵でしたね。登り要素もあるヘアピンカーブとか難易度高いっす。おっかなかったので、ずっと30km/hくらいで走ってました。

着いた記念にぱしゃり。

すけさんです。

あれが頂上です。
頂上に向かう登山道もありましたが、この時期なので立ち入り禁止になってました。しかし無視して登ってるひとがけっこういました。

しかしこっちの五合目は、なんにもないですね。小さいお土産屋が一件あるだけという、さみしいところでした。反対側は栄えてるらしいです。
腕がパンパンになってたころもあり、帰りにあの坂下るのやだなー、エレベーターほしいです、と思いつつもどうにもならないので降りることに。
駐車場で戦車みたいなバイクのおっちゃんに声をかけられ「売店行ってきました?何かおもしろいのありましたか?」と聞かれたので、「いやー、なんにもないですねー」と答えたりしてました。

なんとか無事に下まで降りられたので、ここからは帰路です。
道志みちは、帰るころには暗くなってるだろうから怖いなー、ということで、別の道を帰ることになりました。海寄りですね。高速を使わなかったので、帰るのに4時間もかかりました。
すけさんとは、道が分かれたところでさよならしました。

帰ってきたのは20時20分ころ。朝8時30分に出たので、半日の旅でした。
この日走ったのは250kmくらいです。

いま総走行距離が650kmくらいなので、あと2回くらい長めのツーリングに行けば1,000kmにいきそうですね。

夜ツーリング

2013年5月24日(金)

仕事と英会話から帰宅して22:30頃。
いろいろあってイライラしてたので、気晴らしにみなとみらいまで夜ツーリングに行ってきました。といっても、近所なので10分くらいで着きます。

夜のみなとみらいは全然車が走ってなくて、すごく走りやすいです。風が強いですけど。

赤レンガ倉庫です。

赤レンガ倉庫から見た観覧車。手ブレしてますね…。

まだ夜は寒いので、もっと厚着していけばよかったですが、そこそこ気が晴れました。

2013年5月12日日曜日

バイクを買いました

2013/04/27(土)
注文していたバイクが届きました。


KawasakiのNinja 400R、2013年モデル、色はキャンディプラズマブルーです。
うむ、超カッコイイ。

バイクとツーショット。

納車日はこのあと、すけさんと2人で埼玉、群馬、栃木にまたがっている渡良瀬遊水地に行ってきました。ちょうどこの週に本の作業がおわったので、気兼ねなく旅に出れます。


中継地点でお昼ごはん。すけさん、すごい量だなぁw
しかし、ここに来るまでに高速道路を使ったのですが、強風で死にそうでした。風が強い日は高速むりです。すけさんともはぐれたので、高速を一緒に走るのも無理ですねぇ。はぐれてから、そば屋さんで直接待ち合わせに変更してなんとか合流できました。



着きました。県としては群馬です。
風強いー。閉園直前に着いたので、あまり散策できませんでしたが、めっちゃ広いですね。バイクで入れるのは入り口から少しだけなので、歩いて行こうにも時間がないから途中で引き返しました。

せっかくなので記念写真。


これは私。


すけさん。

これで渡良瀬遊水地は終了。埼玉まで戻り。

鷲宮神社。らきスタの聖地らしい。

すけさんのZZR-1400とツーショット。


あ、ネコがきましたよ。

これで納車日の旅はおしまい。横浜まで帰る気力がなかったので、東京のすけさんの家に泊まりました。この日の走行距離185km。納車日に走る距離じゃないぞ!


2013/04/28(日)
納車の次の日。すけさんに途中まで送ってもらって、横浜に帰りました。
iPhoneのGoogle Mapが便利で迷わず帰れました。

2時間くらい運転して一旦帰宅。
ちょっと近場に行ってみようと思い、みなとみらいへ。


あーーーー!
立ちゴケしてミラー折れました。それも2回コケて両方折れました。
この状態で走ると捕まりそうなので、保険のレッカーにバイクをとりにきてもらい、バイク屋に逆戻り。

2日目にして入院でございます(ー人ー)。


2013/05/12(日)
ようやく退院しました。GWはバイクがなかったので、主に家で作業していました。
この日は軽めに運転して帰ろうと思い、すけさんと2人で近場の八景島に行ってきました。

出発する前に、バイク屋でサスペンションの調整をしてもらいました。足つきが不安だったので、サスペンションを柔らかくして、車高を低くしました。
サスペンションはデフォルトで75kgくらいの体重の人を想定しているようなので(7段階中の4)、一番やわらかい設定にしてもらいました。うむ、変わったかどうかよくわかんないですね。

バイク屋から八景島まで2時間くらい。八景島から家まで40分くらいです。



着きました。
お昼ごはんを食べて、シーパラダイスと海の公園をぶらぶらしながらすけさんと話をして、帰ってきました。

なんとかコケもせず、帰宅できました。
まだ若干運転に不安があるので、もっと乗らないといかんですね。小回りするの怖いです。

2013年4月22日月曜日

ビューティフルテスティング読み終わった

O'REILYから出版されているビューティフルシリーズの、『ビューティフルテスティング』を読み終わりました。1ヶ月半くらい読んでました。

この本は、技術書かと思ったらエッセイでしたね。ちょっとエッセイはびみょうに苦手だということがわかりました。飛ばし飛ばしで読んでました。

おもしろかったのは、10章「乱数ジェネレータのテスティング」ですね。これがお目当てでした。これでわかったのは、どの分布法も統計をとればテストできるが、100%合格するテストは書けない、ということですね。
統計も、対象の分布法によって使う技術が専門的なレベルで異なるので、汎用的に「これを知ってれば乱数のテストができる」というものではなさそうです。100%合格するテストが書けないというのは、許容する範囲を広げればもちろん合格できるのですが、それをやると信憑性が低くなってしまう、とのこと。複数のテスト技法を組み合わせて、合格率を上げるのがいいようです。

また、この章で書かれていた以下のフレーズがとても気に入りました:

「それでも、ライブラリからRNG(Random Number Generator)を使う場合、ライブラリを信頼していたとしても、いくつかのテストを自ら作成するとよいでしょう。重要なのは、ライブラリそのものの質をテストするだけではなく、ライブラリに対するユーザーの理解もテストするという点です。」

これは、乱数に限らず、あらゆるライブラリを使用する場合にも言えることかなと思いました。
良いライブラリはもちろんテストされていて、オープンソースであればテストコードも公開されていますが、それを信頼するだけではなく、「自分はこんなケースでこういう使い方をしようと思っていて、いまこういう結果が出ている」というのを、自分のプロジェクトのために恒久的に残すのです。そうすることで、そのライブラリの挙動が変わったときに、ユーザーが検知できるようになるので、テストが通る限りにおいてその使い方がいつでも正しいということが保証されます。
この考え方は、とても大事だと感じました。

最後に、本書は私の28歳の誕生日プレゼントとして、Amazonのウィッシュリストから送っていただきました。このすばらしい本を送っていただけたことを感謝します。