YakstYakstは、海外の役立つブログ記事などを人力で翻訳して公開するプロジェクトです。氏が自身の手によってそこから得られた知見を紹介しております。行われているように、私たちはほぼ全てのプロダクトをただ一つのリポジトリーで管理しています。ようなものを指します。ビューワーといった例外があるのですが、それらを除いて私たちの全プロダクトはモノリポの上に生きています。モノリポを利用していた訳ではありませんでした。時間を経て、モノリポからは多くの恩恵が得られるという結論に至ったのです。欠点も存在しますが、総じてモノリポはそれだけの価値があると断言できます。開発を別リポジトリーで着手したのです。ドキュメントの解析とレンダリングを担当するライブラリーについても新しいものが必要でした。解析して注釈を書き込む機能を実現していました。Core)を一から始めることを意味していたのです。ラッパーへの変更が必要になりました。そのため、1つの機能のために2つのプルリクエストを作成することは珍しいことではなかったですし、その2つのマージというのは同時に行う必要がありました。して常に互換性を保つことであり、これによって多数のブランチを抱えることにより発生する潜在的なコンフリクトが減ったという追加の恩恵を得ることができていました。マージするまでに時間はかかりませんでした。これによってワークフローに対する大きな恩恵が得られるためです。リポジトリーを使うことになったとしても、後から分離することは可能であることがわかっていました。版がリリースされた後、私たちはすぐに全体をコントロールできる恩恵を目の当たりにすることになりました。コードの根深い部分でクラッシュすることが、私たちの顧客の間で常日頃に見つかっていました。radar(訳注:バグ報告機能)を送信するくらいしかできることはありませんでした。(ここは私たちがかなり知見を積んだ部分になります。利用する」という大規模なプロジェクトを開始しました。私たちには3つの選択肢がありました。抽出して、以前のようなバラバラのプルリクエストを扱う。リポジトリーにマージする。多くの話し合いが持たれましたが、最終的に多数派の意見により一つの大きなリポジトリーへ移動するという案に決まりました。プラットフォームごとのサブフォルダーが用意され、新しいリポジトリーには次の4つのフォルダが含まれました。ビューワーの開発を始めた時、モノリポがフィットするとは考えていませんでした。いうのは必要ありません。紹介する前に、新しい機能や拡張のテスト版としてアプリを使う機会が長年に渡って増えています。ドッグフーディングすることは、インターフェイスを良くする助けにもなりました。ビューワーが突如として壊れるということが定期的にありました。ビューワーを使い始めましたが、ソースコードを介しての結合は各バイナリーをビルドするよりずっと簡単でした。ビューワーをモノリポに移すと決定するまでのことでした。作業は非常に複雑なものになりました。Storage)へ移行してしまうことで、すでにかなり大きなモノリポがさらに大きくなってしまうことを避けようとしました。ついても移行を行いました。ビルドスクリプトが非常にシンプルになったという追加の恩恵もありました。年に開発が始まりました。サーバーを介してドキュメントを描画します。まで追加する理由は思いつきませんでした。つまる所、それらはかなり異なったエンティティです。モジュールとして呼び出します。機能が壊されてしまうことさえありました。)のモノリポへの移行に現在取り組んでおり、これによって私たちの作業はよりシンプルなものになるでしょう。否定的側面とは言うものの、モノリポにも否定的な側面があります。した時に再コンパイルが必要になることが多くなります。するフックのようなツールは、基本的に使うことが出来ません。これは、プラットフォームごとにトラフィックを別にしてチャンネルを分けるような有効な方法がまだ存在しないからです。いった機能を求める人々が参加しています。システムを使ってその成長を緩和させているものの、古い履歴を書き変えることにそれほどの価値があるとは思えません。テストは実行時間がかすかに長くなるでしょう。これは最初に新しくチェックアウトし直すためです。(もちろんキャッシュすることは出来ますが、それでも小さなリポジトリーと同じくらい速くとはいきません。以前の状況には戻りたくありません。サーバーのロード時間が急激に増加しました。スクリプトを記述して、変更されたファイルからその影響のあるプラットフォームのみを賢くトリガーするようにこれを修正するようにしました。私たちはモノリポを採用して最高に満足していますし、さらに多くのプロジェクトをそこに含めようと計画しています。ワークフローがシンプルになると共に、各プラットフォームチーム間の距離が近づいたことで「深く掘り下げる」ことがしやすくなり、他のチームに事を任せてしまうのではなくプラットフォームをまたいだ問題解決がなされるようになりました。@yakstcom_req_jaYakstYakstお問い合わせ。