アプリケーションフレームワークの選定

今開発しているアプリのリニューアルをするにあたり、サーバサイドのフレームワークの選定が必要となりました。色々考えた結果、Spring boot に決めたのでその経緯をずらずら書いていこうと思います。

なぜリニューアル?

一般的にシステムの寿命は長くて5年と言われています。これはあくまでも一般的であって、iOSAndroid アプリでは新しい OS が出たり、新しい端末が発売されたりと、5年はまず持たないですね。今開発している iOS アプリも2年半くらいたつのですが、そろそろ作り替えが必要な時期にきています。ただアプリの作り替えだけでなく、サーバサイドも設計の見直しも必要でした。設計がいまいちイケていなく、アプリで結構ロジックをガリガリ書かなければいけない箇所が多く発生していました。アプリではロジックを減らし表示させることだけに専念し、細かな処理は全てサーバサイドで行うようにできれば、開発スピードも上がり今後の運用も楽になります。ということで、アプリのリニューアルに合わせ、サーバサイドのリニューアルも行うにあたりました。

フレームワークの選定

社内でのサーバサイドは主に Java で書かれており、これまで社内フレームワークを利用し実装していました。しかし、これだけ OSSフレームワークが充実していてドキュメントも整備されているこの時代に、わざわざ社内フレームワークを使わなくても良いのではというここと、ちょっとした社内事情もありまずはどのフレームワークを利用しようかの選定が必要でした。

Ruby だと Ruby on RailsPython なら DjangoPHP なら CakePHP や Laravel など、これ!というものがありますが、Java だとなにかなーと考えたときぱっと思い浮かぶのはPlay frmework や Spring framework。あとは Dropwizard。

Java であれば個人的には Play framework かなと色々調べてみましたが、Play framework 自体がバージョン2.0 以降、Scala で書き換えられていたり、思い切って Scala で書いても良かったのですが、プロジェクトのメンバーが入れ替わったときの学習コストが高かったりとちょっとうちの会社には合っていないかなと思い断念。(Scala 使いがいないというのと、会社の規模が割と大きいのと、メンバーが流動的に動く環境であったという色々な理由があり学習コストは極力抑えたかった。。)そこで、他の選択肢である、Spring framework と Dropwizard も調べてみたときに、Spring boot なるものがあると知りました。

Spring boot

これは名前からも分かるように Spring プロジェクトの1つです。どうやら Dropwizard の影響を受けているようで、2015年1月時点で最新バージョンは 1.2 で昨年 1.0 がリリースされたばかりです。特徴としては、コードを少量書いてすぐに実行が可能であり、web.xml などの設定ファイルは意識する必要がありません。Maven(gradle も可)の設定のみで OK です。あとはこれまで利用していた社内フレームワークSpring framework を意識した設計になっていたため、導入への敷居が低かったことも決め手でした。

今リニューアルし始めですが、これまでと比べかなりコード量も減らせ、さくさく開発が進みます。その中で起きた Spring boot に関する Tips も書いていこうと思います。