みんなに使ってもらえるライブラリとは

なんか大風呂敷な気がするけど、brancoMailCore見てて思ったこと。
自分は、まずJavaでメール送信するJavaMailが好きじゃない。なんというか大げさすぎて。そして日本語にまともに対応できていなくて。だいたいメールアプリを作るわけじゃないから、メール送信なんて主要機能でないことがほとんど。今回もJavaでmailを送信することが出てきそうだから、先回りして現状を調べてた。
そうしたら「JavaMail完全解説」サポートページが落ちていることに気づいたり、brancoMailCoreなんてものがあることに気づいたりして、ちょっと深く首を突っ込んでしまった。
さて、自分としては、brancoMailCoreを使いたくならなくて、車輪の再発明をしたくてしょうがなくなった。何でなんだろうと考えている。brancoMailCoreは非常によくテストされていて、優良企業内の開発物といった安心感がある。なのに何故だろう。

  • ネーミング。なんでか使いたくない気持ちの大きな部分。何でだろうなぁ。
  • Javadocがない。いちいちwordとかを見ないとダメなのが心理的障壁のような。
  • サンプルがない。第三者でもいいから簡単なサンプルがないのが心細い。すぐ動かせるとやっぱり気が楽。
  • 大きなシステムの一部分。システムに依存してたら致命的だけど、そうでなくても思想だとか、ネーミングとか、やっぱり引っ張られてしまうから?
  • 余分な機能の主張が強い。個人情報保護の観点から大量のTOとかCCがある場合は送信を停止する機能が強く主張されているけど、自動送信機能なら、余計なお世話になる可能性が。
  • エラーメッセージが特殊?[MBMCS0xx]みたいなタグがついてる。う〜ん。

実際に利用したい機能はそう大きくないんだけど、プロパティbeanみたいなのが結構かさばってるし、だったら一から作ったほうが…なんて気がムクムク湧き上がってくる。
ここでいうライブラリは、jarとかlibとかclassでもいいし、sortみたいに他のものと組み合わせて使うものでもいい。システムの一部として組み込むものとして考えている。
じゃ、どういうのならば「車輪の再発明なんて無駄。あるものを使うのが一番」と思えるか。

再発明するのが面倒なもの

今回はJavaMailの日本語対応というのが主眼だからそう面倒ではない。だけど、HTMLのレンダリングだとかワークフローエンジンとかになると「再発明をあきらめ」ることができそう。

バグと戦わなくて済みそうなもの

サンプルをちょっと触ってすぐ、あちこちの不具合やら未完成部分を見つけてしまうと使う気が失せてしまう。もしバグやら未インプリ部分があってもコミュニティが盛んならば多少の安心ができる。ここで言うコミュニティには二つあって、一つは利用者層。これが多ければblogとかwikiとかでの情報に期待できる。もう一つは開発者層。頻繁に更新されていればバグ報告すればすぐ直りそう。

すぐ試せるもの

特殊な環境を要求するものだと試す前に捨ててしまいそうだ。さくっと展開、eclipseからサンプルをビルド、機能の全容がすぐ確認できるものだと意味もなく遊んでしまいそうだ。サンプルを作るのはは面倒だけど、使う側からするとかなりの価値を感じる。(著名になったら不要だけど)

すぐ使えるもの

試したあとは実際に組み込むことになるが、概念やら概要が簡潔にHTML(あるいはPDF)で示されていて、Javadocを使わずともサンプルの動作くらいはすぐ理解できること。Javadocまで読めばソースコードは必要ない状態であること。それくらいシンプルというかまとまっているのがいい感じ。

余計な事をしないもの、余計な要求をしないもの

ライブラリを追加すると他の箇所の動作が変わってしまうとか、jvmの起動パラメータを変更する必要があるとか、そういったものは敬遠される。ライブラリ内部のログは独自に生成しても良いがオフにできること。いや、デフォルトがオフであること。やりたいこと実現の最短距離を進むこと。
プロパティファイルは使いすぎないこと。90%の環境で変更する必要の無いものであれば良いが、環境ごとに変更する必要のあるものでは、プロパティファイルがよいのかどうか検討する必要がある。メッセージリソースは組み込む先の都合があるから、出来る限り減らしておきたい。
「便利だから」「簡単に追加できるから」という機能は削ぎ落とすか別パッケージとするのがよさそう。

自己主張しすぎないもの

ないとは思うが、スプラッシュ画面を出すだとか、利用状況をTCP/IPで流すとか、そんなものがあったら嫌だよなぁ。もちろん登録が必要とかっていうのも。有償だったらしょうがない部分もあるけど、それでも好きじゃない。


こんなものを作れるようになりたいな、ということで。