2016年11月
2016年11月10日
開催しました。
前回が2014年5月だったので、2年半ぶりです。
今回もまた、北海道外からも多数の参加者がありました。
そして地元の方にとっても、これによってC++に対する意識、意欲が高まってくれていれば幸いです。
まとめとか
発表資料(すでに公開されているもののみ) Boost.勉強会 #21 札幌 - 資料一覧 - connpass
睦月さんがTwitter投稿をまとめてくださってました。Boost.勉強会 #21 札幌 - Togetterまとめ
私の発表
C++1zで標準化が濃厚となったライブラリ「string_view」について話しました。
2012年11月の勉強会で、私が作成したライブラリ「fundoshi.hpp」を紹介したのですが、その後になって同様のライブラリがBoostに入っていた(Boost.string_ref)ことを知り、さらに2016年になって次期のC++標準規格「C++1z」(「C++17」とも)で標準化されることが有力となったため、今回紹介することにしたものです。
他の発表を簡単に紹介
- ignisさん「Boost.GILではじめる画像修復 & Pythonから利用してみる」
- 画像修復(例:ところどころが塗りつぶされたような画像について、その部分を検出して本来あったと思われる内容を補完する)の考え方とC++による実装の話。
画像修復の基本的な考え方は、(1)画像がどのように変形させられるかを定式化し、(2)その変形を関数とみたとき、逆関数を求めて適用し画像を復元する、というものになる。ただ逆関数といっても単純に計算できなかったり、一意に値が定まらない場合もあるので、そこはもちろん何らかの対策を考えないとならない。という話がなされた。
Boost.GILでの実装についての話としては、テンプレートを活用することで画像の特性(モノクロなのかカラーなのか、など)を問わない処理が容易に書けること、また私の発表でも示した「ビュー」(文字列なら文字列、画像なら画像の一部を参照するためのクラス)がBoost.GILでも多用されていることなどが説明された。
最後に、C++で書いたコードをPythonから利用するための方法についての話。これまでにもBoost.Pythonというものはあったが、それよりも使いやすい「PyBind11」というものがあり、こちらがいいよ!ということを力説。なお名前の通り、C++11に対応したコンパイラを利用する必要がある。 - redboltzさん「CppCon2016 参加報告」「急速に進化するBoost.SML」
- 前半は、C++の国際会議「CppCon」の参加報告。氏はこれまでにも「C++Now」という別の会議に出たことはあったものの、CppConには今回初めて参加したとのこと。CppConはC++Nowと違って、運営がプロの手によるものであり(C++Nowはコミュニティ的)、仕事の早さなどを感じたとのこと。また今回のCppConでは「ゼロオーバーヘッド抽象化」がちょくちょく扱われていたとのこと。
後半は、Boost.SMLという、コンパイル時に行える状態遷移の表現を記述する(状態遷移の表現を実行時に構築する必要がなく、バイナリに組み込まれるようにできる)ライブラリの紹介。すでにBoost.MSMというものもあったものの、こちらのほうがかなり高速とのこと。ただしC++14に対応したコンパイラが必要である。
なお、この発表に向けてredboltzさんは、Wandbox(ブラウザ上でコードを書いて実行できる)の中の人・めるぽんさんに、Boost.SMLに対応するよう依頼していたとのこと。結果、Wandboxでサンプルコードが動いていた。 - Flastさん「Boost.Fusion/Phoenixのメンテナになったのでその記念的ななにか in 札幌」
- メインで話されたのは、スレッドやプロセスを抽象化するライブラリについての紹介(なお、Boost.FusionやBoost.Phoenixはそういうライブラリというわけではない)。Boost.Fiber(途中で動きを止めることで複数のFiberにある処理を代わる代わる進めることができる。完全に並列で動かせるわけではない)の紹介、Boost.Process(プロセスの新規起動など)が入るかもしれないという話をされていた。また氏は「(Boost.Hanaが登場したことで)Boost.Fusion終わるのですか?」という質問を受けたとのことで、それに対し「まだサポートは続くよ」ということを話していた。
- 【LT】hiyohiyoさん「C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。」
- NVMe(NVM express、ハードドライブを接続する際の物理インターフェイスでSSDにも適した高速規格)について。CrystalDiskMark(ストレージのデータ転送速度測定ソフト)をWindows 10 Appとして公開した話や、他者からもらったコードがDelphiで書かれていて移植に苦戦したため「ステップ実行して挙動を確かめた」という話が。
- 【LT】egtraさん「Visual C++コンパイラのコードの注釈機能について」
- 引数に _In_, _Out_ などを付けることで、意図しない挙動が発生する場合に警告を出す機能の紹介。自分で書けないこともないがなかなか大変とのこと。今回は未初期化変数の警告、nullptrの可能性がある値に対する警告、配列の添字に対する警告を出すことについて紹介されていた。