「プログラマに必要なことを学ぶ会」を開催しました

数年前から、少人数でフリーテーマの勉強会をしたいと思っていました。私は普段、プログラミング関係の技術強化と、仕事全般で使用するような技術としての資質強化を交互にやってきていたのですが、資質強化の方はいろいろ身につけても話す場がなかったので、Boost.勉強会とはべつで新しい勉強会を始めることにしました。

少人数の勉強会にしたのは、参加者みんなの話を聞きたかったからです。Boost.勉強会は(私の意図とちがって)100人とかがポンと集まってしまうので、なかなか難しいです。

少人数の勉強会で課題となるのは、参加したいと思ってくれる潜在的な参加者のうち、本当に参加したいと強く思っている人が参加できるようにすることです。IT系の勉強会は一時期すごく流行って、いまだいぶ落ち着いてきましたが、それでも参加募集を開始すると一気に人が集まるところは多々目にします。そういった参加登録者のなかには「実際に行くかどうかはわからないけど、とりあえず席だけ取っておこう」という軽い気持ちで参加登録し、それによって本当に参加したいと思っている人が来れない、といった問題も起きていました。

そういった問題に対処するために、参加のハードルを少し上げることにしました。そのハードルの内容は参加募集のページを見ていただければわかります。結果的にすごくモチベーションのある人ばかりが集まり、白熱した議論が起こり、私の意図を十分満たす形で第一回を終えることができました。参加者層も、新卒の方、ゲーム系の方、システム・Web系の方、受託開発の方、請負開発の方、教職の方など、幅広いジャンルの人が集まっていました。

今回は、参加募集10人 + 運営者2人という人数で開催しましたが、2時間くらいの勉強会で、全員の話を十分に聞けるようにするには、これくらいの規模が上限のような気がしています。潜在的に参加したいと思ってくれている方が多くいるのは把握しているつもりですが、それを受け止めきれないのは、まだモヤモヤしているところです。

どれくらいこの勉強会が続くかはまだわからないですが、ひとまず第二回はなんとか開催できそうです。直近の私の課題としては、議論のスムーズな運営をするスキルをもうちょっと向上させたいですね。

Emscriptenへのpull requestレポート

Emscriptenにpull requestをして取り込んでもらえたので、そのレポートです。

Emscriptenとは

C言語C++で書いたコードを、LLVMを使ってJavaScriptコンパイルするコンパイラです。 標準ライブラリの範囲だけでなく、OpenGLのコードを書くとWebGLに、OpenALSDLAPIでオーディオ関係のコードを書くとWeb Audioにコンパイルされたりもします。

pull requestの内容

直した内容としては、たったの1行です。

Emscriptenのドキュメントを眺めていたら、リリースノートへのリンクが切れていたので、正しいリンクに直しました。

詳細なやりとり

最初のpull request。

  • 私の修正としては、リンク切れを直して、ChangeLogChangeLog.markdownのように拡張子を直しただけです。
  • その修正に対していろいろなコメントが入りました。
    • 「これは問題を完全には解決しない。ドキュメントはいまMarkdownからreStructuredTextに移行してるところだ。」
    • 「んー、changelogを管理してるのはぼくじゃないからよくわからないな。」
    • ここでchangelogを管理しているjujさんが登場して、「ここでの問題はリンク切れだから、その問題を直すだけならこのpull requestで必要十分だ」と言ってくれて、取り込んでもらえることになりました。
  • jujさんから、「AUTHORS(作者たち)に名前を載せるから、AUTHORSに名前を追加するpull requestをください。pull requestの練習だと思ってやってみて。」と言われ、いろいろ調べながらpull requestしたブランチに追加のコミットをした。
  • pull request先がmasterブランチになっていたので、「開発ブランチはincomingだからそっちにpull requestし直してほしい」と言われた。

やり直したpull requestが以下:

これを送ったら、10分後くらいにすぐ取り込んでもらえました。

まとめ

Emscriptenでのpull requestでまず感じたのは、開発者を育てる文化があっていいな、ということでした。pull requestにさらに修正を依頼するのはコントリビュートのハードルを上げることになるので、pull requestに多少問題があっても、開発者がマージしてから手直しをする、ということが事例として多いです。しかし、実際に修正を依頼されてやってみて、自分の成長が感じられたのでやってよかったと思います。

また、AUTHORSに名前を載せてもらえたこともうれしかったです。1行コミットしかしていないのに恐縮ですが、Emscriptenはコントリビュータを大事にしていることがわかりました。

もし今後Emscriptenにコントリビュートする方がいたら、何らかの参考になれば幸いです。

2013年のブログ書き納め

今日で今年の仕事納めです。今年は、こんなことをしました。

  • 書籍『C++ポケットリファレンス』を出版しました。
  • 書籍『プログラミングの魔導書 Vol.3』を出版しました。(書籍版の発送はまだですが)
  • Boost C++ Librariesがリリースされるたびにやっている、リリースノート翻訳はまだ継続しています(link)。
  • C++標準ライブラリのリファレンスサイトcpprefjpも、何度も心が折れそうになりながらまだ続けられています。いまは全52ヘッダ中31ヘッダ(6割)のリファレンス作成が完了しています。
  • Boost.勉強会は今年、東京、大阪、仙台で開催しました。
  • C++標準化委員会のエキスパートメンバ主催で、C++14規格レビュー勉強会というのを始めました。日本から本家委員会へのフィードバックをしっかりやっていく体制づくりをしていきます。

続いているものは、また来年も継続して続けていくつもりです。

書籍は来年も、最低一冊は出版するつもりで進めています。

それと最近、若手プログラマを育成するお仕事をしてたりします。他の開発会社さんのプログラマに、プログラミングのいろいろなことを教え、また仕事のなかに「学び」を入れる体制づくりのお手伝いをしています。

プログラムと関係ないですが、今年はバイクを買いました。関東はだいたいツーリングで行き尽くしたかな。プログラムと関係ないことをするのは、ストレス発散にいいです。

そんな感じで2013年もいろいろやりました。また来年も、本ブログと私が関連するプロジェクトをよろしくお願いいたします。

含む・含まないの情報を持つパラメータ名

関数のパラメータがfirst/last、min/maxとかいう名前だった場合、それらの名前にはmaxを含むのか含まないのか、という情報がないので、自然言語で書かれた仕様の説明をきっちり確認する必要があります。
しかし、そういうものはできるだけ、関数のシグニチャを見ただけで、ひと目で動作がわかるようにしたいですね。たとえば、特定範囲の乱数を生成する関数だと、こうなってるといいんじゃないでしょうか。

int randint(int min_inclusive, int max_exclusive);

inclusiveは「含む」、exclusiveは「含まない」という意味です。
パラメータ名が多少長くなってしまいますが、わかりやすくなったと思います。



宣伝: 『プログラミングの魔導書 Vol.3』 予約受付中です。
http://longgate.co.jp/books/grimoire-vol3.html


ストックを放出

@lucifuges さんが「Boost.Geometryでゲームエンジンを書く!」宣言をしてたので、応援の意味を兼ねてストックしてたBoost.Geometryのネタを放出しました。
もうネタがすっからかんなので、明日からまたがんばります。


Boost開発者MLに初投稿

【1.45.0】 release note are insufficient


Boost 1.45.0のリリースノートを日本語訳する中で、記載されていない修正がいくつか見つかったので開発者MLに投げました。


最近、英語でバグ報告をするようになったので、徐々に英語でポストする心理的負担が少なくなってきている気がします。
英語圏でも活動するようになったモチベーションは、Twitterから来ています。
私のタイムラインにはD言語やGo言語のコミッターがいて、そういった方々がこういった発言をしていたり





他にもTwistar経由で流れてきたこういった発言をみて、英語ができないながらも活動を始める後押しになりました。




ちなみに、私の今回の投稿がきっかけで(なくてもそうなったかもしれませんが)、リリースノートには全てのバグフィックスを載せよう、という動きが出てきています。
Property TreeやPolygonの作者は、小さな修正程度でリリースノートを書きたくない、というスタンスだったようですが、ユーザーが小さなバージョン差異に嵌ったときにリリースノートに記載されていない修正をバグトラッキングシステムやバージョン管理システムの履歴から追う、というのは好ましくないと感じるので、こういった動きが出てきてくれてうれしく思っています。まだどうなるかはわかりませんが…。


私の英文は機械翻訳したものを少し手直しした程度のものですが、それくらいでも十分通じることがわかってよかったです。


全国各地でBoost.忘年会

東京だけじゃなく、大阪、北海道、名古屋でもBoost.忘年会やるようです。
お近くのBoosterの方はふらっと参加してみてはいかがでしょうか。


Boost.忘年会 2010(東京)

Boost.忘年会 2010@sapporo

Boost.忘年会@kansai

NGK忘年会2010 昼の部(Boost.忘年会 2010@名古屋)

NGK忘年会2010 夜の部(Boost.忘年会 2010@名古屋)



ICFP 2010の結果が出たようですね



id:tanakh さん優勝おめでとうございます!
2年連続で日本人、しかも知り合いが優勝してるなんてすごいですね。