テクてく大阪20150522 xpagesblast 発表用資料

28
テクてくLotus技術者夜会 in OSAKA XPages BLAST 2015/05/22(Fri) Tetsuji Hayashi 1

Upload: tetsuji-hayashi

Post on 25-Jul-2015

229 views

Category:

Internet


3 download

TRANSCRIPT

Page 1: テクてく大阪20150522 XPagesBLAST 発表用資料

テクてくLotus技術者夜会 in OSAKA

XPages BLAST

2015/05/22(Fri) Tetsuji Hayashi

1

Page 2: テクてく大阪20150522 XPagesBLAST 発表用資料

今、Notes開発者に求められていること って何だろう?

• 大量のDBをテンプレート化する能力? • 文書数が増えたDBのパフォーマンスを上げる魔法? • NotesDBをXPages化する能力? • ユーザー部門の無理難題を押さえ込む交渉力? • ○ffice365、○ボウズに変えたいという経営層を説得する力?

etc etc

はたしてそうだろうか? 2

Page 3: テクてく大阪20150522 XPagesBLAST 発表用資料

Notes開発者に求められている力

ずばり

デザイン力

3

Page 4: テクてく大阪20150522 XPagesBLAST 発表用資料

デザインとは?

1.センス 2.絵を描く能力

3.Photoshop、Illustratorを

自在に使える力

4.神の 与えたもうた力

理系の自分には無理 orz

4

Page 5: テクてく大阪20150522 XPagesBLAST 発表用資料

デザインとは?

1.センス 2.絵を描く能力

3.Photoshop、Illustratorを

自在に使える力

4.神の 与えたもうた力

理系の自分には無理 orz

5

Page 6: テクてく大阪20150522 XPagesBLAST 発表用資料

デザイン力とは?

1. 人間が心地よいと感じる基本法則を知っていること

今できなくても

学べば誰でも出来ます

独りよがりの

かっこよさは デザインではありません

2. 情報の中から、何が重要で、何が不要かを識別できること

3. それらを組み合わせることができること

6

Page 7: テクてく大阪20150522 XPagesBLAST 発表用資料

参考図書

伝わるデザインの基本 高橋 佑磨 , 片山 なつ (著)

技術評論社

7

Page 8: テクてく大阪20150522 XPagesBLAST 発表用資料

表現方法としての 技術は必要なので

ここからは

具体的なテクニック

と言っても・・・

開発環境はDomino 8.5.3FP5 Domino9.0.1でも動作確認済 8

Page 9: テクてく大阪20150522 XPagesBLAST 発表用資料

まずは

基本テク

9

テクてく1

Page 10: テクてく大阪20150522 XPagesBLAST 発表用資料

ビューコントロールってダサくない?

テクてく1

XPagesって最終的にHTMLになるんやろ

オリジナルのCSSを当てればええんちゃう? 10

Page 11: テクてく大阪20150522 XPagesBLAST 発表用資料

マウスホバーに CSSを割当て選択位置をわかりやすく

テクてく1

11

Page 12: テクてく大阪20150522 XPagesBLAST 発表用資料

スタイルシートを作る

1. スタイルシート(original.css)をテキストエディタ(SublimeTextなど)で作成する

/* 全体 */

@charset "UTF-8"; /* NOTES VIEW */ .notes_view {width: 100%; background-color: #fff; font-size: 120%; } .notes_view_hover:hover {background-color: #4682B4; color: #fff; } .notes_view_hover:hover a {color: #fff; }

ビュー全体のデザイン

マウスホバーした時のデザイン

テクてく1

12

Page 13: テクてく大阪20150522 XPagesBLAST 発表用資料

ビューコントロールに スタイルシートのクラスを割り当てる

2. 作成したスタイルシートをリソースに読み込む

3. 読み込んだスタイルシートをXPageに追加する

4. viewStyleClass-ビュー全体と、rowClasses-列のプロパティにスタイルを割当て

ビュー全体のクラス

マウスホバーした時のクラス

テクてく1

13

Page 14: テクてく大阪20150522 XPagesBLAST 発表用資料

そんなテクどうやって見つけるの?

ブラウザの開発者ツールを使って

HTMLを構造解析

テクてく1

14

Page 15: テクてく大阪20150522 XPagesBLAST 発表用資料

続いて

これでええのか?変態テク

15

テクてく2

Page 16: テクてく大阪20150522 XPagesBLAST 発表用資料

全文検索結果はハイライトされないの?

テクてく2

16

XPagesって最終的にHTMLになるんやろ

直接タグを追加したらええんちゃう?

Notesクライアントでは検索結果がハイライトされる

Page 17: テクてく大阪20150522 XPagesBLAST 発表用資料

ClientSideJavaScript でHTMLを書き換える

テクてく2

17

Webでも検索結果を

ハイライトしたい

Page 18: テクてく大阪20150522 XPagesBLAST 発表用資料

ビュー用 検索ボックスとボタンを作る

1. 編集ボックスコントロールを配置し、スコープ変数に「セッションの範囲」を指定

2. ボタンコントロールを配置し、ボタンの種類に「送信」を指定

セッションにするのは次の画面に検索条件を渡したいため

テクてく2

18

Page 19: テクてく大阪20150522 XPagesBLAST 発表用資料

ビュー用 検索条件にセッション変数を割り当てる

3. XPageのonLoadイベントにCSJS(ClientSideJavaScript)で、検索条件を取得し、条件に一致した文字の前後に<mark>タグを追加

テクてく2

//全文検索の条件をセッション変数から取得

sessionScope.s_searchFormula; 19

Page 20: テクてく大阪20150522 XPagesBLAST 発表用資料

ビュー用 ビューコントロールのHTMLを書き換える 4. XPageのonLoadイベントにCSJS(ClientSideJavaScript)で、検索条

件を取得し、条件に一致した文字の前後に<mark>タグを追加

//検索条件に入力された文字列をキーにHTMLを書き換え、タグを書き込む

var key = document.getElementById(‘#{id:searchFormula}’).value; if(key!=""){ var newbody = document.getElementById(‘#{id:viewPanel1}’).innerHTML.replace(new RegExp(key, 'g'), '<mark>' + key + '</mark>'); document.getElementById(‘#{id:viewPanel1}’).innerHTML = newbody; }

テクてく2

20

Page 21: テクてく大阪20150522 XPagesBLAST 発表用資料

フォーム用 検索条件を取得するフィールドを作る

テクてく2

5. 計算結果フィールドコントロールを配置し、セッション変数から検索条件を取得する

21

Page 22: テクてく大阪20150522 XPagesBLAST 発表用資料

フォーム用 編集モードを取得するフィールドを作る

テクてく2

6. 計算結果フィールドコントロールを配置し、SSJS(ServerSideJavaScirpt)でモードを取得する

7. フォームは書換範囲を特定するコントロール(タグ)がないので、ソースページに<div>タグを追加

document1.isEditable();

22

Page 23: テクてく大阪20150522 XPagesBLAST 発表用資料

フォーム用 追加した<div>タグ内側を書き換える

テクてく2

8. XPageのonLoadイベントにCSJS(ClientSideJavaScript)で、検索条件を取得し、条件に一致した文字の前後に<mark>タグを追加

//文書が表示モードの場合のみキーワードを取得し、<mark>タグを書き込む

var docEditModeFlg = document.getElementById(‘#{id:docEditModeFlg}’).innerText; if(docEditModeFlg===‘false’){ var key = document.getElementById(‘#{id:searchFormula}’).innerText; if(key!=‘’){ var newbody = document.getElementById(‘contents’).innerHTML.replace(new RegExp(key, 'g'), '<mark>' + key + '</mark>'); document.getElementById(‘contents’).innerHTML = newbody; } }

モード判定

<div> id=contentsの内側を書き換える

23

Page 24: テクてく大阪20150522 XPagesBLAST 発表用資料

でも・・・ この方法には欠点が・・・

テクてく2

24

やむを得まい

検索キーワードを2バイトに制限しよう

<を検索するとエラー

半角文字はHTMLタグ自体を書き換えて

しまう

Page 25: テクてく大阪20150522 XPagesBLAST 発表用資料

1. 検索ボックスのonChangeイベントで1バイト文字をヌルに変換し、検索ボックスに書き戻し

1バイト文字をヌルに変換する関数追加

テクてく2

/*検索キーワードから半角文字を削除し書き込み*/

var searchKey = document.getElementById(‘#{id:searchFormula}’).value; document.getElementById(‘#{id:searchFormula}’).value = trimHankaku(searchKey); /*引数で渡された文字列から半角文字を削除し、返す*/

function trimHankaku(argStr){ argStr= argStr.replace(new RegExp('[ -~]','g'),''); return argStr; } 25

Page 26: テクてく大阪20150522 XPagesBLAST 発表用資料

完全体!!

テクてく2

26

半角文字はヌルに変換

Page 27: テクてく大阪20150522 XPagesBLAST 発表用資料

まとめ

• XPagesを使えば、Web技術はすべて取り込めます(COOLなあのHPも、ヌルヌル動くあのモバイルUIもすべて実現できます)

• 別に○Pointや、○force、○ボウズが優れているわけではありません

必要なのは

「楽しいと感じる心」と「想像力」 27

Page 28: テクてく大阪20150522 XPagesBLAST 発表用資料

Let’s Enjoy XPages

ありがとうございました 28