はじめに
個人的な見解をまとめたものであり、所属する組織とは無関係です。
また、現在の部署に着任して日が浅いため、事実と異なる点があるかもしれません。悪しからず。
Markdownでの資料が市民権を得ることができれば、PowerPointの資料作成から脱却できるのになぁ…
要件定義
個人的なイメージで書いています。
1. セキュリティ
「社内OAや検証用NWなど、クローズドな環境で運用できること」
インターネット上に情報を置くことは情報流出やウイルス感染の危険があるためNG。これまでに社内LAN内にRedmineを導入しているため、新しい手続きなどはいらない?
何か調べようとしても、閲覧禁止サイトに登録されており、自分のスマホで調べることもしょっちゅう。バージョン管理システムについて検討している際も何度もフィルタリングされた。閲覧禁止理由が「Information Technology」とか、もう…
2. 導入事例&ナレッジ
「何か困ったときすぐ検索できるように、導入事例やナレッジが豊富にあること」
何かOSSやLinuxのコマンドでエラーが出力された際、「エラーメッセージやログを追いかける」「マニュアル(manコマンドやhelpオプション)を読み返す」よりも先に「エラーメッセージをそのままググる」ことが多いです。また、何かプラグインを導入する際も、プラグインの公式サイトよりも導入事例の記事を先に読むことがほとんどです。公式マニュアルをもとに導入してみた記事などがあるとイメージがつかみやすくていい。
3. 機能
「WebGUIである程度のリポジトリの操作ができること」
自分を含めて、Gitをバリバリ使ったことがない人ばかりのため、WebGUIは必須かなと思います。
「各自のネームスペースを持てること」
ローカルフォルダの作業を防ぎ、必ず他のメンバーに共有できるようにするためです。
「カンバンなどコードを書く人にとって、便利なツールがビルドインされていること」
これまで、個人フォルダでツールを作っていた人にとっては、新たにバージョン管理システムを利用の習熟が必要になるため、ネガティブな印象を持たれると思っています。そのため、習熟コストを上回るメリットとして、WebIDEや、カンバンといった便利な機能も必要だと考えます。
直近では、ソフトウェア開発を受託しているわけではないのでマネージャに対して、ソースコードの中身について報告する必要はないと思いますのでツール開発者にとって使いやすいものを優先すればいいと考えます。マネージャへ報告する必要があるものRedmineでいいかと。
https://about.gitlab.com/2018/08/02/4-ways-to-use-gitlab-issue-boards/
4. システム連携
「CIツールやすでに社内で導入されているシステムと連携する仕組みがあらかじめ備わっていること」
2,3年後に今回導入するバージョン管理システムがどれだけ利用されているかわかりません。既に社内LAN上に導入されているRedmineも導入直後は周囲の目は冷ややかでしたが、現在では無くてはならないツールになっています。また、新たなツールを導入していく際に本バージョン管理システムが足かせにならないよう、他のシステムと連携する仕組みは必須だと思います。
5. コスト
「費用対効果を算出するには根拠が乏しすぎるため、ひとまず無料であること」
所属する部署では、ボスや他の部署の取り組みの影響により、ここ1,2年でPython、Javaによる開発/検証/維持管理業務などの効率化の流れが来ていますが、ソースコードをばりばり書く文化はなく、一部のメンバーがTeratermマクロやExcel関数を用いたツールを作っていた程度です。
そのため、Javaで作成したプログラムにより削れる稼働は算出できても、バージョン管理システムの有無によるプログラム作成にかかる稼働や品質の違いを「自分」が説明できないためです。使い慣れている人に話を聞きたい…
6. 環境構築、メンテナンス
「クローズドな環境に構築するため、必要なものが全てパッケージングされており、インストールやアップデートが簡易であること」
環境構築時にあわよくばDevOpsに実現に必要なツール郡の導入と連携がまとめてできると言うことなしです。
メンテナンスとしては、「2.導入事例&ナレッジ」と相反しますが、公式マニュアルが充実していれば、新たに手順書などを作成しなくていいので楽かと思います。
7. 認証/権限付与
「ActiveDirectory or LADP連携が可能で、ロールによる権限の管理が可能であること」
これは、組織で利用する上では必須項目だと思います。
https://www.ossnews.jp/oss_info/GitLab#Div0
https://developers.gnavi.co.jp/entry/gitlab
導入検討
GitHub、GitLab、BitBucketを比較した結果、GitLabを選定!
https://www.gitlab.jp/comparison/gitlab-vs-github.html#dropdown
https://www.gitlab.jp/comparison/gitlab-com-vs-bitbucket-org.html#dropdown
https://qiita.com/developer-kikikaikai/items/3fd1277a9a5778000638
課題事項
これまでソフトウェア業界では当たり前に利用されてきたバージョン管理システムは、非常に便利な反面、運用ルールの策定や初心者の習熟など利用する側の課題が多いかと思います。
https://techracho.bpsinc.jp/morimorihoge/2014_04_25/16856
1. 組織に適応したバージョン管理ツールの運用ルールを策定すること。
担当している案件や組織の文化に応じたルールを設定する必要があるため、我々で運用ルールをどこまで決めて他部署に展開することが適切か正直わかりません。
2. 初心者の習熟が困難であること。
ドキュメントを単純に保存するだけでは問題ありませんが、ツールやソフトウェアを”複数人”で”同時”に開発する(=ブランチやマージを利用する)上では、ソースコードをコミットする全員がGitについてよく理解していないとリポジトリが崩壊します。自分もSVNしか利用したことがないですが、何度も誤コミットがありました。
ソフトウェア開発が主業務であれば、嫌でもそのうち習熟するかと思いますが、主業務ではないのでどうやって慣れてもらうかは課題です。マニュアルも大事ですが、実際に触って覚えるしかないため、部署内アプリコンペなどいろいろと触る機会を作っていく必要があるかと思います。