カテゴリー: 01.研究開発情報

[JavaScript] JavaScriptを知ろう

2015/02/24 1:18 AM
 

Spring-Boot + MongoDB + Angular.js + Bootstrapという、今や枯れた感すらある定番の組み合わせで画面を構築し始めたら、これがなかなか捗る。一番の利点は、下回りの手数が減った分、業務の本質や操作性に時間を割けること。

特に、JavaScriptの本質的な部分を活かしたコーディングをしたくなる。いやむしろ、本質を理解していないと変なところでハマるのではないかという一抹の不安がある。

というわけで、「使い方」ではない、JavaScriptの世界観を知るために、厳選して本を購入。「開眼!JavaScipt」以外はKindleで購入した。折しもMac版、PC版のKindleアプリがリリースされたので、職場でも大きな画面で読める。

どの本にも共通して書かれていることがあるわけだが、並行してじっくり読み返しながら進めていくと理解が深まる。

「簡潔というより難解」と思ってしまうようなコードが出てくるが、理屈がわかると同じように書きたくなる。

まずは一冊、手にとってみてはいかが?

JavaScript Ninjaの極意 (Kindle版)

JavaScript Ninjaの極意 (紙版)

開眼!JavaScipt(紙版)

Effective JavaScript (Kindle版)

Effective JavaScript (紙版)

JavaScript The Good Parts(紙版)

リーダブルコード

[Spring Roo] Spring Rooやめました

2015/02/21 4:34 PM
 

久しぶりのエントリです。

昨年、Spring Rooについて書いていましたが、結局、使うのをやめました。

理由は、主にDojoを含むUI周りに手間がかかるためです。

  1. Spring-dojoのテンプレートのタグが中途半端。本来のJSPタグが隠蔽されていて、結局作り直すハメになる。
  2. Dojoに関する日本語の情報が少ない。
  3. Dojoのブラウザ互換性がイマイチ。

例えば、ちょっとしたスタイルの指定もcssStyleが使えず、テンプレートタグで引数を用意して、分岐ごとに追記しなければなりませんでした。タブコンテナなどは、Chromeで正常に表示されても、FirefoxやIE11ではただ中身が並んでしまい、結局ボタンとdivで作り直したこともありました。

Roo独自の流儀に従おうとしてきましたが、必要なファイルを作ってくれるRooの仕組みには助けられたものの、Dojo周辺が足手まといになった格好です。

デザイン担当とロジック担当に人員を分けられるチームならまだしも、少人数で、顧客の細かい要望に応え続けていくのは無理があると判断しました。

別の案件でSpring-Boot + thymeleaf + Bootstrap + Angular.jsを使い始めたところ、見通しの良さに関しては雲泥の差。

Angularは2.0で大きく変わるようですが、どうせ特定のテクノロジにロックインするなら、道連れが多いに限ります。

こっちに切り替えます!

気になる本

2014/03/31 12:58 PM
 

Interface (インターフェース) 2014年 05月号

Software Design (ソフトウェア デザイン) 2014年 04月号

データベース徹底攻略 (WEB+DB PRESS plus)

[Spring Roo] 14. グリッドを使う(dgrid)

2014/03/01 9:15 PM
 

これまで作ってきたSpring RooのWebアプリの一覧表示を、機能的なグリッドで表現する。

Spring Rooが生成する一覧表では、tags/form/fields/table.tagxとtags/form/fields/column.tagxによって、普通のテーブルタグのHTMLが生成される。これは、ページネーションこそあれど、スクロールもソートもしない。

JavaScriptライブラリの選択

Dojoを使ってみよう

現在、クライアント再度JavaScriptライブラリで最も手軽に使えるのはjQueryであるが、業務の要求に耐えるようなものを作ろうとするとjQuery UIでは足りなくて、あちこちのプラグインを寄せ集めることになり、操作性の統一感も失われてしまうことになりかねない。

Spring Rooが採用しているJavaScriptライブラリは、Dojoという、あまりなじみのないものだ。海外ではjQueryと同じくらいの認知度があるらしい。よく調べてみると、UIパーツも揃っていて、統一的にテーマを変更できるようになっている。Rooで開発をするのであれば、いい機会なので使ってみることにしよう。

続きを読む »

[Spring Roo] 13. JSONでの応答機能の追加

2014/02/28 8:04 PM
 

一覧表示を、もっとリッチなものにしたい。Spring Rooは、Dojo toolkitというJavaScriptライブラリを標準で用意しており、この中に、高機能そうなグリッドがあるので、それを使ってみたい。また、データの受信は非同期に行いたい。非同期通信と言えばJSONを使うのがポピュラーだ。

今回は、下地として、サーバ側でJSONで応答させる機能を追加してみよう。

エンティティでの対応

JSONで応答させるために、以下のコマンドを使ってアスペクトコードを作らせる。

続きを読む »

[Spring Roo] 12. JPA Repositoryを使用したソートの実装

2014/02/23 2:39 AM
 

Spring Rooが生成したService、Repositoryには、ソート機能がない。しかし、実際のアプリケーションにはソート機能は必須だ。そこで今回は、一覧の検索にソート機能を実装する。

実現したいこと

Serviceの検索結果を、指定した順にソートされた状態で取得する。

具体的には、Accountの一覧で、ログインID順に表示する。

続きを読む »

[Spring Roo] 11. オリジナルテーマの作成

2014/02/17 3:58 PM
 

オリジナルのテーマを作る

Spring Rooのページ・レイアウトには、Apache Tilesが利用されている。

webmvc-config.xmlには、

  • WEB-INF/layouts/layouts.xml
  • WEB-INF/views/**/views.xml

が、レイアウト定義であることが記述されている。

layouts.xmlでは、defaultのテンプレートとしてdefault.jspxを指定している。default.jspxに配置されたheader、menu、body、footerのうち、header、menu、footerがlayouts.xmlで定義され、bodyは各views.xmlで定義されている。views.xmlにある画面が使用される時、views.xmlからlayouts.xmlへと継承が辿られて、最終的な画面が作られる。この詳細は別の機会に書くことにする。

今回は、オリジナルテーマを作るための手順について書く。

続きを読む »

[Spring Roo] 10. メッセージの国際化(PropertiesEditorの導入)

2014/02/15 8:37 PM
 

これから、Spring Rooで作ったプロジェクトのデザインをオリジナルに変更していくのだが、その前にやっておかなければならないことがある。

message.propoertiesなどのプロパティファイルを編集するプラグインの導入だ。

もともと、.propertiesファイルは、UNICODEに直した文字列をISO-8859-1で記すものなので、日本語をそのまま記述しても文字化けする。また、ファイルのエンコードをUTF-8にしてもダメだ。

Spring Tool Suiteのプロパティファイル・エディタ(Properties File Editor)は、結局ただのテキストエディタである。国際化リソースの要となるファイルなのに、いつまでもこの状態はいかがかと思う。

PropertiesEditorの導入

そこで、日本語(他の言語も)で編集し、ISO-8859-1で保存できる、PropertiesEditorをインストールしよう。

続きを読む »

主な記事の一覧

2014/02/10 6:20 PM
 

IT関連

Spring Boot関連

JavaScript関連

(旧)Spring Rooの学習

闘病記録

闘病記録は、過去にさかのぼって書くのですが、記録という記事の性格上、日付を当時のものにしています。そうすると、当然のことながら、トップページには表示されなくなってしまいますよね。ですので、主な記事をトップに表示右サイドに表示するようにしました。

寛解を機に過去と未来を綴る (2013/11/27 追加)

2013/05/27 発端(鼻づまりを甘く見てはいけない) (2013/11/28 追加)

2013/10/10 退院 (2013/11/27 追加)

 



[Spring Roo] 09. パスワード変更機能の追加(jspxの編集)

5:04 PM
 

今回は、パスワード変更機能の追加を通じて、jspx編集作業における注意点等を書く。

Rooによるjspx内要素の再生成(ラウンドトリップ)について

.jspxファイル内の要素は、エンティティの変更などを反映するために、Spring Rooによって自動的に更新される。だから、不要な項目などを削除しても自動的に復活してしまう。

この機能は便利である一方、デザインやセキュリティの面で邪魔になることもある。

今回の場合、アカウントの一覧画面や編集画面でのパスワードハッシュのフィールドが相当する。パスワードは、入力→ハッシュ化が一方通行である必要があり、また、ハッシュ化されたパスワードを画面に表示してもいけない。

Spring Web MVCリファレンスのJSP View(11.3)によると、jspx内の要素の属性について、以下のように書かれている。

  • id属性は、エンティティのフィールドに関連づいている。Roo Shellは、id属性とエンティティをチェックし、要素がjpsxから無くなっていれば再度生成する。
  • z属性には、エンティティのフィールド、属性の名前と値で生成されたハッシュ値が自動的に設定される。

ラウンドトリップを受けないようにするには

jspx内の要素を、Rooの自動再生成を受けないようにするには、次の方法がある。

続きを読む »


WordPress Themes