GitLab(ギットラボ)の使い方を
初心者向けに分かりやすく解説
2023年1月13日
ご相談・無料お見積りDXの流れがますます加速するなか、システム開発においてもこれまで以上にスピーディな対応と品質の向上が求められ、DevOps(デブオプス)と呼ばれる概念が注目を集めています。
GitLab(ギットラボ)は、そんなDevOpsを実現するために必要な機能がすべてそろった開発支援ツールで、世界中で10万以上の組織で活用されています。
この記事では、そんなGitLabの使い方を初心者向けに分かりやすく解説します。
GitLab(ギットラボ)とは
GitLabは、単一のアプリケーションでDevOpsのライフサイクル全般に対応し、ソフトウェア開発サイクルの高速化を可能としたアプリケーション開発支援ツールです。
ソースコード管理、プロジェクトの進捗管理、CI/CDパイプライン機能など、DevOpsに欠かせない機能がそろっています。
テスト・セキュリティ・コンプライアンスチェック・デプロイなど、これまで手動作業で行っていた工程を自動化できるため、業務の効率化やリリーススピードの高速化が可能です。
GitLabにはSaaS版とSelf-Managed版があります。
Self-Managed版はオンプレミス環境での運用ができるので、セキュリティやコンプライアンスにも対応しています。また、細かいカスタマイズも可能なため、開発現場ごとの状況に即した運用ができるのも魅力の一つです。
DevOps(デブオプス)とは
近年、ソフトウェア開発の現場では、プロセスの迅速性や品質向上、コスト削減が同時に求められるようになり、既存の開発体制を大きく見直すことも必要になりました。
組織やチームで大規模なアプリケーション開発を行う場合、役割の異なるメンバー同士のコミュニケーションを重視して、コラボレーションと知識共有を促進することが重要です。
そうした中で、日本でも実践され始めているのがDevOpsです。
DevOpsとは、エンドユーザに対して確実にビジネスの価値を届け続けることを目的に、開発担当と運用担当が連携・協調し、柔軟かつ迅速にシステムを開発する開発文化です。
DevOpsの詳細については、以下の記事で詳しく説明しています。
https://aslead.nri.co.jp/products/gitlab/column/what-is-devops-meaning-and-necessity.html
株式会社野村総合研究所(NRI)がおすすめするGitLabは、このDevOpsを実現するための必要な機能がそろったアプリケーション開発支援ツールです。
GitLab(ギットラボ)が他のツールより優れているポイント
GitLabが他のツールより優れたポイントは数多く存在しますが、ここでは主な特徴を3つ挙げて紹介します。
1. ソフトウェアデリバリーのライフサイクル全体をオールインワンでカバー!
GitLab は、Git(分散型バージョン管理システム)をベースとしたソースコード管理機能によって、ソフトウェアデリバリーのライフサイクルを可視化・最適化し、デリバリー速度と生産性を大幅に向上します。
また、Ultimateプランに変更することで、プランニング機能が有効となり、プロジェクトの進捗管理を最適化するとともに、CI(継続的インテグレーション)機能による自動テスト、静的/動的セキュリティテスト、コード品質分析結果の迅速なフィードバックなどを実現。
さらに、パイプラインに組み込まれたCD(継続的デリバリー)機能によってリリースおよびデリバリーを自動化し、デリバリーサイクルを短縮します。
つまり、GitLabは通常のDevOpsをカバーすることはもちろん、セキュリティを考慮したシステム設計を前提に運用や保守を行うDevSecOpsの要件まで対応可能にするツールといえます。
2. 頻繁なバージョンアップで、常に最新機能をキャッチアップ!
GitLabは、他のGit由来ツールに比べて最新機能のリリースサイクルが早いのも特徴です。
月に1度マイナーバージョンアップを実施するとともに、毎年メジャーバージョンアップも実施し、その迅速な機能拡充と最新のセキュリティ対応によって、開発ライフサイクル全体を支援できるよう常に進化し続けています。
GitLab社の開発チームは開発文化のモダン化やプロセスの変革につながるベストプラクティスを製品開発に反映しています。
3. 小さく始め、大規模プロジェクトにも対応する、柔軟なスケールアウトを実現!
GitLabは、OSS(オープンソースソフトウェア)のため、無償版で使い始めることが可能です。
また、開発プロジェクトの規模や機能拡張の必要に応じて有償版も用意されており、「Starter」(1ユーザー:48米ドル/年)、「Premium」(1ユーザー:228米ドル/年)、「Ultimate」(1ユーザー:1188米ドル/年)などから選択することができます。
●GitLabのUI画面の例
GitLab(ギットラボ)でできること
続いては、GitLabの導入によってどんなことが実現できるのか、より具体的に解説していきます。
ソースコードのバージョン管理
GitLabのGitとは、分散型のバージョン管理システムをあらわす言葉です。
開発者がそれぞれのPCにローカルリポジトリを作成し、プルでリモートリポジトリ(共有レポジトリ)の内容をダウンロードして取り込みます。
また、ローカルリポジトリで行われた変更内容は、プッシュでリモートレポジトリに反映できます。
開発者は各自のPCにあるローカルレポジトリで作業を行うため、ネットワークに接続する必要はありません。
さらに、ブランチやタグへのアクセス制御機能、ソースコード検索や履歴表示などの機能が搭載されているため、安全かつ効率的にソースコードのバージョン管理が可能です。
コードレビュー
アプリケーション開発において、コードレビューは正確かつ効率的に行うことが重要です。
GitLabでは、コードレビューを視覚的に分かりやすくタスク化できるため、承認漏れや承認遅延を防ぐことにつながります。
また、コードへの注釈コメント機能を活用することで、より効率的なフィードバックができるようになり、開発者同士のコミュニケーションが生まれるメリットもあります。
マージリクエスト機能
マージリクエストはGitLabの基礎となる機能で、コードを追加・修正・削除したブランチを、別のブランチにマージする許可を得るための承認作業です。
GitLabでは、変更箇所のみを「差分」として通知できるため、更箇所のみを分かりやすく通知することで、レビューを容易に行うことが可能です。
また、GitLabの有料版では、マージするために必要な承認数、承認者、グループなど、マージリクエストの承認ルールを細かく設定することが可能です。
GitLabの高度なマージリクエスト機能については、以下の記事で詳しく説明しています。
https://aslead.nri.co.jp/products/gitlab/column/advanced-merge-request.html
CI/CD
CI(継続的インテグレーション)とは、開発者が作成した新しいコードを頻繁に共有リポジトリに統合する仕組みのことです。
ビルドやテストを自動化することで効率化し、開発サイクルの初期段階でバグをキャッチすることにもつながります。
CD(継続的デリバリー)は、ビルドやテストが完了したプログラムが自動的にリリース、デプロイされる仕組みのことです。
これにより、リリースサイクルを大幅に短縮することができ、プログラムは継続的に自動更新されることになります。
Issue(課題)管理
GitLabでは課題のことをIssue(イシュー)と呼びます。
GitLabには、Issueトラッキングシステムが搭載されているため、作業やバグ修正などの課題に対してIssueを作成し、担当者・履歴・状況などを確認しながら作業を行うことができます。
あらゆるタスクを自動化
GitLab Runnerは、ビルド・テスト・リリース・デプロイに関連するあらゆる種類のタスクを自動化し、GitLabのCI/CD機能と組み合わせてジョブを実行するオープンソースです。
ジョブの実行結果は、GitLabの画面上から確認できます。
外部サービスとの連携
GitLabと外部サービスを連携させることで、より便利に使うことが可能です。
例えば、タスク管理ツールであるJiraとGitLabを連携させると、それぞれの情報が共有できるようになります。
GitLab(ギットラボ)の使い方
ここからは、GitLabの主な機能や使い方を解説します。
プロジェクトの作成
プロジェクトとはリポジトリのことです。
プロジェクトは新規作成以外に、テンプレートを利用することもできますし、他のリポジトリをインポートして使用することも可能です。
ブランチの作成
ブランチとは、オリジナルから枝分かれしたコピーのことです。
ブランチを作成することを「ブランチを切る」と表現します。ブランチを切ることによって、修正途中の資源をオリジナルに誤って適用されるのを防ぎ、また、個人作業用のワークスペースとして利用することができます。
クローン
クローンとは、リモートレポジトリ(共有レポジトリ)をコピーして、使用者それぞれのPC内にローカルレポジトリを作成することです。
ステージング
ステージングとはコミットしたいファイルを指定する作業です。
ステージングは、誤って修正途中やコミットしたくないファイルをコミットするのを防ぐことができます。
コミット
GitLabのような分散型バージョン管理システムにおけるコミットとは、使用者のPCに作成したローカルリポジトリに変更内容等を保存することです。
プッシュ/フェッチ
プッシュとは、ローカルリポジトリの変更内容をリモートリポジトリに反映する作業です。
プッシュを行うことで、変更内容を他の人が確認できるようになります。
フェッチは、リモートリポジトリの内容をローカルリポジトリに反映させるコマンドです。
マージリクエストの作成
マージリクエストはGitLabの基礎となる機能で、コードを追加・修正・削除したブランチを別のブランチにマージ(反映)する許可を得るための承認作業です。
マージリクエスト運用等に関する詳細については、以下の記事で詳しく説明しています。
https://aslead.nri.co.jp/products/gitlab/column/advanced-merge-request.html
マージ
マージには、融合する、統合するといった意味があります。
GitLabでいうマージとは、コードを追加・修正・削除したブランチを別のブランチに「反映」させることです。
大規模プロジェクトにおけるGitLab(ギットラボ)の事例
GitLabは、小~中規模開発のみならず、大規模開発でも有効な機能が多く搭載されています。
例えば、プロジェクトの権限制御(下図内①)や、パイプライン化により手順を標準化して、戻り率の低下、作業の高速化を実現する機能(下図内②)などは、無料版でも利用できます。
しかし、開発メンバーが100人を超えるような大規模プロジェクトには、有料版の利用をおすすめします。Premium以上のエディションでは、チームでのDevOpsの実践を促進する機能が数多く利用可能になっています。
例えば、ブランチ(プロジェクト本体に影響を与えずに、プログラムの修正や機能の追加を行う分岐ポインタ)をマージ(結合)する前に、チームメンバーにブランチの更新内容をレビューして、そのフィードバックを共有させることができるMerge Requestという機能で、承認作業が可能になります。そのコードレビューをする際に、複数の承認者をアサインする機能や(下図内③)、品質チェックに利用できるコード品質レポートが活用できます(下図内④)。
GitLab(ギットラボ)を効果的に活用するNRIの「aslead DevOps」
GitLabの有償版をお手頃の価格で使いやすくし、ほかの機能と容易に連携できるようにして開発生産性を高めたのが、NRIの開発管理ソリューション「aslead DevOps」です。
NRIが長年手掛けてきた金融業界向けの、極めてセキュアなシステム開発から生み出されたノウハウを基に、ソースコード・モジュールの管理やCI/CD機能・品質分析などのポートフォリオを、NRI独自のプラグイン(ツール横断での認証、監視機能など)で統合。大規模エンタープライズビジネスで求められる機能・サポートを提供します。
開発業務の効率化・自動化を実現することで、生産性を向上することを目的としています。
aslead DevOpsでは、GitLabのほかに、次のツール類がラインナップされています。
モジュール・コンテナ管理ツール 「Sonatype Nexus」 |
複数のサブプロジェクトが動く大規模開発において、独自のパッケージリポジトリやコンテナレジストリを構築し、ライブラリの依存性解決を自動化します。 |
ビルド・デプロイなどのジョブ実行ツール 「GitLab Runner」 |
GitLab上でのプッシュ(追加や変更履歴をリポジトリに保存すること)を検知すると、GitLab RunnerがジョブのCI/CDパイプラインを実行します。 |
ソースコード分析ツール 「SonarQube」(オプション) |
重複コードの検出や循環的複雑度の計測、脆弱性の検出、issueの管理などを実行します。 |
APIテストツール 「Karate」(オプション) |
APIテストの自動化やモック(仮のクラス生成)、パフォーマンステストなどを、単一のフレームワークに統合します。 |
NRIでは、次のような課題をお持ちの開発組織・チームを、aslead DevOpsでサポートしたいと考えています。
- ライブラリ管理サーバを、オンプレミス環境に構築するよりもSaaSで利用したい。
- ソースコードやモジュールのバージョンが適切に管理されておらず、ライブラリ管理がうまくいっていないと感じている。
- 定型作業を手順で行っており、CIツールを導入して自動化したい。
- 開発したソースコードを静的解析することで、自動的にルール違反を検知し、品質担保したい。
このようなお悩みをお持ちなら、ぜひ、NRIにご相談ください。
GitLab(ギットラボ)の導入・使い方に関するお問い合わせ
GitLabには、開発担当と運用担当が連携・協調し、柔軟かつ迅速にシステムを開発するDevOpsを実現するための機能がすべてそろっています。GitLabを活用することで、開発業務の効率化や自動化を実現することができ、エンドユーザに対して確実にビジネスの価値を届け続けることが可能です。
GitLab のより詳しい説明については、以下の製品ページをご覧ください。
https://aslead.nri.co.jp/products/gitlab/
また、NRIの開発管理ソリューション「aslead DevOps」については、以下のページをご覧ください。
https://aslead.nri.co.jp/solution/aslead_devops.html
GitLabの導入や使い方ついては、お問い合わせフォームまたはメールにてNRIにお気軽にお問合せください。