IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

Ruby on Rails 海外事情コラム

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  OpenStack  システムトラブルシュート 

第39回 私たちがGitLabの構築にRuby on Railsを使う理由 (野田貴子) 2019年1月

こんにちはー。野田貴子です。 海外のコラムで面白いものがあったので、意訳してお届けします。 ご参考ください。

###

私たちの共同設立者でエンジニアであるDmitriy ZaporozhetsがGitLabの開発を決断したとき、当時の彼は主にPHPを使っていたにもかかわらず、Ruby on Railsを使用することに決めました。GitLabのインスピレーションの元になったGitHubもRailsをベースにしており、このフレームワークへの関心を考慮すると合理的な選択でした。GitLabのCEOであるSid Sijbrandijもこれは良い選択だったと考えて、次のように述べています。

「Ruby on Railsのエコシステムは多くの機能を高品質で実現できるため、実にうまく機能しています。GitLabには膨大な機能があります。ソフトウェア開発は非常に複雑ですので、そのために多くの機能が必要であり、Ruby on Railsはその手段になります。この手段にはもうすでに多くのベストプラクティスがあるため、GitLabのようなものを出荷するときにコードを一貫性を保つことにつながります。何が正しい方法なのかをフレームワークに教えてもらうことができると言えます。」

便利なgemに頼る

RubyのgemはGitLabの構築に不可欠な役割を果たしており、Sidによると、数千ものユニークでないgemがロードされているということです。彼はRuby on Railsフレームワークを「非常に信念が強い」と言い、GitLabのような複雑なアプリケーションを構築するための強力な環境だと考えています。

「開発者のやり方を想定できるgemによる素晴らしいエコシステムがあり、それに関しては、Ruby on Railsのエコシステムはまだ同等ではないと思います」と彼は言います。「私たちのGemfileを見ればビルドの依存性がどれくらい大きいかを知ることができます。Ruby on Railsには驚くべき力量があり、ほかのどのフレームワークを使ったとしても、GitLabの開発はずっと遅くなったことでしょう。」

課題の克服

Ruby on RailsのおかげでGitLabをビルドする際に何も課題がなかったというわけではありません。パフォーマンスは、開発者がコードをGoで書き直したり、Vueフレームワークを使用したりするなど、さまざまな方法で改善が進んでいる問題です。後者は頻繁にアクセスされるページ(イシューやマージリクエストなど)を書き換えるために使用されたため、読み込み速度が向上し、ユーザーエクスペリエンスが向上しています。

Goはロード時間に影響を与えるその他の問題に対処し、メモリ使用量を削減するために使用されています。

「Rubyは本番環境での実行に最適化されているのではなく、開発者のために最適化されていました」とSid氏は続けます。「多くの検索があったり、スピードが必要だったり、あるいは例えばシステム入出力において待ち時間が長かったりするものを、Goで書き直しました...。私たちは今でもGitLabのメモリ使用量を減らすように努力しています。いずれはマルチスレッド化の必要が出てくるでしょう。私たちがGitLabを開発したときにはRuby on Railsのエコシステムでマルチスレッドは一般的ではありませんでしたが、今では普通になっています。しかし今大量のプログラムと多数の依存関係があるため、マルチスレッド化の道は長くなりそうです。これは効果があるはずです。驚くほど速くはなりませんが、少なくともメモリ量は減らせますから。」

GitLabのツールボックスにGoを追加したことで、すべてのGitリクエストを処理するGitalyという別のサービスが生まれました。

GitLabの使命に基づいたビルド

Ruby on Railsフレームワークの整理され構造化されたスタイルは、私たちのコアミッションに沿っています。Railsは合理化されているので誰もがGitLabに飛び入りで参加することができ、これは最初からSidにとって特に魅力的でした。

私たちの使命は、誰もが貢献できることです。」と彼は続けます。「Ruby on Railsはどの部分がどこにあるのかが本当にはっきりしているので、新しい開発者がプログラミングに参加するのはずっと簡単です。既存の機能がどこに配置されているか最初から分かっているためです。例えば、初めてのキッチンに入ると食器類がどこにあるのかが分かりません。しかしRuby on Railsでは、どのキッチンでもいつも同じ場所に同じものがあるので、私たちはそのようなルールに従うようにしています。」

初めてのキッチンに入ると食器類がどこにあるのかが分かりません。しかしRuby on Railsでは、どのキッチンでもいつも同じ場所に同じものがあるので、私たちはそのようなルールに従うようにしています。

「私がプロジェクトを開いた一年後にDmitriyが参加してくれたのを見たとき、私は本当に励まされました。私は慣用的なRailsであるこのプロジェクトを公開しました。彼はすべてを原則に従い、気まぐれで自分が興味あるものを試したりしませんでした。彼はこれを製品化しました。注意深くコントリビューションを審査して、それらが慣習に従い続けていることを確認しました。私たちにはほかの人でも上手にビルドできるとてもよいコードベースがあると思います。私たちの副価値の1つは、派手なことはしない、という退屈なものです。これは自分以外の人が困らないようにするためですが、本当にうまくいったと思います。そして、私たちにとってRubyがとても安定したエコシステムであったことに感謝しています。」

※本コラムの原文は以下をご覧ください。
https://about.gitlab.com/2018/10/29/why-we-use-rails-to-build-gitlab/

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  OpenStack  システムトラブルシュート