卒業研究のご紹介
2021年版
情報系所属学生
プログラミング支援のためのコード機能推定に基づくソースコード推薦手法
齋藤 愛莉佳神奈川県
大学院情報工学専攻 博士前期課程1年
(情報学部情報工学科2021年3月卒業)
(情報学部情報工学科2021年3月卒業)
神奈川県 向上高等学校出身
研究の目的
ITを活用したビジネスが増加してきており、プログラミング技術を持つ技術者の需要は高まってきている。一方では、情報技術を活用したビジネスの拡大化に対応できる技術者が圧倒的に足りておらず、月日が経つにつれて不足する技術者数は増加していくという予測がされている。この予測から、「技術者の負担が増加する」、「技術者を育てるために必要となる人材や時間を割けない」等の問題が発生し、拡大していくことが推測できる。このような問題を緩和するためには、ソフトウェア・エンジニアの技能やソフトウェア開発の効率を高める仕組みが必要である。そのために、ソースコード推薦やソースコード自動生成等の研究がされている。
本研究では、プログラミング学習及びソフトウェア開発の支援を目的として、コード機能推定に基づいてプログラム作成者やプログラミング学習者が求めている機能を持つソースコードを推薦する手法を提案した。
本研究では、プログラミング学習及びソフトウェア開発の支援を目的として、コード機能推定に基づいてプログラム作成者やプログラミング学習者が求めている機能を持つソースコードを推薦する手法を提案した。
研究内容や成果等
■ 提案手法
本研究では、この課題を解決するために、プログラム作成者等が求める機能を持つソースコード推薦手法を提案する(図1)。提案手法の特徴は、ソースコード手順の文脈を解釈して、処理手順を補完する機能、及び続きとなる機能を持つソースコードの推薦機能を実現する点にある。このために、まずソースコード機能分析により、ソースコード手順を機能ラベルの列として抽出し、ソースコード集合を機能ラベル列集合として表現したコーパス(以降、ロジック・コーパス)を生成する(図2)。ロジック・コーパスの深層学習により、ソースコードの機能を推定・補完するコード機能推定モデルを構築する。コード機能推定モデルは双方向LSTMで構築する。推定モデルに未完成の機能ラベル列を入力し、補完可能と思われる機能をn個推定する。補完対象となる機能の位置より前にあるコンテキストは順方向、後にあるコンテキストは逆方向に並び替えた後に推定モデルに入力する(図3)。
■ 実験
実験では、ロジック・コーパスの学習によりソースコード手順を補完する推薦機能が実現可能であることを確認する。機能ラベル推定にはCode2Vecを用いる。Javaソースコード750件より生成したロジック・コーパス例を表1に示す。このロジック・コーパスを双方向LSTMとLSTMで学習し、コード機能推定モデルを構築した。補完機能の推定対象となる未完成ソースコード5件(表2)を入力したときの評価数の結果を図4に示す。表2で「*」は補完機能の位置を表す。高評価(合致)、中評価(類似)、低評価(合致・類似せず)と評価基準を定めて評価した結果、推定した機能への高評価の数は双方向LSTMが多かった。
■ まとめと今後の展望
実験結果より、提案手法の実現可能性を確認できた。今後、ロジック・コーパス数を増やすとともに、BERTを用いたコード機能推定モデルを構築し、提案手法の有用性を検証していく。
研究活動では、教授や大学院生、卒業研究生と議論し合ったり、情報を共有したりすることで、大学入学前から行いたいと考えていた研究をしつつ、より多くの技能を身につけることができました。また、他の方の研究を見聞していくうちに、自分の研究についてより理解を深めることができ、新たなアプローチ方法を見出すことができました。