フリーエンジニア実践講座

Useful

時代の変化とフリーエンジニアのキャリアパス(Java編 その1)

時代が変わってきている

2009年~2010年をさかいに、ソーシャルなアプリケーションによるUI、UXの進化、スマートフォンのネイティブアプリケーションの浸透等が進み、現在、アプリケーション開発者には更なる進化が求められているように感じます。

あるデファクトの終焉

昨年も大きな出来事がありました。JavaのWebアプリケーションにおける実質的なデファクトであった、Struts1がEOL(End of Life)になりました。
最近の日経コンピュータ(2014年8月7日号)においても、EOLになったStruts1をどう移行するかといった記事が掲載されています。
 
この記事そのものは、ある一つのフレームワークの終焉を意味するだけですが、ここには別の意味があるのではないかと筆者は考えています。
冒頭でも記述しましたが、画面遷移を中心とするWebアプリケーションから、GMail、Facebookを代表とする シングルページWebアプリケーション※1に変化しています。そのため、Struts1の持つコンセプトと異なるWebアーキテクチャに変化し始め、Struts1では利用しにくくなってしまうということを意味すると考えています。
 
一方で、シングルページWebアプリケーションを適用しにくい、エンタープライズ系のアプリケーションではStruts1を利用することは可能だとは思いますが、EOLのStruts1をこれからは採用しないでしょう。

何を利用していけばいいのか?

Struts1の代わりに何を利用するかは、まだ方向性が決まっていない状況ですが、一つの案として、SpringMVCが挙げられます。DIコンテナであるSpringの一つのプロジェクトとして提供されています。 Springは活発なプロジェクトなので安心感があり、Struts1のようなMVCフレームワークとしては適切だと思います。
シングルページWebアプリケーションでも、Jacksonと併用すればサーバサイドのフレームワークとして利用することが可能です。
 
一方で、ある一つのフレームワークの方向性に賭けてよいのかという疑問もあります。前述の日経コンピュータの記事の言葉を借りれば、これは「フレームワークロックイン」です。
同じAPIであるプロダクトはないので、SpringMVCの提供元であるPivotal SoftwareがEOLを決定してしまうと、長期的には移行を与儀なくされます。 システムのライフサイクルが長くなっている現在において、それなりのリスクを持つと考える場合もあるでしょう。
もう一つの選択肢が、JavaEEを利用する選択肢です。JSFを利用することも可能ですが、シングルWebアプリケーションのことを考えるとJAX-RS※2が良いかもしれません。 この選択肢であれば、APIとしては標準化されているので将来的な移行に有利に働く可能性があります。

技術の多様性

上記では、JavaのWebアプリケーションにおけるサーバサイドのフレームワークの選択について考えましたが、現在、近い将来に利用される言語はJavaだけではなく、PHP、Ruby、Scala等があり、それぞれ特徴があり、それぞれのフレームワークもあります。
個々の技術を比較することはここでは避けますが、それぞれの個性を理解して選択するのは難しいでしょう。
 
また、クライアント(ブラウザ)技術についても、時代の変化と共に進化しています。基本となるJavascript、CSSは知っている必要がありますが、それだけではプロジェクトで活躍するのは難しいでしょう。
JavascriptについてはデファクトスタンダードになっているDOM操作系のJavascriptフレームワークであるJQueryは必須技術ですし、今後はクライアントMVC系のJavascriptフレームワークであるBackbone.js、Knockout.js、Angular.js等は当たり前に利用されるようになるかもしれません。
 
また、新しい潮流としては、Javascriptを代替するフレームワーク等もでてくるでしょう。RoR(Ruby on Rails)で採用されているCoffeeScriptをはじめとして、Google提供のDart等、枚挙にいとまがない状態です。
 
CSSについては深入りしませんが、BootStrapのようなCSSフレームワークから、LESSやSassのようなCSSプリプロセッサ(CSSメタ)等もあり、これも選択も迷うところです。

フロントエンジニアの薦め

このような背景のもと、Webアプリケーションを構築をするための技術は多様化し、すべてを追いかけるのが難しい時代になりました。
しかし、技術に腕がある人は活躍しやすい時代とも言えます。 上記であげたような技術について、それぞれ一つの深い経験をもち、新しい要素技術についても概要をキャッチアップしながら、スキルアップをしていく、技術者としては面白い時代になったと思います。
 
多岐にわたる技術を実現手段として使いながら、UI/UXのスキルを身につけ、自分が作成したWebアプリケーションが使いやすいと評判になる。 技術者冥利につきます。このように考えると夢が広がりますね。

 
 

注記

※1 画面遷移を中心とせず、ある1ページを中心にAjaxのリクエストやDOMの操作によって実現するアプリケーション
※2 JAX-RSはJSR311で規定され、単独の技術要素として提供されたが、JavaEE6からJavaEEの仕様として取り込まれた。JSR339でバージョンアップされたJAX-RS2.0はJavaEE7で仕様に取り込まれた。

実践講座一覧へ戻る