読者です 読者をやめる 読者になる 読者になる

Boost. 勉強会 #3 に参加してきた。

イベント

 まぁ、一身上の都合によりこれまで勉強会なぞには全然参加できなかったわけですが、ようやく時間が取れる生活になってきたので行ってきました。C++ 関係の勉強会となると、やはり Boost. 勉強会こそ外せないので、人見知りの僕は迷ったのですが参加登録してみたのです。

 でまぁ、twitter 見てると「あなた言語仕様書ですか」と突っ込みたくなるようなエキスパートな方々が、この勉強会に参加していたわけですが、皆さんちゃんと人でした。

 内容はだいたいこんな感じ。

10:00〜10:30 : 「Boostで3日で作るtwitterクライアント」(@tt_clown)
10:40〜11:20 : 「Goodbyte Doost!」(@repeatedly)
11:30〜12:00 : 「エラーハンドリング」(@wraith13)
12:10〜12:40 : 「Boost.GraphとC++初心者な私」(@a_hisame)
12:50〜13:10 : 「プリプロセスタイムラムダ式」(@decimalbloat)
13:10〜14:00 : 昼休憩
14:00〜14:30 : 「Boost.Build」(@yhamigaki)
14:40〜15:10 : 「組み込みにおけるBoost」(@kikairoya)
15:20〜16:00 : 「そうだ BoostCon、行こう。」(@redboltz)
16:10〜16:50 : Boost.PropertyMap(@Cryolite)

 それぞれ興味深いセッションでした。僕は全然 boost 使って無いのでわからん部分も多かったのですが(特にプリプロセスとか Build とか)、話が面白いので聞き入ってしまいました。あ、ちなみに 2 番目の「Goodbyte Doost!」は終始 D 言語の話でした。

 技術的に余白の広さを感じたのは最後の PropertyMap で、これを使えばいろんなライブラリが拡張できそうな予感がしました。超かみくだいて説明されていたので、プレゼンのやりかたとしても勉強になる部分があり、さすがくらいおらいとセンセだなぁ、と。

 一方、検査例外ってものに興味がある僕は 3 番目のエラーハンドリングについてのセッションはいろいろと思うところがあったわけですが(セッションではエラーハンドリング全般に語られていて、例外はその一部として紹介されていました。念のため)、僕の中で結論が出ていないので具体的な意見を言うコトができず、少しもったいないことしたかなぁ、と。(勉強会への取り組みという面で)
 エラーハンドリングのコードを書かないとアプリケーションは完成しないわけですが、エラーハンドリングをしっかり書くとメインフローよりもエラーハンドリングの方が全体に占めるコード量が多いよね、的な観点から切り込んで説明されていました。セッションを見たい方は redboltz さんが ust の録画を up してくれているのでそちらをご覧になって下され。(http://www.ustream.tv/recorded/10415535)
 で、その中で「事後条件を満たさなかったら例外を投げる、っていうのも広い意味では事後条件ですよね」っていう旨の説明があって、やっぱりそうなるよなぁと内心頷いていたりしました。「事後条件」という単語を使ったせいでやや混乱気味になりましたが、まぁそれは置いとくとして。
 やはりネックになるのは発生するエラーに対してどの程度外部が知識を持つ必要があるのか、とかそういうことじゃないのかなーとか思いました。・・・という表現をするとこれまたあやふやすぎて何の主張にもなっていないので少しだけ具体化しておきます。おおまかに二つに分類されるかなと思います。

 1.どんなエラーが報告されるのか、をどの程度知る必要があるのか
 2.どうやってエラーが報告されるのか、をどの程度知る必要があるのか

 1については C++ 的には例外安全なクラス設計にしましょうとかそっちの方向の議論はし尽くされた感があります。これはつまり何が起きてもそれぞれのクラスはそれぞれの責任の元に安全に処理を閉じましょうとか、そいういうことですね。1について大切な事は、「発生し得ることが分かっているエラーはなんらかの形で宣言しておけるのでほぼ完全に知ることができる。未知のエラー報告については未知なんだから完全対応は不可。」ってことでしょうか。ぶっちゃけ、未知のエラーハンドリングなんて握りつぶすか強制終了するかの2択しか思いつかない...。

 2については @decimalbloat センセが blog で興味深いこと(「Boost.勉強会#3で適当なことをしゃべってきました」)を書いていてふmふm、と思った次第。「送出する側/捕捉する側で別々の方法で扱えるべき」っていう部分なのですが、なるほどそういう考え方があるのかと気付かされました。エラー報告方法はエラー発生側の都合によって適切な方法が選ばれるべきで、それを捉える側は捉える側の都合によって適切な方法が選ばれるべき、従って片方がもう片方の都合で窮屈な方法採らざるを得ないなんてそもそもおかしいのだ!ってことですね。僕はエラーハンドリングはそれ専用の機構に統一されるべき、もしくはエラーハンドリングもプログラムのメインフローと同列に落としこんで溶けこませてしまうべき、の2拓どちらかがゴールだと思っていた節もあり、この辺はもう少し考えなおす意義がありそうだなぁと。

 まぁ技術面ではそんなところでしょうか。

 懇親会。名刺配りまくってたのですがほぼ全員フォローしていました。@rofi (しまぱん)の写真を撮りそこねました。@cpp_akira センセは顔も性格もイケメンでした。@melponn センセはリアルでもいじられキャラでした。重そうでした。@egtra センセは萌えボイスでした。@yhamigaki センセと @Cryolite センセは二人の世界に入っていました。@kyubuns たんと初顔合わせしてきました。@redboltz センセにストラウストラップ大明神の名刺を見せてもらったりしました。途中、タバコ吸ってたら別れた彼女から電話入ってビビリました。

 以上、正直予想していた以上に楽しめました。主催者&参加者&関係者の方々、ありがとうございました。