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

Boost.勉強会 #3 関西を開催しました

C++

Boost.勉強会 #3 関西

Boost.懇親会 #3 関西


今回は、オージス総研様を会場に開催させていただきました。
関西でのBoost.勉強会初開催!

動画 : http://www.ustream.tv/recorded/10395531
資料 :

BoostでOAuth認証までやるには、まだまだ部品が足りないようですね。
HTTP通信は、作るのはそんなに難しくないですが用意されてたほうが楽なので、Boost.Asioベースのネットワークライブラリ( http://mikhailberis.github.com/cpp-netlib/ )が早くほしいとこです。
暗号化ライブラリは、Boost.Cryptoというのが現在開発中です。

動画 : http://www.ustream.tv/recorded/10361134
資料 :

D言語でBoostの移植が進められているという噂を耳にしたので、tamaさんを呼び出して話してもらいました。
D言語C++と性質の似た言語なので、互いに影響を受けて進化していきたいですね。
実際、C++0xの標準ライブラリに入るstd::common_typeメタ関数はD言語から来たものですし、D言語でもC++から影響を受けたライブラリや言語機能が多く取り入れられています。
D言語とかC++/Boost関係ないやん、とか悲しいこと言わずに仲間に入れてあげてください。

動画 : http://www.ustream.tv/recorded/10362961
資料 : Boost_GraphとC++初心者な私(事前資料).pdf


C++初心者でもグラフ理論知ってればBoost.Graphで楽ちんだよ、という心温まるお話でした。
非常にわかりやすくまとまった発表でしたね。最短経路の結果の見方がわからなかったのでこの発表でやっとわかりました!
Boost.Graphは、グラフ構造とアルゴリズムをSTLの設計思想の元に作られ、Policy-based Designによって様々な要求に対応しているライブラリなのですが、この発表ではそれらの概念が実用例で紹介されていてとてもよかったです。

動画 : http://www.ustream.tv/recorded/10361686
資料 : http://www.trickpalace.net/paper/error.handling.pptx (PDF版)


Boostでとられてるエラーハンドリングのアプローチにも触れてくだしあ。
この発表もまたBoostと直接関係のある話ではないですが、プログラミングする上で避けては通れないエラーハンドリング設計の選択、エラーの定義について触れるのはすごく大切なことだと思います。
今回触れられていないエラーハンドリングとしては、Erlangのとっている復旧モデル(サーバーが絡むと、死んだままじゃ困るので自動復旧する仕組みが必要)などがありますね。
他に、主に関数型言語に取り入れられているパターンマッチも、エラーハンドリングにおいては重要だと考えています。

動画 : http://www.ustream.tv/recorded/10363719
資料 : あとで

実装は全くわかりませんが、これはまじめに便利なのでぜひBoostに提案してほしいですね。
APPLYが3まで用意されてて、「そんな引数の数で大丈夫か」と聞いたら「必要なら作れば問題ない」と言われましたが、「え、それこそプリプロセッサで自動生成しないと…」と思って、単純な置き換えではプリプロセスコードの生成は無理そうですね…。悩ましい。


ついでに、セッションの対象者として、プリプロセッサで足し算ができるひと、とあったので何も見ずに書いてみよう。稲葉さんのBoost本に載ってるけど、見ないでやる!

#define ADD_11 2
#define ADD_12 3
#define ADD_21 3

#define ADD(x, y) ADD_##x##y

ADD(1, 1)
ADD(1, 2)
ADD(2, 1)
2
3
3

やったね!
1と2の組み合わせしか作ってないですが。

動画 : http://www.ustream.tv/recorded/10365433
資料 : http://www12.ocn.ne.jp/~dante98/BoostBuild-pre.pptx (PDF版)
サンプル : http://www12.ocn.ne.jp/~dante98/zip/bbv2.zip
bjamで書かれたBrainf*ckのインタプリタ : http://www12.ocn.ne.jp/~dante98/zip/bf.zip

資料があまりないBoost.Buildの貴重なセッション。
個人的にはBoost.BookのあたりやCMake、Rypplあたりにも触れてほしかったですが、そこまでやるとどうやっても時間がたりないと思うので、また今度お願いするかもしれません!

動画 : http://www.ustream.tv/recorded/10366130
資料 : Boost3-kikairoya.pdf


組み込みでBoost使ってるひとの貴重な発表でした。
この話は、ゲームなどにも通じる話なので、その筋のひとはぜひご参考に。
私もたまに「組み込みでC++どうなんですか」と聞かれることがあって全然知らなくて答えられないので、この発表はとても参考になります。
続編期待!


ついでに、Boost.Functionは例外投げるから死んじゃえ、という話ですが、
例外を投げるために使われているboost::throw_exceptionは、BOOST_NO_EXCEPTIONSをdefineすることによって内部動作をユーザー定義できるようになるので、assertに置き換えることができます。

#define BOOST_NO_EXCEPTIONS

#include <iostream>
#include <boost/assert.hpp>

namespace boost {
    template <class E>
    void throw_exception(E const& e)
    {
        std::cout << e.what() << std::endl;
        BOOST_ASSERT(false);
    }
}

#include <boost/function.hpp>

int main()
{
    boost::function<void()>()();
}
call to empty boost::function
Assertion failed!

Program: C:\Language\cpp\sample.exe
File: main.cpp, Line 11

Expression: false

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

これで例外が使えない環境でもBoost.Functionが使えますね!


参照:boost::throw_exception

動画 : あとで(編集したのを公開予定)


魔導書 vol.1でも書いてもらった、BoostCon 2010へ参加してきたときのお話です。
来年以降、参加を考えている方は参考にしてください。
また、Boost.Serializationの根深いバグを、本当によく調べてるなぁと関心させられました。
私も何度かバグ報告, パッチ送付したりしてますが、それを行うにはBoostの各ライブラリの設計思想を正しく理解する必要があって、それがかなり難しい。日本でこういった活動をされている方の話は本当に参考になるので、今後に役立てたいと思います。

動画 : http://www.ustream.tv/recorded/10367357
資料 :

相変わらず、発表内容が恐ろしくわかりやすい…。
STLのデータ構造とアルゴリズムをつなぐイテレータの役割を説明した後、その設計思想の元に作られたBoost Graph LibraryにおいてのPropertyMapの役割が説明されたので、その重要性がものすごくよくわかりました。
当日作った資料でここまでの発表ができるなんて、ほんとにすごいです…。

  • 懇親会

あろはくんが現れた!
懇親会で何話したんだっけ…いろいろ回ってる間にあっという間に終わった気がする。

  • 2次会

東京組で一泊していくひと + 東京帰るのですぐ帰るというひと + 関西組でぶらぶらと15人くらいで2次会行きました。
あろはくんとD.Gさんががばがば飲んでた。
id:alweiさんと、「ゲームはたいへんなんだよ」的な話をしたりいろいろと…。

  • 京都

次の日、京都の嵐山あたりをてきとーに散歩して帰ろうと思ってたので、あおいたんと一緒に京都に向かっててきとーにどこかに泊まることに。いつの間にかid:melponも一緒に来ることになってました。
ほぼ終電近くだったので、これからホテルとっても寝るだけだろ、ってことでネットカフェに行くことになって、受付でめるぽんと分かれて朝に合流。
予定通り嵐山をてきとーに散歩して、トロッコに乗って、京都駅に戻って新幹線で帰ってきました。
けっこう気晴らしになった気がする。

  • 総評など

今回は、近藤さんが事前準備をしっかり行ってくれていたおかげで大きなトラブルもなく円滑に進めることができました。Twitterアイコン入りの名札を事前に用意しておいてくれるとか、うれしいサプライズもありましたね!


ちなみに今回の出席率ですが、勉強会:49/50人(98%)、懇親会:43/43人(100%)でした。
これは本当に、参加者の方一人ひとりのモチベーションの高さによってもたらされた結果だと感じています。いやぁ、本当にすばらしい。


関西での勉強会は、誰が主催するかはわかりませんが今後も不定期に行っていきます。
関東は、1〜2月くらいかな?を考えていますが、まだわかりません。
ほかに、名古屋や北海道での開催も目論んでいるので、そちら方面の方はお楽しみに!