C++で遊ぼうスマートフォン用の表示で見るスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。ATND12/12(土)にグリー株式会社様のセミナー会場をお借りしてBoost.勉強会を開催しました。1.40.0に含まれるライブラリのうち、74ライブラリを紹介し、それに加えて「一分でわかるテンプレートメタプログラミング」というのを話しました。(1分以内には終わらなかったのと、もうちょっとじっくりやりたかったです。)今回の勉強会ではじめてBoostを知った、という方にはBoostを使い始めるきっかけとなっていただければ幸いです。反省点としては、1時間セッションの予定が気づいたら40分もオーバーしてしまっていたことですね。解説するライブラリが74個もあったというのはありますが、時間管理ができてなかったのが大きかったですね...。その後のセッションが急ぎ足になってしまってごめんなさい。私が最近ハマってるライブラリであるBoost.MultiIndexと、Boost.Intrusiveを紹介していただきました。Boost.MultiIndexは、たとえば以下のようなニーズがあった場合に・連想コンテナとしてのアクセスとシーケンスコンテナとしてのアクセスが同時にほしい・複数のキーをもつ連想コンテナがほしいアクセス順序をコンテナのポリシーとして設定することによって変幻自在に対応できる夢のようなコンテナです。内部実装はパラメータ化継承を使った継承のチェーンによるものになっていて非常に効率的であること、また(アンドキュメントな)Indexを自作する方法を話していただきました。今後の展望としてはMultiIndexのポリシーとして「挿入がO(1)である」のような各操作における計算量を指定できるようにすればかなり便利なんじゃないか、といった話もでていました。究極的には、標準コンテナとしてstd::containerというただひとつのクラスが提供され、vectorやmapを、std::containerのポリシーの組み合わせの別名にする、みたいなことになるとおもしろいんじゃないかなーと思ってたりします。Boost.MultiIndexは「複数のインデックスを持つ」という単純な名前からは想像できないような可能性を持っているので今後が楽しみです。当初の予定通りの時間きっかりにおわらせるというすばらしい発表でした。ありがとうございます。Designを学ぶために、Boost.Tokenizerの設計がどうなっているのか、どうやってカスタマイズするのかを紹介していただきました。Designという設計方法についてのセッションです。Designはいくらでも応用のきくものなので、はじめて知った方はぜひクラステンプレートを設計する際の選択肢として加えていただければと思います。グラフ構造を表現するためのBoost.Graphライブラリを紹介していただきました。グラフ構造とは何か〜簡単な使い方までを非常に丁寧に解説していただきました。私もずっと学びたいと思い、なかなか手を出しにくかったライブラリであったので個人的にぜひBoost.Graphを語れるひとがほしい!ということでTwitterでそれらしい発言をしていたegtraさんをつかまえて発表していただくことになりました。Boost.Graphは日本語資料が少ないので、egtraさんには引き続きBoost.Graphについていろいろ話してもらいたいですね。先日、Boostに採択されたばかりのBoost.Polygonを紹介していただきました。以前、私のブログでも紹介したことはあるのですが、ドキュメントをさらっと読んで書いたものだったのでこういった専門特化としたセッションで紹介してもらった方が百万倍いいですね。set_なんとか、になっていたのは、ライブラリ設計上の事情があったのか単にサンプルが非効率なものになっているのかがどうなんだろ、というとこ。Library)」だったからですね。正式入りが決まったばかりなのでドキュメントが古いのかもしれません。Boostには正式に含まれてはいませんが、非常に強力なライブラリであるBoost.Coroutineを紹介していただきました。正式入りしていないライブラリのため、使い方よりも「コルーチンとは何か」や内部実装、コルーチンのユースケースなどを話してもらいました。会場には、Boost.Coroutineの作者と議論して拡張された、Hamigaki.Coroutineライブラリの作者である郵便はみがきさん(id:y-hamigaki)も来られていました!ブログで何度も助けていただいたのでぜひお会いしていろいろお話を聞きたかった&直接お礼を言いたかったので今回お会いできてうれしかったです。コルーチンというものが、スレッドをなんでも自分で制御したものだと聞き、悶々してた部分が解消されました。ユースケースも、見方を変えることによっていくらでも使い道があるようなので、何か考えていきたいですね。Boostの非同期入出力(ネットワーク)ライブラリであるAsioを紹介していただきました。私もちょこちょこAsioを触ってはいたのですが難しくてなかなか理解できないところがあったのでこういったチュートリアル的な内容は非常に助かります。それと、COMポートと通信できるとは思っていませんでした。これができるならあのとき・・・といろいろと悔やまれたり、これからはAsioを使える!と楽しみだったりします。はい、魔術のお時間です。(PPの内部実装的な意味で。)プリプロセッサメタプログラミングのライブラリであるBoost.Preprocessorを紹介していただきました。PPの使いどころはやっぱり可変引数だよね、と思ったのと次あたり、もしくはブログででもいいのですがC++0xだとどれくらいのマクロを消し去れるのかを紹介してくれるとすごくうれしいです。それと、C++(runtime)のコードをPPに置き換えていく思考の過程はとても勉強になりました。私も最近PPをはじめて、テンプレートメタプログラミングみたいにはいかないな、と思ってたのでこういった置き換え過程を載せてもらえたのは非常にうれしいです。Boostに含まれているライブラリではありませんが非常に強力なライブラリである道化師さん(id:wraith13)作のバグベアードを紹介していただきました。私も以前から使おうと思っていたのですがなかなか手が出なかったのでこの機会に触ってみようと思います。f())みたいなコードに対応できないのはちょっと残念ですがプロファイラやカバレッジとして使えるのは非常にうれしいのでぜひ試してみます。boost::weak_ptrについて解説していただきました。カウンタ」といった概念、shared_ptrの設計思想などを語っていただきました。少なくてもこのセッションにおいては私がうだうだ書くよりもUstreamに録画保存されているセッション動画を実際に見ていただいたほうがいいと思います。このセッションは永久保存すべきであり、ぜひブログでも書いていただき全てのプログラマに読んでもらうべき内容であり、個人的には書籍化されたら本屋の開店前から並んででも買って読むべき内容だと思います。テンプレートメタプログラミングのライブラリであるBoost.MPLについて話していただきました。Expressionの内部実装、コンパイル時無限リスト、メタ関数の適用を山カッコではなく通常の関数適用のように丸カッコで書けるようにするハックなどを紹介していただきました。個人的な要望としては、資料内の解説をもう少し充実させていただきたかったです。飛び入りでショートセッションをいていただくことになりました。Boostに正式には含まれていませんが、PHPの拡張モジュールを書けるmoriyoshiさん作のBoost.PHPを紹介していただきました。私はPHPもPythonも使ったことがないのでこれらのライブラリでの開発効率のみを見ていたのですが拡張モジュールを書くコードはどちらもとてもコンパクトで、PHP/Python側から使用する場合は(おそらく)それらの言語の関数を呼び出すのと全く同じように使用できるようです。この機会にぜひBoostに提案していただきたいですね。それよりmoriyoshiさんのタイピング速度は神がかっていましたね!あんなの始めてみました!入力補完使ってないらしいですよ。世の中にはこんな恐ろしい人がいたんですね(褒め言葉ですよ!)Boost.PHPのくわしい説明はこちらをご参照ください。http://wiki.github.com/moriyoshi/boost.php【今後について】大盛況のうちに終わったBoost.勉強会ですが、第二回、第三回と続けていければと思っています。id:repeatedlyさんが関西でのBoost.勉強会を開催すべく動いてくれているようです。(参照)関東の方もスピーカーが集まり、予定さえ合えばまた開催しようと思うのでみなさんぜひご協力お願いします。【セッション動画について】Boost.勉強会当日のセッション動画についてはUstreamのサイトにて録画保存されておりますのでぜひごらんください。Librariesコントリビュータ。boostjp/cpprefjpサイトコアメンバ。くわしい情報は、こちらを参照してください:http://faithandbrave.github.ioお仕事の依頼も受け付けております。Blog|ブログを報告する。