SlideShare a Scribd company logo
テクてく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 発表用資料

地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント
Kentaro Matsui
 
パネルディスカッション資料(公開版)
パネルディスカッション資料(公開版)パネルディスカッション資料(公開版)
パネルディスカッション資料(公開版)odakeiji
 
PRD01 Office 365 Overview いま365ってどうなってるの?
PRD01 Office 365 Overview いま365ってどうなってるの?PRD01 Office 365 Overview いま365ってどうなってるの?
PRD01 Office 365 Overview いま365ってどうなってるの?
mokudai masayuki
 
ソフトウェア開発の現場風景
ソフトウェア開発の現場風景ソフトウェア開発の現場風景
ソフトウェア開発の現場風景
Koichi ITO
 
[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間データリアルタイム連携』
Insight Technology, Inc.
 
【de:code 2020】 リモートだから出来ない→「出来る」に Surface が実現する新しい働き方とは
【de:code 2020】 リモートだから出来ない→「出来る」に Surface が実現する新しい働き方とは【de:code 2020】 リモートだから出来ない→「出来る」に Surface が実現する新しい働き方とは
【de:code 2020】 リモートだから出来ない→「出来る」に Surface が実現する新しい働き方とは
日本マイクロソフト株式会社
 
本の紹介
本の紹介本の紹介
本の紹介
t w
 
Uno Platform か Blazor
Uno Platform か BlazorUno Platform か Blazor
Uno Platform か Blazor
Hiroyuki Mori
 
非エンジニアのSQL活用が加速させる事業成長
非エンジニアのSQL活用が加速させる事業成長非エンジニアのSQL活用が加速させる事業成長
非エンジニアのSQL活用が加速させる事業成長
Keiko Inagaki
 
Hacker's meetup boost_vol1発表資料_20150902
Hacker's meetup boost_vol1発表資料_20150902Hacker's meetup boost_vol1発表資料_20150902
Hacker's meetup boost_vol1発表資料_20150902
真一 藤川
 
開発者は仕事でリーダブルなコードを書けるのか?
開発者は仕事でリーダブルなコードを書けるのか?開発者は仕事でリーダブルなコードを書けるのか?
開発者は仕事でリーダブルなコードを書けるのか?
Kouhei Sutou
 
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
infinite_loop
 
LightSwitchでマルチデータソース
LightSwitchでマルチデータソースLightSwitchでマルチデータソース
LightSwitchでマルチデータソース
Yoshitaka Seo
 
ドキュメントライブラリを便利にするかも?しれないテクニック
ドキュメントライブラリを便利にするかも?しれないテクニックドキュメントライブラリを便利にするかも?しれないテクニック
ドキュメントライブラリを便利にするかも?しれないテクニック
Teruchika Yamada
 
議論を描く技術「ファシリテーショングラフィック」
議論を描く技術「ファシリテーショングラフィック」議論を描く技術「ファシリテーショングラフィック」
議論を描く技術「ファシリテーショングラフィック」
nishikawa_makoto7
 
【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
Takashi Hatamoto
 
うちの開発におけるXD利用法
うちの開発におけるXD利用法うちの開発におけるXD利用法
うちの開発におけるXD利用法
Kazuma Sekiguchi
 
プロ用CMSフレームワークテーマ「echo」のご紹介
プロ用CMSフレームワークテーマ「echo」のご紹介プロ用CMSフレームワークテーマ「echo」のご紹介
プロ用CMSフレームワークテーマ「echo」のご紹介
Seiko Kuchida
 
Bot Service 概要
Bot Service 概要Bot Service 概要
Bot Service 概要
Yoshitaka Seo
 

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

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

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 発表用資料