2016年度OSS Open技術分科会】 第 回 OSS勉強会 …...bower.json...

Post on 24-May-2020

2 views 0 download

Transcript of 2016年度OSS Open技術分科会】 第 回 OSS勉強会 …...bower.json...

2016年度OSS【Open技術分科会】第3回 OSS勉強会

AngularJS(WEB)とNode.js(サーバサイド、RPG)との連携

2016年12月9日

ソリューション・ラボ・横浜 川島 光雄

目次

分科会活紹介– メンバー

– 分科会 活動体制

– 活動目標

– 活動状況

AngularJS(WEB)とNode.js(サーバサイド、RPG)

との連携

分科会活動方針

IBM i OSを活用できる技術について

検証及び稼動確認を行うことで、技術習得を行う。

・技術習得

・他社との交流

・分科会発表

・OSS協賛勉強会(今後計画)

活動日時毎月 第二金曜日 17時~19時 で活動※場所は東京近郊skypeでの参加も現在実施中

次回分科会1月13日(金)18時~

JBAT 川崎 ソリッドスクエア 西側20F 大会議室※Skypeからの参加も受け付けてます

興味を持たれた方は是非分科会に参加ください!連絡は幹事会までお願い致します。

メンバー紹介

SLY 川島(リーダー)

JBCC 富田(副リーダー)

JBCC 植野

JBAT 土井

JBAT 依田

JBAT 杉本

NDIソリューションズ 平野

NDIソリューションズ 齊藤

ベルコム 梶野

オム二サイエンス 田中

※敬称略

KIS 藤野

SOLPAC 後藤

ティアンドトラスト 北原

シンカーミクセル 青木

シンカーミクセル 宍戸

アイビス 濱田

SLY 高柳

SLY 金子

SLY 浅倉

登録:12社 19名 平均10名程度の参加

分科会 活動体制

OSS幹事会

Open技術分科会

モバイルHTML5

環境構築GIT、BlueMix

ASモダナイズ(Node.JS)

JBAT 土井依田

JBCC 富田ベルコム 梶野

オムニサイエンス田中

分科会 リーダー:SLY 川島副リーダー:JBCC 富田

AngularJSで

技術革新により、Flash等のアドオンソフト無しにリッチクライアントと呼ばれる操作性とパフォーマンスの良いアプリケーションを構築する事ができるようになってきた

json

HTML5

IBM i

RPG DB2400

AngularJS 特徴

AngularJS はJavaScript フレームワークのひとつです。

【特徴】・Google社とコミュニティが開発するJavaScriptフレームワーク・ライセンスはMIT License。オープンソース。商用利用可能。・今現在(2015年8月15日)の最新版は 1.4.4。・JavaScriptでクライアントサイドのMVC(Model-View-Controller)モデルを

実現します。

AngularJS 今までの開発との違い

これまでのWeb開発(Java・PHP)・サーバー側でMVCを実現

※画面一部(プルダウン情報、コード名称)をAjax等でサーバー間のやりとりを行い、書き換える事はしていた。

AngularJSは、・クライアントサイドのMVC(Model-View-Controller)モデルを実現

‐サ ーバ側はDB操作のみを処理‐クライアント側 JavaScript のコントローラでデータモデルを管理‐クライアント-サーバ間をAjaxでJSON交換‐画面(HTML/DOM)はクライアント側で生成

メリット:クライアント側で画面を生成するので、クライアント、サーバー間の通信データ量を抑えられる。

AngularJS が使用しているフレームワーク

BootstrapBootstrap は、スマートフォンなどのモバイル端末にも対応し、レスポンシブデザインを採用した HTML, CSS, JavaScript フレームワークです。Twitter 社で開発され、最初は「Twitter Bootstrap」と呼ばれていましたが、現在は「Bootstrap」となりました。

レスポンシブデザインとはスマートフォン、タブレット、デスクトップなどの画面の広さに応じて、横並びを縦並びにしたり、狭い画面ではサイドバーを表示しないなどを自動的に調整し、同じデザインで異なる大きさの画面に対応するためのデザイン技術です。

AngularJS

今回作成したアプリケーションの説明

開発画面

【開発手順】クライアントにソフトウェア導入AngularJSディレクトリ作成画面開発ソース説明【デモ実演】サーバー起動URLより動作確認

開発手順 ソフトウェア導入

1.Node.js インストール

Yeoman は Node.js 上で動くので、 Node.js をインストール

①https://github.com/marcelklehr/nodist からダウンロード②C:¥tool¥nodeJS_v630_Win64¥node-v6.3.0-x64.msi を実行③node –v を実行し、インストールされたバージョンを管理

開発手順 ソフトウェア導入

2.npm バージョンアップNode向けパッケージ管理ツールnpmNode.jsをインストールすると自動で導入されます

① npm install -g npm② npm --version

開発手順 ソフトウェア導入

3.Ruby インストールひな形に含まれる SCSS をコンパイルするのに Compass が必要。Compass は Ruby で書かれたアプリなので、 Ruby をインストール

① http://rubyinstaller.org/downloads/からダウンロード② C:¥tool¥Ruby¥rubyinstaller-2.3.1-x64.exeを実行③ruby -v

開発手順 ソフトウェア導入

4.Bundler, Compass インストールBundler,:Gemパッケージの種類やバージョンの管理Compass:Sassという言語で記述したファイルをコンパイルして、

CSSファイルを生成する

①gem -v②gem install compass③compass -v④gem install bundler⑤bundler -v

開発手順 ソフトウェア導入

5.Git インストールBower を使用するのに Git が必要なので、 Git for Windows をインストール

① https://git-for-windows.github.io/からダウンロード② C:¥tool¥Git¥Git-2.9.2-64-bit.exe を実行③git --version

開発手順 クライアント開発ミドルウェア

YeomanGoogle社が作成した総合開発ツール群Yeomanを使うことでコマンドラインからの対話形式で雛形(テンプレート)を作成する事ができるため、プロジェクトに適した雛形を作ることができます。

① npm install -g yo

開発手順 クライアント開発ミドルウェア

Grunt

自動化のためのビルドツール(タスクランナー)です。Node.jsを使用し、ビルド用のスクリプト(Gruntfile.js)をJavaScriptで記述してタスクを定義します。

① npm install -g grunt-cli

開発手順 クライアント開発ミドルウェア

bowerTwitter社が作ったフロントエンド用のパッケージマネージャです。

bower.json は 作成しようとしているパッケージが他のパッケージとどのような依存関係にあるかを設定するものです。これは Node.js の package.json、 Ruby の Gemfileと似ています。

① npm install -g bower

開発手順 クライアント開発ミドルウェア

サンプルアプリケーション起動

①プロジェクトフォルダ作成C:¥project¥YeomanTest

②npmを使ってプロジェクトフォルダにangularをインストールnpm install -g generator-angular

③yo angular

④サーバー起動grunt serve

開発手順 サンプルアプリケーション導入

Angularをプロジェクトフォルダにインストール

npm install -g generator-angular

開発手順 サンプルアプリケーション導入

Angularをプロジェクトフォルダにインストール

yo angular

開発手順 サンプルアプリケーション導入

Angularをプロジェクトフォルダにインストール

yo angular

SPACEで* すべて選択に変更

開発手順 サンプルアプリケーション導入

Angularをプロジェクトフォルダにインストール

yo angular

その後上書きして良いか?と何回か聞いてきますが、すべてYで回答

開発手順 クライアント開発ミドルウェア

サンプルアプリケーション起動

grunt serve

開発手順 クライアント開発ミドルウェア

サンプルアプリケーション起動

開発手順 クライアント開発ミドルウェア

サンプルアプリケーション停止

Ctl cを実行

クライアント

開発手順 デモ環境説明

操作画面

IBM i(OSS協議会)

Node.JS( osssample.js )

ANGULARJS(顧客一覧)

jsonhttp

顧客照会DB2400

開発手順 サンプルアプリケーション導入

アプリケーション実行

①プロジェクトフォルダ作成C:¥project¥OSS_IBMi

②配布コンテンツを上記フォルダにセット③npm install④bower install ⑤grunt serveでWebアプリ起動

Gruntfile.jsアプリケーションに導入するパッケージを指定

開発手順 サンプルアプリケーション導入

提供アプリケーション

開発手順 サンプルアプリケーション導入

Angularをプロジェクトフォルダにインストール

npm install

開発手順 サンプルアプリケーション導入

Angularをプロジェクトフォルダにインストール

bower install

開発手順 サンプルアプリケーション導入

プロジェクトフォルダにパッケージを展開

bower_componentsnode_modules

ディレクトリが作成される

開発手順 サンプルアプリケーション導入

アプリケーション起動

grunt serve

画面開発ソース説明 ディレクトリ説明

JavaScriptファイル格納ディレクトリ。

CSSファイル格納ディレクトリ。

HTMLファイル格納ディレクトリ。

フロントのHTMLファイル。一番最初に読み込まれる。HTMLのheadタグとbodyタグ、JavaScriptやCSSの読み込みが記述されている。リリースファイル格納ディレクトリ。コマンド「grunt build」を実行すると、ミニマイズ化されたリリースファイルを格納する。Gruntのタスクが記述されている。コマンド「grunt serve」でテスト実行、「grunt build」でリリースビルド。

Bowerの依存パッケージが記述されている。コマンド「bower install」で記述されているパッケージがインストールされる。Node.jsの依存パッケージが記述されている。コマンド「npm install」で記述されているパッケージがインストールされる。

Angularの構成が記述されている。ページのルーティングについても記載されている。

画面開発ソース説明

login.js refer.js

・ログイン処理を行う(IDとパスワードの判定)

・顧客情報照会画面に遷移

・IBM iにデータ取得要求を送信

・取得したJSONデータをテーブルに展開

index.html

IBM i

login.html refer.html

ブラウザから http://xxxx をリクエスト

必要となるCSS,Javascriptなどをロード

顧客情報一覧(JSON)

HTTPリクエスト(REST)

login.scss refer.scssスマートフォン表示の微調整 スマートフォン表示の微調整

初期表示 app.js

ルーティングを行う

Index.htmlのng-viewに該当のHTMLを読み込む

画面開発ソース説明

【シーケンス図】Apps.js'use strict';.config(function ($routeProvider) {

$routeProvider

.when('/login', {templateUrl: 'views/login.html',controller: 'LoginCtrl',controllerAs: 'login'

})

.when('/refer', {templateUrl: 'views/refer.html',controller: 'ReferCtrl',controllerAs: 'refer'

}).otherwise({redirectTo: '/login'

});});

呼び出す画面とコントローラを記述

デザインを指定

画面開発ソース説明

【シーケンス図】login.html <div class="page-title">顧客情報照会</div><div class="jumbotron">

<h2>ログイン</h1><div class="input-group">

<span class="input-group-addon"><i class="fa fa-user fa-2x"></i>

</span><input type="text" class="form-control"

ng-model="username" placeholder="Username“name="username" required></div><div class="input-group">

<span class="input-group-addon"><i class="fa fa-lock fa-2x"></i></span>

<input type="password" class="form-control" ng-model="password" placeholder="Password“name="password" autocomplete="off">

</div><button class="btn btn-default btn-primar" name="signin"

ng-click="signin()">SIGN IN</button></div>

画面開発ソース説明

【開発画面】

画面開発ソース説明

【開発画面】

画面開発ソース説明

【シーケンス図】login.jsangular.module('ossibmApp').controller('LoginCtrl', ['$scope‘,'$routeParams', '$location',function ($scope, $routeParams, $location) {

$scope.signin = function(){if(angular.equals($scope.username,"admin") && angular.equals($scope.password,"admin")){

$location.path('/refer');}}; }]);

画面でボタンクリックすると呼ばれる

※scope. Signinという記述の為

画面開発ソース説明

【シーケンス図】Apps.js'use strict';.config(function ($routeProvider) {

$routeProvider

.when('/login', {templateUrl: 'views/login.html',controller: 'LoginCtrl',controllerAs: 'login'

})

.when('/refer', {templateUrl: 'views/refer.html',controller: 'ReferCtrl',controllerAs: 'refer'

}).otherwise({redirectTo: '/login'

});});

画面開発ソース説明

【シーケンス図】refer.js<'use strict';angular.module('ossibmApp').controller('ReferCtrl', [

'$scope','$http',

function ($scope, $http) {$http({method: 'GET‘,url: 'http://60.32.xxx.xxx/getdata',headers:{'Content-type': undefined},responseType: 'json'}).success(function(data, status, headers, config) {

$scope.titleArray = ["顧客名称“,"進捗状況“,"担当責任者","連絡先“, "編集"

];

$scope.rowArray = data;}).error(function(data, status, headers, config) {

alert('eror');});

}]);

AS400への接続

AS400からの結果セット

スコープ指定が無いので画面読込時にfunction が実

行されます。

画面開発ソース説明

【シーケンス図】refer.html<div class=“page-title”>顧客情報照会</div><div>

<table class="table table-striped table-bordered"><thead>

<tr>

<th ng-repeat="title in titleArray">{{title}}</th></tr>

</thead><tbody>

<tr ng-repeat="row in rowArray"><td ng-repeat="data in row track by $index">{{data}}</td>

</tr></tbody>

</table></div>

、「{{}}」を使用し、データバインディングを行っています。

AS400からの結果セット

画面開発ソース説明

【開発画面】