SlideShare une entreprise Scribd logo
1  sur  160
Télécharger pour lire hors ligne
XPagesDay2013

B-2
あなたにも出来る!

XPages & jQueryMobileで作る
スマートフォン、タブレットUX

ジョンソンコントロールズ株式会社
林 哲司
1.XPages開発が難しいのはなぜ?
巷にあふれるHTMLサンプル動かないのは何で?

2
Notes/Domino9使ってますか?

3
何と言っても
モバイルコントロール

4
ページ見出し
(Page Heading)
ページのヘッダーです
ボタンも配置することが出来ます

5
リスト項目
(Static Line Item)

Notes9では「角を丸くした
リスト項目」と書いてある

スマホと言えばこのリスト表示
メニューもビューもこれで作る
1行目- Labelだけ
2行目-moveToで次の画面(XPages)を指
定すると「>」が付く
3行目-rightText追加すると青文字で右に
文字列を表示
ビューを実現するにはこのリスト項目と繰
り返しコントロールを使いこなす必要があ
る
6
角を丸くしたリスト
(Rounded List)
これもよくあるスマホデザイン
単独で使う物ではなく、中にリスト項目
などを配置して使う
メニューとか画面をデザインするためによ
く使う

Static Line Item
Rounded List

7
タブバー&タブバーボタン
(Tab Bar&Tab Bar Button)
外側がタブバー
タブバーの内側にタブバーボタンを配置し
ます
タブバーボタンのアイコンは自分で用意す
る必要があります

Tab Bar Tab Bar Button

機能を切り替えるためによく使われます
(最近減ってきた気も・・・)

8
ツールバーボタン

Notes9から搭載

ページ見出し上にボタンを複数配置できま
す。
順番は決まっていて一つ目は右端、二つ目
は左端、三つ目は左端の次

三つ目のボタンを配置するとページ見出し
のLabelがずれるのはご愛敬!

9
切り替えスイッチ
(Mobile Switch)
ON、OFFスイッチです
フィールドをバインドできますが、
バインドされるのは初期値です。
選択状態をフィールドに保存するには
onStateChangedイベントで別フィール
ドに値を書き込む処理が必要です。

重要!テストに出ます!
10
以上!!

11
ちなみに編集ボックスやボタンを
そのまま配置すると
編集ボックス

ボタン

12
あとは・・・

13
ほら、Dojoのドキュメント(英語)
を読んで

14
ソースタブでガンガン書けば・・・

15
可能性は無限大!

16
って

17
そんな夜中のテレショップみたいな事
言われても・・・

18
最初の敵は

開発情報の不足
&
English

19
Next Enemy!!!

20
例えば、WebでHTMLサンプルを見つけて
やりたいこと

ソース

21
XPagesのソースタブに組み込んでみる

22
動かない

orz

前回コンパイル(プレビューなど)が成功した時の状態
が表示される

23
Why?

24
XPagesはXML(HTMLではない)なので
終端タグがないと動かない

もしくは
<input type="checkbox" name="checkbox-0" />Check me

25
HTMLとしては怪しいが動く!

26
でも
フィールドをバインドできないとね

27
おっしゃる通り!!

28
そこで意識しないといけないのは

29
コアコントロールが
どんなHTMLとして出力されるのか?

30
コアコントロールと出力されるHTML
コアコントロール

出力されるHTMLタグ

編集ボックス

<input type="text“>

リッチテキスト

<textarea rows="1" cols="1">

複数行編集ボックス

<textarea>

ボタン

<button type="button">

リストボックス

<select size="3">

コンボボックス

<select size="1">

チェックボックス

<input type="checkbox">

ラジオボタン

<input type="radio">

チェックボックス
グループ

<fieldset>
<input type="checkbox">

ラジオボタングループ

<fieldset><input
type="radio“>

リンク

<a>

ラベル

<span>

備考
CKEditorを使用

選択肢は一つだけ
〃
複数の選択肢を設定できる
前後に<td>タグが付く

〃

31
先ほどのチェックボックスを
例にすると?

32
先ほどのチェックボックスのHTML部分
に「チェックボックス」を配置

コアコントロールから「チェックボックス」をドラッグ&ドロップで配置
し、ラベルを設定し、データバインディングでフィールド
(document1.Field01)を割り当て
33
ほら出来た!!

この状態だとフィールドには”true” or “false”が保存されます
34
第二の敵は

XPagesはHTMLじゃない
攻略には試行錯誤が必要!!
※バージョンが変わると攻略パラメータも変わる

35
2. Notesでは作れなかったUIを
XPages&jQueryMobileで作ってみよう

36
国内スマホ普及率は28.2%
流通マネーは4兆円突破

国内スマホ普及率は28.2% 流通マネーは4兆円突破
2013/9/1 6:30
日経BPコンサルティングは2013年8月30日、国内のスマートフォン
(スマホ)普及率が28.2%に達したとの調査結果を発表した。今年7
月上旬から中旬にかけての調査で、約1年前の前回調査(18.0%)か
ら10ポイント増加した。また、携帯電話・スマートフォンを介して行
われる購買である「携帯・スマホ流通マネー」の規模が4兆円を突破
した。
http://www.nikkei.com/article/DGXNASFK3004E_Q3A830C100
0000/

37
ユーザーさんも普通にスマホ
使っています

38
アレみたいに出来ないの?
って言われませんか?

39
Notesのセクションみたいなものとか
➀クリックすると

②ミョーン

↑XPagesで実装されています
40
画像付きビューとか

Notesクライアントでは出来なかった!
41
Facebookっぽいパネルとか
➀クリックすると

②ミョーン

ナビゲータの代わりに使える
42
使ってみたくないですか?

43
ご安心ください!

今から解説するXPages with
jQueryMobileの基本を知れば
誰でも実装できるようになります

44
でも・・・

45
jQueryMobileって結局Dojoと
同じじゃないの?
IBMさんはDojo推進して
るし・・・

46
というあなた!

47
確かにJavaScriptのライブラリ
という意味では同じですが・・

48
jQueryMobileは

49
日本語ドキュメントが豊富です!
MSさんも
jQueryMobile派です

ライセンスは、MIT
Licenseなので無償です

50
jQueryMobile
イェェ~イ♪
\(≧∇≦)/
51
3.jQueryMobieを組み込む

52
どんな物を作る?

どんな美味しい料理でも、イメージできないと
「食べたい!」って思わないですよね!!

53
こんなの!
➀カテゴリを表示

②文書名を表示

URL引数でタップした
カテゴリを引き渡す
(categoryFillter)

③フォームを表示

URL引数で文書IDを引き渡す

54
最初に用意する物

55
動作環境
Notes/Domino8.5.3 FP4で作ってます
※8.5.3以降じゃないと使えないプロパティ-属性リスト(attrs)を使っています

Notes/Domino9でも動きます
※jQueryMobile用

JavaScript(略称:js)ライブラリファイルの読込方法が違います

スマートフォンの動作テストはAndroid4.2(SH06E)を使用しています
※スマートフォン-PCミラーリングケーブル(JUC600など)があると便利です

PC上での動作テストはGoogleChromeを使用してい
ます
※Chrome-Googleが無料公開しているブラウザ

56
事前準備
エディタの行番号を表示
Designer のプリファレンスの [一般]-[エディター]-[テキスト・エディター] 内にある「行
番号の表示」にチェックを付ける

エラーを表示
DB内の[アプリケーションプロパティ]-[XPages実行時エラーページを表示]にチェックを付
ける

IBMさん
デフォルトONで良いのでは

この2つは必須!ないとデバッグできません
57
フォーム
Notes文書
Notes9では添付画像に
サムネイルが表示される
ようになりました!

フォーム設計

58
ビュー

カテゴリを表示

文書名を表示

59
次に

60
jQueryをダウンロード
1. jquery.com/downloadからjQuery1.10.2圧縮版(jquery1.10.2.min.js)をダウンロード

jQueryMobileはjQueryを使ったモバイルUIライブラリなのでjQueryがな
いと動きません。
61
jQueryMobileをダウンロード
1. jQueryMobile.com/downloadから
jQueryMobile1.3.2(jquery.mobile-1.3.2.zip)をダウンロード

62
jsファイルをファイルリソースとして
インポート
1. jQuery(jquery-1.10.2.min.js)はそのままインポート
2. jquery.mobile-1.3.2.zipを解凍し、jquery-mobile-1.3.2.min.jsを
インポート

jsファイルをスクリプトライブラリにコピペで取り込むと、構文エラーで
保存できないので、この方法で。
63
cssファイルをスタイルシートに
インポート
1. jquery.mobile-1.3.2.zipを解凍し、jquery-mobile-1.3.2.min.cssを
インポート

64
画像ファイルをイメージリソースとして
インポート
1. jquery.mobile-1.3.2.zipを解凍し、imagesフォルダにあるgifファイ
ル1つとpngファイル4つをインポート(ファイル選択ダイアログにpng
ファイルが表示されない場合、ファイル名に「*.*」と入力し、すべ
てのファイルを表示させる)
2. インポートされたファイル名の前に「images/」というフォルダ名を
追加

65
下ごしらえ完了

66
jQueryMobile基本構文
ListView

HTMLソース
<ul data-role="listview" data-inset="true">
<li><a href="#">Acura</a></li>
<li><a href="#">Audi</a></li>
<li><a href="#">BMW</a></li>
<li><a href="#">Cadillac</a></li>
<li><a href="#">Ferrari</a></li>
</ul>

「data-XXXX」という拡張タグ
がjQueryMobileの正体!!
それぞれの拡張タグに値をセットすると勝手に
デザインしてくれる

67
Domino
8.5.3

XPagesを作成し、読み込む

1. XPagesを新規作成し、ソースタブを開く

2. <xp:view>と</xp:view>タグの間に、下記のコードを書き込む

68
Domino
9.0

XPagesを作成し、読み込む

1. XPagesを新規作成し、ソースタブを開く
2. <xp:view>と</xp:view>タグの間に、下記のコードを書き込む

Domino9 with jQueryMobileの読込問題についての詳細はこちら(英語)
XPages: Dojo 1.8.1 & jQuery Mobile 1.3.1
http://hasselba.ch/blog/?p=1216

69
Domino
9.0

XPagesを作成し、読み込む

1. DB内のアプリケーションプロパティ-XPagesタブにある「実行時最適
化JavaScriptおよびCSSリソースの使用」のチェックを外す

2. AMDを停止させるJavaScriptと起動させるJavaScriptをファイル
(amd_stop.js、amd_start.js)を作成する
【amd_stop.js】
if(define && define.amd){
// undefine define.amd while loading jquery modules so as not to use amd loader
var tempAmd = define.amd;
define.amd = undefined;
}

【amd_start.js】
if(define && tempAmd){
// restore define.amd object
define.amd = tempAmd;
delete tempAmd;
}

70
Domino
9.0

XPagesを作成し、読み込む

3. 1で作成した2つのJavaScriptファイルをファイルリソースとしてイ
ンポートする
4. XPagesを新規作成し、ソースタブを開く
5. <xp:view>と</xp:view>タグの間に、下記のコードを書き込む

Dojo道場 ~ 第11回「Dojo 最新動向 - Asynchronous Module
Definition」
http://codezine.jp/article/detail/6482

71
XPages with jQueryMobile基本のキ
1. 先ほど書き込んだ</xp:this.resources>の下に下記のコードを書き込
む
</xp:this.resources>

<!-- サイズをデバイスの幅に設定、倍率を固定-->
<meta name="viewport" content="width=device-width, initial-scale=1" />
<!-- ページ -->
<div data-role="page">
<!-- ヘッダー -->
<header data-role="header">
<h3>ヘッダー</h3>
</header>
<!-- コンテンツ -->
<article data-role="content">
</article>

<!-- フッター -->
<footer data-role="footer">
<h3>フッター</h3>
</footer>
</div>
</xp:view>

<header>
<article>
<footer>の部分は
すべて<div>でもかまいませんが、
HTML5では文書構造を定義できるよう
になったため、この書き方がオススメ!

<article>タグの間にビューやフォーム
となる部品を配置していきます
今回のサンプルではテーマカラーを青に
するため、ページ部分にテーマカラーを
設定しています
<div data-role="page" datatheme="b">

72
こうなる
<div data-role="page">
<!-- ヘッダー -->
<header data-role="header">
<h3>ヘッダー</h3>
</header>
<!-- コンテンツ -->
<article data-role="content">
</article>
<!-- フッター -->
<footer data-role="footer">
<h3>フッター</h3>
</footer>

ここまでをひな形にしておくと便利

73
4.画像付きビューを作る
(画像は添付ファイル)

74
XPages攻略 基本技
ソースタブ ドラッグ&ドロップ
XPagesの完全攻略にはソースタブにコントロールをドラッグ&ドロップで
配置し、ソースやプロパティを変更するという技が必要です

75
カテゴリビューを作る➀
1. 新規XPagesを作成(名前:xp_vw_group1.xsp)
2. データソースの追加ボタンを押し、“Dominoビュー”を選択、事前準
備で用意したビューとデータソース名を指定

3. 展開レベルに1を指定カテゴリのみ表示するため、データソースプロ
パティの「expandLevel」に“1”を指定

4. ひな形のタグ(リソース読込、jQueryMobileの基本構造)を書き込み、
フッターを削除
76
5. <header><h3>タグの内側を“ヘッダー”→”種別“に変更
カテゴリビューを作る②ソース
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:this.data>
<xp:dominoView var="view1" viewName="SysGroupVw“ expandLevel="1"></xp:dominoView>
</xp:this.data>
<!-- jQueryMobile読み込み-->
<xp:this.resources>
<xp:script src="/jquery-1.10.2.min.js" clientSide="true"></xp:script>
<xp:script src=“/jquery.mobile-1.3.2.min.js” clientSide="true"></xp:script>
<xp:styleSheet href="/jquery.mobile-1.3.2.min.css"></xp:styleSheet>
</xp:this.resources>
<!-- サイズをデバイスの幅に設定、倍率を固定-->
<meta name="viewport" content="width=device-width, initial-scale=1" />

<!-- ページ -->
<div data-role="page" data-theme="b">
<!-- ヘッダー -->
<header data-role="header">
<h3>種別</h3>
</header>
<!-- コンテンツ -->
<article data-role="content">
</article>
</div>
</xp:view>

77
カテゴリビューを作る③
6. <article></article>タグの内側に<ul data-role=“listview”>タグを
配置
<article data-role="content">
<ul data-role="listview">
</ul>
</article>

7. <ul></ul>タグの内側にコンテナコントロール-繰り返しコントロー
ルをドラッグ&ドロップで配置
<ul data-role="listview">
<xp:repeat id="repeat1" rows="30" value="#{view1}">

</xp:repeat>
</ul>

8. 繰り返しコントロール<xp:repeat>を選択し、単純データバインディ
ングでデータソースに”view1”を指定(バインド先は空白)

78
カテゴリビューを作る④
9. 繰り返しコントロールタグ<xp:repeat>を選択し、名前を削除(名前
が残っているとjquery mobileのスタイルが反映されません)

10. ページ替えをさせないため、オプションの繰り返し頻度には大きな値
を入れ(例では9999)、コレクション名を設定

11. 繰り返しコントロール<xp:repeat></xp:repeat>タグの内側に<li>
タグを追加
<xp:repeat rows="9999" value="#{view1}" var="dataRow">
<li>
</li>
</xp:repeat>

79
カテゴリビューを作る⑤
12. <li></li>タグの内側にコアコントロール-リンクをドラッグ&ド
ロップで配置し、ラベルを消す

12. リンク<xp:link> </xp:link>タグの内側にコアコントロール-計算
結果フィールドをドラッグ&ドロップで追加
<li>
<xp:link escape="true" id="link1">
<xp:text escape="true" id="computedField1"></xp:text>
</xp:link>

</li>

13. リンクコントロール<xp:link>を選択し、オプション-リンクタイプ
-URLの横にある◇をクリックし、値の計算を選択する

80
カテゴリビューを作る⑥
15. SSJS(ServerSideJavaScript)に次に表示するのビュー用XPagesを指
定し、URL引数にcategoryFillterを設定

"/xp_vw_group2.xsp?OpenXpage&categoryFilter=" + dataRow.getColumnValues().get(0)

16. 計算結果フィールド<xp:text>を選択し、値-使用するバインドデー
タに「JavaScript」を選択し、カテゴリがある場合のみ値を表示する
SSJSを書き込む

dataRow.isCategory() ? dataRow.getColumnValues().get(0) : null

81
カテゴリビューを作る⑦完成形

82
画像付きビューを作る➀
1. 先ほど作ったカテゴリ用ビューXPages(xp_vw_group1.xsp)をコ
ピーして、xp_vw_group2.xspにリネームする
2. <header><h3>タグの内側を”分類“→”品名“に変更
3. ヘッダーに戻るボタンを作るため、<header>タグの内側に“<a
href=”“ data-rel=”back“ data-icon=”arrow-l“>戻る</a>”を追加
<header data-role="header">
<a href="" data-rel="back" data-icon="arrow-l">戻る</a>
<h3>品名</h3>
</header>

4. リンクコントロール<xp:link>を選択し、オプション-リンクタイプ
-URLの横にある◇をクリックし、”値の計算”を選択
5. SSJSに次に表示するのフォーム用XPagesを指定し、URL引数に
documentIdを設定

"/xp_frm_menu.xsp?OpenXpage&documentId="+dataRow.getDocument().getUniversalID();

83
画像付きビューを作る②
6. リンクコントロール<xp:link>を選択し、オプション-にイメージを
表示にチェックを付け、イメージの横にある◇をクリックし、”値の計
算“を選択

7. SSJSに一つ目の添付ファイルパスを指定する式を設定

"/"+dataRow.getDocument().getUniversalID()+"/$File/"+@Subset(dataRow.getDocument().getItemValue("ImageFileN
ameList"),1)

84
画像付きビューを作る③
8. 計算結果フィールド<xp:text>を選択し、値で単純データバインディ
ングを選択、データソース「dataRow」、バインド先「Subject(件
名)」を指定

9. 文字を大きくするために計算結果フィールド<xp:text>を
<h3></h3>タグで囲う
<h3>
<xp:text escape="true" id="computedField1"
value="#{dataRow.Subject}">
</xp:text>
</h3>

85
画像付きビューを作る③
10. 先ほど追加した</h3>タグの後ろにコアコントロール-計算結果
フィールドを追加し、値で単純データバインディングを選択、データ
ソース「dataRow」、バインド先「Price(金額)」、表示タイプ「数
値」、表示形式「通貨」、通貨のシンボル「¥」を指定

11. 説明用のタグにするために計算結果フィールド<xp:text>を
<p></p>タグで囲う
<p>

<xp:text escape="true"
id="computedField2" value="#{dataRow.Price}">
<xp:this.converter>
<xp:convertNumber
type="currency" currencySymbol="¥">
</xp:convertNumber>
</xp:this.converter>
</xp:text>
</p>

86
画像付きビューを作る⑦完成形

87
使用上の注意

88
注意➀
複数階層のカテゴリビューをcategoryFillter=A¥Bで
実現はできないと思います
Domino8.5.3FP4でやってみましたが、データが数十件程度なら表示されますが、
それ以上にデータ件数が多くなるとカテゴリが表示されません
表示される場合と、されない場合がある←こういうの困る!
この場合、繰り返しコントロールのバインドデータにServerSideJavaScriptで
NotesViewEntryで取得したデータを配列に格納して使用する必要があると思いま
す

89
注意②
1つのビューに何千件も表示しようというのは、Cool
な実装ではありません
端末のブラウザがJavaScirptを解釈して描画を行いますので、一定のデータ件数を
超えるとスクロールがパラパラマンガのようになります
ユーザーが

本当に何を求めているのか?
この先、何をしたいのか?

再度、見つめ直してください

90
超簡単!!

5.ビューから簡単検索

91
<ul>タグにdata-filter=“true”を追加
1. 先ほど作った画像付きビューXPages(xp_vw_group2.xsp)に簡易検
索機能をつけるには<ul>タグにdata-filter=“true”属性を追加
<!-- コンテンツ -->
<article data-role="content">
<ul data-role="listview" data-filter="true">
<xp:repeat rows="9999" value="#{view1}" var="dataRow">

92
簡単検索 完成形

93
使用上の注意

94
注意
1. ビューに表示されるすべての文字列が検索対象になります
2. ブラウザの機能で検索するので、データ件数が増えすぎる
とパフォーマンスが悪くなります

95
6.フォーム画面とタッチ、タップ入力

96
フォームを作る➀
1. 新規XPagesを作成(名前:xp_fmr_menu.xsp)
2. データソースの追加ボタンを押し、“Domino文書”を選択、事前準備
で用意したフォームとデータソース名を指定、デフォルトのアクショ
ンは「文書を開く」を指定

3. ひな形のタグ(リソース読込、jQueryMobileの基本構造)を書き込む
4. <header><h3>タグの内側を“ヘッダー”→”メニュー“に変更
5. <article></article>タグの内側に<div class=“ui-bar ui-bar-b”
style=“margin:-15px;”>タグを配置(品名の枠を作る)
<article data-role="content">
<!-- 品名 -->
<div class="ui-bar ui-bar-b" style="margin:-15px;">
</div>
</article>

97
フォームを作る②
6. 5で作った<div>タグの内側に<h3 style="font-size:120%;">タグ
を配置
<div class="ui-bar ui-bar-b" style="margin:-15px;">
<h3 style="font-size:120%;">
</h3>
</div>

7. 6で作った<h3>タグの内側にコアコントロール-計算結果フィールド
をドラッグ&ドロップで配置
8. 計算結果フィールド<xp:text>を選択し、値で単純データバインディ
ングを選択、データソース「document1」、バインド先
「Subject(件名)」を指定

98
フォームを作る③
9. 5で作った</div>(終端タグ)の下にコアコントロール-イメージをド
ラッグ&ドロップで配置(画像の選択画面では“イメージプレースホル
ダーの使用”を選択)
10. イメージ<xp:image>を選択し、オプション-イメージリソースの横
にある◇をクリックし、”値の計算”を選択

11. SSJSに添付ファイル画像の一つ目のファイルパスを取得する式を記述
"/"+document1.getDocument().getUniversalID()+"/$File/"+@Subset(document1.getItemValue("ImageFileNameList"),1
);

12. イメージ<xp:image>を選択し、widthを”100パーセント”に指定

99
フォームを作る④完成形
ここまでできれば、後は自力で実装できるはず

100
jQueryMobile版
フォーム部品作成ガイド

101
普通の入力フィールド
1. <article>タグの間に、コアコント
ロール-編集ボックスをドラッグ&ド
ロップ
<!-- コンテンツ -->
<article data-role="content">
<xp:inputText id="inputText1"
value="#{document1.Field01}">
</xp:inputText>
</article>

2. 単純データバインディングでフィール
ドを割り当てる

102
ボタン(保存ボタン➀)
1. <article></article>タグの間に、コ
アコントロール-ボタンをドラッグ&
ドロップ
2. ラベルに「保存」と指定

3. イベントのonClickにサーバータブ-
シンプルアクションでアクションの追
加ボタンを押し、カテゴリ-「文書」、
アクション-「文書の保存」を指定

103
なんて簡単!
コアコントロールにプロパティを
セットしただけ!!

104
ボタン(保存ボタン②)
4. ボタンを文字の幅にするには、ソース
タブでボタンコントロール
<xp:button>を選択し、属性リスト
(すべてのプロパティ-基本-attrs)に
+ボタンで下記の属性を追加
name

data-inline

value

true

重要!XPages攻略のポイント!

105
大事なことなので2回言います
1. 属性リスト(すべてのプロ
パティ-基本-attrs)の
[+]ボタンを押す

2. 追加された属性のname
とvalueにjQueryMobile
の拡張タグを設定する

出力されるHTML
<button class="xspButtonCommand" type="button" name="view:_id1:button1"
id="view:_id1:button1" data-inline="true">

106
ボタン(キャンセルボタン)
1. 先ほど追加したボタンコントロール終
端タグ<xp:button>の後ろに同じよ
うにコアコントロール-ボタンをド
ラッグ&ドロップで配置
2. ラベルに「キャンセル」と指定
3. イベントのonClickにサーバータブ-
シンプルアクションでアクションの追
加ボタンを押し、カテゴリ-「基本」、
アクション-「ページを開く」を指定、
「開くページの名前」にビュー用の
XPagesを指定

4. 保存ボタンと同じく、属性リスト
(attrs)に「data-inline」タグを追加
し、”true“を設定

107
フリップスイッチ➀
フリップスイッチはコアコントロールの
「リストボックス」で作ります。
1. <article>タグの間に、コアコント
ロール-リストボックスをドラッグ&
ドロップ
2. 単純データバインディングでフィール
ドを割り当てる

3. プロパティの値タブで項目の追加ボタ
ンを押し、選択肢のラベルと値を設定
108
フリップスイッチ②
4. 属性リスト(attrs)に+ボタンで下記の
属性を追加
name

data-role

value

slider

こんな風にも使える

109
セレクトメニュー
セレクトメニューはコアコントロールの
「リストボックス」で作ります。
1. <article>タグの間に、コアコント
ロールのリストボックスをドラッグ&
ドロップ
2. 単純データバインディングでフィール
ドを割り当てる
3. プロパティの値タブで項目の追加ボタ
ンを押し、選択肢のラベルと値を設定
4. XPagesのテーマをオフにするためす
べてのプロパティ-スタイル-
disableThemeに”true”を設定

タップすると

110
ラジオボタン(縦並び)
ラジオボタンはコアコントロールの「ラジ
オボタン」で作ります。
※ラジオボタングループでは作れません。

1. <article>タグの間に、<fieldset
data-role=“controlgroup“>タグを追
加
<!-- コンテンツ -->
<article data-role="content">
<fieldset data-role="controlgroup">
</fieldset>

2. <fieldset>タグの間にコアコントロー
ル-ラジオボタンをドラッグ&ドロッ
プ
3. 単純データバインディングでフィール
ドを割り当てる
111
ラジオボタン(縦並び)
4. ラジオボタンタブ-ラベルプロパティ
に表示用の選択肢、ラジオグループ名
にグループ名を設定

5. データタブ-選択時の値を設定

6. ラジオボタン<xp:>の下に必要な数だ
け、ラジオボタンを配置し、2~5の操
作を繰り返す(4のラジオグループ名は
同じにする)
別フォームのフィールドに設定した内容や一度入力したキーワードを選択
肢と出す場合(@Dblookupや@DbColumnを使用)、繰り返しコントロー
ルと組み合わせる
112
ラジオボタン(横並び)
1. ラジオボタン(縦並び)と同じ方法でラ
ジオボタンを作る
2. <fieldset>タグにdatatype=“horizontal“を追加する
<!-- コンテンツ -->
<article data-role="content">
<fieldset data-role="controlgroup“ data-type="horizontal">
</fieldset>

113
スライダー➀
スライダーはコアコントロールの「編集
ボックス」で作ります。
1. <article>タグの間に、コアコント
ロールの編集ボックスをドラッグ&ド
ロップ
2. 単純データバインディングでフィール
ドを割り当てる
3. すべてのプロパティ-typeに”range”
を指定

114
スライダー②
4. 属性リスト(attrs)に+ボタンで下記の
属性を追加
name

data-highlight

value

true

name

max

value

5

name

min

value

1

name

value

value

data-highlight=false

1

data-highlight=true

115
7.カメラ連携

116
リッチテキストに画像を添付する➀
1. <article>タグの間に、コアコント
ロール-ファイルのアップロードをド
ラッグ&ドロップ
2. 単純データバインディングでフィール
ド(リッチテキスト)を割り当てる

3. 属性リスト(attrs)に下記の属性を追加
name

accrpt

value

image/*
属性リスト(attrs)のすぐ上に
acceptというプロパティがあ
りますが、ここに設定しても
タグが出力されません 117
リッチテキストに画像を添付する②
4. フォーム上に計算結果フィールドがある場合
は、プロパティ-データタブ-フォーム検証の
実行に「文書保存時」を設定

118
リッチテキストに画像を添付する③
Android2.2以降、iOS6以降で動作可能

119
8.XPages開発の良いところ

120
既存のDBに手を加えることなく
Web対応、モバイル対応可能
※ビュー(データソース用)の変更が不要な場合

Notes用設計
&
DATA

XPages設計のみ

モバイル
用DB

既存DB

DATAは空っぽ

データソースと
して参照

Notesクライアント

Webブラウザ

121
またまたぁ、Notesのことだから
参照だけでしょ!

122
いえいえ、更新もできます!

既存の設計もゴチャゴチャにならず
スマートにモバイル対応するならこれ!
123
面倒な処理が不要
• SQLインジェクション対策

• クロスサイトスクリプティング対策
(<script>alert(‘XSS’);</script>のような物)

• テーブル設計(ちゃんと考える必要はありますよ)

124
@式が超便利!
LotusScriptやJavaScriptだと、ループさ
せて、何行も書いて、エラー処理
も・・・
@式なら1行ってことも
@式は文字列操作が得意!(ループ不要)

125
@式でできることは@式でやる
できないことはスクリプト言語で
開発工数は最小化し、お客様との対話、
新しい価値を創造する部分にパワーを!

126
変化が早い時代には
容易にスクラッチ&ビルドし、
変化に対応、創造していく必要がある

余計なことを考えなくて済む

オールインワンのDominoが最適!!
※ユーザーにとっては業務要件を満たしていれば、どんなアーキテクチャーを使っ
ているかは問題ではない
127
9.UXって何?

128
もしかして
UI≒UXだと思っていませんか?

129
もしかして
ヌルヌル動くカッコイイ
ギミックだと思っていませんか?

130
UXとはUserExperienceの略ですね

131
ちなみに
Experience(経験)は
Expertise(専門知識)と同じ語源
だそうです

132
UserExperienceは
日本語では
ユーザー体験
という意味ですね

133
業務アプリでは

134
問題解決そのもの
だと思います

135
つまり
ユーザーが何をしたいのか?

136
そして
ユーザー自身ではない開発者が
それをどうとらえ、
一緒に解決していくか?
をデザインする

137
UXとは
ネット
ワーク

誠実

これじゃ
ないかな?

セキュ
リティ
ビジ
ョン
Other

UI
業務
知識

認知
工学

心理学
138
今、起きていること

139
Natural User Interfaceへの進化
PCだけでなく、ゲーム、家電など、液晶画面は表示
装置からNUIのInterfaceへ
MS-DOS、

Windows、

iOS、Android、

UNIX

MacOS

Win8

情報量

情報量

情報量

小

多

小

CUI

GUI

NUI

変化は機会であり、チャンス!!

140
タップを想定すると必然的に
情報量は少なくなる

何が重要?何のために?どんな活用シーン?
を見極める必要がある
141
何を表示すべきか?何がしたいのか?
設計はより本質的に!
※NotesクライアントっぽいUIを目指してはいけません!

142
10.まとめ

143
Point 1
コアコントロールが
どんなHTMLに変換されるのか?
を意識する

144
Point 2
jQueryMobile用拡張タグは
属性リスト(attrs)
に追加
※属性リストはNotes8.5.3以降有効

145
この2つの基本技を身につければ
他のコントロールも実装できるはずです
たぶん・・・・

146
ところで
レスポンシブデザイン
ってご存じですか?

147
最近のWebアプリの課題
同じWebアプリなのにPC用、タブレット用、スマー
トフォン用で3つもHTMLファイルやCSSファイルを
作るのはもったいないよね
それぞれにデザイン作ってたら工数も3倍かかる

コンテンツが一緒なんだったら、自動的にレイアウ
ト変えてくれると良いのに・・・

148
これを解決する1つの方法が
レスポンシブデザイン

149
簡単に実現してくれる
フレームワークには
jQueryMobile(1.3以降)や
Twitter Bootstrap
他にもいろいろあります

150
レスポンシブデザイン-サンプル
jQueryMobileのサイトより
タブレット

スマートフォン

151
こういうのも作れます
レスポンシブデザイン
タブレット横

152
こういうのも作れます
レスポンシブデザイン
タブレット縦

153
こういうのも作れます
レスポンシブデザイン
スマートフォン

154
Point 3
情報量は減らし
必要なことだけを表示
操作は最短のアクションで

155
Everything should be made as simple as
possible, but not simpler.
すべてのものはできるだけシンプルに作られるべきだ。しかし手抜きであっては
いけない。
156
ありがとうございました
m(_ _)m

ペコリ

157
jQueryMobileに関する情報
Android/iPhone/Windows Phone対応 jQuery Mobileス
マートフォンアプリ開発
岡本 隆史・梶原 直人・田中 智文 著
大型本: 368ページ
出版社: ソフトバンククリエイティブ (2012/6/20)

jQueryVaridationによる入力チェック
jqPlotによるグラフ描画
パフォーマンスチューニング
などノウハウ満載です

ドットインストール
3分動画でマスターする初心者向けプログラミング学習サイト
http://dotinstall.com/

SlideShareを”jQueryMobile”で検索すると素晴らしいスライ
ドがたくさんあります(日本語で)
http://www.slideshare.net/

158
Webデザインに関する情報
Webデザインレシピ
CSSでレイアウトするなら絶対覚えておきたい配置のルール:フロートや絶対配置、z-index とかいろい
ろ
http://webdesignrecipes.com/css-visual-formating-model/

159
Special Thanks
Atsushi Ono(IBM Japan)
AMD(Asynchronous Module Definition)に関する素晴らしい情報をいただきました

Atsushi Sato(IBM Japan)
急なメールにも関わらず小野さんへの連係、コーディネイトをしていただきました

Universal Concept Tea Corporation
SPOON GARDEN RESTAURANT
ECHELON Tea House
料理の画像と資料を作る場所、また素晴らしい紅茶と顧客サービスを提供していただきました
http://www.spoon-table.co.jp/
https://www.facebook.com/pages/SPOON-GARDEN-RESTAURANT/581995871819388
https://www.facebook.com/pages/ECHELON-Tea-House/121534168014070

160

Contenu connexe

En vedette

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

En vedette (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

あなたにも出来る!XPages & jQueryMobileで作るスマートフォン、タブレットUX開発