モジュールについて理解したい2

2023/08/16に公開

おはようございます!
昨日の記事では、モジュールとは何か、名前空間の問題、そしてそれらを解決するためのモジュール化の重要性について調べてみました。CommonJS, AMD, ES6モジュールなどの規格があり、モジュールの概念をうまく使うことによって、コードの整理と管理が簡単になることが分かりました!

https://zenn.dev/yoojiyang/articles/3ac641e20ec05d

今日はさらに具体的にモジュールがどう利用されてどん便利なのかを調べていきたいと思います!

野球的にモジュールを考えてみる

モジュールはコードを小さな部品に分割し、それぞれを独立して開発・テストができる概念です。

これを野球的に考えると、例えばピッチャーやキャッチャーなどの守備位置に喩えることができます。
チームとして捉えると、「守備」という1つの処理ですがその中でも各ポジションの選手がそれぞれ別の処理を行っているので、9通りの処理があります。
各ポジションのモジュールが用意されている状態なので、ピッチャーに指示を与えたいときはピッチャーモジュールの処理を変更し、ライトの守備位置をもっとライン寄りにしたいのであれば、ライトモジュールの処理を変更すれば良いのです。野球はポジションの区別を明確にすることで、モジュール化に成功していると言えるでしょう。つまり、コードが整理されていて管理がしやすい状態です。

対して、モジュールがない状態とは、9人の選手全員に対して指示を与えるようなものです。ポジションの概念がないことは想像しづらいですが、例えばライトの守備位置をライン寄りにするように指示したはずが、うっかり「ライトに」というのを言い忘れると全員がライン寄りを守っているというようなことが起きてしまいます。

また、9人分の指示を出すということはそれだけ指示も長くなります。指示の長さはコードを書く長さと同じなので、コードが膨大な長さになることを意味します。コードが膨大になってしまうと、処理の変更や追加の時にその場所を探すのが大変だったり、そのコードをいじることで他のコードにも影響が出てしまうということが起きてしまいます。この状態がコードが整理されておらず、管理が大変な状態です。

野球の試合中に指示が全くないことが無いように、1度書いたコードもその後の追加や修正の処理がないことはほとんどありません。なので、管理しやすいコードを書くことは非常に重要で、モジュールという概念はそこに不可欠なものなのです。

現代の開発とモジュール

モジュール化の考え方は、現代のソフトウェア開発において基盤となっています。特に、ウェブ開発のフレームワークでは、モジュールの概念が深く取り入れられています。

ReactやVueなどの人気のフレームワークでは、コンポーネントというモジュールの一種を用いて、UIの各部分を独立した単位で開発します。これにより、コードの再利用性が高まり、開発の効率が向上します。例えば、ボタンやナビゲーションバーなどの共通のUI部品をコンポーネントとして定義し、異なるページで再利用することが可能です。

また、モジュール化によって、コードのテストも容易になります。各モジュールが単一の責任を持つため、そのモジュールの挙動だけをテストすることができるのです。これにより、バグの特定と修正が迅速に行えるようになります。

モジュールの概念は、開発プロセスの標準化にも貢献しています。NPMやYarnなどのパッケージ管理システムを通じて、外部のモジュールをプロジェクトに組み込むことが一般的になりました。これにより、開発者は既存のモジュールを活用して、開発のスピードを上げることができます。

最後に、モジュール化はコラボレーションを促進します。チームメンバーが異なるモジュールに取り組むことで、並行して開発を進めることが可能となります。

要するに、モジュール化は現代の開発において中心的な役割を果たしており、その影響は広範にわたっています。野球のポジションのように、明確な役割分担と協調作業が求められる現代の開発において、モジュールの概念は欠かせないものとなっています。

まとめ

今回の記事では、モジュールの概念とその実践、そして現代の開発におけるモジュールの影響について深く探りました。以下、要点を3つにまとめます。

モジュールの重要性: モジュール化はコードの整理と管理を容易にし、再利用性と保守性を向上させます。野球のポジションに例えると、各ポジションが独立したモジュールであり、役割が明確に分かれているため、指示が効率的に行えるのと同じです。

現代のフレームワークとモジュール: フレームワークは開発の標準化と効率化を促進し、多くはモジュール化の概念を採用しています。モジュール化はフレームワークの設計に影響を与え、開発者が効率的にコードを書けるようにしています。

モジュールの実践: モジュールの使用例とベストプラクティスを理解することで、より効率的な開発が可能になります。特に、役割を明確に分けることで、コードの再利用と保守が容易になります。

次回の記事では、モジュールと密接に関連する「パッケージ管理」についての記事を書く予定です!
パッケージ管理は、今回の記事の中でも少しだけ出てきましたが、モジュールのインストール、更新、依存関係の解決などを効率的に行うための重要な概念です。どうぞお楽しみに!

それでは今日も学習をスタートします!

Discussion