GitHubのデータサイエンティストが語るソースコードの意味を検索できるサーチとは?
GitHubが開催する年次カンファレンスGitHub Universeでは、ワークフローを実現するGitHub Actionsに代表されるような、ソフトウェアデベロッパーを支援するツールが大きな注目を浴びた。一方で、ソースコードリポジトリというプラットフォームであるGitHubにおけるデベロッパーの行動分析を行った内容として、Octoverseというレポートが地味ながらも注目を集めた。
GitHubが10年を経てオープンソースソフトウェアのデファクトスタンダードなリポジトリとして位置付けられるということは、オープンソースに関わるコミュニティの動きを知るためには最良のポジションにいるということになる。
そこで今回の記事では、Octoverseの作成に中心的な役割を果たしたデータサイエンティストの一人であるAnna Filippova氏と、同じくデータサイエンティストで機械学習チームのOmoju Miller氏のインタビューをお届けする。
プルリクエストに匹敵する? Actionsのインパクト
Filippova氏は1年ほど前にGitHubに入社し、今回のOctoverseのレポート作成をリードしたデータサイエンティストだ。生まれはロシア、それからマレーシアで教育を受け、シンガポール国立大学で博士号を取ったあと、ピッツバーグのカーネギーメロン大学で博士研究員としてオープンソースソフトウェアに関する研究を行った。そしてその後にGitHubに入社したという経歴の持ち主である。
今回のOctoverseでの分析について概要を教えてください。
Filippova:今年のOctoverseはGitHubが10年という節目を迎えて行った分析結果ということで、過去の10年間を振り返えると、オープンソースソフトウェアが全ての方向性で拡大をしていることを確認できるものになったと思います。エンタープライズ企業での導入が拡がったことだけではなく、オープンソースソフトウェアがインターオペラビリティという面においても大きく成長したことをみることが出来ます。インターオペラビリティというのは単に様々なソフトウェアが開発言語で開発されるということだけではなく、ある言語で作られたライブラリーが他の言語からも使えるようにするという流れが起こっているということですね。
また北米や英語圏だけではなく、様々な国と言語でオープンソースソフトウェアが開発されていることがわかりました。これも大きな変化のひとつだと思います。
エンタープライズでの利用が進んでいるという意味ではクローズドなリポジトリでの開発でもGitHubが多く使われているということだと思いますが、オープンソースとクローズドなプロジェクトの数や比率などは?
Filippova:残念ながらそれは公表できないデータですが、オープンソースと我々が「インナーソース」と呼んでいる企業内でのプロジェクトは、双方とも拡大をしているとだけお答えします。
データの分析用にGitHub上で様々なデータを収集していると思いますが、例えばどのような発見がありましたか?
Filippova:我々は、GitHubの上でデベロッパーが行っている様々なデータを収集して分析していますが、面白い分析結果の例を紹介しますと、例えばRubyのコミュニティでは他のどのコミュニティよりも「♡(ハート)」マークが使われているということがわかりました。これはコメントなどで?の絵文字が頻繁に出てくるということですね。これはコミュニティのメンバーにとっては当たり前かもしれませんし、Rubyの開発者のMatzさんの個人の性格のおかげなのかもしれませんね(笑)。
他にもChattinessという分析結果がありますが、これはリポジトリの中でコメントの数とユーザー数の比率を計算したもので、つまりリポジトリにどれだけコメントがつくかをユーザー数で割ったものを統計したものです。これによれば、チェコ共和国が最も高いというデータが出ています。つまりチェコ共和国のデベロッパーはリポジトリの中で多くコメントをつけるという傾向がわかります。個々の細かい分析結果については、サイトでのレポートを見ていただければと思います。
10年前と今のGitHubを比較して、最も大きな違いというのは何でしょうか?
Filippova:最も大きな違いは、10年前にはPull Requestがなかったこと、ですね。それに似たものはありましたが、現在のPull Requestが出来たのが2011年でしたので、それ以前と以後では全く違うものになったとは言えると思います。今回のGitHub Actionsがそれに相当するぐらいのインパクトになると良いとは思います。実際、私はそれぐらい大きな機能追加だと思っています。
もうひとつは、やはりダイバーシティが拡大したことでしょうね。10年前は主に英語圏、中でもアメリカがコミュニティの主体でしたが、今は様々な言語や国と地域でオープンソースコミュニティが拡大しています。これは大きな変化だと思います。私が住んでいたマレーシアやシンガポールでも、オープンソースコミュニティが拡大しているということを知ったのは良い発見でした。
オープンソースコミュニティも様々なものがあると思いますが、それの特徴を知ることはできますか? 例えばうまく行っているコミュニティとそうでないコミュニティの違いは?
Filippova:個々のコミュニティについて深く分析するということは特に必要がなければ行わないので個別にコメントすることはできませんが、例えばLinux Kernelのような信頼性と性能が要求されるプロジェクトと、JavaScriptのように様々なライブラリーがどんどん生まれていくようなコミュニティとでは、自ずと性格が変わってきます。そういう意味での違いはあることはわかりますが、どれが良いとは一概には言えませんし、参加の方法も様々です。
私自身もオープンソースソフトウェアとコミュニティに関する研究を長く行っていますが、「コードを書くだけがコミュニティへの参加方法ではない」ということはもっと知られるべきでしょうね。
GitHubのデータサイエンティストチームということでは、Omoju Miller氏とのチームの違いは?
Filippova:Omojuのチームは、機械学習を使ってもっとユーザーが実際に使う機能を研究開発する仕事になります。例えばソースコードのレコメンド機能は、Omojuのチームが開発して提供しているものになります。一方、我々のチームは他のプロダクトチームと連携して、潜在的ニーズを可視化したり、行動データを分析したりする部分の仕事になります。Octoverseの仕事は、その最たるものになりますね。
最後に今年のゴールは?
Filippova:もっとデータを民主化するということを推進したいと考えています。つまり我々が分析したデータをもっと色々な人に使ってもらえるようにする、という意味ですね。社内に向けても社外の公開情報についても、我々が分析した結果をもっと使ってもらえるようにすることですね。あと、個人的にはもっとオープンソースコミュニティに関わっていければと思っています。過去に自分が分析に使ったツールを公開したこともありますが、先ほども言ったようにコードを書くだけが参加の方法ではありません。それは来年だけではなく、私個人の将来に渡っての目標でもあります。
将来はGitHubがバグの出にくいコードの書き方を教えてくれる?
次に機械学習を使った機能の研究開発を行っているシニアデータサイエンティストのOmoju Miller氏のインタビューをお届けする。
自己紹介をお願いします。
Miller:私はGitHubのマシンラーニング(機械学習)チームのシニアデータサイエンティストです。デベロッパーにとって、GitHubがより使いやすくなるように機械学習を使って研究開発を行っています。出身はナイジェリアで、UCバークレイでコンピュータサイエンスの博士号をとりました。その時は人工知能、マシンラーニング、そしてより具体的には、いかに人間がアルゴリズムや演算についての知識、能力を獲得するのか? について研究を行っていました。
その後、Googleで教育に関するコンピュータサイエンスのプロジェクトに参加しました。その時はSubject Matter Expert、つまり知能獲得や演算に使われる知能などに関する専門家という立場ですね。そのままGoogleで働くという選択肢もありましたが、GitHubを選んで今、データサイエンティストのチームで働いています。実際にソースコードを用いて、どうしてこのアルゴリズムなのか、達成したい目的に対してどうしてこのコードを採用したのかなどを研究したいと思ったからです。その研究を続け、より深い知識を得るためには、膨大なオープンソースのソースコードがあるGitHubが最良の選択肢だったのです。
今回はExperimentsということでGitHubの中の研究開発の一部を公開するという発表がありましたが、それに関わっているということですか?
Miller:そうです。今回はSemantic Searchという機能について、キーノートでも紹介を行いました。これは単にキーワード検索を行うのではなく、ソースコードの意味を検索することを可能にするものです。現在は、Pythonのコードに存在するdocstringを使ってそのコードの意味を理解し、検索ワードに対してそれが最も意味的に近いものを表示するというものを実装しました。
現在はPython、そして英語による検索だけですが、自然言語の部分を変えれば、いかなる言語においても実現が可能になると思います。
参考:Semantic Searchに関するブログ:Towards Natural Language Semantic Code Search
単にソースコードの意味を検索するだけではなく、脆弱性がありそうなソースコードに対してそれを修正する、といった使い方も可能になるのでしょうか?
Miller:原理的には可能になると思います。また膨大なソースコードを元に、ある特定の書き方をするとバグが起こる確率が高いので、それを修正するための提案を行うということも可能になると思います。そのためには多くのソースコードを機械学習する必要がありますし、そのためのコードはGitHubにしかないというのが私の見解です。
最後にご自身の夢は?
Miller:私の夢というか、やりたいことは2つあります。1つ目はテクノロジーを使って誰もが問題を解決できる能力を身につけることを可能にしたい、そのためには何が必要かを考え実現する、というものです。その最たるものがソフトウェアつまりプログラムですね。
そして2つ目は人がコラボレーションを行うことを、もっと簡単にしたいと考えています。私はヒューマンセントリックデザインを信じていますので、人間同士がもっと一緒に作業して何かを成し遂げるということを助けたいと常に考えています。これは夢、どこまで行っても終わりがないというプロジェクトになってしまうかもしれませんが、死ぬまでこれを追求していきたいと考えています。
昨年のGitHub Universeでは、データサイエンティストであるMiju Han氏に対するインタビューを行ったが、今年のカンファレンスではGitHubの機械学習による研究やデータ分析が、より深みを増しているという印象を受けた。
参考:GitHub.comが産み出すデータの活用法とは? 責任者たちが未来のソフトウェア開発を語る
「人はいかにしてプログラミングを習得するのか?」これはなかなかの難問だ。これに関する新しい提案が、バークレイやカーネギーメロンと言った最先端の大学ではなく、GitHubのデータサイエンティストチームから生まれてくるかもしれない。そんな予感を感じさせるインタビューとなった。