QA@IT

Scalaでライブラリを設計するときに気をつけていること

1141 PV

Scalaでライブラリを開発している方に質問です。

最近、ScalaでJSONを簡単に記述するためのDSL Jsonda を開発して、0.0.2を公開しています。従来のJSON DSLよりも簡単に、ScalaでJSONのオブジェクトを生成できます。

たとえば、

val person = %{ 'person :- "Kota Mizushima"
                          'age :- 28
                        }

と記述すると、

{"person":"Kota Mizushima", "age":28}

というJSONをパーズしたのと等価なオブジェクトが生成されます。これはなかなか悪くないとわれながら思っているのですが、このライブラリを使うためには、

import org.onion_lang.jsonda.Implicits._

というimportが必要になり、import以降の名前空間を汚染してしまいます。Implicitsの中ではいくつかのimplicit conversionを使っていて、それらはあまり表に出したくないのですが、ある程度出さざるを得ない場面があります。また、implicit conversionを多用したライブラリから生成されたscaladocは、それだけでは意味がわかりにくくなるという弊害があります。

皆さんは、どのような点に気をつけてScalaでライブラリを設計しているでしょうか。お教えいただければ幸いです。

ウォッチ

この質問への回答やコメントをメールでお知らせします。