一度じっくりとフレームワーク選定基準について考えてみよう

javaのフレームワークだけでも、枯れたフレームワーク、最新のフレームワーク、メージャーマイナーと多種多様です。
どのような場面で、どのようなフレームワークが最大限の効果を引き出せるのでしょうか。
残念な場面として、フレームワークの特性が全く活かせられない残念なシステムもあります。
今回は、フレームワークの選定基準を考えたいと思います

[スポンサーリンク]
title_keybord_700

フレームワークを使う目的

フレームワークを使う目的として、私は以下の2つを重視しています。

1:設定より規約
プログラム上ルール化を徹底して開発者の決定事項を少なくすることを指します。

2:車輪の再発明はしない
既に存在するものは、スクラッチで作成しません。

上記、1と2を少しだけ解説します。
詳細については、googleで検索すると詳しいサイトがたくさんあります。
特に1の「設定より規約」は、複数人でメンバーを組んで開発を行う現代の会社組織においては大変重宝しています。

選定基準いろいろ

選定基準はネット上でも、多分あなたの会社でも色々あると思います。
もちろん私の勤めている会社でも選定基準はあります。

ざっとあげてみましたが、恐らくここにあげた項目以外にもあるのではないでしょうか。

1:流行っているフレームワークか??
2:ドキュメントは十分か??
3:セキュリティホールは潜んでいないか??
4:world wideであるか??
5:フレームワーク間での親和性はあるか??
6:フレームワークが提供してくる機能が必要か??
7:学習コスト(期間)は想定内におさまるか??
8:開発コスト(期間)は想定内におさまるか??

これら全ての要素を満たすことは非常に難しいと思います。
上記の要素をいくつかピックアップして、それらの要素を満たすフレームワークを選定することをオススメします。

フレームワーク選定で一番大切なこと

私は以下の2つがフレームワーク選定で一番大切なことだと考えます。
1;フレームワークの選定理由を明確に伝えられること
2;何を作るか明確にした上でフレームワーク選定すること

「1」については、「なぜこのフレームワークを使ったのですか?」という問いに対して、「会社の決定だから。」、「自分が入社した時には既にこのフレームワークでした」と返答するエンジニアが多いように感じます。
答えとしては、確かにその通りなのだと思いますが、ひとつ上いくエンジニアとしては、「なぜ会社がこのフレームワークを選定したのか?」と背景を読んで、推測でも相手を納得させる明確な返答ができればと思います。

「2」については、「特定のフレームワークの信者」がフレームワークありきで、開発しているような場面がしばし見受けられます。
フレームワークありきで作成してしまうと、「実はこのフレームワークより最適なフレームワークがあった!」と完成間時かに気付いてもあとの祭りです。
どのようなシステムでも「何のシステムを作るのか?」ありきでフレームワークを選定すべきだと思います。

さいごに

近年javaフレームワークも新しいものが次々出てきます。
全てのフレームワークの機能を押さえる必要は無いと思いますが、フレームワークを選定する軸は、しっかりとぶれないものにする必要があると考えます。
フレームワークを選定する経験を積むにも、なかなかそういった場面に触れれないということが多いとあります。
既存のシステムがどういった背景で、開発されたか、実装者に聞いてみたり、自分自身で推測してみたりして、フレームワークを選定する軸を培っていく努力も必要になってくると思います。