@kyanny's blog

To be a cross-functional developer

WIP (Work in Progress) な Pull Request を目立たなくする Chrome 拡張をリリース

Pull Request ベースの開発手法(いわゆる "GitHub Flow" というやつ)では、未完成のブランチに "WIP" という件名をつけて作業中である旨を示しつつ途中経過もレビューしてもらう、というのをよくやります。 Quipper ではそれに加えて "DONT MERGE" とか "DO NOT MERGE" というのもよく使っています。 WIP と同じ意味で使うこともあれば、レビューの過程で発生した議論にまだ決着がついていないのでマージしないでね、という意思表明として使うこともあります。

僕は一日にだいたい十個弱の Pull Request をレビュー・マージしています(個人差はありますが Quipper のデベロッパーの多くは似たようなものです)レビュー・マージのタイミングははやいほうが良いので、一日に少なくとも二回か三回は Organization の Pull Request 一覧ページを開いて、差分が小さく影響が軽微なものや優先順位の高そうなものから処理しています。あるとき、「塩漬け」状態の Pull Request がたまってくるにつれ、一覧ページでどの Pull Request を開くべきか(逆に、どれを一旦無視してよいか)判断するのが負担になっていることに気づきました。

そこで、「塩漬け」状態の Pull Request は件名にそれとわかる文字列が含まれていることに注目し、それらの Pull Request を視覚的に見分けやすくする Chrome 拡張を作りました。

WIP Pull Request Unhighlignter for GitHub
https://chrome.google.com/webstore/detail/wip-pull-request-unhighli/plebohahijhmebohbcifnaccfkjdgppe

ソースコードは GitHub で公開しています。
https://github.com/kyanny/chrome-ext-wip-pull-request-unhighlighter-for-github

この Chrome 拡張をインストールして GitHub の Pull Request 一覧ページのどこかを開くと、件名に "WIP" が含まれる Pull Request を灰色にマスクして透明度を少しあげます。

screen shotデモ用のページ

パッと見てすぐ見分けがつくようになりました。

件名に入れるのが "WIP" なのか "DO NOT MERGE" なのかはチームによるので、 Chrome 拡張の設定ページから件名にマッチさせるパターンをカスタマイズできるようにしました(正規表現が使えます)。マスクする色や透明度もお好みにカスタマイズ可能です。

screen shot

どうってことないアイデアだし機能も最小限なので、思いついて動くものを作るまではさほど時間がかからなかったのですが、ブラッシュアップする過程でいろいろな知見が得られ、良い経験になりました。技術的に工夫した点、学んだこと、などについては別エントリとして公開する予定です。

Creative Commons ライセンスの Git ロゴを MIT ライセンスのコードと同梱した場合のライセンス表記についてアドバイスをくださった @hail2u_ さん、ありがとうございました。

多国籍企業とさまざまな英語

多国籍企業(おおげさ)で働いていると、コミュニケーションにおける英語からは逃れられない。しかし、英語といってもさまざまなバリエーションがあるということが最近(実体験として)わかってきた。

思うに、話者がどのように英会話の能力を獲得したかによっていくつかのパターンに分類できる。自分の体験に基づくと、

  1. 英語を母国語とする国のネイティブ(アメリカ人とかイギリス人とか)
  2. 英語以外を母国語とするヨーロッパの国のネイティブ(イタリア人とかスペイン人とか)
  3. 英語を公用語とするアジアの国のネイティブ(フィリピン人とか)
  4. 日本人(帰国子女や長期の留学経験者)
  5. 成人後に努力して英語を身につけた日本人

くらいのバリエーションがあり、それぞれが独特の特徴をもった英語を喋る。この中で、帰国子女でもなく努力して英語を身につけてもいないおれの耳にもっとも聴き取りやすいのは、5の「努力した日本人」の英語だ。

英語ネイティブはアメリカ英語とイギリス英語の発音の違いは大きいものの、上記のなかではどちらにせよ一番聴き取るのが難しい。ヨーロッパ系の人はそれより若干聴き取りやすい。フィリピンの人もヨーロッパと同じか、それよりさらに聴き取りやすい。が、なんか独特の甘ったるい感じがする(個人差かもしれない)。

帰国子女や留学経験者など、若い頃に英語圏で生活していた人の英語は、流暢だが不思議と聴き取りやすい。イギリス人の英語と比べると、語彙に差があるような気がする。イギリス人の語彙は難しいのだ(難しくて知らない単語を使うというのはまれで、むしろ give とか get とか have とかの基本的だがいろんな意味がある単語だけで華麗に英文を組み立てるので、知ってる単語だらけなのにさっぱり意味がわからん、ということがままある)

努力して身につけた日本人の英語が聴き取りやすいのは、自分と英語力の差がもっとも小さい(とはいえ大きな隔たりがある)のと、学習を経て身につけた == いままさに学習中の身としては「通ってきた道」を追体験しているようなものなので、なんとなく語彙とか文の組み立てとか喋るタイミングとかイントネーションとかもろもろの癖が似ている、という要素があるのかな、と思う。

あと、帰国子女とそうでない日本人の英語を比べると、前者のほうが気負いが少ない気がする。後者はいわゆる「英語のできる日本人」でイメージするような感じで、大げさに喋る傾向がある。そのぶん、英語力の低い身にもわかりやすいんだと思う。

今年は Quipper School というサービスのアジア展開に力を入れていて、フィリピンの開発者と Skype したりすることも増えてきた。幸か不幸か、いままでインド人や中国人の英語を聞く機会がなかったんだけど、順調にサービスが拡大していったらそういうチャンスも巡ってきそうなので、楽しみにしつつ、いざというときにちゃんと会話できるように備えておきたい。

"Writing blog articles in English" doesn't mean "Consider English seriously"

http://b.hatena.ne.jp/BassVoiceXYZ/20140408#bookmark-189763742

If you deeply think that English is an important, you should try to write English article in your blog; however, if you do not, I'm wondered that your blog article was written by Japanese. This is a persuasive matter. Don't you think so ?

As a developer working UK based company, I'm deeply thinking "English is important". I sometimes write blog articles in English. But, to be honest, these kind of activities have less meaning. It's just a performance - "Huh, I can write something in English!".

Writing blog article is not a job for most people. No tight deadline. No high quality requirement. No limitation for using tools (dictionary, translation service, etc.). It might gain English skill a bit, but not so effective.

If you write blog article to describe some useful information for English-speaking people in English, it's very good. But if the article is just a diary or kind of poem, it's okay for you, but you shouldn't think it means "you deeply think English important".

"Writing something in English without any limitation" covers very small range of English skill. You need other English skills in other areas/situations. In conversation, you have to say something immediately. In chat, you have to do English composition as soon as possible. If you deeply think that English is an important, you should try to improve other skills in action, though it's very hard (different skill requires different training).

BTW, I wrote this article in 30 minutes with dictionary (about 10 times) and translation service (about 5 times). Yes, it's meaningless, you know.

自分の Gist の RSS フィードを作成するアプリ

https://github.com/kyanny/gist_feed

探せばいくらでもありそうだったし実はこっそりオフィシャルで用意されてたりするのかもしれないけど、アイデアに乏しい身としては仕事以外でプログラムを書くきっかけは些細なことでも大事にしたい(練習にもなるし)と思い、自作した。

Sawyer のデータ構造をたどって欲しいデータにたどり着くまでに手間取ったり、 .builder テンプレートで atom_feed ヘルパを使ったら ActiveRecord 由来のモデルオブジェクトじゃないとうまく動かなかったり(id とか model_name という属性が無いとだめっぽいが詳しく追っていない)こまごまとはまった。

Gist を Evernote に放り込むのを自動化したい、というのが肝心のもともとやりたかったことで、その部分は IFTTT にお任せ。 IFTTT の GitHub channel に gist trigger があれば一行も書かなくてよいプログラムだったのだが。