GitLab の共同創設者でエンジニアリングフェローの Dmitriy Zaporozhets は、当時主に PHP で仕事をしていたが GitLab を構築しようと決めたときに Ruby on Rails で行うことにした。 GitLabのインスピレーションの源であるGitHubもRailsをベースにしており、彼のフレームワークへの関心を考えると、理にかなった選択だったと言えるでしょう。 GitLab の CEO である Sid Sijbrandij 氏は、共同設立者が良い選択をしたと考えています。
「Ruby on Rails のエコシステムによって、多くの機能を高い品質で形成できるため、本当にうまくいっています」と彼は説明します。 「GitLabを見ると、非常に多くの機能を備えています。 ソフトウェア開発は非常に複雑で、そのために多くの機能が必要ですが、Ruby on Railsはそれを実現する方法なのです。 GitLabのようなものを出荷する際にも、コードの一貫性を保つための方法として、ハッピーパスにあるすべてのベストプラクティスがありますから。
Depending on useful gems
Ruby gems は GitLab の構築に不可欠な役割を果たしており、Sid によれば、1000 以上の非独自の gems をロードしているとのことです。 Ruby on Rails フレームワークを「非常に意見が多い」と呼び、GitLab のような複雑なアプリを構築するための強力な環境だと考えています。
「どのように物事を行うかを仮定できる gems による素晴らしいエコシステムがあり、その点で Ruby on Rails エコシステムはまだ同等ではないと思います」と彼は述べています。 「私たちのGemfileを見れば、私たちが構築できる依存関係の塔がいかに大きいかがわかるでしょう。 Ruby on Rails には素晴らしい肩書きがあり、他のフレームワークで GitLab を開発するのはもっと遅かったでしょう」
課題を克服する
Ruby on Rails で GitLab を構築するにあたって、課題がなかったというわけではありません。 パフォーマンスは、Go でコードを書き直したり、Vue フレームワークを使用したりするなど、さまざまな方法で改善するために開発者が奮闘してきた問題でした。 後者は、issue やマージ リクエストなど、頻繁にアクセスされるページをより速く読み込むように書き換えるために使用され、ユーザー エクスペリエンスを向上させます。
Go は、ロード時間に影響を与えるその他の問題に対処し、メモリ使用量を削減するために使用されています。 「Ruby は開発者向けに最適化されたものであり、本番環境での運用を想定したものではありませんでした。 だから、マルチスレッドを有効にする必要があります。 私たちがGitLabを開発したとき、Ruby on Railsのエコシステムでは、それは一般的ではありませんでした。 しかし、今では多くのコードと多くの依存関係があるため、そこに到達するまでの道のりは長くなっています。 Go を GitLab のツールボックスに追加することで、すべての Git リクエストを処理する Gitaly という別のサービスを作成することになりました。 Rails は合理的なので、誰でも GitLab に飛び込んで参加することができ、それが Sid にとって最初から特に魅力的でした。
「私たちの使命は、誰もが貢献できることです」と、彼は説明します。 「Ruby on Rails は、どの部分をどこに置くかについて非常に意見が分かれているので、新しい開発者がコードベースに入り込むのがずっと簡単です。 例えば、どこのキッチンに入っても、包丁やお皿がどこにあるかはわからない。 しかし、Ruby on Rails では、キッチンに入ると、いつも同じ場所にあります。 しかしRuby on Railsでは、キッチンに入ればいつも同じ場所にあり、それにこだわりたいのです。
「Dmitriyがプロジェクトを始めて1年後に初めて開いて見たとき、本当に励まされました。 開いてみたら、慣用的な Rails だったのです。 彼はすべての原則に従いました。 彼は、自分が興味を持ったある種の流行を実験しようとしたわけではありません。 彼はそれを本番用のアプリケーションに仕上げました。 Dmitriyはすべてのコントリビューションを慎重に吟味して、その規約に従うようにしましたし、それは今でも変わりません。 私たちは、他の人がその上に構築できるような、とても素晴らしいコードベースを持っていると思います。 私たちのサブバリューのひとつに「つまらないソリューション」というものがあります。 これは、他の人がその上に構築できるようにするためです。 そして、Rubyが私たちにとって安定したエコシステムであることに感謝しています」
Cover image by Elvir K on Unsplash
.
コメントを残す