C++11用のクラスひな形生成スクリプトを作ってみた このエントリーをはてなブックマークに追加

2014 年 8 月 20 日 by 村山 俊之

C++ で開発する上で、クラスを一つ一つ実装するたびに毎回同じようなことを書かされるのは冗長なので、だいたいこんな感じになるよねという範囲のひな形を生成するスクリプトを perl で記述してみました。

Getopt::Compact モジュールを使用しています。ご利用の際にはそちらも合わせてインストールしてあげてください。
この投稿の続きを読む »

API 開発における要件分析 – C++ のための API デザイン このエントリーをはてなブックマークに追加

2014 年 8 月 10 日 by 村山 俊之

ライブラリ API の設計手法を学ぼうシリーズの第3弾です。前回の記事はこちら。以下の教材を利用しています。

今回から第4章に入ります。4章は C++ での実装の話はなく、設計に入るまでの情報の収集や整理 (要するに要件分析)、および様々なレイヤーでの設計に関する議論となっています。プログラミング実習をするような内容でもないので、要点をまとめながら解釈したり考えたりしたことをレポートしたいと思います。

今回はその中でも、 4.1~4.3節の、要件分析までの内容について見ていきます。

大原則

最初のセクションに入る前の書き出しで、以下のように書かれています。これはもう、大原則ですよね… (強調は拙引用者によるものです)。
この投稿の続きを読む »

Observer パターンでコンソール MVC っぽいことをやってみる – C++ のための API デザイン このエントリーをはてなブックマークに追加

2014 年 8 月 6 日 by 村山 俊之

ライブラリ API の設計手法を学ぼうシリーズの第2弾です。前回の記事はこちら。以下の教材を利用しています。

さて、API のラッピングパターンについてはざっと読むだけで終了とし、今回は Observer パターンについてさらってみました。

MVC っぽいことをやってみたい。

本書では、オブザーバーパターンの説明に入る前に、 MVC アーキテクチャについての説明がありました。

シンプルなアプリケーションでは、コントローラはユーザ入力に基づいてモデルへの変更に影響を与え、こうした変更をビューに通信して、UIを更新できるようにする。しかし、実際のアプリケーションでは、通常、水面下のモデルへの追加変更を反映するために、ビューも更新する必要がある。(…中略…)とはいえ、先ほど述べたように、モデルコードはビューコードを静的にバインディングして呼び出すことはできない。そこでオブザーバーが必要になるのだ。

なるほどなるほど。とまぁ、こんな説明の後に Observer パターンの実装例とその説明に入っていくのを見せられたら、そりゃあまぁ、 MVC っぽいことをやってみたい、って普通思いますよね…??

ただ、上記にあるようにモデルがビューを監視できるようにする必要があるという話であるにもかかわらず、多くの MVC フレームワーク実装を見るに、ビューからのメッセージを受け取って何らかの制御を行うコードは通常コントローラに書かれているように見えます。現実的には、ビジネスロジックはフレームワークを差し替えても流用可能であることが望ましく、オブザーバーにするための抽象クラスの継承でさえ避けたいというのが実情なのではないかと思います。
この投稿の続きを読む »

shared_ptr にヒープ以外のものを掴ませたいなら何もしない Deleter も一緒に指定してあげればいい このエントリーをはてなブックマークに追加

2014 年 7 月 27 日 by 村山 俊之

これまた非常に初歩的な話なのですが…

  • STL のコンテナ (std::vector とか) には基本的にオブジェクトへの参照を掴ませることはできない (領域確保の効率の問題とかでデフォルトコンストラクタが必須だから)。
  • かといって、ナマポを掴ませるのは色々と危険 (意図せず寿命が切れて無効なポインタ掴まされた状態になったりとか)。
  • そも non-copyable なオブジェクトを扱いたかったりと言った理由で値そのものを掴ませるのは却下したい (まぁ、いろいろあるんだよ…)。
  • となると std::shared_ptr を噛ますのが順当かと思いきや…
  • 必ずしもヒープに確保した (つまり、 new した) インスタンスだけを扱うとは限らないかもしれない。十分に寿命が長いことがわかっている自動変数やメンバ変数として確保したインスタンスのポインタをこのコンテナに突っ込んであげたい場合もあるかもしれない。
  • そういう場合に std::shared_ptr 使っちゃって大丈夫なのか…??

この投稿の続きを読む »

C++: lambda の参照キャプチャは const 性を損なわない? このエントリーをはてなブックマークに追加

2014 年 7 月 25 日 by 村山 俊之

C++ の勉強ということでちょいちょいスモールケースを書いては意味もなく github に commit するということをやっているのですが…

んー、何でしょうねこの雑なコード(^_^;A これ自体は確か、ステータスの変化を検知してステータスの種類にかかわらず共通の処理を自動で走らせるようにしたいんだけど、そうするとあれとこれとそれを変更しようとした時にあれを変更した時にもこれを変更した時にもそれを変更した時にも処理が重複して走っちゃうから無駄だよねってケースを想定して、じゃあ今あるステータスを全部一時的な構造体に突っ込んだものを引数にとってその構造体に変更を加えて返すコールバックを引数に取るようにすればいいんじゃね? って思ったんだけど、そんなの lambda で書きたいに決まってるけど変数キャプチャ付きの lambda は関数ポインタに変換できないじゃんねっていう訳で、コールバックに関数ポインタじゃなくて lambda を受け取る template メソッドにしてしまえ、ということを試してみたくて書いていたものでした (今考えたらそも素直に std::function 使えよ…って話ですねorz)。
この投稿の続きを読む »

Pimpl とかファクトリとか – C++ のための API デザイン このエントリーをはてなブックマークに追加

2014 年 6 月 19 日 by 村山 俊之

otoco プロジェクトの開発に着手するにあたって、私はまだ C++ でのライブラリ開発を 1 からコーディネートした経験がなかったので、クロスプラットフォームに対応したライブラリ API の開発手法を学ぶ必要があると感じました。ちょうどいい感じの教材が割りと最近出ていたようで、早速購入し、勉強を進めています。

C++11 についても若干触れられているようで (原著執筆当時はまだ C++0x と呼ばれていた模様…)、この手の教材の中では比較的情報が新しい方なんではないかと思われます。

実はこの本を買って勉強し始めたのはもう結構前 (確か前原にいた頃… 昨年の暮れ頃?) なのですが、ここしばらく本業やら引っ越しやらが忙しくてなかなか手を回せずにいたので、久しぶりの着手ということで、すでに履修していた第3章の、 Pimpl イディオムとファクトリメソッド辺りを復習してみました。
この投稿の続きを読む »

事務所移転しました このエントリーをはてなブックマークに追加

2014 年 5 月 26 日 by 村山 俊之

今更のご報告で恐縮なのですが…。

5月1日付けで、事務所を移転いたしました。新しい住所、及び電話番号を、会社サイトの会社概要のページに反映いたしましたので、これからご連絡いただける方はご注意ください。

これまでは自宅兼事務所という形で運営しておりましたが、今回は諸々の事情が有りまして、自宅とは別に独立した事務所を設置しました (とは言っても1Rマンションですが…)。最寄り駅も千葉駅ということで、これまでよりかえって都心から離れてしまいましたが… 環境的にはかなり大きく変わったということも有りますので、これよりまた心機一転、仕事に勤しんでいきたいと思います。

今後ともご贔屓に…。

Boost.勉強会 #14 に行ってきました このエントリーをはてなブックマークに追加

2014 年 3 月 4 日 by 村山 俊之

というわけで boostjp 書記担当(?)の @T_MURACHI でございます。ご報告遅れましたが、 3/1 に開催された Boost.勉強会 #14 に行ってきました。過去ログ見る限り #4 以来なので 3年ぶりですか…。なんかもうそろそろコンパイラ的に C++11 使えるのも当たり前になってきて当時に比べてもだいぶいい時代になったなぁとか思ってみたり (M$ 除く)。

内容についてはメモに書いた以上のことを語り尽くせる自信がないので、以下、感想などを思いつきで綴ってみます…。

  • 並列処理に関連する話題を取り上げた話が多かったように思います。トレンドというよりは、プロセッサなどのハードの進化の方向がもう完全にこっちに移行していっているが故の必然、といった感じなんですかね。GPGPU に関して言えば応用カテゴリはまだまだ限られている模様ですが…。
  • cpprefjp の github 連携のための涙ぐましい… という程でもないとは思うんですが^^;、Google Sites なんて使い始めちゃったのが運の尽きっちゃあ運の尽きだったのかなぁとは… でも用意されたものにうまいこと順応できるよう対応する能力ってのはこのギョーカイで仕事やってる上で絶対重宝されると思うので、そういう意味でも良い経験をされたんじゃないかなと思います。
    • ていうか @melponn さんかわいい。
  • 聴衆の食付きは glfw3 を使った GUI フレームワークの話が一番良かったように思います。なんだかんだ言ってみんなビジュアルグリグリ動かす系好きなんだなぁと…。 @hira_kuni_45 さん経験豊富そうで尊敬します… OpenGL 大好きで GCC 大好きで Unix ライクなのの方が好きそうなのにメインの開発環境が MinGW て… なんか某 R 社 (コピー機とか作ってる方) で働いてた時もそういう感じの方結構いらっさったような…
  • その他、グラフアルゴリズムの話とか、 C# でやってることを C++ で実装したら…の話とか、どれも非常に興味深いお話でした。面白かった。
  • 会場には江添さんもいらっさってましたね。ドワンゴステッカー配り始めたところで確信しましたが… 思ってたよりもなんだかずっと元気なちっさいオッサンって感じでした^^;。 @cpp_akira さんと C++WG の主査がどうのこうのとかで話をしていて平行線を辿ったりとかしていたのを見るにつけ、 C++ 標準化界隈も一枚岩じゃないんだなぁとか思ってみたり…

そんなこんなで、割とぶっ通しの 8時間。流石に疲れました…。参加された皆様も本当にお疲れ様でした。

第6期決算報告と移転のお知らせ このエントリーをはてなブックマークに追加

2013 年 11 月 7 日 by 村山 俊之

昨期は特に主だった売り上げもなく、赤字決算に終わりました…。

ただ、今期はすでにいくらか売り上げを確保しておりますので、これまでの青色欠損分をいくらか取り返すことは出来そうです。(志低いな…)

それともう一つ。自宅の引っ越しに伴い、弊社住所も移転となりましたのでお知らせします。
新住所とアクセスについては、すでに会社概要のページにて内容を更新済みです。

DataTable から値を引っ張る方法あれこれ このエントリーをはてなブックマークに追加

2013 年 6 月 10 日 by 村山 俊之

C# で DB を扱う場合などで、よく DataTable を使うことになると思うのですが、こいつから値を取り出すときの書き方が人によって結構まちまちだな、と思うことが結構あるので、ちょっとおさらいしてみることにします。

今回は割と初歩的な内容になります。あと、記事中のコードはテストしてないので動作を保証できません。
この投稿の続きを読む »