SlideShare a Scribd company logo
1 of 28
Download to read offline
テクてくLotus技術者夜会 in OSAKA
XPages BLAST
2015/05/22(Fri)
Tetsuji Hayashi
1
今、Notes開発者に求められていること
って何だろう?
• 大量のDBをテンプレート化する能力?
• 文書数が増えたDBのパフォーマンスを上げる魔法?
• NotesDBをXPages化する能力?
• ユーザー部門の無理難題を押さえ込む交渉力?
• ○ffice365、○ボウズに変えたいという経営層を説
得する力?
etc etc
はたしてそうだろうか?
2
Notes開発者に求められている力
ずばり
デザイン力
3
デザインとは?
1.センス 2.絵を描く能力
3.Photoshop、
Illustratorを
自在に使える力
4.神の
与えたもうた力
理系の自分には無理 orz
4
デザインとは?
1.センス 2.絵を描く能力
3.Photoshop、
Illustratorを
自在に使える力
4.神の
与えたもうた力
理系の自分には無理 orz
5
デザイン力とは?
1. 人間が心地よいと感じる基本法則を知っているこ
と
今できなくても
学べば誰でも出来ます
独りよがりの
かっこよさは
デザインではありません
2. 情報の中から、何が重要で、何が不要かを識別で
きること
3. それらを組み合わせることができること
6
参考図書
伝わるデザインの基本
高橋 佑磨 , 片山 なつ (著)
技術評論社
7
表現方法としての
技術は必要なので
ここからは
具体的なテクニック
と言っても・・・
開発環境はDomino 8.5.3FP5
Domino9.0.1でも動作確認済 8
まずは
基本テク
9
テクてく1
ビューコントロールってダサくない?
テクてく1
XPagesって最終的にHTMLになるんやろ
オリジナルのCSSを当てればええんちゃう?
10
マウスホバーに
CSSを割当て選択位置をわかりやすく
テクてく1
11
スタイルシートを作る
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
ビューコントロールに
スタイルシートのクラスを割り当てる
2. 作成したスタイルシートをリソースに読み込む
3. 読み込んだスタイルシートをXPageに追加する
4. viewStyleClass-ビュー全体と、rowClasses-列のプロパティにスタイル
を割当て
ビュー全体のクラス
マウスホバーした時のクラス
テクてく1
13
そんなテクどうやって見つけるの?
ブラウザの開発者ツールを使って
HTMLを構造解析
テクてく1
14
続いて
これでええのか?変態テク
15
テクてく2
全文検索結果はハイライトされないの?
テクてく2
16
XPagesって最終的にHTMLになるんやろ
直接タグを追加したらええんちゃう?
Notesクライアント
では検索結果がハ
イライトされる
ClientSideJavaScript
でHTMLを書き換える
テクてく2
17
Webでも検索結果
を
ハイライトしたい
ビュー用
検索ボックスとボタンを作る
1. 編集ボックスコントロールを配置し、スコープ変数に「セッションの
範囲」を指定
2. ボタンコントロールを配置し、ボタンの種類に「送信」を指定
セッションにするのは次の画面
に検索条件を渡したいため
テクてく2
18
ビュー用
検索条件にセッション変数を割り当てる
3. XPageのonLoadイベントにCSJS(ClientSideJavaScript)で、検索条
件を取得し、条件に一致した文字の前後に<mark>タグを追加
テクてく2
//全文検索の条件をセッション変数から取得
sessionScope.s_searchFormula;
19
ビュー用
ビューコントロールの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
フォーム用
検索条件を取得するフィールドを作る
テクてく2
5. 計算結果フィールドコントロールを配置し、セッション変数から検索
条件を取得する
21
フォーム用
編集モードを取得するフィールドを作る
テクてく2
6. 計算結果フィールドコントロールを配置し、
SSJS(ServerSideJavaScirpt)でモードを取得する
7. フォームは書換範囲を特定するコントロール(タグ)がないので、ソー
スページに<div>タグを追加
document1.isEditable();
22
フォーム用
追加した<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=content
sの内側を書
き換える
23
でも・・・
この方法には欠点が・・・
テクてく2
24
やむを得まい
検索キーワードを2バイトに制限しよう
<を検索するとエ
ラー
半角文字はHTMLタ
グ自体を書き換えて
しまう
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
完全体!!
テクてく2
26
半角文字はヌルに
変換
まとめ
• XPagesを使えば、Web技術はすべて取り込めます
(COOLなあのHPも、ヌルヌル動くあのモバイルUIもすべて実現できます)
• 別に○Pointや、○force、○ボウズが優れている
わけではありません
必要なのは
「楽しいと感じる心」と「想像力」
27
Let’s Enjoy XPages
ありがとうございました28

More Related Content

Similar to テクてく大阪20150522 XPagesBLAST 発表用資料

パネルディスカッション資料(公開版)
パネルディスカッション資料(公開版)パネルディスカッション資料(公開版)
パネルディスカッション資料(公開版)
odakeiji
 

Similar to テクてく大阪20150522 XPagesBLAST 発表用資料 (20)

地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント
 
パネルディスカッション資料(公開版)
パネルディスカッション資料(公開版)パネルディスカッション資料(公開版)
パネルディスカッション資料(公開版)
 
PRD01 Office 365 Overview いま365ってどうなってるの?
PRD01 Office 365 Overview いま365ってどうなってるの?PRD01 Office 365 Overview いま365ってどうなってるの?
PRD01 Office 365 Overview いま365ってどうなってるの?
 
ソフトウェア開発の現場風景
ソフトウェア開発の現場風景ソフトウェア開発の現場風景
ソフトウェア開発の現場風景
 
[db tech showcase Tokyo 2018] #dbts2018 #D1L 『"何が必要?どう実現?"~異種DB間データリアルタイム連携』
[db tech showcase Tokyo 2018] #dbts2018 #D1L 『"何が必要?どう実現?"~異種DB間データリアルタイム連携』[db tech showcase Tokyo 2018] #dbts2018 #D1L 『"何が必要?どう実現?"~異種DB間データリアルタイム連携』
[db tech showcase Tokyo 2018] #dbts2018 #D1L 『"何が必要?どう実現?"~異種DB間データリアルタイム連携』
 
【de:code 2020】 リモートだから出来ない→「出来る」に Surface が実現する新しい働き方とは
【de:code 2020】 リモートだから出来ない→「出来る」に Surface が実現する新しい働き方とは【de:code 2020】 リモートだから出来ない→「出来る」に Surface が実現する新しい働き方とは
【de:code 2020】 リモートだから出来ない→「出来る」に Surface が実現する新しい働き方とは
 
本の紹介
本の紹介本の紹介
本の紹介
 
Uno Platform か Blazor
Uno Platform か BlazorUno Platform か Blazor
Uno Platform か Blazor
 
非エンジニアのSQL活用が加速させる事業成長
非エンジニアのSQL活用が加速させる事業成長非エンジニアのSQL活用が加速させる事業成長
非エンジニアのSQL活用が加速させる事業成長
 
Hacker's meetup boost_vol1発表資料_20150902
Hacker's meetup boost_vol1発表資料_20150902Hacker's meetup boost_vol1発表資料_20150902
Hacker's meetup boost_vol1発表資料_20150902
 
開発者は仕事でリーダブルなコードを書けるのか?
開発者は仕事でリーダブルなコードを書けるのか?開発者は仕事でリーダブルなコードを書けるのか?
開発者は仕事でリーダブルなコードを書けるのか?
 
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
 
LightSwitchでマルチデータソース
LightSwitchでマルチデータソースLightSwitchでマルチデータソース
LightSwitchでマルチデータソース
 
ドキュメントライブラリを便利にするかも?しれないテクニック
ドキュメントライブラリを便利にするかも?しれないテクニックドキュメントライブラリを便利にするかも?しれないテクニック
ドキュメントライブラリを便利にするかも?しれないテクニック
 
議論を描く技術「ファシリテーショングラフィック」
議論を描く技術「ファシリテーショングラフィック」議論を描く技術「ファシリテーショングラフィック」
議論を描く技術「ファシリテーショングラフィック」
 
【de:code 2020】 AI りんなの成長記録 2015~2020
【de:code 2020】 AI りんなの成長記録 2015~2020【de:code 2020】 AI りんなの成長記録 2015~2020
【de:code 2020】 AI りんなの成長記録 2015~2020
 
Adminとうまく共存するためのApex開発Tips
Adminとうまく共存するためのApex開発TipsAdminとうまく共存するためのApex開発Tips
Adminとうまく共存するためのApex開発Tips
 
うちの開発におけるXD利用法
うちの開発におけるXD利用法うちの開発におけるXD利用法
うちの開発におけるXD利用法
 
プロ用CMSフレームワークテーマ「echo」のご紹介
プロ用CMSフレームワークテーマ「echo」のご紹介プロ用CMSフレームワークテーマ「echo」のご紹介
プロ用CMSフレームワークテーマ「echo」のご紹介
 
Bot Service 概要
Bot Service 概要Bot Service 概要
Bot Service 概要
 

More from Tetsuji Hayashi (6)

20170217 coolで使いやすいnotesアプリデザイン講座(公開用)
20170217 coolで使いやすいnotesアプリデザイン講座(公開用)20170217 coolで使いやすいnotesアプリデザイン講座(公開用)
20170217 coolで使いやすいnotesアプリデザイン講座(公開用)
 
20151106ノーツコンソ大阪notesアプリのデザインをcoolに(公開用)
20151106ノーツコンソ大阪notesアプリのデザインをcoolに(公開用)20151106ノーツコンソ大阪notesアプリのデザインをcoolに(公開用)
20151106ノーツコンソ大阪notesアプリのデザインをcoolに(公開用)
 
X pages day2015_みんな大好き@式とbootstrapで作る簡単coolなxpagesアプリ(公開用)
X pages day2015_みんな大好き@式とbootstrapで作る簡単coolなxpagesアプリ(公開用)X pages day2015_みんな大好き@式とbootstrapで作る簡単coolなxpagesアプリ(公開用)
X pages day2015_みんな大好き@式とbootstrapで作る簡単coolなxpagesアプリ(公開用)
 
XPagesDay2012 3-A Titanium mobileによるモバイルアプリケーションとXPages連携
XPagesDay2012 3-A Titanium mobileによるモバイルアプリケーションとXPages連携XPagesDay2012 3-A Titanium mobileによるモバイルアプリケーションとXPages連携
XPagesDay2012 3-A Titanium mobileによるモバイルアプリケーションとXPages連携
 
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイドXPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
 
あなたにも出来る!XPages & jQueryMobileで作るスマートフォン、タブレットUX開発
あなたにも出来る!XPages & jQueryMobileで作るスマートフォン、タブレットUX開発あなたにも出来る!XPages & jQueryMobileで作るスマートフォン、タブレットUX開発
あなたにも出来る!XPages & jQueryMobileで作るスマートフォン、タブレットUX開発
 

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