GitLab Meetup Tokyo #12: 2018年振り返り に参加しました

gitlab-jp.connpass.com

GitLab ユーザーなので GitLab のイベントに参加してみました。

上記イベントページの概要欄をみると、GitLab ってどんどん成長しているんですよね。 基本的には Git リポジトリホスティングシステムで Issue トラッキングと CI もできる奴、 昔で言えば Trac Lightning みたいな立ち位置かなー(伝わるのか?これ)、という認識だったのが…… Docker イメージを登録できたり、IDE を備えたり、「もうみんな Kubernetes クラスタあるよね」とばかりに Auto DevOps を出したり、 最近では Serverless なんてものまで出てきました。

本家ブログに We believe Kubernetes is the future. と書いてあるのを知り、 「あぁ…そっちに行ったんやなぁ…」という気持ちです。 GitHub および Circle CI, あとは Atlassian 製品のように役割別に製品を分けている同種のツールとは方向性が違うなぁと思わされました。

また、チームでコラボレーションをする環境というのは、幅広い業種や職種に関わるものなので どういった方々が来ているのか知りたくなったのも参加した理由です。 GitLab は Kubernetes が未来と信じる方向に進化しているそうですが、別にコンテナやサーバレス環境で動作する ソフトウェア以外の開発にも使えるので、Web システム以外の世界の方々も来るんじゃない?と思ったんですよ。

とまぁ、知らない機能も沢山あるし、どんな人が来るのか気になったので参加することにしました。

GitLabとKubernetesではじめるAuto DevOps

イベントが始まる30分前に Google カレンダーの通知がありました。 イベント会場まで1時間かかります。遅刻確定です。 アラームを何分前に鳴らすかはイベントによって変えておきましょう。 このブログもイベントが終わってから1ヵ月後に書いているので二重の意味で遅刻してしまいました。 しょんぼり。すみません。

"GitLabとKubernetesではじめるAuto DevOps" の途中から聴講し、ちょうど Auto DevOps のデモを行うところでした。 デモは Spring を使った簡単な Web アプリを変更する際にパイプラインに含まれる様々なジョブが実行され、 Merge Request の画面にも表示されるというものでした。 実際に使われたプロジェクトが今でも公開されており、パイプラインの詳細な実行結果を見ることができます。

gitlab.com

デモで使われた sprint-app プロジェクトがあるグループ名は イベント当日は demo-auto-devops という名前だったのですが、 今は cl-demo という名前に変わっています。 古い URL を開くと新しい URL にリダイレクトされ、 Group 'demo-auto-devops' was moved to 'cl-demo'. Please update any links and bookmarks that may still have the old path. と表示されます。親切ですね。

Auto DevOps だけでなく Issue やラベルについても触れているのが丁寧だと思いました。 それもそのはず、発表者は日本で GitLab の正規販売代理店に勤めており、コントリビューションも行っている方でした。

LT

ここからは LT (ライトニングトークス) のお時間。 ライトニングといっても、稲妻のような速度で話すわけではありません。しみじみ。

GitLabソースにコントリビュートしてみて勉強になったこと

GitLab Summits 改め GitLab Contribute | GitLab の参加費用は 2499 USD ですが コントリビュートすると無料になるそうで、そのためにコントリビュートしたそうです。 オープンの Issues がたくさんあり、API の変更であれば UI が無いので簡単そうと考え、1つを選んだとのこと。

所要時間は GDK (GitLab Development Kit) のインストールに4時間、 最初のコーディングに1時間、1回あたりの CI パイプラインに3時間、 レビューとそれを受けての変更に10日。

レビューでは「ローカルで Rubocop を使おう」「TDD で書こう」「あそこのコードが参考になる」 といった助言を頂けた、誰かに頼まなくてもコメントをもらえたのがありがたかった、 テストコードが頼りになったとのことです。

自発的に Merge Request に参加する方がいるというのは良いチームですね。

API の変更であることと、Merge Request がクローズするまでに11日間要したことからすると、 該当する Merge Request は多分これですね。複数のレビュアーが助言している様が見られます。 1st contribution というラベルがあるのも面白いです。 もちろん CI パイプラインにある各ジョブの実行履歴も残っています。 開発手法を勉強する材料としても良さそうです。 gitlab.com

(仮) 独自パッチで進化させ過ぎたGitLabのOmnibus package移行

GitLab がバージョン4の頃から使っており、不足していた点を独自パッチで補っていたとのこと。 例えば公式では MySQL を使っていたのをパフォーマンスのために PostgreSQL にしたり、UI を変更したり。 独自パッチの数は 30 以上になっていたそうですが、公式 omnibus package が育つにつれ、 独自パッチをあてる利点や必要性が無くなっていったので omnibus package に移行したとのこと。

私も omnibus package を使ったことがあるのですが、初めて使ったときは既にバージョン8でしたし 独自パッチをあてるという発想はありませんでした。 もちろんソースからビルドするということもなく、Ubuntu にパッケージをインストールして gitlab.rb を書き換えて gitlab-ctl reconfigure を実行する程度のことしかしていなかったので、 別の世界のお話に聞こえました。

確か別の事例で「社内には Ruby on Rails の開発経験を持つエンジニアが多数いたから GitHub Enterprise を使わずとも GitLab (Community Edition!!!) でやっていけると判断した」 という趣旨のものがあったと記憶しているのですが、そういう企業でないとやっていけないのではないでしょうか。 というか、それだけできるなら本家にコントリビュートすれば良かったのでは、というのが感想です。 まぁ、今でこそ上述のようにコントリビュートしやすい土壌が整っているように見えますが、 バージョンが古かった時代は違ったのかもしれませんね。

GitLab-CI/CD+Pagesでポートフォリオを作ってみよう

ソフトウェアエンジニアの中には作品を集めたWebサイトをポートフォリオと呼んで公開する方がいます。 この発表ではそのサイトを GitLab を使って作ってみようというものです。 スライド自体も GitLab にある reStructed Text と Reveal.js を使って作っているようです。 GitLab-CI/CD Pagesでポートフォリオを作ろう

ポートフォリオはこちら。 Portfolio of attakei

Reveal.js はちらっと見たことがあるんですが reStructed Text で書けましたっけ…? と思ったところ、どうやらそれを実現するものを作ったみたいです。すごい。 github.com

そういえばこのブログもこのイベント参加を機に Hugo + GitLab pages に移行しよう、 それが終わったらこのイベント参加エントリーを書こうと考えていたのですが、 見た目を考えたり、検索機能をどう実現するか調べたり、結局ブログサービスに戻したという文章を見たりして ずるずると1ヵ月経ってしまったので、先にこの文章を書くことにしました。とほほ。

スポンサーLT

スポンサーは Grooves 社です。 頻繁に勉強会のスポンサーをしているそうで「また出たな Forkwell」とツイートされるのが恒例になっているそうです。

なるほど。https://twitter.com/search?f=tweets&q=%E3%81%BE%E3%81%9F%E5%87%BA%E3%81%9F%E3%81%AAForkwell

私は Forkwell Jobs を以前から知っていたので「なるほどこの会社か!」と思いました。 Forkwell Jobs はソフトウェアエンジニア向けの求人サイトで、プロダクト、職務、開発環境などが エンジニア目線で書かれていると感じられます。 転職するわけではなくても、いろいろな会社の開発環境をざっと知ることができて面白いですよ。

ところで「また出たな Grooves」ではなく「また出たな Forkwell」なんですね。なんでだろ。

懇親会

ここからは懇親会。12月20日なので忘年会とも言えます。 料理はお寿司とピザ。私は Connpass などで参加するイベントの懇親会で寿司が出た場合もピザが出た場合も経験していますが、 寿司とピザの両方がそろっている場合は実は初めてかもしれません。お酒もあります。 きっとスポンサーの Grooves 社のおかげです。「ありがとう Forkwell」とツイートすべきだったのではないか…と思いながら乾杯しました。

こういったイベントでは友人がいることも多いのですが今回は知り合いは誰もいません。 あんまりお話は得意ではないのですが、せっかくなので初めての方々とお話しました。

話してみると色々な方がいらっしゃいました。 コンテナオーケストレーションは当たり前という環境の方、 LT であったような独自パッチを使っているという方、 インフラ運用に使っているスクリプトを管理するために GitLab を使い始めたという方、 Git をこれから始めるという方、会社のサーバーはほとんど Windows だけど Linux もあるという方、などなど。 業種は聞く限りは必ずしも Kubernetesクラウドネイティブに技術的に縁がありそうな方々ばかりではなさそうに思えました。

社内SNSの投稿でこのイベントを知って参加したという方もいらっしゃいました。 で、それを投稿したのは私だと。えっ???そういうこともあるんですね。

「海外では Enterprise Edition を使うのは普通。日本ではあまり使われていない。」 という情報も得られました。 これを聞いたとき、JIRA と Redmine の海外と日本での違いを思い出しました。 Google トレンドでみると、海外では JIRA の方が検索キーワードとしての人気が圧倒的に高く、 日本では Redmine の方が高いそうです。なんなんでしょうね。

最後に。ラッキーなことに GitLab 帽子を手に入れることができました! 今は冬で実用性がありますし、友達に自慢することもできます。ありがとうございます。

以上、1ヵ月遅れのブログ枠でした。