舎路(シアトル)日記

シアトルで働く日本人プログラマの日記です。

Code Ownership and Software Quality: A Replication Study を読んだ。マイクロソフトのコードベースを対象に、オーナーシップと品質との相関を調べた論文。先行する研究として

の二つがあり、この論文はそれらをうけて、1) マイクロソフトのコードベースを対象に 2) バイナリよりも小さい粒度 (ファイルやディレクトリ) で、その相関を調べている。結論からいうと、オーナーシップと品質にはやっぱり負の相関があったらしい。

ソフトウェアないしコンポーネントのオーナーシップというのは、ひとえには決めづらい。論文では

  • ownership: もっともコミットした数が多い人が、全コミットのうちに占める割合
  • minors: コミット数が50%未満の人の数
  • minimals: コミット数が20%未満の人の数
  • contributors: コミットした人の数
  • avgownership: ownership のディレクトリごとの平均
  • manager3: コミットした人々のユニークな Level 3 マネージャーの数

などなど色々なメトリクスでもって、なんとかオーナーシップの強さ、というのを求めて、それとファイルやディレクトリごとのバグの数とを比較するべく、ランク相関 (Spearman 相関) を求めている。ちなみに Level 3 というのは

For Microsoft, we can infer that managers represent at level 3 company divisions, at level 4 broader product teams, and at level 5 smaller sub teams within product teams.

部長、くらいのところなんでしょうか。

企業からの論文で、かつバグについての話だというのに、Office, Office 365, Exchange, Windows なんてフラッグシップな製品について実名をあげて論じて、さらに

With Office, we could see that there are two types of weak ownerships: intentional weak ownership, which was due to the aforementioned reasons, and unintentional ownership.

こういう不都合なこともちゃんと書くのは、なかなかえらいなあと思う。

Measuring the User Experience on a Large Scale: User-Centered Metrics for Web Applications を読んだ。

従来よく計測されがちな

  • Page View
  • Uptime
  • Latency
  • Seven-day Active Users
  • Earnings

あたりは、ユーザーエクスペリエンスの観点からいうと低レベル or 求めているものに対して直接的ではない。ページビューが上がったのは、ユーザーに好まれているからか、混乱するのであちこちクリックされているからなのか、わからない。

そこで著者らは

  • Happiness: このプロダクトが好きですか、みたいな主観的指標。サーベイなどで取得する。
  • Engagement: あるユーザーが何ページ巡ったかや、単位時間あたりの写真アップロード数など。
  • Adoption: 新規ユーザー数
  • Retention: ユーザーの継続率
  • Task Success: ユーザーがタスクを完了するまでにかかった時間や、それまでにみたユーザー向けエラーの量など。

などを測るといいよ、と提案する。

大学との共同研究ではなく、著者らはすべて Google の人々なので、これら一つ一つに「例えば Gmail では」みたいな事例がはいっていて、そこは面白い。一方で、新手法を提案する論文なら出てくるような、同じタスクを一般的な手法と提案手法とでやってみて、これとこれは相関していて、みたいな議論は一切なく、有用性に関しての議論が「Google で使われてます!」だけなのは、ちょっと物足りない。

後半では、ゴール (達成したいこと), シグナル (それが達成できたかを示すなにか) があって、最後にメトリクス (時系列にプロットできるような指標) があるんですよ、という話もしている。

Rust のパーサコンビネーターの一つ、nom についての論文である、Writing parsers like it is 2017 を読んだ。著者らが「2017年らしく」と設定する基準は

  • C/C++ ではなく安全な言語を使うこと
  • 手書きの parser ではなく parser combinator を使うこと

正直そこまで目新しくはない。

どちらかというと、Rust + nom が実現する C/C++ との親和性とパフォーマンスでもって、既存のアプリケーションの一部を置き換えられることを示すべく、VLC の FLV パーサーや、Suricata という IDS (Intrusion Detection System - 侵入検知システム) の TLS パーサーを、実際に Rust で書き直してみせているのが見所かと思う。

いまどきのパーサーがどうあるべきかについては、IntelliJ の Rust プラグインや、Rust コンパイラをあえて使わない Language Server の Rust Analyzer の開発で知られる、Aleksey Kladov がブログに書いていた、Modern Parser Generator が「IDE のことをちゃんと考える」という視点を持ち込んでいて新鮮だった。

運転むずかしい

Jan 17, 2019

アメリカでも街の方に住んでいるのをいいことに、車の運転から逃げつづけてきたけれど、さすがに観念して自動車学校に通っている。

筆記試験は去年にクリアして、今週は会社に行く前に自動車学校に通っていた。正直いって、車を運転するのは難しい。みんなよくできるなと感心する。当初の予定では5回の講習をうけたあとに実技試験を受けるつもりで予約を入れていたんだけど、どうにも無理そうなので試験は一度キャンセルすることにした。同じ教習所でまた追加で5回レッスンをうけるか、他の教習所でうけるか、何か他のことをするかは考え中。

一方で、車を運転して今日で3日目、時間にしてまだ3時間にも満たないわけで、あまり悲観的にならないほうがいいだろうとも思う。「プログラミングを初めて3時間たつんですが、全く上達しなくて、私は才能がないんでしょうか?」なんて相談されたら困るだろう。

そんなことを自分に言い聞かせながら、しばらくは練習を続ける予定。

Acting the Part: Examining Information Operations With in #BlackLivesMatter Discourse を読んだ。著者らが、アメリカの銃乱射事件のソーシャルネットワーク上での広がりについて調べるべく集めていたデータセットから、Twitter が公開したロシアの企業 Internet Research Agency (IRA) のなりすましアカウント群のツイートを集めて、後者について論じている。

ただし、Twitter の公開した IRA アカウントが2,752個、そこから著者のデータセットに含まれていたものを選ぶと96アカウント、さらにそれを、題名のとおり Black Lives Matter 関係のハッシュタグを使っていて、リツイートでのクラスタリングでもってリベラル/保守の大きいクラスタに含まれているものを、とフィルタして29アカウントに絞っているので、IRA の活動全体を論じるというよりは、その一角だけに迫るような内容になっている。

これらのアカウントは完全に自動化されているわけではなく、中にちゃんと人がいるらしく、普通にツイートしたり、アカウント同士でやりとりしていたり、BlackMattersUS.com なんて外部のウェブサイトやポッドキャストがあったり、普通に見ているぶんには、どう考えてもバレそうにない。

また、リベラル側に混じっているアカウントはリベラル側の極端な、保守側に混じっているアカウントは保守側の極端な主張をツイートしたりリツイートする一方、両クラスタに共通して、既存のメディアへの不信感をツイートしてもしていたらしい。

Together with the high-level dynamics revealed in the network graph, this observation suggests that RU-IRA operated-accounts were enacting harsh caricatures of political partisans that may have functioned both to pull like-minded accounts closer and to push accounts from the other “side” even further away.

著者らが指摘する、IRA によって (ロシア政府によって) 操作されているアカウントが政治的な左右の両極として振る舞い、その分断を促進している、という指摘は、だいぶ不気味な話だと思う。