Skip to content

Effectのインポート

Effect へようこそ!もし Effect を始めたばかりであれば、Effect が提供する様々なモジュールや関数に圧倒されるかもしれません。 しかし、心配しないでください。すぐにすべてを理解する必要はありません。 このガイドでは、モジュールや関数のインポート方法についてシンプルに説明し、 ほとんどの場合、effectパッケージをインストールするだけで始められることを保証します。それでは、さっそく始めましょう!

Effect のインストール

Effect との旅を始めるには、まずeffectパッケージをインストールする必要があります。ターミナルを開き、以下のコマンドを実行してください。

Terminal window
npm install effect

この単一のパッケージをインストールするだけで、Effect のコア機能にアクセスできるようになります。

Deno や Bun などの他のプラットフォームに関する詳細なインストール手順については、クイックスタートチュートリアルを参照してください。 これにより、異なる環境に Effect を設定するためのステップバイステップのガイダンスが提供されます。

モジュールと関数のインポート

effectパッケージをインストールしたら、プロジェクトでそのモジュールや関数を使い始めることができます。 モジュールや関数のインポートは簡単で、標準の JavaScript/TypeScript インポート構文に従います。

effectパッケージからモジュールや関数をインポートするには、ファイルの先頭でimport文を使用します。以下のようにEffectモジュールをインポートできます。

import { Effect } from "effect";

これで、Effect ライブラリの中心であるEffectモジュールにアクセスできるようになりました。このモジュールは、エフェクト処理を作成し、組み合わせ、操作するためのさまざまな関数を提供します。

名前空間インポート(Namespace Imports)

前述の名前付きインポートを使用してEffectモジュールをインポートすることに加えて、

import { Effect } from "effect";

名前空間インポートを使用することもできます。

import * as Effect from "effect/Effect";

どちらのインポート形式でも、Effectモジュールが提供する機能にアクセスできます。

ただし、考慮しなければならない重要事項はtree shakingです。これは、アプリケーションのバンドル中に未使用のコードを削除するプロセスを指します。 名前付きインポートは、バンドラが深いスコープ解析をサポートしていない場合、tree shaking の問題を引き起こす可能性があります。

深いスコープ解析をサポートしているバンドラーは以下の通りで、名前付きインポートに問題はありません:

  • Rollup
  • Webpack 5+

関数とメソッド

Effect エコシステムにおいて、ライブラリはしばしばメソッドではなく関数を公開します。この設計の選択には、2 つの重要な理由があります:tree shakeability と拡張性です。

tree shakeability(tree shaking のしやすさ)

tree shakeability とは、ビルドシステムがバンドルプロセス中に未使用のコードを削除する能力を指します。関数は tree shakeability ですが、メソッドはそうではありません。

Effect エコシステムで関数が使用される場合、実際にインポートされ、アプリケーションで使用される関数のみが最終的なバンドルコードに含まれます。未使用の関数は自動的に削除され、バンドルサイズが小さくなり、パフォーマンスが向上します。

一方で、メソッドはオブジェクトやプロトタイプに付随しており、簡単には tree shaking されません。たとえメソッドの一部しか使用しなくても、オブジェクトやプロトタイプに関連付けられたすべてのメソッドがバンドルに含まれ、不要なコード膨張を引き起こします。

拡張性

Effect エコシステムにおいて関数を使用するもう一つの重要な利点は、拡張が容易であることです。メソッドを使用すると、既存の API の機能を拡張するにはオブジェクトのプロトタイプを修正する必要があることが多く、複雑でエラーを引き起こしやすいです。

対照的に、関数を使用することで機能の拡張がはるかに簡単になります。「拡張メソッド」を単純な関数として定義でき、オブジェクトのプロトタイプを修正する必要がありません。これにより、よりクリーンでモジュール化されたコードが促進され、他のライブラリやモジュールとの互換性が向上します。

よく使われる関数

Effect との冒険を始めるにあたり、effectパッケージ内のすべての関数をすぐに探求する必要はありません。代わりに、Effect の世界への旅を支える、しっかりとした基盤を提供する一般的な関数に焦点を当てましょう。

今後のガイドでは、Effectの作成や実行、パイプラインの構築に特化した重要な関数のいくつかを探求(explore)します。

しかし、その前に、Effect の本質であるEffect型の理解から始めましょう。これにより、Effect がどのようにアプリケーションに構成可能性(composability)、型安全性(type safety)、エラーハンドリング(Error Handling)をもたらすのかを理解するための基盤を築きます。

それでは、最初のステップを踏み出し、Effect 型の基本概念を探求しましょう。