window.pipedriveLeadboosterConfig={です。 ベース:'leadbooster-chat.pipedrive.com'、 companyId:11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2、 } ;(function () { var w = window もし (w.LeadBooster) {なら console.warn('LeadBooster already exists') } else { w.LeadBooster = { {. q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: 関数 (n) { { this.q.push({ t: 'o', n: n, h: h }) this.q.push({ t: 't', n: n }) }, } } })() Ruby on Rails Packwerkによるモジュール化 エピソード1 - The Codest
The Codest
  • 会社概要
  • サービス
    • ソフトウェア開発
      • フロントエンド開発
      • バックエンド開発
    • Staff Augmentation
      • フロントエンド開発者
      • バックエンド開発者
      • データエンジニア
      • クラウドエンジニア
      • QAエンジニア
      • その他
    • アドバイザリー
      • 監査&コンサルティング
  • 産業
    • フィンテック&バンキング
    • E-commerce
    • アドテック
    • ヘルステック
    • 製造業
    • 物流
    • 自動車
    • アイオーティー
  • 価値
    • CEO
    • CTO
    • デリバリー・マネージャー
  • チーム
  • Case Studies
  • ノウハウ
    • ブログ
    • ミートアップ
    • ウェビナー
    • リソース
採用情報 連絡先
  • 会社概要
  • サービス
    • ソフトウェア開発
      • フロントエンド開発
      • バックエンド開発
    • Staff Augmentation
      • フロントエンド開発者
      • バックエンド開発者
      • データエンジニア
      • クラウドエンジニア
      • QAエンジニア
      • その他
    • アドバイザリー
      • 監査&コンサルティング
  • 価値
    • CEO
    • CTO
    • デリバリー・マネージャー
  • チーム
  • Case Studies
  • ノウハウ
    • ブログ
    • ミートアップ
    • ウェビナー
    • リソース
採用情報 連絡先
戻る矢印 戻る
2022-01-05
ソフトウェア開発

パックワークによるRuby on Railsのモジュール化 エピソード1

ニコラ・ニソリア

人間は、多くの時間と労力を割かなければ、問題の全体像を把握することが難しい。これは、特に大規模で複雑なアプリケーションを扱っているときに起こります。私の変更による副作用は何ですか?なぜこの行がコードベースの離れた部分のテストに影響するのか?完璧な、あるいは完全な解決策は存在しませんが、Shopifyはおそらくあなたとあなたのチームの助けになるツールを開発しました。

はじめに

について話すために パックワークまず、いくつかの概念を紹介する必要がある。

  • 結束モジュールやクラス内の要素がどの程度まとまっているかを示す尺度である。
  • カップリングモジュールやクラス間の依存関係のレベルを指す。
  • バウンダリーを隔てる障壁のことである。 コード.この場合、コード・バウンダリーとは、同じコードベース内の異なる関心領域を指す。
  • モジュール化ソフトウェアシステムを複数の独立したモジュールに分割し、各モジュールが独立して動作するようにすること。

問題点

知っての通りだ、 ルビー は、コード境界を強制する良い解決策を提供しない。可視性を指定することはできますが、依存関係はすべてグローバル名前空間にロードされます。大規模なアプリケーションやモノリス・アプリケーションでは、この境界の欠如が次のような問題を引き起こします。

  • 結束力が低い、
  • 高いカップリング、
  • スパゲッティ・コード

Shopifyのモノリスをモジュール化し、境界を強化しようと、さまざまな解決策を試したが、期待通りの結果は得られなかった:
- プライベート定数の設定
- 宝石を通して境界線を確立する、
- テストを使用して、コンポーネントの相互関連を防止する、
- RubyのModulation gemを使用、
- マイクロサービスを作る

過去の試行錯誤から得た知識を総動員して、彼らは独自のツールを作ることにした: パックワーク.

パックワーク

パックワークとは?

パックワーク のグループ間の境界を強制するために使用される静的解析ツールである。 ルビー というファイルがあります。 パッケージ.

パッケージとは何ですか?

A パッケージ はオートロードされたコードを含むフォルダです。Shopifyの チーム は、パッケージを作成する際に最良のデザインプラクティスを使用することを奨励しています。
- 機能性の高いものを詰め込むべきだ 粘着,

  • パッケージ同士は比較的疎結合であるべきだ。

バウンダリーチェックの種類

プライバシーと依存関係の境界を強制し、境界違反や循環依存関係をチェックすることができる。

パックワークの実践

パッケージを作成する際に、アプリケーションを構造化したり、構造化し直したりする特定の方法は一つではありません。この記事では、次のようなアプローチに従います。
ステファン・ハーゲマン Ruby on Railsの段階的モジュール化.

プロジェクトを選ぶ

新しい プロジェクト または、あなたのプロジェクトの1つを選んでください。というオープンソースのプロジェクトを使うことにした。 コードトリアージ.ここで重要なのは、Rails 6アプリケーションが必要だということです。 パックワーク はツァイトヴェルクを使用している。

パックワークの初期化

まず、Gemfile に次のように gem を追加します。 gem 'packwerk' を実行する。 バンドルをコンソールに追加する。そして、gemを初期化する準備ができた。 パックワーク開始.

その後 パックワーク 私たちのために3つのファイルを作ってくれた:

  • packwerk.yml

  • package.yml

  • inflections.yml

packwerk.yml の設定ファイルである。 パックワーク ここでは、インクルードファイルと除外ファイルの定義、ロードパスのリスト、屈折ファイルの定義などを行う;

package.yml はパッケージのコンフィギュレーション・ファイルである。このファイルに、パッケージの境界の設定を追加します。package.ymlを持つフォルダは、パッケージとして パックワーク.それだけだ、 パックワーク 最初の
パッケージと呼んでいる。 ルート パッケージで提供される。

inflections.yml は、私たちが使用する場合に備えて、私たちのカスタムの抑揚や頭字語を置く場所です。

ファイルとその設定についての詳細は
パックワーク.

パックワーク物件

モジュール化が機能するためには、3つの基本的な特性が必要だ: 名前付きコンテナその 内容と明示的である。 依存関係 他の 容器.では、これらのプロパティを パックワーク:

  • 名称:のルートからの相対パスです。
    アプリケーションを使用する。

  • 内容:package.ymlをフォルダに置くと、そのフォルダ内のすべてのファイルがパッケージの内容になる。

  • 依存関係:他のパッケージとの依存関係を定義するには、依存関係キーを package.yml.

デフォルトでは含まれていないが、推奨されるもう一つのファイルがREADMEである。パッケージの使用方法に関する情報を提供するために重要です。

エピソード1の終わり

デジタル製品開発コンサルティング

続きを読む

GraphQL Ruby。パフォーマンスについては?

レールおよびその他の輸送手段

TMUX、Vim、Fzf + RipgrepによるRails開発

関連記事

ソフトウェア開発

将来を見据えたウェブ・アプリケーションの構築:The Codestのエキスパート・チームによる洞察

The Codestが、最先端技術を駆使してスケーラブルでインタラクティブなウェブアプリケーションを作成し、あらゆるプラットフォームでシームレスなユーザー体験を提供することにどのように秀でているかをご覧ください。The Codestの専門知識がどのようにデジタルトランスフォーメーションとビジネス...

ザ・コデスト
ソフトウェア開発

ラトビアを拠点とするソフトウェア開発企業トップ10社

ラトビアのトップソフトウェア開発企業とその革新的なソリューションについて、最新記事でご紹介します。ラトビアの技術リーダーたちがあなたのビジネスをどのように向上させるかをご覧ください。

thecodest
エンタープライズ&スケールアップ・ソリューション

Javaソフトウェア開発の要点:アウトソーシングを成功させるためのガイド

outsourcingのJavaソフトウェア開発を成功させるために不可欠なこのガイドを読んで、The Codestで効率性を高め、専門知識にアクセスし、プロジェクトを成功に導きましょう。

thecodest
ソフトウェア開発

ポーランドにおけるアウトソーシングの究極ガイド

ポーランドのoutsourcingの急増は、経済、教育、技術の進歩がITの成長とビジネス・フレンドリーな環境を促進していることによる。

ザ・コデスト
エンタープライズ&スケールアップ・ソリューション

IT監査ツール&テクニック完全ガイド

IT監査は、安全かつ効率的で、コンプライアンスに準拠したシステムを保証します。その重要性については、記事全文をお読みください。

The Codest
ヤクブ・ヤクボヴィッチ CTO & 共同創設者

ナレッジベースを購読して、IT部門の専門知識を常に最新の状態に保ちましょう。

    会社概要

    The Codest - ポーランドに技術拠点を持つ国際的なソフトウェア開発会社。

    イギリス - 本社

    • オフィス 303B, 182-184 High Street North E6 2JA
      イギリス、ロンドン

    ポーランド - ローカル・テック・ハブ

    • ファブリチュナ・オフィスパーク、アレハ
      ポコジュ18、31-564クラクフ
    • ブレイン・エンバシー, コンストルクトースカ
      11, 02-673 Warsaw, Poland

      The Codest

    • ホーム
    • 会社概要
    • サービス
    • Case Studies
    • ノウハウ
    • 採用情報
    • 辞書

      サービス

    • アドバイザリー
    • ソフトウェア開発
    • バックエンド開発
    • フロントエンド開発
    • Staff Augmentation
    • バックエンド開発者
    • クラウドエンジニア
    • データエンジニア
    • その他
    • QAエンジニア

      リソース

    • 外部ソフトウェア開発パートナーとの協力に関する事実と神話
    • 米国から欧州へ:アメリカの新興企業がヨーロッパへの移転を決断する理由
    • テックオフショア開発ハブの比較:テックオフショア ヨーロッパ(ポーランド)、ASEAN(フィリピン)、ユーラシア(トルコ)
    • CTOとCIOの課題は?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • ウェブサイト利用規約

    著作権 © 2025 by The Codest。無断複写・転載を禁じます。

    jaJapanese
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek jaJapanese