見出し画像

Increasing Developer Productivity by Improving Build Performance and Automating Logging Code Injection

邦訳:ビルド高速化とログの自動挿入による開発者の生産性向上に関する研究

窪田貴文

((株)フィックスターズ ソフトウェアエンジニア)

画像2

------------------ keyword ------------------
ビルド高速化
ビルドシステム
ログの自動挿入
コード解析

----------------------------------------------

【背景】システムソフトウェア開発の大規模化(開発者人数,コードサイズ)
【問題】大規模なシステムソフトウェアのデバッグ・ビルド時間の増大
【貢献】ロギングコードの自動挿入によるデバッグ支援と新しいビルドシステムによるビルド時間の短縮

 近年,ソフトウェア開発の規模(開発者人数,コードサイズ)が爆発的に増大しています.そして,大規模なプロジェクトでは円滑に開発を行うために開発プロセスの一部を自動化することが一般的です.たとえば,GitHubでは新たな変更が加えられたときに自動でビルドを実行して正しくビルドができるか確認できるような機能が存在します.しかし,このように自動化によって開発効率を向上させることができる一方で,どうしても手間や時間がかかる作業が存在してしまいます.この博士論文ではその中でデバッグとビルドというプロセスに着目しています.この2つのプロセスは非常にコストのかかるプロセスと知られています.たとえば2013年に行われた443人のソフトウェアエンジニアを対象とした調査では,勤務時間のうち多くの時間をビルドの完了を待つのに費やされています[1].また,デバッグも勤務時間の半分を占めていると言われており,金銭に換算すると$321billion/年にもなると言われています[2].なので,ソフトウェア開発を効率的に行うためにはこの2つのプロセスを改善することが重要となります.

 デバッグは非常に大変な作業として知られています.さまざまなデバッグ方法がありますが,一番原始的で今でもよく用いられているのはログを用いたデバックです.一方,ソースコード中のどこでどのような内容をログとして出力すればいいかは複雑で巨大なシステムになるほど判断が難しくなってきます.そこで,博士論文では開発者が大規模なシステムソフトウェアの細かな知識を持たなくてもデバッグの際に有用なログを出力できるようにロギングコードの自動挿入をするシステムを提案しています.提案手法は,世界中で広く使われているLinuxカーネルの未知のバグのデバッグ支援に貢献しました.

 また,ビルド時間も大きな問題の1つになってきています.たとえば,iPhoneのウェブブラウザーであるSafariのブラウザエンジンであるWebKitは何十万円もする高性能なサーバでもビルドに1時間以上かかっていました.WebKitはオープンソースのため,誰でも開発に参加できます.個人の開発者は自身のPCでビルドすることが多いため,実際にはより長くビルド時間がかかっていると推測されます.また,WebKitのような大きなプロジェクトは開発が活発で頻繁にビルドが発生するため,ビルド時間を短縮することは開発効率を上げるうえで非常に重要です.そこで,博士論文では各ソースファイルを単体でコンパイルするのではなく,複数のソースファイルをまとめてコンパイルすることで異なるソースファイルで同じ処理をしている部分を省略することでビルド時間を短縮する研究を行いました.その結果,WebKitのビルド時間を23%削減することができました.

参考文献
[1]https://www.infoworld.com/article/2613762/software-engineers-spend-lots-of-time-not-building-software.html
[2]http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.370.9611&rep=rep1&type=pdf

画像2

(2021年5月28日受付)
(2021年8月15日note公開)

ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー
 取得年月日:2021年2月
 学位種別:博士(工学)
 大学:慶應義塾大学

ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー

推薦文:(システムソフトウェアとオペレーティング・システム研究会)
基盤ソフトウェアの大規模化が進み,その開発手法の効率化が重要となっている.本論文ではLinuxカーネルを含む大規模なC/C++ソフトウェアを対象に,デバッグ時間やビルド時間の短縮を行う手法を提案し,Linuxカーネルにおける実際の障害のデバッグや,ウェブブラウザのエンジンであるWebKitのビルド時間の短縮に成功している.


窪田貴文

研究生活:もともと学部生のときから,オペレーティングシステム(OS)やコンパイラなどプログラミングをする上で当たり前とされているものについて興味がありました.研究室配属後に両方の知識が必要となるOSのコードをコンパイラ技術によって自動解析するという研究をはじめました.新規性のあることは誰もやっていないことなので,とにかく時間がかかりますが,新しい発見や問題を発見できる喜びを知ることができます.また,なかなか論文をacceptさせるのは難しく,大変でしたが,研究でしか身につけられない能力が鍛えられました.研究テーマの考え方,論文を読んだときの着目点,自分の研究を俯瞰的に見てプレゼンする,といったことです.最終的にはC++ プロジェクトのビルド高速化という研究テーマを立ち上げ,論文をacceptさせることができたのは地道に研究を続けてきた成果だと思います.博士課程は決して楽なものではないですが,学生として研究の面白さに十二分に没頭できる最後のチャンスなのでぜひ挑戦してみてください.