SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

BizReach Tech Blog

JavaでWebサービスを作り続けるための戦略と戦術(前編)

BizReach Tech Blog 第1回(前編)


  • X ポスト
  • このエントリーをはてなブックマークに追加

新しいIDEと付き合う 

 Javaで開発する場合、Eclipse、IntelliJ IDEA、NetBeansのいずれかを使うのが一般的です。ビズリーチでもEclipseが主力でしたが、今はIntelliJ IDEAに、ほぼ全面移行しました。JavaだけでなくScalaのプロジェクトも増え、さらにフロントエンドエンジニアがTypeScriptの導入を進める中で、すべての言語に一貫性を持って対応できるのはIntelliJだけではないでしょうか。

 しかしEclipseからIntelliJに移行する中で意外なネックがありました。エンジニアの開発用マシンでアプリケーションサーバを起動するために、Eclipseのプラグインに頼っていたのです。SysdeoプラグインやWTPプラグインと類似の、自社で内製したプラグインでした。その当時の我々のコードベースではIntelliJのTomcat連携機能でもアプリケーションを起動できませんでしたので、そのままではエンジニアもデザイナーもEclipseから離れることができません。

 しかし、

public static void main(String ... args){} 

といったエントリーポイントを経由して、

tomcat = new Tomcat(); 

で起動するように変更すると、IDEやそのプラグインへの依存性は全くなくなりました。

 また、ビズリーチシステムではWebデザイナーもサーバーサイドエンジニアと同じコードベースで作業をしていますが、そもそもEclipseやIntelliJはWebデザイナーの作業環境として最適ではありません。そこで、

mvn compile exec:java jp.bizreach.Main 

という単純なコマンドでアプリケーションを起動できるのであれば、Webデザイナーに重厚なIDEの使用を強いる必要もなくなります。

 事業的には一見無意味に思えるこの変更は、前述の通りデプロイ戦略に柔軟性をもたらすだけでなく、ローカル開発環境を自由に選択しWebデザイナーも含む開発チーム全体の生産性を上げるために必要不可欠なことだったのです。2014年にSpringフレームワーク上に登場したSpring Bootは、こうした戦略を初めから実現してくれます。ビズリーチシステムの一部のサブシステムもSpring Bootに移行しています。

フレームワークを選ぶ、あるいは変える

 ここでいったん12-Factor App戦略から離れ、アプリケーションの骨格を考えてみます。エンジニアがアウトプットしてWebサービスを事業として成立させるには、巨人の肩に乗ることが早道です。フレームワークがその1つです。

 Java言語の強力な型システム、あるいはインターフェースに向かってコードを書けるという利点を最大限に活かせるのが、DI(Dependency Injection)の概念とそれを実現するフレームワークです。初期のビズリーチシステムではDIコンテナとしてSeasar2を使用していました。現在はSpring 4.3です。Seasar2からSpring 3に移行した際の話をしたいところですが、残念ながら筆者はそのころはまだビズリーチにいませんでした。

 Spring 3からSpring 4への移行だけで考えると、それほど大きなコード変更は必要ありませんでした。下位互換性の高い言語とフレームワークを選択したことが、高い生産性をもたらしたと言えます。唯一大変だったのはXML設定のJavaConfig化です。XML設定のままでもSpring 4は稼働しますが、開発チームとプロダクトの巨大化が進む中、生産性を落とさずにスムーズに開発し続けるためには、Javaのタイプセーフ性を生かせるJavaConfig化に取り組むべきだと判断しました。

次のページ
データ層との連携

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
BizReach Tech Blog連載記事一覧

もっと読む

この記事の著者

渡辺 祐(株式会社ビズリーチ)(ワタナベ ユウ)

電機メーカー、SIer等を経て、2014年からビズリーチへ入社。CI環境整備やアーキテクチャ全般を担当。個人では mixer2というテンプレートエンジンライブラリをOSSとして作ったり。ときどきJJUG等で講演させてもらったりしています。 twitter: @nabedge github: github.com/nabedge 株式会社ビズリーチについて

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/10585 2018/10/17 15:47

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング