デジタル人材の育成

未踏IT人材発掘・育成事業:2018年度採択プロジェクト概要(松井PJ)

1.担当プロジェクトマネージャー

  • 竹迫 良範(株式会社リクルートマーケティングパートナーズ 専門役員)

2.採択者氏名

  • 松井 健(立命館大学 情報理工学部 情報理工学科)

3.採択金額

  • 2,304,000円

4.テーマ名

  • C++ユーザのためのパッケージマネージャの開発

5.関連Webサイト

  • https://poac.pm

6.申請テーマ概要

近年、急速にソフトウェア技術が発展を続けており、それに伴って多くのプログラミング言語が開発されてきた。これらの言語には、汎用性の高い関数などを纏めたライブラリが存在し、言語のインストール時に付随する標準ライブラリと、外部からダウンロードを行う外部ライブラリの2種類に分類されることが多い。外部ライブラリを扱うには、外部からダウンロードを行うだけでなく依存関係解決などの作業も必要になるが、このような作業を全て担ってくれるのがパッケージマネージャである。Pythonにはpip、Elixirにはhexといったパッケージマネージャがあるように、C++にもconanというパッケージマネージャがある。しかし、conanは他言語のパッケージマネージャと違い、インタフェースが直感的でない等の理由から、C++ユーザから敬遠されている。このままでは、C++にはパッケージマネージャが存在しないのと等しく、ユーザ自らがライブラリ管理を行う必要があるため、C++は入門しやすい言語とは言えない。
そこで本プロジェクトでは、初学者でも使いやすいC++のパッケージの整備と、それらを管理する独自パッケージマネージャを開発する。クライアントサイドには、様々なコマンドでパッケージ管理を行うことが可能なコンソールアプリケーションを提供する。それに加え、コンソールアプリケーションのコマンドに対応するAPIサーバと、パッケージやドキュメントなどを検索・表示できるWebサーバを提供する。
本システムは、乱立したライブラリ群を同一のシステム上に纏め、共通のインタフェースで提供することで、初学者の入門と優れたパッケージの生成の循環、即ちエコシステムを生み出すことができる。加えて、本システムをオープンソースソフトウェアとして公開し、CI/CD環境を提供することで、本システムの開発がより活発化することが期待される。

7.採択理由

本提案は、PythonのpipやRubyのgemのような位置づけに相当するC++言語ライブラリのパッケージマネージャをフルスクラッチで新しく開発するという野心的なプロジェクトである。既存のC++ライブラリのパッケージマネージャとしてconanが存在するが、正直なところC++プログラマの間で広く普及しているとは言い難い現状がある。他のプログラミング言語のパッケージマネージャの変遷の歴史を見ると、PerlではCPANが昔からの標準パッケージマネージャとして存在していたが、旧来のCPAN::shellのままでは使い勝手の問題が存在するため、インストール時のコマンドのCUI体系を新しく再整理したcpanminusが新たに開発され、現場ではcpanmが好まれて使われるようになった。また、JavaScriptのnode.jsのパッケージマネージャとしてはnpmが有名だが、最近ではそれを置き換える高速なパッケージマネージャyarnの開発が進んでいたりする。C++プログラマが使いやすいと感じるUXを実現したパッケージマネージャを開発することは、今後C++プログラマを新しく増やしてコミュニティ形成していくためにも意義があり、将来的には本提案のパッケージマネージャがデファクトスタンダードになっていくことを期待している。