やっぱりJSPは無理。。
最近、UI/UXに強い興味を持つようになったものです。
現場でJSPを使ってゴリゴリ画面書いています。
やっぱりJSPとは付き合えない。
いろいろな問題がある。いろいろ考えたけど、有効な解決策が思いつかない。
以下、自分が思う問題点。
Webデザイナーとの分業がめんどくさい
これは現場での話。
いつも画面はデザイナーに発注して納品してもらっているのだが、納品されてくるのは、HTML+JS+CSS。
当然、JSPで納品される筈はない。なぜならJSPは、そのままでは見れないので、画面を見ながら修正ができないから。
JSPで納品してもらうってのも考えたけど、手間しか生まない+デザイナーに過剰なスキルを要求するので、単価上がりそう。。。
納品されたあとは、それをJSPにエンジニアが変更する。
その作業で、デザイナーの意図をくみ取れずに、デザインを変えてしまうことがある。
(はい、自分のことです。。。)
せっかく画面表示できるHTMLを潰して新しくJSPを作ることは、デザイナーの成果物を壊すことに等しい。
分業のメリットを殺している。
分業の素晴らしさは、経済の歴史が証明してくれている。
適材適所、餅は餅屋などの諺、経済史に習って、分業は推し進めるべき。
エンジニアにとっても、デザイナーの仕事をとっているようで心苦しい。
決して、HTML→JSPの変換がめんどくせぇ~。JSPで納品しろや!とか思っていないよ!(たぶん)
オマケ:分業のメリット・デメリット
- メリット
- 保持しているスキルを存分に活かせる
- スキル活用機会が増えるので、習熟度の上がりが早い
- 余分なことを考えなくていいので、経済的(思考的な面で)
- デメリット
- 専門外の知識の低下
- エンジニア同士の繋がりが遠くなり、問題の共有が難しくなる
分業化を最初に述べたのはアダム・スミスの国富論らしいです。 まだ、読んだ事無いですが、最近の考えることと非常に近しいことが書いてあるっぽいので、参考にしてみようと思います。
- 作者: アダム・スミス,水田洋監訳,杉山忠平
- 出版社/メーカー: 岩波書店
- 発売日: 2000/05/16
- メディア: 文庫
- 購入: 2人 クリック: 49回
- この商品を含むブログ (31件) を見る
HTML→JSPの変換が面倒くさい
HTML→JSPの変換は苦行。
変換したことがある人なら誰しも思うはず。
JSPの意味不な呪文を書いたり、インデントが膨大になったり、意味不明な例外が実行時に起こったり、実行してみて初めて間違いに気づいたりして、非常に非生産的。
変換バッチも考えたけど、結局読みにくいJSPが出来上がり、修正コストが変わらないので、あまり解決になってない。
やるならJSPを殺す覚悟がいる。
創造の前には破壊が必要!破壊することを恐れる心があるなら、そんないらない心も壊せっ!(コードギアス的な名言のつもり)
モックとして使用できない
これは全員困るハズ。
とくにWebディレクター*1が一番困ると思う。
最終的な成果物の責任はディレクターが持つので、画面は常に見える状態にして、画面をもとに軌道修正や指示出しをしたいはず。
即座に見えない→指示が遅くなる→プロジェクト炎上→休出・残業
こうして土方エンジニアが量産されるわけであります。
自分は開発エンジニアで、最終的なツケの解消をする側です。ツケはなるべく少ないほうがいい。
そのためにも、モックは超重要です。
「納品されたHTML使えばええやん」とか思っている人は、考えがたりません。
HTML=JSPではないので、若干の誤差が必ずでます。
変換処理でさらに差が広がることもあります。(自分がそうでした。(ノω・)テヘ)
モックの重要性を認識しつつ、JSPだけではそれができないことが、非常にもどかしいと感じています。
解決方法
これは簡単。JSPを使わなければいい。以上!
JSP以外で有効そうな解決手段は、2つくらいあります。
- thymeleafなどのテンプレートエンジンを使う。
- JavaScriptFWを利用して描画処理をクライアント側にやらせる
thymeleafなどのテンプレートエンジンを使う。
問題はJSPという固有のスキルを使うことです。
HTMLベースでのテンプレートエンジンを使うことで、すべての問題が解決できます。
ここでミソとなるのが、HTMLベースであること。
変な独自言語が入ると、分業が困難化して一気に作業効率が下がります。
モック表示できることが一番重要です。
知っている範囲内では、thymeleafがベストだと思います。
JavaScriptFWを利用して描画処理をクライアント側にやらせる
データのバインディングをJavaScriptにやらせてしまう方法です。
Webデザイナーは、動きのある画面を作るためにJavaScriptを使えることが一般的です。
それを利用して、表示するデータはJavaScriptを通して取得し、画面上に出させるようにする。
そうすることで、ピュアHTMLで開発が出来るようになる。
AngularJSが非常によく出来ているので、個人で開発するときはよく使っています。
最後
個人的なWebアプリを作るときは、よくSpring+AngularJS+BootStrapの組み合わせで開発します。
AngularJSは、jQuery非依存なので、面倒なコンフリクト問題を考えなくて済むのため、非常に重宝してます。
※ここに行き着くまで結構長かった。。。
早く現場でもJSPと別れて、AngularJSとチュッチュしたいです。
だれか、現場のお偉いさんを説得してくれないものか?
自分の職位は最底辺なので、取り合ってもらえないのが辛い。。
あと、権力不足で説明しても説得力の面で押しに欠ける。
権力の力は偉大です。
政治的な問題から距離をおいていましたが、コレをきっかに職位の上昇を目指します。
Webデザイナーリスペクト
Webデザイナーは、下に見ていた頃がありましたが、開発におけるデザイナーの貢献度が強いことを知り、デザイナーをリスペクトするようになりました。
少し前にあった大規模な画面の刷新で、デザイナーの方と話をしましたが、優秀な方でいろいろ得ることがありました。
特にJavaScriptの設計手法がJavaと全然違っていて、今まで作ってきたJavaScriptの違和感を払拭できました。
最近思うようになりましたが、JavaエンジニアはJavaScriptをうまく使いこなせていないことが多いと思います。
Javaエンジニアは、スクリプト言語系は使いこなせない特徴が、顕著に出る気がします。(自分も含めてですが。。。)
Java8のラムダ式がうまく理解できない人が多いのも、ここから来ている気がしています。
話が脱線したので、戻します。
なるべくデザイナーの成果物は壊さず、活かして上げたいと思うようになり、今に至ります。
エンジニアは、リスペクトする心と謙虚さを常に持つべきだと通関しました。
いい話風で終わります。
*1:Webアプリを企画する人