バージョン管理システム
エンジニアにとって、システムを開発する上でバージョン管理システムは無くてはならない存在となっています。バージョン管理システムが利用される以前は、ソースコード上にいつ追加・編集・削除したのかも記述しており、システムが成長するに従ってコメントされている行が増え、可読性が悪くなっていったことを覚えています。
そして今やエンジニアだけでなく、GUIクライアントを利用しプランナーやデザイナーなどもバージョン管理システムを利用するようになりました。そのためダミーのページで開発を進めていると、いつの間にか本番ページに変わり、開発の励みになるということもよくあります。
またプライベートな開発でも必ずバージョン管理システムを使っています。バックアップの意味合いもありますが、大きく処理を変更したがやっぱり元に戻したいというときに簡単に戻せるので重宝しています。
Git
そのようなバージョン管理システムはGit, Subversion, CVSなど様々な種類がありますが、私が携わる最近のプロジェクトでは100% Gitが利用されています。以前はSubversionも利用していましたが使い勝手はGitの方が運用しやすく、新しいプロジェクトで私が選択するバージョン管理システムは必ずGitとしています。
私がGitを利用するときはGitホスティングサービスを利用しており、これまでオープンソースソフトウェアの場合はGitHub、プライベート用途であればBitbucketなどを使い分けていました。
GitLab
では仕事向けにはというと、GitLabを利用しています。ただGitLab.comで展開されているGitホスティングサービスではありません。GitLabは、GitLab Community Edition (以下GitLab CE)が公開されており、Linuxにインストールすることができます。なぜGitホスティングサービスを利用しないのかというと、リポジトリのサイズに制限があるからです。機械学習のプロジェクトであれば、データは軽くGBオーダーの膨大なものになります。そのデータの置き場と機械学習のためのソースコードを別の場所で管理すればいいだけの話ですが、研究者にインフラエンジニアの都合を押し付けては研究者の開発が進みません。そのため、その膨大なデータをも管理できるサーバを用意し、そこにGitLabを載せています。
またGitLab CEのインストールにはOmnibusパッケージが提供されており、これを利用するとLinux上へのインストールが簡単と言われています。
https://about.gitlab.com/installation/
Marketplace
しかし、サーバに不慣れなエンジニアがいざインストールしようと思うと、事前準備が多く手間取ってしまうでしょう。そこで紹介したいのが、AWS Marketplaceに用意されている「GitLab CE Certified by Bitnami」です。これはBitnamiによりGitlabのイメージが作成されており、これを用いてサーバインスタンスを立ち上げ、ブラウザよりそのIPアドレスにアクセスすると、すぐにGitLabが利用できる優れものです。このイメージを利用したからといって料金を請求されることもありません。通常のサーバインスタンスを立ち上げたときと同様に、AWSの使用料のみが発生するだけです。私もこれを利用し、スタートアップ企業のプロジェクトをスムーズに立ち上げました。
同様なものがGoogle Cloud Platform (GCP) のMarketplaceにも用意されています。
まとめ
機械学習のような膨大なデータをバージョン管理しようと思うと、GitLab CEが適しており、そのサーバにはAWSやGCPのMarketplaceを利用すると簡単に用意できることを紹介しました。GitLabに限らずAWSやGCPのMarketplaceには、多くのエンジニアが求めているRedmineやJenkinsなど多くのイメージが用意されていますので、ぜひ利用してみてはいかがでしょうか。