世界を動かす技術を、日本語で。

GitLabが好きです

2026年1月24日原文(whileforloop.com)

概要

  • GitLab を長年プライベートプロジェクトで利用している理由の解説
  • Docker Registry やCI/CD機能の活用例
  • GitLabの 利点と不満点 の整理
  • GitHubとの 使い分けの実態
  • 個人ワークフローにおける GitLabの立ち位置 のまとめ

GitLabを選び続けている理由

  • GitHub がプライベートリポジトリを有料にしていた時期、 GitLab は無料で提供
  • 小規模なプロジェクトや実験用リポジトリの非公開管理に最適
  • GitHub も後に無料化したが、既に GitLab 中心のワークフローを構築済み
  • CIパイプライン、Dockerイメージ、デプロイスクリプト等、全て GitLab に統合
  • 既存の仕組みを変える理由がなく、そのまま GitLab 継続利用

Docker Registryの魅力

  • 各プロジェクトに Container Registry が標準搭載
  • ローカルやCIでイメージをビルドし、 レジストリにプッシュ→必要な場所でプル
  • Docker Hub のアカウントやプル制限、トークン管理不要
  • プライベート用途なら GitLab Registry だけで完結
  • 10GB/プロジェクトの制限は実質問題なし
    • 古いタグのクリーンアップやレイヤ共有で容量効率化

GitLab CI/CDの活用

  • gitlab-ci.yml をリポジトリに追加するだけでCI/CDが始動
  • 設定ファイルもバージョン管理され、過去のパイプライン履歴も追跡可能
  • 基本的な流れは「ビルド→プッシュ→(必要に応じて)デプロイ」
  • デプロイ時の手動トリガーで本番反映のタイミングを制御
  • GitLabの共有Runner は無料で十分信頼性あり
    • 特殊なニーズはVPS上にRunnerを自前設置で対応可能
    • Runnerのセットアップも簡単(インストール→トークン登録)
  • CI/CDのドキュメントは詳細だが、機能が多すぎて最初は探しにくい
    • 慣れれば自作設定のコピペで効率化

不満点と課題

  • Webインターフェースの速度 が遅い印象
    • マージリクエスト、パイプライン、ジョブログの表示で待機時間発生
    • 近年は改善傾向だが、 GitHub ほどの快適さは未達
  • 機能過多(Feature overload)
    • 課題管理、プロジェクト管理、Wiki、スニペット、パッケージ・コンテナレジストリ、セキュリティスキャン等
    • 実際に使うのはリポジトリ、マージリクエスト、CI/CD、コンテナレジストリ程度
    • 必要になれば他機能も利用可能という安心感

無料で得られる価値

  • プライベートプロジェクトを約12個運用中
    • アクティブなサイドプロジェクトから放置中の実験まで
  • これらを 無料で運用できるコストパフォーマンス
  • プロトタイプや実験、未公開アイデア等、 誰にも見られないデジタル作業場 として活用

GitHubとの使い分け

  • GitLab :プライベートな実験・開発・アイデア管理の場
  • GitHub :公開して他者に見てほしいものの発表・共有
  • 両者を併用することで、 用途ごとの最適な環境 を実現
  • すべてをGitHubやGitLabに寄せる人もいるが、自分は 両立運用 が快適

まとめ

  • GitLab はプライベート用途での 統合開発環境 として非常に便利
  • Docker RegistryCI/CD の無料利用が大きな魅力
  • 機能の多さや速度面に課題はあるが、 コストゼロ で得られる価値は高い
  • GitHub との使い分けで、 公開/非公開の棲み分け が明確
  • 今後も GitLab をプライベート開発の拠点として活用予定

Hackerたちの意見

ちょっと脱線するけど、素晴らしいウェブサイトだね。正直言って、読むだけでもクリックするだけでも楽しかったよ。デザインやアイデアが自分のものなのか、Jekyllのテーマの一部なのかは分からないけど、実行が本当に素晴らしい。GitHubのリポジトリでソースを見つけられなかったけど、もしかしたらちゃんと探してなかっただけかも。

ダークテーマが心地よく読める数少ない例の一つだね。

同意!これは素晴らしい個人ウェブサイトだね。

同意。アイデアの実行がセンスあるね。マークダウンをそのまま表示するのがクールだと思った人、すごい :)

プライベートプロジェクトのためにGitLabからForgejoに切り替えたんだ。GitLabのインターフェースが遅すぎてもう耐えられなかったからね。ちゃんとCIもあるし、課題追跡や他の必要な機能も揃ってるけど、インターフェースは瞬時に読み込まれるし、プライベートプロジェクトには使わない機能で画面が埋まることもないから最高だよ。

以前のForgejoに関するHNのディスカッションへのリンクだよ。 https://news.ycombinator.com/item?id=42753523

GitTea/Forgejoが軽量なのが好きな理由の一つは、ローカルでargocdを使って開発できるから。TiltでKubeクラスターを立ち上げて、Forgejoをブートストラップして、Argoを指して、今はローカルでAppsetの開発を同期波でテストできる。

ここに書きたかったことがあるんだ。何年もGitLabをセルフホスティングしてたけど、Forgejoに切り替えたら全然不満ないよ。記事ではGitLabの主要機能としてコンテナレジストリが挙げられてるけど、Forgejoにもあるからね。さらに、Forgejoは全体的にスピードがめちゃくちゃいい。リソースの要求も(ざっくり計算だけど)GitLabの10%くらい。もうGitLabを使う理由が見当たらない。ちょっとした不満はあるけど、致命的なものではないよ。まず、GitLabのCIの構文の方が好きだな。「GitHub Actions」はごちゃごちゃしてるし。支配的なゴリラ(GitHub Actions)を使うのは分かるけど、このCIに移行するのは思ったより手間がかかった。あと、ForgejoのAPIはまだまだ発展途上だね。GraphQLを使って探るのは楽しかったけど、Forgejoにはそれが全然ない。でも、データベースに直接アクセスできるから(sqliteやpostgresも選べるし)、カスタムスクリプトで好きなことができるよ。ForgejoのAPIとその周りのインフラはちょっともっさりしてるけど、大きな問題ではないかな。

ちょっと試してみたけど、めっちゃいい感じで超サクサクだね。CI部分はWoodpeckerってプロジェクトが提供してるみたいだけど、これってどういう仕組みで、GitLab CIと比べてどうなの?

Forgejoのコードレビューツールは、GitHubに忠実に従っていて(他の多くの機能もそうだけど)、そのせいで同じように劣った開発フローになってる。GitLabはGerritじゃないけど、少なくともスタックされたMRをサポートしてるし、強制プッシュやリベースの間にコメントを見れるのはいいところだよね。私はCodebergを使ってるから、オープンソースプロジェクトにはForgejoを使ってるけど、正直言ってGHスタイルのワークフローは真剣なソフトウェア開発には向いてないと思う。全てのコミットを潰すか、マージコミットを使うことを強要されるからね。多くの人がこの状況に慣れてしまって、他の方法を想像できないみたいだけど、本当にダメだと思う。GHモデルは一気に大きなPRを作ることを促進していて、生産性やチーム内のレビュー文化に悪影響を与えてる。しかも、git履歴に汚いコミットが残るし(「レビューコメントの修正」「マージ」「レビューコメントの修正」とか)。私は仕事でGitLabを1年半使ったけど、機能的にはGitLabのレビューツールの方が好きだな、UXは別として。

Forgejoに切り替える意味ってあるのかな?Microsoftじゃなくて、Codebergとかの人たちからリソースを吸い取るだけになっちゃう気がするんだけど。

統一されたインターフェースがあるのは素晴らしいけど、ちょっとしたストレスが多いね。私にとっては、いつも古い問題の流れにハマるのがちょっとしたミームになってる。「Xをやりたい→試してみる→問題にぶつかる→解決策を探す→3〜8年前の公式バグレポートを見つける」みたいな感じ。多くの機能が80/20の地獄にハマっているか、「機能リストに箇条書きを追加するために、ほとんど動かないMVPを作った」状況に見える。コメントでも言われてるけど、遅いインターフェースはMRビューで本当に痛い。時々、イライラするよ。

Hacker Newsで議論の続きを見る