この記事では、GitLab とは? ギットラブの使い方や主要な機能などについて解説します。読者が GitLab を効果的に活用できるように、基本的な操作から今年導入された新機能まで、噛み砕いて分かりやすく説明していきます。
GitLab とは?
GitLab(ギットラブ)とは、バージョン管理システムを中心としたアプリケーション開発ツールです。バージョン管理以外にも課題管理、コードレビュー、CI/CD、モニタリングなど開発に欠かせない多くの機能が備わっています。
GitLab には無料で使える Community Edition(コミュニティ エディション / CE)と有料の Enterprise Edition(エンタープライズ エディション / EE)の2つがあります。エンタープライズ エディションをダウンロードしても、ライセンス登録をしなければ、無料でコミュニティ エディションの機能を全て使えます。また、GitLabには、「Self-Managed」と「SaaS」版2種類があります。
GitLabに関する専門用語を見てみましょう
理解の壁となりそうな専門用語を最初に見てみましょう。
用語 | 説明 |
---|---|
Git(ギット) | 分散型バージョン管理システム |
リポジトリ | ソースファイルを保存する場所(特定の許可されたユーザーのみアクセス可能にすることもできる) |
ローカルリポジトリ | チームメンバーそれぞれのPC上にあるリポジトリ |
リモートリポジトリ | GitLab上にあるチーム共有のリポジトリ |
クローン | リモートリポジトリを自分のPCにコピーしてローカルリポジトリを作ること |
コミット | 変更内容をリポジトリに保存すること |
ブランチ | 特定の機能の実装や、バグの修正の記録のために分岐されたリポジトリ(ブランチ上でファイルの追加、修正をしても、他のブランチには影響しない) |
マージ | あるブランチ上での変更内容を他のブランチに取り込むこと |
SSH | Secure Shell(セキュア シェル)の略称で、リモートコンピュータと暗号化通信するためのプロトコル |
GitLabの利点と特徴
アプリケーション開発の工程で、今まで手作業で行っていた業務がGitLabによって大部分を自動化することができます。自動化により、リリースまでの時間を短縮するだけでなく、人為的ミスが未然に防止でき、結果的に品質やサービスを向上することができます。
GitLab と GitHubの違いとは?
GitLab と GitHub は、両方 Git サービスですが大きな違いとは、それぞれの理念が提示するプラットフォームです。GitHubは可用性が高く、インフラストラクチャのパフォーマンスに重点を置いているのに対し、GitLab はウェブ開発者のための一元化された統合プラットフォームで機能ベースのシステムを提供することに重点を置いているが主な違いと言えるでしょう。詳しい2つの Git サービスに関する違いについてはこちらをご覧下さい。
GitLab で何ができる?
GitLabの代表的な機能を以下にまとめました。
-
ソースコードの履歴管理、バージョン管理:
GitLabでは、ソースコードの閲覧や履歴表示が可能です。リモートリポジトリ上の特定のブランチやタグを指定して、ローカルリポジトリとしてクローンすることができます。ローカルリポジトリ上で作業する際には、変更内容をリモートリポジトリにマージするタイミング以外は、ネットに接続しないで(オフラインで)作業することが可能です。
-
コードレビュー:
マージの際には、マージリクエスト機能を使い、コードレビューを行うことが可能です。レビュワーからのコメントがすべて解決することをマージの条件とすることで、不明な修正点がない状態のバージョンをマージすることができます。
-
サードパーティアプリケーションとの連携:
拡張機能やタスク管理ツールなどと連携することで、外部サービスから必要な情報をスピーディーに共有できます。
GitLab のインストールと設定
GitLab のインストールとアカウントの作成手順
GitLab をインストールする前に、インストール環境に最低でも 4GB の空きメモリがあることを確認しましょう。確認したら実際に GitLab をインストールします。
① Get free trial をクリックする。
② お持ちの Google か GitHub のアカウントを選択するか、または氏名、ユーザー名、メールアドレス、パスワードを入力し続行をクリックする。
③ 登録したメールアドレスに届いた認証コードを入力し、認証を完了する。
④ 自分の担当業務と、サインアップの理由をプルダウンリストから選択し Continue をクリックする。
⑤ Group name には各プロジェクトを区別するための名前を入力し、Project name にプロジェクト名を入力し、Create project をクリックする。
⑥ 最後に Ok, let’s goをクリックすれば、登録完了です。
GitLabの基本的な使い方
リポジトリ(プロジェクト)の作成手順
① New project をクリックする。
② Create blank project をクリックする。
③ プロジェクト作成画面の Project path には、グループ名 かユーザ名 を選択してから、Project name を入力して、Create project をクリックします。
リポジトリをローカルにクローンする手順
① GitLab リポジトリのトップページの上部でプルダウンリストからSSH を選択したあとで、コピーボタンをクリックして、リポジトリURLをコピーします。
② ブラウザ上に書かれた一連のコマンドをターミナル上で実行すると、リポジトリ名のディレクトリが作成され、リポジトリの内容がクローンされます。
ブランチの作成手順
① リポジトリが表示されているページにあるプロジェクト名の下にある「+」をクリックし New branch をクリックする。
② 作成するブランチ名を入力して Create branch をクリックする。Create from には、作成元となる branch を指定する。作成後は自動的に作成した Branch に切り替わる。
新規 Merge Request の手順
-
マージリクエストのタイトルと説明を入力する。
-
担当者、マイルストーン、ラベル、承認者などを記入してSubmit merge request をクリックする。
コミットとプッシュとは
ファイルやディレクトリの追加・変更をリポジトリに記録することをコミットといいます。コミットをすると前回のコミットから現在の状態までの差分を記録します。これは時系列順にリポジトリに格納されます。バグ修正や機能追加などの種類の違う変更は、変更内容が一定の意味を持つ粒度を単位として、分けてコミットすることで特定の変更内容を探しやすくなります。なお、コミットメッセージが空のままだとコミットできません。 標準的なコメントの書き方は、次の通りです。
1行目: コミットでの変更内容の要約 2行目: 空行 3行目: 変更した理由
ローカルリポジトリの変更履歴をリモートリポジトリに共有するには、ローカルリポジトリ内の変更履歴をリモートリポジトリに反映させる必要があります。そのためにプッシュという操作を行います。プッシュはブランチ単位で行うことができます。
GitLabの主要な機能
コードレビューの実施
コードレビューとは、作成したソースコードに記述ミスやバグがないかを確認する作業のことです。開発者のローカルリポジトリでの変更を他の開発者に通知する機能であるプルリクエストを使うことで、マージ前の変更点をコードレビューする文化を根付かせることができます。作成されたプルリクエストは一覧で見ることができ、未完了のプルリクエストを簡単に確認できます。サーバ上に記録が残るため、問題が起きた時に履歴の確認ができます。
プルリクエストを利用したコードレビューは、以下のようになります。
開発者
- 作業するソースをクローンまたはプルする。
- ブランチを作成する。
- 開発作業を行う。
- 作業が完了したらプッシュする。
- プルリクエストを作成する。
レビュー担当者
- 通知されたプルリクエストから変更内容をレビューする。
- 修正してほしい箇所がある場合ソースコードにコメントする。
- 修正する必要がなければ Conversationタブの Merge pull request をクリックし、Confirm merge でマージする。
- レビューの結果、対応自体が不要となるなど、プルリクエスト自体が必要ない場合はクローズする。
必要であれば3〜7の工程を繰り返します。
CI/CDの設定と自動化
CI(継続的インテグレーション)とは、デプロイするコードの品質を確保しながら、開発スピードを向上させる DevOps ソフトウェア開発手法です。CD(継続的デリバリー)は、コードベースに変更がプッシュされるごとにビルド、テストします。デプロイを開始するステップを追加することで、継続的にデプロイされます。
CI、CD、継続的デプロイメントの違いや、ソフトウェアの構築とテストを自動化する方法など詳しくはこちらからご確認いただけます。
GitLab と CircleCI で CI(継続的インテグレーション)を構築する方法は こちらからご確認いただけます。
CircleCI の CI/CD ツールはこちらから無料で登録できます。
アプリケーションの監視とトラッキング
エラートラッキングにより、開発者はアプリケーションで発生したエラーを発見することができます。エラー情報はコードが開発されている場所に表示されるため、効率と認識が向上します。GitLab 統合エラートラッキングか、Sentryベースのバックエンドのどちらかを選択可能です。
エラートラッキングの仕組み
エラートラッキングが機能するためには、以下の2つが必要です。
-
Sentry をプロジェクトに追加する:
エラーが発生すると、Sentry SDKはその情報を取得し、ネットワーク経由でバックエンドに送信します。バックエンドはすべてのエラーに関する情報を保存します。
-
エラー追跡バックエンドはGitLabかSentryのどちらかであること。
GitLab バックエンドを使うには、統合エラートラッキングを参照してください。 Sentry バックエンドを使う場合は、Sentry error tracking を参照ください。尚、UI はどちらも同じです。
プロジェクトのエラートラッキングを有効にする手順
使用するプログラミング言語にかかわらず、まずは GitLab プロジェクトでエラートラッキングを有効にする必要があります。 以下の手順で GitLab をバックエンドとしたエラートラッキングを有効にします。
- プロジェクトの Settings > Monitor と進む。
- Error Tracking を開く。
- Enable error tracking で、Active をクリックする。
- Error tracking backend で GitLab をクリックする。
- Save changes(変更を保存)をクリックする。
- SDK の実装を設定するデータソース名(DSN)の文字列をコピーしておく。
GitLab の拡張機能とインテグレーション
サードパーティツールとの連携
いつも使い慣れたアプリケーションやツールとGitLabと連携して使うことができます。以下は一般的な拡張機能とそのインストール手順です。
GitLab Notifier for Google Chrome
GitLab の通知を Chrome で受け取ることができるようになります。
① Chrome 拡張機能の GitLab Notifier for Google Chrome をインストールする。
② Chrome のアドレスバーの横に、GitLab Notifier for Google Chrome のアイコンが表示されるので、右クリックし、オプションを選ぶ。
③ GitLab Setting に以下を入力する。
GitLab Path: https://gitlab.com/
GitLab API Path: https://gitlab.com/api/v4
Private token: GitLab で取得した token
④ Save をクリックする。
⑤ Refresh Repository List をクリックする。
⑥ プロジェクトの一覧が表示されるので、参加しているプロジェクトで通知を受けたいものにチェックを付ける。
⑦ Save をクリックする。
VS Code
GitLab と連携できるソースコードの編集を主な目的としたテキストエディタです。この拡張機能を使うには、GitLab パーソナルアクセストークンを作成し、それを拡張機能に割り当てる必要があります。
① Visual Studio Marketplace から拡張機能をインストールし、有効にします。非公式バージョンの VS Code を使用している場合は、Open VSX Registry から拡張機能をインストールする。
② GitLab.com にサインインするには、GitLab: Authenticate to GitLab.com を実行し、OAuthを使って認証する。(この機能は、セルフマネージド・インストールでは利用できません。)
③ OAuthを使ってサインインしていない場合は、apiとread_userスコープを使って個人用のアクセストークンを作成する。GitLab.com を使っている場合は、パーソナルアクセストークンのページにアクセスする。
④ トークンをコピーする。(セキュリティ上の理由から、この値は再度表示されません。)
⑤ Visual Studio Code を開き、Command + Shift + Pを押してコマンドパレットを開く。
⑥ コマンドパレットで GitLab を検索する。Add Account を検索し、Enter を押す。
⑦ GitLab インスタンスへのURL を、http:// または https:// を含めて貼り付けEnterを押す。
⑧ GitLabのパーソナル・アクセストークンを貼り付けEnterを押す。
⑨ プロジェクトに直近のコミットのパイプラインと現在のブランチからのマージリクエストがある場合、両方の情報が Visual Studio Code のステータスバーに表示される。
GitLab の API の活用方法
APIとは、「Application Programming Interface(アプリケーション・プログラミング・インタフェース)」の頭文字を取った略語で、外部からソフトウェアの機能を利用する仕組みを指しています。
APIリクエストには、api
とAPIバージョンの両方を含める必要があります。APIのバージョンは lib/api.rb
で定義されています。例えば、v4 APIのルートは /api/v4
にあります。以下はAPIの活用方法です。
-
有効なAPIリクエスト: 以下は、架空の
gitlab.example.com
エンドポイントへのリクエストの基本的な例です。curl
“https://gitlab.example.com/api/v4/projects” APIはJSONを使用してデータをシリアライズします。API URLの最後に.json
を指定する必要はありません。 -
HTTPレスポンスヘッダーを公開するAPIリクエスト: HTTPレスポンスヘッダーを公開する場合は、
--include
オプションを使用します。curl --include
“https://gitlab.example.com/api/v4/projects”HTTP/2 200...
このリクエストは、予期せぬ応答を調査するのに役立ちます。 -
終了コードを含むAPIリクエスト: HTTP終了コードを公開する場合は、
--fail
オプションを含めます。curl --fail
“https://gitlab.example.com/api/v4/does-not-exist”curl: (22) The requested URL returned error: 404
HTTP終了コードは、RESTリクエストの成功または失敗を診断するのに役立ちます。
GitLabの最新情報とアップデート
GitLabの最新バージョンの特徴と更新内容
以下は GitLab が2023年度第1四半期にリリースした5つの新機能です。特にセキュリティ面が強化されたことが分かります。
-
AI による脆弱性緩和ガイダンス:
大規模言語モデルの説明能力を生かした「GitLab AI」によって脆弱性に関するアドバイスを行います。脆弱性修正措置の決定までの時間短縮が期待されます。
-
ライセンスポリシーの設定とソフトウェアライセンスのスキャンによるコンプライアンスの確保:
新しいスキャナーは、適用するデュアルライセンスまたは複数のライセンスを含むパッケージからライセンス情報を抽出し自動的に構文解析して、従来は20種類だったところ最新版では500種類以上のライセンスを識別できるようになりました。また、未承認のライセンスが使用されるリスクを最小限に抑え、手作業でのコンプライアンス確保に要する時間と労力を削減可能です。
-
個人アクセストークン(PAT)の漏えい防止:
開発者がPATをコードに誤ってコミットするリスクを軽減するために、パブリックGitLab リポジトリー内の漏えいした PAT を自動的に取り消すことができます。これにより GitLab ユーザーやユーザー組織が認証情報の漏えいを防止し、本番アプリケーションへのリスクを軽減します。
-
セキュリティポリシーの自動適用:
適切な承認なしにセキュリティルールが迂回されることを防止します。セキュリティチームは、QA、ビジネス、法務など様々なチームの複数の承認者による承認の義務付け、2段階承認プロセス、ポリシー対象外ライセンスの使用に関する例外の承認などのポリシールールを迅速に設定できます。設定したポリシーは、グループまたはサブグループレベルで複数の開発プロジェクトに適用でき、一元化されたルールを維持します。
-
セキュリティテストでの誤検出の防止:
DAST API Analyzer の精度を改善し、誤検出を推定で78%削減できます。「GitLab 2023 グローバル DevSecOps 調査」レポートによると、セキュリティ担当者の不満の上位3項目に過剰な誤検出が入っています。
GitLabは以下の機能をリリースする予定とロードマップに掲げています。
-
グループ/サブグループレベルの依存関係リスト
プロジェクトの依存関係を確認します。
-
コンテナおよび依存関係の継続的スキャン
新たなセキュリティアドバイザリが公開された時点またはコードが変更された時点で自動スキャンを実行します。
-
コンプライアンスフレームワーク管理ツール
コンプライアンスフレームワークを既存プロジェクトや複数のプロジェクトに同時に適用します。
-
SBOMの取り込み
サードパーティツールからGitLabにCycloneDXファイルをインポートします。
GitLabコミュニティの参加方法
GitLabコミュニティとサポート
GitLab にはFree、Premium、Ultimate の3つのプランがあり、無料で利用できるFreeプランでもコミュニティによるサポートを受けることができます。また、GitLab.com には、SRE (サイト リライアビリティ エンジニアリング) とプロダクションエンジニアのフルチームが、問題に素早く対応できるよう、24 時間 365 日体制で監視ししています。
Twitter で @gitlabstatus をフォローし、GitLab.com ステータスサイトを利用すると、インシデントをいち早く確認することができます。また、コミュニティニュースレター(英語)に登録することで、常に最新の情報がメールで届きます。
有名企業の GitLab 導入事例
GitLabは現在、数十万の企業や団体が利用するDevOpsツールとして欠かせない存在となりました。
GitLabを使用することで、DevOps を実践するために必要なツールの組み合わせに悩む必要がなく、開発スピードを大幅に向上できます。以下に GitLab プロジェクトの事例を紹介します。
-
株式会社NTTドコモ:
1年前に20人のチームで別製品を使用していた頃と比べると、GitLab Enterprise を導入した結果、リポジトリの数が約5倍まで増加した。
-
京セラ株式会社:
データ駆動型社会の実現に寄与する「自律型協働ロボット」の開発を進める京セラ ロボティクス事業部が開発基盤の中核として GitLab を採用した。
カテゴリ別 よくある質問とトラブルシューティング
特徴
-
Q1: GitLabはElasticsearchなどに基づく検索エンジンをサポートしていますか?
回答: GitLabの有料層では、Advanced Search の一部としてElasticsearchの検索機能を活用できます。
-
Q2: 高度な検索はゲストアカウントでも利用できますか?
回答: はい、GitLab EE では、ゲストアカウントでも高度な検索をご利用いただけます。
-
Q3: GitLabはプロジェクトテンプレートを提供していますか?
回答:現在GitLabにはプロジェクトテンプレートはありません。
-
Q4: シンタックスカラーリングはありますか?またそれはどの言語ですか?
回答: GitLabは、シンタックスハイライトにルージュ ルビー ライブラリを使用しています。Rougeは、Ruby、JavaScript、Swift、Go、C++、Haskellを含む77の言語とカウントをサポートしています。
-
Q5: プロジェクトごとに最大サイズ(ディスクサイズ)はありますか?
回答: プロジェクトにはディスクサイズに制限はありません。各プロジェクトのサイズは、管理パネルのプロジェクトの概要に記載されています。
ユーザー管理
-
Q6: GitLabはユーザーグループをサポートしていますか?
回答: はい、プロジェクトをディレクトリにグループ化し、ユーザーが一度に複数のプロジェクトにアクセスできるようにするユーザーグループをサポートしています。
-
Q7: GitLabはプロジェクトの可視性レベルを提供していますか?
回答: GitLab にはプロジェクトごとにパブリック、内部、プライベートの3つの異なる可視性レベルを提供しています。
-
Q8: GitLabは、特定のユーザーのプロジェクト作成をブロックする方法を提供していますか?
回答: GitLab管理者は、ユーザーごとにプロジェクトの制限を設定できます。制限が0に設定されている場合、ユーザーはプロジェクトを作成できません。
-
Q9: ブロックされたユーザーは総ユーザー数にカウントされますか?
回答: いいえ、アクティブユーザーのみが総ユーザー数にカウントされます。
統計/ログ
-
Q10:: GitLab管理者はどのような使用統計を利用できますか?
回答: GitLab EEは、組織とそのメンバーの問題のアクティビティ、マージリクエスト、プッシュイベントの概要を提供する貢献分析を提供します。分析が依存する期間は、先週、先月、過去3ヶ月の3つのセクションに分かれています。
-
Q11:: GitLabはどのようにログ分析を提供しますか?
回答: GitLabには、さまざまなシステムログファイルを使用してGitLab インスタンスの分析を可能にする高度なログシステムがあります。管理者は管理パネルのログセクションでログファイルの最後の2000行を表示できます。さらに、GitLab EEは、GitLab管理パネル内でセキュリティおよび監査イベントを表示するための監査イベントを提供しています。
パフォーマンス
-
Q12: 一定量のユーザーまたはリポジトリのシステム要件は何ですか?
回答: ユーザー数とリポジトリの数に関するそれぞれのハードウェア要件は、GitLabのドキュメントに記載されています。
インストールとサポート
-
Q13: サポートをリクエストするプロセスは何ですか?
回答: サポートへの連絡方法の詳細については、GitLabサポートページをご確認ください。
-
Q14: GitLabはカスタムインストールを提供しますか?
回答: GitLabはソースからインストールできるため、カスタマイズできます。しかし高速で信頼性の高いオムニバスパッケージのインストールをお勧めしています。
-
Q15: GitLab インスタンスをアップグレードするプロセスは何ですか?
回答: インストール方法とGitLabのバージョンに応じた複数の更新ガイドがありますのでご確認ください。
-
Q17: インターネット接続なしでGitLabをインストールおよびアップグレードできますか?
回答: はい、当社のオムニバスパッケージは自己完結型で、インストール、設定、またはその後にインターネットアクセスを必要としません。
まとめ
GitLab はチームが一丸となって開発と運用に取り組むことを可能にするツールです。これまで、アプリケーション開発の工程は、作業を担当するエンジニア以外のメンバーによる確認が不可能でしたが、GitLabを利用することで誰もが工程の進捗状況をブラウザの画面上で視認できるという利便性があります。
GitLabと連携するCI/CDツールが必要ですか?
CircleCI は、DevOps の実践に対応した CI/CD ツールを提供しています。また、サポートエンジニアによるサービスに関する問題、請求およびアカウントについての質問への対応、設定の構築に関する問題解決のサポートも行っています。サポートサイト から、サポート記事やコミュニティフォーラム、トレーニングリソーもをご覧いただけます。
CircleCI の CI/CDツールの無料登録はこちら。