ZIOのメリット
What is ZIO?にZIOの良さが網羅的に書かれていますが、私の主観としては以下の点がメリットであったと感じています。
- 学習コストの低さ
- 一般的に関数型言語は難しいものですが、ZIOを使った開発では圏論に由来する関数型プログラミングの知識をあまり必要としないため、ZIOの導入はScalaの学習コストを下げる働きがあると感じました。
- Springフレームワークと比較した場合、暗記する量、覚える量は少ないと感じました。
- 一般的に関数型言語は難しいものですが、ZIOを使った開発では圏論に由来する関数型プログラミングの知識をあまり必要としないため、ZIOの導入はScalaの学習コストを下げる働きがあると感じました。
- コード設計の容易さ
- ZIOを使用する場合、関数の返り値は自ずとZIO型となるため、使用しない場合に比べ関数の返り値や関数同士の合成が統一的になり、Scalaでの実装経験があまりない場合でも取り組みやすいと感じました。
- しかしながら上記のメリットを得るためには関数の返り値はZIO型を基本的に返すものとするといったコーディング規約を設ける必要はあると考えています。
- ZIOを使用する場合、関数の返り値は自ずとZIO型となるため、使用しない場合に比べ関数の返り値や関数同士の合成が統一的になり、Scalaでの実装経験があまりない場合でも取り組みやすいと感じました。
ZIOを使うことにより全体的にキャッチアップし易くなる効果があると思いました。
ZIOのデメリット
また、主観が含まれますが、デメリットは以下の点が挙げられると感じました。
- 他関数型言語への移行の難化
- ZIOを使った開発では本来関数型言語での開発に当たって知っていた方が良い知識があまりない状態でも開発を進めることが出来るため、もしScalaからZIOのようなライブラリがない他の関数型言語への移行が必要となった場合に移行コストについては上がってしまうことが予想されます。
- ディレクトリ構造を設計する必要があること
- 他のある程度ディレクトリ構造が定まっているフレームワークと比べ、ディレクトリ構造の自由度が高いため、使用者が設計する必要があります。
最初の点についてはZIOに関する評判はScala界隈で以下のアンケート結果より高いということがわかっているため、今後は他の関数型言語においてもZIOに相当するライブラリ、フレームワークが作られる可能性もある程度高いかと考えております。
※13ページ(13. ZIO ecosystem)
終わりに
ZIOの紹介としてZIOを使った際の個人的な経験に基づくメリット、デメリットについてお話してきました。
以降では大きくバッチ開発とバックエンド開発に分けてZIOについて見ていきます。
まず次章では典型的なHello, World!
出力プログラムの作成から始めます。
目次:ZIOまとめ
次章:Hello, World!