SlideShare a Scribd company logo
AngularJSで業務システムUI部品化
Photo by Web制作向け無料写真素材/ぱくたそ http://www.pakutaso.com
JavaQne(じゃばきゅん) 2015 Fukuoka (2015/01/24)
-自己紹介-
株式会社キャムの江原と申します。
Excelとかプログラムとか何かイロイロしてます。
twitter : @itokami1123
企業の経営戦略に役立つサービス「CAM MACS」を
AWSにて提供してます。
弊社のAngularJSで作る
画面部品の事例をご紹介します
今日話すこと
①導入の狙い
②AngularJSについて
③Directiveについて
④弊社のDirectiveの使い方
⑤まとめと今後について
①導入の狙い
目的
- HTMLタグの記述で個人差を出さない
- デザインを含むタグにしたい
- JS(ブラウザ)でDOMを描画したい
弊社は新システムで
この目的を達成するために
AngularJSのDirectiveを使っています
②AngularJSについて
Google製の
JavaScriptフレームワーク!
↑
安心と信頼のGoogle製!
(だと思いたい…無くならないでね)
MV*フレームワーク
ModelView
var data = {
cd: 101,
nm: "test"
};
<div>
{{data.cd}}
{{data.nm}}
</div>
データバインディング
101 test
JSのObjectが
自動表示されるよ
MV*フレームワーク
ModelView
<div>
{{data.cd}}
{{data.nm}}
</div>
データバインディング
Modelが変わると
Viewに反映するよ
var data = {
cd: 102,
nm: "test"
};
102 test
③Directiveについて
DirectiveはHTMLを拡張する機能です
<table class="table table-striped">

<thead>

<tr>

<th>番号</th>

<th>名前</th>

</tr>

</thead>

<tbody>

<tr ng-repeat="item in list">

<td>{{item.no}}</td>

<td>{{item.name}}</td>

</tr>

</tbody>

</table>
ng-repeatは配列を繰り返す標準Directive
HTMLの要素や属性に機能を追加できます
<table class="table table-striped">

<thead>

<tr>

<th>番号</th>

<th>名前</th>

</tr>

</thead>

<tbody>

<tr ng-repeat="item in list">

<td>{{item.no}}</td>

<td>{{item.name}}</td>

</tr>

</tbody>

</table>
ng-repeatは配列を繰り返す標準Directive
var list = [

{no: 1, name: "nobi"},
{no: 2, name: "zyai"},
{no: 3, name: "sune"}

];
<tr ng-repeat="item in list">

<table class="table table-striped">

<thead>

<tr>

<th class="ore-no-style" >番号</th>

<th>名前</th>

</tr>

</thead>

<tbody>

<tr ng-repeat="item in list">

<td>{{item.no}}</td>

<td>{{item.name}}</td>

</tr>

</tbody>

</table>
でも標準のDirectiveだけでは
デザインを統一するのが難しいです
(
ふふふ、こっそりと
個別デザインにしちゃおう
<table class="table table-striped">

<thead>

<tr>

<th class="ore-no-style" >番号</th>

<th>名前</th>

</tr>

</thead>

<tbody>

<tr ng-repeat="item in list">

<td>{{item.no}}</td>

<td>{{item.name}}</td>

</tr>

</tbody>

</table>
でも標準のDirective
デザインを統一するのが難しいです
(
ふふふ、こっそりと
個別デザインにしちゃおう
そこでデザインを含めたカスタムタグ!
例えばこんな感じで作成できます。
<ore-table data="list">

<column title="番号" name="no"></column>

<column title="名前" name="name"></column>

</ore-table>
ore-tableという名前で Dirctiveにカスタムタグを登録
var list = [

{no: 1, name: "nobi"},
{no: 2, name: "zyai"},
{no: 3, name: "sune"}

];
var m = angular.module("directives");



m.directive("oreTable",
["$compile", function ($compile) {

return {

restrict: "E",

出力結果
<ore-table data="list">

<column title="番号" name="no"></column>

<column title="名前" name="name"></column>

</ore-table>
ore-tableという名前で Dirctiveにカスタムタグを登録
④弊社のDirectiveの使い方
画面項目は、お客様ごとに
カスタマイズできるようにマスタで定義したい!
複数のお客様の要件に柔軟に応えたい
現在の形
<ore-grid data="vm" layout="gLayout"></ore-grid>

<script th:inline="javascript">

var globalLayout = /*[[${layout}]]*/ null;

</script>

Modelデータを指定 レイアウト定義を指定
Thymeleafで定義を埋め込み
var model = {
list: [

{no: 1, name: "nobi"},
{no: 2, name: "zyai"},
{no: 3, name: "sune"}

]
};
<ore-grid data="vm" layout="gLayout"></ore-grid>

<script th:inline="javascript">

var globalLayout = /*[[${layout}]]*/ null;

</script>

var globalLayout = {
'gLayout':{
'modelId':'list',
'row':{
'columns':[
{'align':'right','name':'no','title':'u756Au53F7'},
{'align':'left','name':'name','title':'u540Du524D'}
]
}
}
};
Thymeleafで定義を埋め込み
サーバ側でレイアウト情報を生成します
出力結果
<ore-grid data="vm" layout="gLayout"></ore-grid>

<script th:inline="javascript">

var globalLayout = /*[[${layout}]]*/ null;

</script>

Modelデータを指定 レイアウト定義を指定
Thymeleafで定義を埋め込み
⑤まとめと今後について
- 品質を一定にする為

JavaScriptでDOMを描画する際に

カスタムタグを使用しています

- お客様毎の要望に応える為

レイアウト情報でテンプレートを生成してます

- 弊社でAngularJSで大きく依存しているのは

カスタムタグ(Directive)のみ

- AngularJSに依存しない構成も検討しています

(→バージョンアップでなく乗り換え)
⑤まとめと今後について
サンプルソースは↓にあります
https://github.com/itokami1123dev/ng-example-2015-01-24
ご指摘などありましたら教えてください m(_ _)m
ご清聴ありがとうございました

More Related Content

PDF
今後のWeb開発の未来を考えてangularJSにしました
PDF
今後のWeb開発の未来を考えてangular jsにしました(拡大版)
PDF
AngularJS勉強会「そもそもwebって」@ツクロア勉強会(2015.09.10)
PDF
エンタープライヤーのためのWeb Componentsハンズオン
PDF
noteをAngularJSで構築した話
PDF
Spring Boot + Doma + AngularJSで作るERP 〜JavaQneバージョン〜 #jqfk
PDF
開発ライフサイクルから見たAngularJS
PDF
AngularJS入門の巻
今後のWeb開発の未来を考えてangularJSにしました
今後のWeb開発の未来を考えてangular jsにしました(拡大版)
AngularJS勉強会「そもそもwebって」@ツクロア勉強会(2015.09.10)
エンタープライヤーのためのWeb Componentsハンズオン
noteをAngularJSで構築した話
Spring Boot + Doma + AngularJSで作るERP 〜JavaQneバージョン〜 #jqfk
開発ライフサイクルから見たAngularJS
AngularJS入門の巻

What's hot (20)

PPTX
Angular js開発事例
PDF
Enterprise x AngularJS
PDF
Angularモダンweb開発セミナー紹介 20170923
PDF
これからフロントエンジニアを目指すあなたへ
PDF
Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)
PDF
Angular jsの継続的なバージョンアップ
PDF
メンテナンス性の良いWebシステムを構築するためにjavaとフロントエンドでやるべきこと
PDF
Angular2
PDF
One-time Binding & $digest
PDF
3分でわかるangular js
PDF
俺とAngular JS 2
PDF
AngularJS入門の巻2
PPTX
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
PDF
Angular 4がやってくる!? 新機能ダイジェスト
PDF
Angularおじさんの1年
PDF
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
PDF
イベント駆動AngularJS / 今から書くAngular 2.0
PDF
次世代Web業務アプリケーション
PDF
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
PDF
いい感じのフロントエンド開発環境を作ってみた
Angular js開発事例
Enterprise x AngularJS
Angularモダンweb開発セミナー紹介 20170923
これからフロントエンジニアを目指すあなたへ
Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)
Angular jsの継続的なバージョンアップ
メンテナンス性の良いWebシステムを構築するためにjavaとフロントエンドでやるべきこと
Angular2
One-time Binding & $digest
3分でわかるangular js
俺とAngular JS 2
AngularJS入門の巻2
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
Angular 4がやってくる!? 新機能ダイジェスト
Angularおじさんの1年
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
イベント駆動AngularJS / 今から書くAngular 2.0
次世代Web業務アプリケーション
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
いい感じのフロントエンド開発環境を作ってみた
Ad

Viewers also liked (9)

PDF
Alt01-LT
PDF
デザイナーとの協業を本気で考える
PPTX
初心者 × AngularJS × TypeScript
PDF
Angularを利用しよう
PPTX
忙しい人のためのBackbone.jsとAngular.js入門
PDF
angular X designer - デザイナからみたAngularJS #ten1club
PDF
AngularとOnsen UIで作る最高のHTML5ハイブリッドアプリ
PDF
最強オブジェクト指向言語 JavaScript 再入門!
PDF
TypeScriptで快適javascript
Alt01-LT
デザイナーとの協業を本気で考える
初心者 × AngularJS × TypeScript
Angularを利用しよう
忙しい人のためのBackbone.jsとAngular.js入門
angular X designer - デザイナからみたAngularJS #ten1club
AngularとOnsen UIで作る最高のHTML5ハイブリッドアプリ
最強オブジェクト指向言語 JavaScript 再入門!
TypeScriptで快適javascript
Ad

More from Toshio Ehara (20)

PDF
iPhoneアプリを Javaで書くよ?
PDF
Java初心者勉強会(2015/08/07)資料
PDF
Java電卓勉強会資料
PDF
BABELで、ES2015(ES6)を学ぼう!
PDF
traceur-compilerで ECMAScript6を体験
PDF
traceur-compilerで未来のJavaScriptを体験
PDF
JenkinsをJava開発でこんな感じで使っています
PDF
AngularJS+TypeScriptを試してみた。
PDF
AngularJSのDirectiveで俺俺タグつくっちゃお
PDF
HTML5のCanvas入門 - Img画像を編集してみよう -
PDF
BACKBONEJS+SCSS+JavaEE(JAX-RS) 今風のWebアプリをNetBeansで入門!
PDF
福岡のIT勉強会情報の集め方(LT資料)
PDF
BACKBONE.JSによるWebアプリケーション開発について
PDF
BACKBONE.JSにJasmineでテストコード書いてみた (LT資料)
PDF
JavaScriptのテストコード 一緒に勉強しませんか??
PDF
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜
PDF
LT Leap MotionとJavaScriptで遊ぼう!
PDF
JavaScriptもBACKBONE.JSならスッキリ ~MVCぽいのを初体験!~
PDF
BACKBONE.JSでMVC始めませんか?
PDF
はじめてのjQuery入門 01 2013年7月14日(日)
iPhoneアプリを Javaで書くよ?
Java初心者勉強会(2015/08/07)資料
Java電卓勉強会資料
BABELで、ES2015(ES6)を学ぼう!
traceur-compilerで ECMAScript6を体験
traceur-compilerで未来のJavaScriptを体験
JenkinsをJava開発でこんな感じで使っています
AngularJS+TypeScriptを試してみた。
AngularJSのDirectiveで俺俺タグつくっちゃお
HTML5のCanvas入門 - Img画像を編集してみよう -
BACKBONEJS+SCSS+JavaEE(JAX-RS) 今風のWebアプリをNetBeansで入門!
福岡のIT勉強会情報の集め方(LT資料)
BACKBONE.JSによるWebアプリケーション開発について
BACKBONE.JSにJasmineでテストコード書いてみた (LT資料)
JavaScriptのテストコード 一緒に勉強しませんか??
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜
LT Leap MotionとJavaScriptで遊ぼう!
JavaScriptもBACKBONE.JSならスッキリ ~MVCぽいのを初体験!~
BACKBONE.JSでMVC始めませんか?
はじめてのjQuery入門 01 2013年7月14日(日)

AngularJSで業務システムUI部品化