ドメイン特化型軽量フレームワークが必要だ

既存フレームワークやOSで用意されているAPIは、あらゆる処理で汎用的に使える形になっているのでいかなる目的でも使える反面、アプリケーション側から見ると必ずしも最適な形になっていない場合がある。

例えば、「ファイルから文字列を読み込んで取得する」といういかにもよく有りがちな処理が頻繁に登場するアプリケーション開発において、その処理の度に「ファイルを開いて、文字列の読み込みバッファを用意して、データを読み込んで、例外処理も忘れずに入れて...」とAPIを並べるのはかなり開発効率が悪いし、ソフトウェア開発の品質もなかなか改善しない。

このような場合は、該当処理を一箇所で行えるように共通化するとか、既存のライブラリを持ち込んで必ずこれを使うようにすれば良い。Apache Commons IOには、ズバリそのような処理を1行で済ませるための便利なAPIであるFileUtils#readFileToString()が用意されている。

もちろん、この実装がすべての状況において最適なものとは限らないので、仮に処理能力に問題があるのならそれなりにチューニングしたものを使えば良いし、エラー処理の対処が不足しているのなら適宜補えば良い。このような形で「アプリケーションの目的に合ったAPIを整理した軽量フレームワーク」を用意しておくと、開発として本来やりたいドメインの内容に集中できるので、チーム全体での開発効率が向上するし、品質も劣化しないことが多い。

アレもできる、コレもできるという重量級のフレームワークは習得に時間がかかるし、必ずしもアプリケーションの利用目的に合致しないことが多い。既存のフレームワークから必要部分のみを引っこ抜いて流用するとか(ライセンスの確認を忘れずに)、既存のソースコードから再利用可能な箇所を集約してまとめる等の工夫をすることで、品質を維持しつつ開発効率を上げることが可能となる。

派生開発でバージョンアップを重ねているのに、いつまでも生のAPIをペタペタと並べる作り方はあまり感心しない。バージョンアップを重ねる毎に開発効率も合わせて上げていかなければ、開発者の学習能力が疑われてしまう。アーキテクチャ設計の一環として、開発者が使いやすいフレームワークを構築していくのが、開発者自身の課題ではないかと思っている。



関連