サッカー馬鹿なプログラマー
このサイトの掲載内容は私自身の見解です。
ここでの情報を元にメーカー等に問い合わせたりする事は避けてください。
また、サンプルコードを利用する場合は、利用者の責任の元で十分に利用者環境での動作確認や影響度などについて検討の上、ご利用ください。
このサイトに掲載されているソフトウェア、およびファイルの使用、または使用不具合等により生じたいかなる損害に関しましては作者は一切責任を負いません。
全て利用者の自己責任でお願いします。
  • 30Apr
    • Domino Admin/Designer/Client/ICAAをインストールしてみた

      こんばんは本日で、平成最後ですね皆さんどんな平成だったでしょうかそしてどんな平成最後を迎えますか筆者、平成最後のやりたかったのですが、あいにくの天気でどうも実施できそうにないです本題へ・・・今回はタイトルの通り「Domino Admin/Designer/Client/ICAAをインストールしてみた」ので簡単に紹介していきます<Domino Administrator/Designer/Client>スタンダードのフルパック(と言えばいいのか?)をインストール・セットアップしてみました。1)[次へ]をクリック2)特記事項をよく読んで「使用条件の条項に同意します」にチェックをつけて[次へ]をクリック。3)プログラムファイルとデータファイルのパスの指定を変更される方はこの画面で変更します。※Windows用だと32bitのインストーラしかないんですね・・・4)IBM Client、Domino Designer、 IBM Domino Administratorを追加にします。※何故AdminだけIBMがついたままなのかは突っ込まないでくださいw追加出来たら[次へ]をクリック。5)必要に応じてチェックをつけます。※筆者はメール/スケジュールは利用できない環境ですのでチェックを外しました。準備が整いましたら[インストール]をクリックします。6)インストールが始まりますので、しばらく待ちます。7)無事、インストールが完了しました。[完了]をクリックします。デスクトップのアイコンです。黄色くないっすねwIBM Notesのアイコンを起動してセットアップを行います。1)[次へ]をクリック。2)ユーザー名・Dominoサーバーを入力し[次へ]をクリック。3)IBM Valutが設定されているせいか、以下のプロンプトが表示されました。パスワードを入力します。逆にIDファイルを選択する画面になりましたら、IDファイルを指定します。パスワードの入力が終わりましたら[ログイン]をクリックします。4)パスワードが正しく入力されていた場合、以下の画面になります。必要に応じて設定してください。設定が終わったら[次へ]をクリックします。5)こちらも必要に応じて行ってください。6)クライアントが立ち上がりましたワークスペースに切り替えてみました。V10ですねーDomino Designerを起動してDomino Designerについてを開いてみました。確かにV10になっていますこちらはAdministratorを開いた画面。ベータ版の時は「Domino Administrator 9」となっていましたが問題なく修正されていましたDomino Admin/Designer/Clientのインストール、セットアップに関しては以上です続いてICAAのインストール、セットアップについてです。(メールはNotes以外だけど、アプリはNotes使ってますというときに必要なクライアントソフトになります。)(注意)本日時点でまだ日本語版がないので英語版になります1)CLIENT_APP_ACCESS_V2.0_WIN_EN.exeを実行します。以下の画面になりますので[次へ]をクリック。2)ライセンス情報をよく読み「使用条件の条項に同意します」にチェックをつけて[次へ]をクリックします。3)特に設定することはありません。インストールする覚悟が出来ましたら[インストール]をクリックします。4)インストールが終わるまでしばらく待ちます。5)インストールが完了したら[完了]をクリックします。アイコンを確認します。やっぱり黄色くないっすねwアイコンを起動してセットアップを行います。1)さすが英語版。。。IBM SmartCloud userにチェックが入っていますが、もしIBM SmartCloudを使用していない場合はチェックを外します。筆者の環境は使用していないのでチェックを外しました。チェックを外すと以下の画面になります。ユーザー名、Dominoサーバー名を入力して[Next]をクリックします。2)IBM Valutが設定されているせいか、以下のプロンプトが表示されました。パスワードを入力します。逆にIDファイルを選択する画面になりましたら、IDファイルを指定します。パスワードの入力が終わりましたら[Log In]をクリックします。ICAAが起動されました(おまけ)ICAAでV10の新機能使えるの?と質問をもらったので筆者の大好きなHTTPRequestを動かしてみます。ネタは、昨年のノーツコンソーシアムのクラウド研で行った以下のサンプルを使用しました。https://www.notescons.gr.jp/home.nsf/blog.xsp?action=openDocument&documentId=B06F9BDD98D59F9A4925832B001F4208翻訳したい日本語を入力し[翻訳]ボタンをクリックします。IBM Cloud上のNode-REDを経由して問題なく翻訳された結果を取り込むことが出来ましたDomino Admin/Designer/Client/ICAAをインストールしてみましたが特に今までと変わりなくインストール/セットアップが出来ました。筆者に待っている次の作業は「令和対応」でしょうかね。。。ICAAの日本語版が1日でも早く出ることを期待しつつ、今日はこの辺で・・・あでゅー

      2
      テーマ:
  • 05Apr
    • サッカー馬鹿、Domino V10を構築する

      お久しぶりです期末/期初の仕事に追われて、ブログ全然書いてませんでした2019年4月を迎え、新元号も「令和」に決定しましたその発表が気になりすぎてしまい、エイプリルフールネタを探すのをすっかり忘れてました今年のホワイトデーに突如PAサイトから消えたV10日本語版気が付いたらダウンロードできるようになっていましたhttps://www-01.ibm.com/support/docview.wss?uid=ibm10737609これで2つの問題が解消すれば(自社内での問題)、一気に導入・・・と行きたいところですが(目指せ「平成」のうちに)やはり検証して、こんなことが素晴らしいんだよというアピールをしないと導入できません(どの製品もそうだと思いますが)やはり体感して、みんなに見てもらうのがいいと思うので検証サーバーをたててDomino V10の素晴らしさを仲間と分かち合いたいと思います本日はDominoのインストール→セットアップ→起動までを書きたいと思います<Domino V10.0.1をインストール(EN)>間違いなくDomino10ですね~途中省略~(サーバー名とか)インストール開始・・・終わったいつやっても簡単ですねそして・・・<Language Packを実行し日本語化>うんうん、ちゃんとDomino V10のロゴだー[次へ]をクリック「同意します。」を選択して[次へ]インストールされているDominoを確認してくれます。[次へ]をクリック~省略(日本語にチェック入れたりとか)~あっという間にインストール開始・・・正常にインストールされました\(^o^)/<Dominoセットアップ>~細かい設定は省略~(パスワードとか)サービスを選択時の1枚、何か違和感を感じますが、最低限の設定をして[OK]ポートなどの細かい設定を行い、セットアップ開始セットアップ終わったよ\(^o^)/そして、無事にDominoが起動できましたずっと前から思うのですが、インストールも簡単で、多機能のサーバーが短時間で出来上がる・・・どの製品もそうだと思っていたのですがDominoぐらい簡単なものはなかったんですね投稿している画像を見てもらえばわかると思いますが本当に簡単です次回は、DominoAdministrator / DominoDesigner / Notesクライアントのセットアップを書きたいと思います。今日はこの辺で・・・あでゅー

      4
      テーマ:
  • 10Mar
    • IBM NotesとNode-REDを使ってLINE BOT をいじってみた

      Node-REDを使ってLINE BOT を作ってみたこんばんは最近LINEを使った集客投稿が多いと思います流行りに便乗してはじめてみる方も多いと思いますが、こんなことで困ったことありませんか・自分以外にも投稿を頼みたいが、内容は一度添削したい・決まった言葉を登録するだけと決めたものの、頼んだ相手のちょっとした気の緩みで炎上投稿になってしまう危険性・著作権等など大人の社会のルールを逸脱している内容になっていないか不安・そもそもやっていないキャンペーンを勝手にやりますとか告知されないか心配・個人アカウントと間違えて、プライベートな発信をしてしまうのではないかという恐れ他にもたくさんあると思いますそこで、思いついた案が以下になります1)店舗責任者がキャンペーン内容を上長に申請する2)上長の承認を経て、会社の法律やマーケティング等の専門家にも承認を募る3)最終承認者が承認後、初めてLINEに投稿される・・・ワークフローですねwじゃあそんな機能ってメンテナンスが簡単で準備できるかを考えたところ・・・手元にありましたwイメージ図V10使ってやろうぜと意気込んでいましたが、今回諸事情でNotes/Domino 9.0.1のブラウザ環境(XPages)で作成していきたいと思います改めてイメージ図[社内]IBM Notes/DominoでXPagesを作成する今回は検証用ということで、デザインは特にせず必要最低限な作りにしました。Node-RED側にPOSTするんですが、IBM Championの御代さまのブログやスライドが非常に参考になりましたので共有します。・POSTのやり方(ブログではGETですがほぼ同じ実装)Notes/Domino でREST APIを使ってみよう-後半-・Cross-Origin Resource Sharing(CORS)の制約についてXPagesでRESTを使ってみよう[IBM Cloud]みんな大好きNode-REDを使用しましたPOSTデータ受け取って、LINE APIでメッセージを流すだけなので作りは簡単です今回のNodeとは別ですが、フォローされた時のみCloudantに登録されるようにしてみました。※Cloudantの細かい使い方をどなたか教えてください。。。[LINE Developer]こちらは過去のブログを見ていただければわかりやすいかと・・・さて、準備が揃ったところで実験です[投稿する!]をクリックします。LINEにも通知が来て、Notesも1文書として登録できましたネットワーク等の設定など確認することはたくさんあると思いますが、Notesと絡めることで可能性が広がるのではないでしょうかまた別の案としてDACをかませるのも面白いかもしれませんね最後に、Notes/DominoやらIBM CloudやらDACをやたら紹介していますが、決してIBM社の社員ではなくごく普通の利用者ですのでお間違えなく・・・w今日はこの辺で・・・あでゅー

      テーマ:
  • 02Mar
    • 最も黄色いイベントに参加してきました!

      こんばんはー今更ですが、2019年2月22日(金)世の中はプレミアムフライデーで盛り上がる中、筆者は朝からNotes/Dominoな1日を迎えておりました午前中はノーツコンソーシアム主催の「ユーザー情報交換会」が行われました事前のアンケートを元にどのようなことを困っていたりしているかを意見交換してきました。(日本を代表する理事)どんな内容なの?!気になったら、IBM Championの萩原さまのブログをご覧ください。(他力本願w)午後は待ちに待った、「ノーツコンソーシアムFESTA」と「IBM Notes/Domino Day 2019 Spring」です(ちょーカッケーw)まず初めに、ノーツコンソーシアムFESTAから開始田中会長からノーツコンソーシアムの活動などが紹介されました。続いて、会長賞を受賞した浜松ホトニクス様のDAC(IBM Domino Application on Cloud)の導入事例発表の紹介。IBM Think2019、楽しそうでしたーwそしてここから、各研究会の発表です「ザ・ノーツ研究会」9.0.1FP10の検証結果、V10Bataの検証からV10リリースまでの機能検証の発表をしました。途中まで残り時間が表示されておらず、スライドの残り枚数を気にしながら話すことを決めておりました続いて、「XPages研究会」研究会を通して各人が投稿したスニペットを紹介してくださいました。どんなことを投稿したのか詳しくはコチラをご参照ください3番手は、「クラウド研究会」クラウドということもあり、どちらかというと今年は開発が多かった1年でしたが特にDomino V10で実現できた「Azure AD と IBM Notes/Domino との連携」は予想をはるかに超える感動的な一瞬だったのは今でも覚えています最後に、「元気研」普段の働く環境からみたNotes/Dominoの見え方を力説していただけました。ということで、4研究会が活動報告および今年度の予定をお話させていただきました。来期は参加してみたい/ちょっと面白そうだから研究してみたいと思ったあなたコチラからエントリーしてください人気の研究会はすぐに定員オーバーになってしまいますよさあ、メインイベントの「IBM Notes/Domino Day 2019 Spring」の始まりです会場が暗くなり突如現れたのは・・・美女(びじょ)この世にこんなかわいい人がいるんだと、スッカリ見とれてしまいました「美女 ヴァイオリン」ですぐに見つかりましたwAyasa さん、ロックバイオリニストだそうです。見た目に負けないパフォーマンスでした演奏後、中島事業部長の挨拶に始まり・・・HCLテクノロジーズのご紹介Notes/Domino V11 ロードマップ – Think 2019フィードバックNotes/Domino V10最新情報クラウド&モバイル活用アップデートと続いていきました。全セッションから得られた情報として・ADFS連携強化・テンプレート拡張・軽量版Notesクライアント・iPad 版に加え Android版 と Chrome OS 版の Domino Mobile Appsリリース(?)・AppStoreも検討中・UIの改善・ローコード開発上記の中には、日本から強い要望があったものがV11に搭載されようとしています採用されたら嬉しいですよねIBM Championの中野さまもブログに書いてくださっていますので参考にしてみてくださいクロージングとして・・・Ayasaさんがまた演奏をしてくださいました演奏に合わせ、とても印象的なスライドショーが映されNotes/Dominoここにあり!という強いメッセージを感じました本当にカッコよかった・・・今もその動画を聞きながらブログを書いてます大感謝祭では、多くのノーツ関係者で大賑わいの中、IBM Champions 紹介、ノーツコンソーシアムから感謝状授与式、ゲーム大会、色々な方からお声掛けいただいたりと、久々にはしゃいだ夜になりました大きなケーキこれ持って写真撮ったりしましたー今年もIBM Championとして全力でNotes/Dominoを応援します次は「HCL〇〇」になれるように頑張っていきますので、よろしくお願いいたしますまとまらなくてごめんなさいでは、今日はこの辺で・・・あでゅー

      1
      テーマ:
  • 24Jan
    • Dominoサーバー、引っ越すってよ!!-続編

      Dominoサーバー、引っ越すってよ!!こんばんは前回に引き続き、Dominoサーバーの引っ越しネタを覚書として書いておきます。※正しいやり方、公認のやり方ではありませんので、こんなことしたんだー程度で読んでいただければと思います。移行予定日に移行できなかったDominoサーバーですが、残念ながら立ち退きのタイムリミットは待ってくれません。じゃあ、どうするか?そんなわけで切り戻し作業後、帰りの電車の中でこのような作戦を考えました。思いついた内容を図にするとこんな感じです。<今回やる事>1)V10側に作成されたODS52のDBはそのまま利用できる→逆にODS53になってしまったものはDomino9.0.1からレプリカで上書きできないので再作成する(OS上から削除しておくなど)2)64GB越えしたDBは記念にファイルサーバーにとっておくか削除しておく→記念になるかと思いましたが、カット&コピーに時間がかかるため断念3)上記終了したらDominoV10からDomino9.0.1にダウングレードする→現行DominoとバージョンもFPも合わせておく(どうせなら)4)どちらのサーバーにもDAOSの設定を行う→スゲー簡単w5)notes.iniに「CREATE_R9_Databases=1」と「DAOS_ENCRYPT_NLO=0」を設定→ODSは52になるようにしておき、DAOS作成時にserver.idで暗号化されてしまうので暗号化を無効化しておく。これは移行先のDomino側にだけ設定しました。6)試しに64GB越えDBのレプリカを作ってみる→64GBまでは最低限何とかなる(はず)7)差分のレプリカ作成→元々作ってあるエージェントで大半を作成。前回ODS52で移行されているものはそのまま使用できるのでほとんど移行済みだった。8)サーバーID切り替え→お引越しなので切り替えないとですよねー作業前の疑問点・現行サーバーも新サーバーもDAOS化しておけばうまくいくのか?いつもお世話になっているチャンピオンとリーダーに質問してみました。資料ではDAOS化されると記述がありました。ただ、誰も「64GB」を超えたDBのDAOSレプリカは作ったことがないとのことでした・・・(でしょうねw)予想を聞いてみると「レプリカの作成が終わり、DAOSmgrのタイミングでDAOS化されているようなので、64GBのDBの時の動きは全く見たことがないし回答できない」とのこと。(それしか言えないですよねw)いざとなったら、64GBのDB、compact -c daos-onしてやる気持ちでしたこんなに愛したNotes/Dominoが裏切るわけない(最悪失敗したら、OSコピーで泣きつこう)ということで、タイムリミット残り5日でこの作戦に踏み切りました移行前日の夜、70GBほどあるDBでお試しレプリカ作成をやってみました64GBを超えているDBは3DBだけだったので、手動にて(クライアント上)から複製→レプリカの作成を行いました。さて・・・出来るかな??Data直下を見てみると、384KBから全然進まないやっぱダメなのかな・・・でも、レプリケーターのゲージは進んでいたんですもしや?!と思い、DAOSフォルダを見てみると・・・・ふ、増えてるそうなんです期待を(いい意味で)裏切って、レプリカでDBを作成しながらDAOS機能も動いてるんです(あまりの感動で、動画取るの忘れちゃったw)ということで、そのまま数時間放置しレプリカが無事完了恐る恐るDBにアクセスしてみました何も問題ないすげー・・・すげーよ、DAOSということで、移行当日の開始時間まで64GB越えのDBを手動でレプリカ作成し、移行日の当日は文書数やアクセス権、不要なDBの洗い出しなどを行い、夜明けとともにサーバーPCのホスト名、IPアドレスを入れ替え、server.idなどの必要なファイルも入れ替えていざ起動・・・う、動いたそれから動作確認等を行い一部トラブルもありましたが1日止めることなく引っ越しが完了しました今も元気にDominoは稼働しています今回勉強になった事・時間があるならOSコピーの方が手堅い・レプリカでDominoを入れ替えると時間が有効に使える・DAOSも問題なく移行できた・アクセス権はちゃんと確認しておいた方がいい・一時トラブルに巻き込まれた1週間があった(これはまた後日)ということで、V10に移行することはできませんでしたが9.0.1でDAOSされているDB(64GB)を移行することが比較的簡単に出来ました次こそはV10にバージョンアップするぞ今日はこの辺で・・・あでゅー

      3
      テーマ:
  • 17Jan
    • Dominoサーバー、引っ越すってよ!!

      今更ですが・・・あけましておめでとうございます本年も気ままに更新したいと思いますのでよろしくお願いいたしますさて、早速ですが・・・以前、テクてくLotus技術者夜会で「Dominoサーバー、引っ越すってよ!!」こんなテーマでLTさせていただきました結果知りたいよねということで、大まかな流れとともに覚書として書いていきたいと思います1.プライベートクラウドの保守(?)が切れるらしいよくわからないですが、こんな内容でした。期日は2019年1月下旬ごろまでに引き渡しをしなければならないとの事。移行できるチャンスは1月の3連休の中日の日曜日と、その週の土曜の夜から日曜の夕方までとかなり限られた時間の中のお引越しでした。2.お引越し条件が厳しいDominoは1台運用なので1日以上停止すると業務的に問題が出てしまいます。移行するDBは4000DB近く、容量で500GB前後・・・以前のお引越しの時は、半分くらいだったので半日程度の停止でOSコピーで対応できていました。データはもちろん同期していなければダメです。11月の終わりに新サーバーの環境をもらい、1月下旬で引き渡し・・・無理ぽそこで思いついたのが、追加サーバーを立ててレプリカで作成すれば同期できるしServer.id差し替えれば簡単じゃねということです。(レプリカって確かDBID一緒だったはず)・新サーバーの構築依頼・現Dominoから追加サーバーを作成→server.idを新Dominoへ・新Dominoインストール、セットアップ(Directory構成同じにする)・新Dominoに移行ツールDBをスケジュールエージェントで実行・時折、Pullコマンドを発行しながら様子をみる・引っ越し当日、Server.idを入れ替えて引っ越し終了!これが結果レプリカがどんどん作られていき・・・順調に移行準備が進んでいました4.一番の強敵、64GB越えのDBそうです、これが一番の問題でした。実サイズ140GBが1DB、70GBが2DBと64GBを超えたDBが3つもありました。LZ1形式の圧縮とDAOSに助けられていたのです・・・むやみやたらとDAOSチェックが付いていたので、これを改めるために移行先DominoではDAOSの設定をやめました→必要なものだけに絞り込もうという考えでした。当たり前ですが・・・限界だバカヤロー!!って怒られちゃいました<対策案を考える>・DBを分けてしまおうということで、運よくこのDBは年度を持っていたので、年度別に分けてから考えようと思いました。4DBに割れてしまって、改修がとても困難になる事と、改修に時間がかかることでやはり断念。。。それで今回打ち出した裏技が「V10、英語版しかないけど・・・いっとく?」だったわけです。5.壁越えを実施まず、V10.0.1をインストール/セットアップ64GBの壁は無事に超えられたのか・・・?よっしゃー無事に3DBとも64GBの壁を越えたので、テスト環境にて動作確認をしていました。今のところ、問題ない!!表示も問題ない6.入れ替え日当日最後のPullコマンドも終わり、server.idを入れ替えていざ起動!!基本的な動作確認は終わったから細かい動きの検証をすれば終わりだー!そう思っていた時でした。・POIのライブラリがエラー表示していて開かない?→これはJVMの問題っぽいです・権限おかしくない?→DJXで日本語で設定している読者フィールド値が完全に無効?→DBの動き的には変な挙動はなかった・ポータルの一部分がちゃんと表示されない?→なんで??・自前で作成したBootstrap組み込みXPagesのレイアウトが大変なことに→これ、テーマとかだろうな・・・時間の許す限り、バグやエラーを出してもらいました。そして、筆者は皆さんにこう言いました。「切り戻しします」誰か筆者を慰めてくださいっということで、全作業を含んだ作業時間12時間でV10にする時の課題をたくさん得られた1日になったのは収穫ですが、アディショナルタイムに逆転ゴールを決められて負けたサッカーの試合後の気持ちになったのは言うまでもありませんでした。作業の帰り、やっぱり悔しくてどうにか簡単に引っ越し出来ないか考えてみました。V10を使わないで移行する方法・・・あっ次なる案を思いついたのですが、それはまた次回に紹介したいと思います。P.S上司に今回の作業報告したら筆者にやさしく「DBの移行は成功したんだから失敗じゃないよ」とやさしくフォローしていただきました。今回はV10にしないけど、決してあきらめたわけではありません今日はこの辺で・・・あでゅー

      1
      テーマ:
  • 08Dec
    • Web Speech APIをXPagesに組み込んでみた

      こんばんは12月になりました気温の変化が最近多いですが、皆様体調にお変わりないでしょうかさて、今回は以前に筆者がある探し物をしていた時に見つけたのですが・・・Web Speech API となるものをたまたま見つけたんです何ができるのかなhttps://developer.mozilla.org/ja/docs/Web/API/Web_Speech_APIなんと、Speech To Textが簡単にJavascriptで実装できるとのこと現在、Google Chromeだけ対応のようです(FireFoxもいけそうなんだけど)と言っても、Notesには関係ないので簡単ですが実装してみたので紹介しますまずはこのアプリのトップページ特に何の変哲もないXPageです早速「新規作成」ボタンをクリックしていきます。まぁ、こちらも何の変哲もないXPageなわけで・・・せっかくなんで「開始ボタン」クリックしておきましょうマイクにニュース動画を聞かせると・・・すごくねーーー??「保存する」ボタンをクリックするとトップページに戻ります。Notesクライアントにもちゃんと・・・保存されてますどうせコピペしたんでしょと思いますよねということで、手をプルプルさせながら動画撮りました(音も出てるのかな出てなかったらごめんなさい)若干怪しいのはありますが、なかなかの精度ではないでしょうかこのくらいの性能であれば、議事録の作成補助やヘルプデスクの応対確認など様々な業務が簡素化出来そうですね(事例紹介向けのネタでしたね)注意点がいくつかあります・Google Chromeなので、httpsもしくはlocalhostでしかマイクが許可されませんので確認を。・スマホ等はGoogle Chromeアプリから利用できるそうです(マイク入力できるから恩恵はない)では、今日はこの辺で・・・あでゅー

      2
      テーマ:
  • 27Nov
    • IBM Notes V10 新機能「NotesHTTPRequest」を実装するまで-5

      IBM Notes V10 新機能「NotesHTTPRequest」を実装するまで-1IBM Notes V10 新機能「NotesHTTPRequest」を実装するまで-2IBM Notes V10 新機能「NotesHTTPRequest」を実装するまで-3IBM Notes V10 新機能「NotesHTTPRequest」を実装するまで-4こんばんは何とビックリ、HTTPRequestで5つ目のブログ内容です本日ノーツコンソーシアムのXPages研究会があったのですが、Notes/Domino V10新機能とXPagesを使った開発ネタを考える時間がありましてそこで筆者が作成したネタを紹介できればと思います今までのブログでは、ボタンをクリックしたりなどとユーザーのトリガーでHTTPRequestを実行していましたが、以下の2点をまだ検証していませんでした。・スケジュールエージェントでHTTPRequestは動くのか?・SSJSで実行できるのか?こんなコンテンツが作れないか考えてみました。毎日1回東京の天気予報を取得し、XPagesで作成されたポータル(もしくはコンテンツ)に表示させるざっくりとですが検証結果とともに紹介したいと思います以下、(手抜きですが)天気予報を取得するコンテンツページだと思ってくださいXPagesで作成しています。テーブルは繰り返しコントロールを使っています。1)スケジュールエージェントを作成するエージェントの内容は過去のブログを参考にしていただければと思います。今回はテスト環境に作成したので、イメージのようなスケジュールになっています。2)スケジュールエージェント実行後、XPageを開いてみる東京の天気予報が取得できていますスケジュールエージェントでもHTTPRequestが動くことを確認できました3)SSJSからエージェントをキックしてみる検証用に「千葉の天気予報を取得」ボタンを作成しました。クリックしてみます。こちらも無事に千葉の天気予報が取得できました。HTTPRequestが使えると、本当に便利に開発が出来ますね実際のJSON※今回使用させていただいたのは、Weather Hacks のAPIですが、商用ではないので気を付けてください。http://weather.livedoor.com/weather_hacks/webserviceP.Sデータが日本語なのに、今回はNode-REDを中継しなくても無事に日本語が取得できている・・・何故今日はこの辺で・・・あでゅー

      テーマ:
  • 10Nov
    • IBM Notes V10 新機能「NotesHTTPRequest」を実装するまで-4

      IBM Notes V10 新機能「NotesHTTPRequest」を実装するまで-1IBM Notes V10 新機能「NotesHTTPRequest」を実装するまで-2IBM Notes V10 新機能「NotesHTTPRequest」を実装するまで-3こんばんは本日は、テクてくLotus技術者夜会が開催され、テーマが「IBM Domino App Dev Pack および IBM Notes/Domino V10 最新情報」でしたNotesHTTPRequestのことも触れられていたので何かいいネタないかな??と胸をワクワクさせて参加しましたLotus ScriptからWatson Workspaceにメッセージ投稿のデモ、とっても面白かったので、是非実装してみたいですねーさて、今回もみんな大好きNotesHTTPRequestの話題なのですが、筆者も3回このネタで書いておりますいい加減、世の中のAPIを使った検証をしないと!と思い楽しそうなAPIを探してみましたそしたらあったんですRakuten DevelopersAPI一覧の中に「楽天レシピAPI一覧」というものがあったので、これを使って人気Top3を取得してみようと思いますまずは完成系Rakutenレシピから取得ボタンをクリックすると・レシピタイトル・レシピURL・所要時間上記3つを取得するように作ってみました他にも食材とかいろいろありますが、何がとれるかはAPIの使い方を参考にしてくださいRakuten Developersには使い方もテストフォームも準備されていますちなみに、RakutenAPIを使用するにはDeveloper登録が必要になります。登録するとアプリIDが発行されてAPIが利用できるようになります。ログインした状態でテストフォームに移動すると、アプリIDが自動的にセットされます。GET/POSTボタンをクリックすると、以下のようにJSONで結果が返ってきます。筆者は、まず簡単に値がとれるかを確認したいので、パラメータを追加してレシピタイトルのみ取得してみようと思いましたURLはコピペでとれるので良しとして・・・Notes側はフォーム上のボタンに前回使用したLotus Scriptを記述しましょうか※URLはテストフォームにあるURLの値を利用します~省略~ URL = "<<Rakuten APIに記載のあったURL>>" Set webRequest = session.CreateHTTPRequest returnVal = webRequest.Get(URL$) Set jsonNav = session.CreateJSONNavigator(returnVal)~省略~さあ、レッツ値ゲット何かエラーでた・・・読めんwなんとなくですが・・・日本語をエンコードせいやって言ってませんいやいやいやいやいやいやいやいやいやいやいやいやいやいやいやいや・・・XPagesで作ったJSONの時、何も言ってなかったよね試しに「RecipeURL」に変えたら取得できるし、所要時間を取得するようにしたら、やっぱりこのエラー・・・RakutenAPI側だから何もできないし・・・あ!Node-REDでJSON生成すればいいんだwということで、またNode-RED先輩に力を借りたいと思います。上記赤枠で、RakutenAPIを呼び出しています。上記青枠で、日本語をURI Encodeでエンコード化してます。結果がこちらめっちゃええ感じでは、Lotus Scriptの方も書き換えます。URLの値をRakutenAPIにしていたものからNode-REDのURLに変更。更に、フィールドにセットする前にデコード化してます。。。そして無事このように値がとれるようになったとさ・・・ヨカッタヨカッタNode-RED、チョー便利www次回(こそ)はLotus ScriptのみでWatson Workspaceにメッセージを投稿するDemoを作成したいと思いますw今日はこの辺で・・・あでゅー

      1
      テーマ:
  • 20Oct
    • IBM Notes V10 新機能「NotesHTTPRequest」を実装するまで-3

      IBM Notes V10 新機能「NotesHTTPRequest」を実装するまで-1IBM Notes V10 新機能「NotesHTTPRequest」を実装するまで-2こんばんはサッカー日本代表vsウルグアイ戦を観戦してきてサッカーやりたくてうずうずしていますそんなこともありWorkspaceもこんな感じになってしまいました話を戻しまして・・・とうとう出ましたね、Notes/Domino V10何がそんなに待ち遠しかったかというと・・・NotesHTTPRequestクラスこの機能でどこまで社内の連携が変わるのかと思うとワクワクが止まりませんBeta版と若干変わっているようですがいち早くIBM Championの御代氏がブログでわかりやすくまとめてくださっていますhttp://guylocke.blogspot.com/2018/10/ibm-notesdomino-v102.html実際、どのように使用すれば良いのかたまたま、先日のノーツコンソーシアムのクラウド研究会でNotesHTTPRequestクラスの使い方を教えてもらったので共有したいと思いますヘルプに使い方が載ってないなんて・・・いけずですな前回作成したXPagesのJSONを使って紹介していきます。まずは前回のおさらい Dim session As New NotesSession Dim http As NotesHTTPRequest url = "<取得したいURL>" Set http = session.CreateHTTPRequest() response = http.Get( url ) Msgbox responseこれで以下のように取得できていました実際欲しいのは、Field_5の値だったりするわけです。値をぶん回して取得するそんなことやってられませんよねそこで使用するクラスがNotesJSONNavigatorNotesJSONElementNotesJSONObjectになります使い方は不明なのですが・・・とか実はちゃんと組み込まれていることがわかりましたでは、実際の実装例です1)フォームを作成し、ダイアログボックスとボタンを作成します。ダイアログボックスの選択はイメージの通りです。2)ボタンにLotusScriptを記述します。やりたいことは、ダイアログボックスで選択した値を取得するです。記述例: Dim uiws As New NotesUIWorkspace Dim uidoc As NotesUIDocument Dim doc As NotesDocument Dim session As New NotesSession Dim webRequest As NotesHTTPRequest Dim URL As String Dim returnVal As Variant Dim jsonNav As NotesJSONNavigator Dim jsonElement As NotesJSONElement Dim jsonObj As NotesJSONObject Dim jsonArrElem As NotesJSONElement Set uidoc = uiws.CurrentDocument Set doc = uidoc.Document URL = "<<作成したXPagesのJSONのURL>>" Set webRequest = session.CreateHTTPRequest returnVal = webRequest.Get(URL$) Set jsonNav = session.CreateJSONNavigator(returnVal) Set jsonElement = jsonNav.GetFirstElement Set jsonObj = jsonElement.Value Set jsonArrElem = jsonObj.GetElementByName(doc.label(0)) Msgbox jsonArrElem.Valueポイントを抜粋(為になるかは別)前回、22行目までで終了していましたが24行目でsession.CreateJSONNavigatorの引数として取得したJSONをセットします。25行目のNotesJSONElementには、以下の画像の赤枠部分が入ります(多分)。既にお気づきの方もいると思いますが、GetLast・・・にすれば一番下のエレメントをNotesJSONElementにセットできます。デバッグで値を確認すると・・・よくわかりませんね26行目、NotesJSONObjectには以下の部分がセットされています(多分)。デバッグで値を確認すると・・・これまたよくわからないです28行目、再度別で宣言したNotesJSONElementにNotesJSONElementで指定した値を取ってくるように(今回はラベル名)をセットします。デバッグで値を確認すると・・・おおー!取れてるww(ValueはやっぱりVariant)動作確認ダイアログからラベルを選択し、記述したスクリプトがあるボタンをクリックすると・・・見事に欲しい値が取得できました応用編として以下のような記述を追加するとLoop処理もできます。  Do Until jsonElement Is Nothing Set jsonObj = jsonElement.Value Set jsonArrElem = jsonObj.GetElementByName(doc.label(0)) Msgbox jsonArrElem.Value Set jsonElement = jsonNav.GetNextElement Loop以上、簡単なデモでしたがNotesHTTPRequestの使い方わかりましたでしょうか注意点としては「ヘルプに記載がなかった(?)」ので正しい使用方法なのかは不明ですので自己責任でやってみてください。また、こちらのノーツコンソーシアムのブログにもWatsonと連携する方法が掲載されるはずですので合わせて参考にしてみてくださいhttps://www.notescons.gr.jp/home.nsf/blogs.xsp次回は、筆者もWatsonと連携するクライアントDBを作成して紹介できればと思いますでは、今日はこの辺で・・・あでゅー

      1
      テーマ:
  • 19Oct
    • IBM Domino V10 -ICAAをインストールしたよ!

      こんばんは10月も折り返し地点に入ってしまいましたね今回はIBM Client Application Access(以下ICAA)をインストールしました筆者の会社では、ICAAでNotesを利用していますインストールは特に難しくないので割愛・・・起動おっ、Notesクライアントとなんか違いますね何気に2.0にバージョンアップしています何が違うのか見ていきましょう【HOME】特に見違えるような箇所は思い当たりませんでした【Workspace】な、なんとICAAでも背景画像が変更できるようです何気に嬉しいかも筆者はこんな画像をチョイスしてみましたそして、メールDBにアクセスしたら怒られました当然なんですがねせっかくなのでDBを1つ開いてみます安定のディスカッションDBですが、皆さん若干変わっているのに気付いたでしょうかそうです、ICAAでもアクションボタンが角丸になっていますどうせ新機能はNotesクライアントだけでしょと思っていましたがICAAも手厚くリニューアルされていましたNotes/Domino V10、違いを探すだけでもワクワクしますね1つ残念なことは・・・ICAAもアイコンは青かった次のリリースで黄色くなることを期待していますでは、今日はこの辺で・・・あでゅー

      テーマ:
  • 15Oct
    • IBM Notes/Domino Day 2018 Autumn Tokyoに参加しました

      こんばんはイベント参加ネタです10月10日(水)に、待ちに待った「Notes/Domino V10」の発表がありましたhttps://www.ibm.com/software/jp/cmp/domino-notes.htmlそんな重要なイベントで、僭越ながら1ユーザー企業の代表として、パネルディスカッションに参加させていただきました会場準備の様子500人近くの方々にお越しいただいたとお聞きしました誠にありがとうございますまずはド派手なパフォーマンスから始まり・・・IBM様から今日までのV10に関する活動や今後のお話も・・・そして約1時間ほどの「Notes/Domino V10 ユーザー座談会」で奮闘し・・・(どうやらいつもより大人らしく人前に立つと緊張しているように見られるようでw)基調講演を無事に終えることが出来ました皆様は休憩時間に「Domino Application on iPad」を触れましたかここまでスムーズに動くなら早く手元で使ってみたいですね後半戦には分科会が2ブロックに分かれて開催され、筆者は「Bトラック」のほうに参加しましたBトラック1コマ目はノーツコンソーシアム ザ・ノーツ研究会による「V10ベータ 評価報告会」Bトラック2コマ目はIBM Championによる「開発者が語る 最新Dominoアプリケーション事例」どちらも見ごたえのある分科会でしたイベント終了後は、有志による「Domino v10パーティー」が開催され、Notes好きが集った黄色いパーティーに(IBM Championの国際交流もありました)筆者の感想・・・とても貴重な、そして楽しい1日を過ごさせていただきました残念ながらイベントに行けなかったという方【10月16日大阪、10月19日名古屋】IBM Notes/Domino Day 2018 Autumnがまだありますhttps://www.ibm.com/blogs/solutions/jp-ja/ndday18on/また、今週末に行われるテクてく Lotus 技術者夜会でも簡単ではありますがフィードバックをさせていただきますhttps://www.ibm.com/developerworks/jp/offers/events/techtech/「V10ベータ 評価報告会」が気になった方は、こちらのイベントもお勧めしますノーツコンソーシアム オープンセミナー 2018https://www.notescons.gr.jp/home.nsf/content.xsp?documentId=BF52C6FA52DFA87449258315003868FC検索すると、Notes/Domino V10関連のブログもちらほら出てきてますよねー黄色い旋風、今後もワクワクさせてくれそうです今回は、開発ネタではありませんでしたが、次回はV10関連の記事を書きたいと思いますでは、今日はこの辺で・・・あでゅー

      テーマ:
  • 18Sep
    • IBM Notes V10 新機能「NotesHTTPRequest」を実装するまで-2

      IBM Notes V10 新機能「NotesHTTPRequest」を実装するまで-1こんばんは前回、 「NotesHTTPRequest」 について書きましたがHTTPリクエストするサイトがとても少ないということで、XPagesで実装してみたという記事を書きました。今回は、そのやり方を書いていきたいと思います。とっても簡単ですので是非やってみてください環境は、RESTサービスを実装するDominoは9.0.1NotesHTTPRequestはV10の機能なので取得するのはV10 Beta2になります。(V10でRESTやってV10で取得しても実感わかないですからねw)まずはDomino9.0.1側の準備です。1)新規XPageを作成します。ここでは「dominoJson」としました。2)データアクセスからRESTサービスコントロールを配置します。3)RESTサービスコントロール>基本の中にあるserviceからxe:viewJsonServiceを選択します。4)defaultColumnsをtrueに設定します。5)viewNameにJSONとして表示するView名を記述します。ちなみに筆者はこのような並びのビューを指定しました。(ビュープロパティのIBM Dominoデータサービスの操作を許可にはチェックはいれていませんでした)6)そして忘れてはいけないのがpathInfoの値です。ここでは「dominoJson」としてみました。設定は以上になります。※サンプルにしたDBはAnonymousアクセスを読者にしています。ではURLを打ってREST出来るか確認します。V10側のサーバー(もしくはPC)でURLを打ってみてください。例)http://<hostname>/dbFile名.nsf/dominoJson.xsp/dominoJson以下のように表示されれば成功かと思います何度も言いますが、このRESTサービスコントロールを配置したDBのサーバーはDomino9.0.1になります。次はNotes Domino v10側の設定です。(もちろん、Domino9.0.1とは相互認証もしていませんしドメインも違います)1)前回の例を参考にNotesHTTPRequestを記述し、プレビューします。2)そうすると、前回のようにJSONが取得でしましたでもでも・・・JSON取得できるけど、ラベル名がField_1とかわかりづらいんだけど・・・そんな時は、列のプロパティになる名前を変更すれば変わりますHTTPリクエストをXPagesで実装しましたが、これなら外部のサービスにHTTPリクエスト出来なくても自社内で検証が出来そうですねRESTサービスコントロールの他のserviceについては他の方々がブログにしていますのでそちらも参考に是非やってみてくださいもっとNotes/Domino V10について知りたい方こちらに参加してみてはいかがでしょうかhttps://www.ibm.com/blogs/solutions/jp-ja/ndday18t/ほぼ世界同時発表のNotes/Domino V10イベントですからもしかすると目からうろこな機能も聞けるかもしれませんでは今日はこの辺で・・・あでゅー

      2
      テーマ:
  • 08Sep
    • IBM Notes V10 新機能「NotesHTTPRequest」を実装するまで-1

      こんばんはタイトルが長すぎて入力制限かかっちまったw出荷が待ち遠しい Notes Domino v10ですそんなNotes/Domino v10の検証をしていて発見した機能で「NotesHTTPRequest」というものがありました。LotusScript class used to make HTTP requests to web servers.このように記載があるように、LotusScriptでHTTPリクエストが出来るらしいのです(すごくね)LotusScriptから実現しようとした場合、今まではJavaをコールして・・・だったのですが筆者自慢ではないですが「LotusScript」と「@関数」ぐらいしか、まともなプログラムを書けないという・・・スキルのなさ(Javaって書いたことほとんどない)それはさておき、Domino v10のコミュニティのWhats NewドキュメントにNotesHTTPRequestクラスの記述例がありました。Dim webRequest as NotesHTTPRequestSet webRequest = NotesSession.CreateHTTPRequest()Call webRequest.get(URL$)※URL$にはリクエスト先のURLを記述したものを格納戻ってくる値としてはVariantでJSON Stringになっているようですめっちゃ簡単やん早速試してみたのですが・・・うまくいかない・・・なんで??調べてみたところ、IBM木村様のブログにも掲載されていますが、リクエスト先がHTTPSリクエストだとうまくいかないとのこと(リリース時には動くことを期待)http://dotnsf.blog.jp/archives/1072063279.htmlそもそも、HTTPでリクエストできるところがこの世の中であるのか少し悩みを持ちつつ、楽しみにしていたNDS2018に参加してきました(すいません、いきなり話がぶっ飛んでw)http://nds2018.jp/top.nsf/pages/NDS2018TDK様の導入事例、各ベンダー企業の製品紹介どれも素晴らしかったのですが、特に筆者の心に響いたのが、IBM Championの御代様のセッションで今の筆者の手助けになる事をお話されていました。・・・そっかXPagesでRESTサービス作ればいいのかと、いうことで家に帰って作ってみた結果がこちら出来た×2NDS2018に参加してよかったーということで、次回どのように実装したかを書いていきたいと思います今日はこの辺で・・・あでゅー

      1
      テーマ:
  • 28Aug
    • 埋め込みビューで知らなかったこと!!

      こんばんは8月ももうすぐ終わりですね残暑にバテていませんでしょうかこの時期になると、楽しみなイベントの予定がたくさん出てきますよねIBM Notes/Domino V10 へのカウントダウンも始まりますhttps://www.ibm.com/collaboration/ibm-domino日本では日本橋三井ホールでイベントがあるようですよhttps://www.ibm.com/blogs/collaboration-solutions/2018/08/22/find-us-world-premiere-domino-v10/まだ予定書いてないけど・・・10時10分に発表するのかな?wwwまた、 IBM Notes/Domino製品に対する要望などを受け付けるサイトもオープンしてますhttps://domino.ideas.aha.io/(英語で) 欲しいと思う機能に投票したり、あらたにアイディアを投稿したりすることができるようです英語に自信がなくて不安だなーと思う方9月に行われるテクてくLotus技術者夜会では毎年恒例の「テクてくCafe」が開催されるとのこと。すでにサイトに投稿されているアイディアを評価し、投票を行ったり新たなアイディアの投稿をしたりするそうです。ここで、集まった方々と中身を理解して投票というのはいかがですかhttps://www.ibm.com/developerworks/jp/offers/events/techtech/index.html#com本当に待ち遠しいイベントばかりですさて、本題へ・・・皆さん、埋め込みビューって使われた事があると思います。筆者、今まで知らなかった事があったので備忘録的に書きたいと思います。まずは完成図すべてのボタンをクリックすると、絞り込みが解除されてカテゴリ別に表示され主菜のボタンをクリックすると・・・主菜だけに絞り込んで表示ができる、便利機能です<今までやってた作成方法>1)埋め込みビュー作成時に、式によるビューの選択をチェックして作成。2)@関数で隠しフィールドの値が・・・というものを書き・・・3)以下のように隠しフィールドに値をセットしてViewRefreshFieldsを行っていました。あとは、単一カテゴリに隠しフィールドの値によって返す値を@関数で記述・・・確かにこれでも実現できるのですが、そもそも・・・すべてを見せるだけのためにビューを作るの??何か無駄な開発しているな・・・と思ったんですそれでイチかバチかでやってみたことを書きます。<やってみた開発方法>1)埋め込みビュー作成時、ベースとなるビューを選択します。2)単一カテゴリも隠しフィールド名を記述しておきます。(ここに入った値が絞り込み時のキーとなる)3)主菜ボタンは先ほどと同じ記述で問題ありません。ここまで特に特殊な設定はしていないと思いますすべてのボタンをクリックしたときは「すべて」をセットするんでしょいえいえ、「すべて」という値をセットすると「すべて」をキーに絞り込みしてしまうので真っ白になります今回、やってみたのはこちら↓4)以下の@関数をすべてのボタンに記述する@SetField("隠しフィールド名";"*");@PostedCommand([ViewRefreshFields])そうなんです*(アスタリスク)をセットしてみたんです理由:だってワイルドカードなんでしょ?(理由になっていない)そうすると・・・期待のものが出来上がってしまったwwこの方法であれば、無駄なビューを作成したり@関数で式を書かなくても簡単に出来ますねもっと早く知りたかった、この機能とても便利なので、もし機会があれば作ってみてください今日はこの辺で・・・あでゅー

      2
      テーマ:
  • 13Aug
    • Node-RED 「node-red-contrib-wws」のお勉強-その2

      Node-RED 「node-red-contrib-wws」のお勉強こんばんは皆様はもうお盆休みに入っていますでしょうか週末は晴れれば猛暑、天気が悪いとゲリラ豪雨というお出掛けするにも難しい日々ですねさて、前回「node-red-contrib-wws」を使ってAction Fulfillmentを実装しかけていました今回、実装してみたので紹介していこうと思います。まずは、IBM Championの吉田さんのAction Fulfillmentのブログを(勝手に)参考にさせていただきました。https://www.ibm.com/developerworks/community/blogs/YoshidaTakeshi/entry/2017%E5%B9%B47%E6%9C%8823%E6%97%A5_14_43_38?lang=en_usこのブログがなかったら実装できなかったです最初に伝えておきます・・・実装はできたんですが・・・「正解ではない気がします」その理由も後にわかると思います・・・1)Watson Assistantの設定を変更するIBM Cloudから Watson Assistant を選択し、今回のAction Fulfillment用に作成したWorkspaceを開き、Entitiesを選択、新しく「開発依頼」を追加します。Value name:開発依頼Synonyms:開発 と 依頼 と Dev  追加します(とりあえず)。次にDialogを開き、「Add response condition」の右にあるメニュー(○3つ)をクリックします。表示された「Open JSON editor」をクリックします。Conversation サービスが response として返す JSON の編集画面になります。https://developer.watsonwork.ibm.com/docs/tutorials/action-fulfillment上記マニュアルを参考に以下のJSONを追記します。{ "output": { "actions": [ "開発依頼" ] }}Watson Assistantの設定は以上です。2)Node-REDの画面に戻り、前回のノードから以下のノードに変更します。まず上の赤枠のノード、Filter Actionsの設定は以下のようにしました。次に下の赤枠のノード、Filter Annotationsの設定は以下のようにしました。3)Filter Annotationsノードに以下のノードを追加しました。switchノードは以下のように設定しました。Filter AnnotationsノードのアウトプットのactionIdを見て処理を分岐します。まずは以下のFunctionノードの設定です。Watson Work Services へプライベートダイアログを表示するように指示します。マニュアルを見るとGraphQL を記述し送信すると書いてあるようです。send GraphQL queryノードが使えそうですね早速、send GraphQL queryノードの説明を見ると・・・こんな風にGraphQL書くんだよーとサンプルがあったので、以下のように書いてみました。conversationIdは出力された中にあるので、そのまま追記しました。targetDialogIdも同じで出力された中にあるので、そのまま追記しました。targetUserIdは見当たらないので、サンプルと出力が一番近い形のものを探してみました。createdByが一番近い形だったので、createdByを記述しました。サンプルを記述しておきます。msg.payload = ` mutation { createTargetedMessage(input: { conversationId:"`+ msg.payload.conversationId + `" targetUserId: "`+ msg.payload.createdBy + `" targetDialogId: "`+ msg.payload.targetDialogId + `" annotations: [ { genericAnnotation: { title: "開発者の選択", text: "誰に開発をお願いしますか?" buttons: [ { postbackButton: { title: "ボタン1", id: "sample1", style: PRIMARY } }, { postbackButton: { title: "ボタン2", id: "sample2", style: PRIMARY } } ] } } ] }) { successful } }`return msg;4)Functionノードの後にsend GraphQL queryノードを繋げます。設定は以下のようにしています。5)次にchangeノードをswitchの「!=開発依頼」の後に繋げます。先ほどGraphQLで記述したボタンIDを書き換えます。例えばIDがsample1だったら表記をサンプル1にするといった感じです。6)changeノードの後ろに続く下記イメージ赤枠のFunctionノードです。こちらもWatson Work Services へプライベートダイアログを表示するように指示しますのでGraphQLを記述します。このGraphQLはどのボタンをクリックしたかを表示させたいので、以下のようにしてあります。変数には前に記述したchangeノードの変換後の値を代入します。conversationId、targetDialogId、targetUserIdは3)で書いた内容と同じです。このノードの後ろにsend GraphQL queryノードを繋げます。設定は先ほどと同じです。7)以下、赤枠のFunctionノードを追加します。Functionノード名が紛らわしいですが、こちらはGraphQLではなくmsg.payloadを書き換えるだけです。変数unamには前に記述したchangeノードの変換後の値を代入します。8)上記Functionノードの後ろにsend messageノードを追加します。前回、画像の追加方法がよくわかっていませんでした。Pictureの欄にある[参照...]ボタンをクリックし、画像を選択し、青枠のアイコンをクリックします。Message Previewに表示されればアップロード成功となります。長かったですが、Node-REDの準備は以上で完了です。デバッグのためにあちこちにDebugノードを追加しておくとわかりやすいかもです。流れは以下のようになります。・WWSで「開発」や「依頼」が含まれるメッセージが投稿されると①で投稿メッセージに下線をつける。・下線をクリックすると、Filter Annotationに流れ②に流れる。・ボタンが表示されボタンをクリックすると③に流れボタンIDが変換される。・④でボタンをクリックした結果表示とメッセージの投稿を行う。WWSで動作確認してみます。「誰にこの開発の依頼をしようかな??」とメッセージを投稿します。メッセージに下線が引かれ、クリックすると開発依頼というアクションが表示されます。表示されたボタンのうち、いづれかのボタンをクリックします(赤枠)。「◎◎さんを選択しました」と確認のダイアログのほかにも、「◎◎さん、開発をお願いします!!」とメッセージが投稿されました(アイコンも変わってるでしょ)おぉ!これで自分もAction Fulfillmentが出来るようになったぞーAction Fulfillment・・・そうです、冒頭で書きましたように「正解ではない気がします」と書きました。勘のいい方は気づいたかもしれません・・・何か余ってる・・・そう、まるで組み立てたプラモデルの1パーツのように・・・そして、使い方もよくわかっていない・・・どなたか、このAction Fulfillmentノードの使い方を、やさしくこっそり教えてください今日はこの辺で・・・・あでゅー

      1
      テーマ:
  • 06Aug
    • Node-RED 「node-red-contrib-wws」のお勉強

      こんばんは毎日暑いですねそろそろお盆ですが、皆様は夏休みどのくらい取得できるのでしょうか筆者はお休みの予定はなく、通常勤務しておりますさて、本題へ・・・今回は「node-red-contrib-wws」を少しだけ勉強しましたので個人的な覚書として書きたいと思います。まずはリンク先→node-red-contrib-wwsIBM Championの吉田さんに「WWSのNode-RED、新しいの出てるよー」って教えてもらいました前回、挫折したことももしかしたら簡単に出来るかもというとても甘い考えで少し触ってみました目標は、以前にもブログで書いたところまでは実装してみようかと・・・・Watson WorkspaceでAction Fulfillmentを実装したい-下ごしらえ編・Watson WorkspaceでAction Fulfillmentを実装したい-続き事前に用意しておくもの・Watson Workspace(My App)・Watson Assistant(Watson Conversation)・IBM Bluemixの環境1)Nodeの追加Node-REDのハンバーガーメニュー>設定>パレット>ノードの追加タブで「wws」で検索すると出ています。このNodeを追加します。追加されるとパレットにNodeが追加されます。2)Webhookを作成するWatson Work ServicesでMy AppsとWebhookを作成します。過去のブログ記事(下ごしらえ編)を参考にしてください。☆オウム返しBOTをつくってみる☆以下のように配置しました。webhookノードの設定値は以下のようにしました。send messageノードは以下のように設定しています。Pictureを設定できるのですが、画像が大きいせいかうまくアップロードできませんでした・・・以上で、Node-RED側の設定は完了なのでデプロイしておきます。◇Watson Workspaceの設定を行う◇1:新規にスペースを作成します。2:スペースが出来たら作成したAppsを追加します。この辺も過去のブログを見てもらえれば参考になるかもです・・・3:では早速メッセージを投稿してみます。おおー、うまくいったようですw▽出力するメッセージを変えてみる▽webhookノードとsend messageノードの間にfunctionノードを追加してメッセージを書き換えてみました。デプロイします。デモと投稿しましたが、「これはテストです。」と書き換えられましたね◎Action Fulfillmentの下ごしらえまで実装する◎次は以下のようにしてみました。webhookノードの中の「Annotation Added」にチェックをつけます。Nodeの下側に口が追加されます。Filter Actionsノードは以下のようにしてみました。Action IdはWatson AssistantのWorkspaces の中で設定したIDです。詳しくは筆者のブログ(続きのほう)を参考にしてみてください。Recognized Actionsのところはカンマ区切りで複数セットできるようですし、ワイルドカード「*」も使用できるとのこと・・・。筆者は「Hello」のみセットしてみました。Filter ActionsノードのOhterwise側の口は以下のようにしてみました。(色変えただけですw)上記まで出来たらデプロイします。Watson Workspaceで「Hello」と「デモ」を投稿してみました。2つとも以下のイメージの赤枠のFilter ActionsノードのOhterwise側に行っているのは筆者の設定が違っているからかもしれません、そうだったらごめんなさい・・・。一応、Hello側は文字の下に紫の線が!!その線(青枠)をクリックすると・・・こ、これは!!!debugノード(青枠)を見てみると・・・Watson Workspace上でAppsをクリックした情報が取得できていますスゲー便利だこのNode・・・ということで、前回ブログで紹介させてもらったところまで実装できました。また時間を見つけて続きをやってみたいと思います(Nodeの設定が違っているとか等あれば、こっそり優しく教えてください)今日はこの辺で・・・あでゅー

      テーマ:
  • 03Aug
    • Notesクライアントで確認ページを再現してみた

      こんばんは気が付けばもう8月ですね猛暑日が続きましたが皆様体調は問題ないでしょうかさて、今回はこんな要望が出たので実装してみましたというお話。(ブログ用に内容はアレンジしてます)依頼者「編集画面から確認ページを表示して登録したいのですが。」筆者「Webページでよくあるやつですね。このDBはWebから登録させる想定ですか?」依頼者「いえいえ、Notesクライアントだけで運用するつもりですが。」依頼者「あと、編集画面と確認ページの表の色や文字も変更したいんです。」筆者「・・・。はい。」ということで、この依頼を受けて再現できるかやってみました(筆者の周りはNotesクライアント好きが多いようでw)まずは完成イメージ画面下にある「確認画面へ」ボタンを押下すると・・・こういう風にするってことだよね(表の色変えるのは後回し)筆者はよく計算結果テキストを使ってこのような表示用のフォームを作るのですが、今回は手抜き効率化するために以下のように開発しました。これが、元の設計です。便宜上、筆者の作成したフィールド名で書きます。1)DspTypeという名前のラジオボタンを作り、以下のように設定。2)DspTypeフィールドを非表示にして、デフォルト値には"Edit"を入れておきます。3)肝心の確認ページは??というと・・・このように下に同じように表とフィールドを配置しました4)確認ページ用のフィールドのすべての名前の後ろに「_Dsp」をつけて、種類は「表示用の計算結果」にします。計算結果の値としては、@GetField(@Left(@ThisName;"_")) としました。5)確認画面へボタンには@SetField("DspType";"Prev");@Command([ViewRefreshFields]);@PostedCommand([EditTop])  を設定入力画面に戻るボタンには@SetField("DspType";"Edit");@Command([ViewRefreshFields]);@PostedCommand([EditTop]) を設定しました。6)仕上げは表示/非表示式編集画面で見せたいところをマウスでなぞり文字のプロパティで以下のように設定。逆に確認ページで見せたいところをマウスでなぞり文字のプロパティで以下のように設定。保存して、動作確認をします。確認画面へボタンを押下すると・・・確認ページに切り替わりました入力画面に戻るボタンを押下すると、以下のように編集画面になります今回触れていませんが、・保存しないで閉じる・登録する・タブの×で閉じさせない 等の実装も必要になってきますがまた機会があればブログにしたいと思います。今日はこの辺で・・・あでゅー

      テーマ:
  • 17Jul
    • XPagesの入力チェック(エラー表示)

      まず最初に、この度の西日本豪雨で被害に遭われた方に心よりご冥福とお悔やみを申し上げます。被災された方々に心よりお見舞いを申し上げ、一日も早い回復と、被災地の早期復旧をお祈りいたします。また、酷暑の中での復旧作業に携わる皆様のご安全をお祈り申し上げます。こんばんは毎日、35度を超える気温で体調お変わりないでしょうか筆者も出社途中にセミの鳴き声を聞き、今年も夏がやってきたんだなと感じましたまた、夜には近所の川で蛍が鑑賞できますもうすぐで学生は夏休みですねー話は戻り・・・「XPagesの入力チェック」って皆様はどのような方法をとっていますか個人的にちょっと興味があったので、色々試してみたので紹介したいと思います。1)オーソドックスなやり方ですが、コントロールの検証タブで行う入力チェック必須フィールドにチェックを入れて、エラーメッセージを記述。長さバリデータもついでに制御したいと思います。<結果>未入力時長さバリデータの設定値以外楽ちんですねー2)エラー表示コントロール/複数エラー表示コントロールを使用する場合1.編集ボックスコントロールの検証タブの設定は1のまま設定した状態のままエラー表示コントロールを配置し、次のエラーメッセージを表示にて、対象のコントロールのID名を指定します。2.編集ボックスコントロールのすべてのプロパティから「disableClientSideValidation」の値を「true」に設定します。3.上記でエラー表示コントロールの設置は完了ですが、ついでなので複数エラー表示コントロールも配置します。<結果>未入力時長さバリデータの設定値以外こちらも案外簡単に配置できました3)CSJSでアラート表示今度はCSJSで、1の検証に近いものが出来ないかやってみました。ボタンを配置し、以下のコードをイベントタブ>クライアントタブに記述します。var str = document.getElementById("#{id:field11}").value;var reg = new RegExp(/^([a-zA-Z0-9]{1,5})$/);var res = reg.test(str);if(str==''){ alert('入力必須です。'); return false;} if(res==false){ alert('1文字以上5文字以下で入力してください'); return false;}注)RegExpとは?<結果>未入力時長さバリデータの設定値以外案外近いものが出来ました(ほぼ同じ?)4)CSJSで入力チェックinnerHTML表示先ほど、エラー表示コントロール/複数エラー表示コントロールを使ってやってみたことをCSJSで実装してみます。ボタンを配置し、以下のコードをイベントタブ>クライアントタブに記述します。var str = document.getElementById("#{id:field11}").value;var reg = new RegExp(/^([a-zA-Z0-9]{1,5})$/);var res = reg.test(str); if(str==''){ document.getElementById("#{id:computedField1}").innerHTML = '入力必須です。'; document.getElementById("#{id:computedField2}").innerHTML = '入力必須です。'; return false; }if(res==false){ document.getElementById("#{id:computedField1}").innerHTML = '1文字以上5文字以下で入力してください'; document.getElementById("#{id:computedField2}").innerHTML = '1文字以上5文字以下で入力してください'; return false;}<結果>未入力時長さバリデータの設定値以外スタイル入れたら、似たようなことも可能他にも、SSJSでエラーチェックしてみたりエージェントでチェックしてみたりと方法はたくさんあると思います。開発したDBに合ったエラー表示をこだわるのもいいかもしれませんね(エラーなんて出ないことが1番だけど)では、今日はこの辺で・・・あでゅー

      テーマ:
  • 23Jun
    • Node-REDを使ってLINE BOT を作ってみた

      こんにちはロシアワールドカップ、日本vsコロンビア観ましたあの強豪コロンビアに勝利ですよ おめでとうございます次のガーナ戦も期待していますそんな日本は、めっきり梅雨の時期になりましたねこんな時は家に引きこもって、Node-REDを楽しむのが一番ですねというわけで、今回はLINE BOTを作ってみたいと思いますまず必要なものとして・LINE Messaging API https://developers.line.me/ja/・IBM Cloud内のNode-REDhttps://www.ibm.com/cloud-computing/jp/ja/・他に追加したい機能があれば【作ろうと思った背景】・社内のプロジェクトとして、IoTやAIを学ぶ勉強会を行っており、手軽で試せるものが欲しかった・ノーツコンソーシアムのクラウド研で教わったことをフィードバックするため・IBM Watson Workspaceでも実装出来るが「IBMだけで構築してるから出来るんでしょ?」と言われるのがシャクだったため・LINEならほとんどの人が試してくれそうだから手始めに・・・Messaging APIを使ってボットを作成するには、まずLINE Developersコンソールでチャネルを作成しなければなりません以下、作成手順です。https://developers.line.me/ja/docs/messaging-api/getting-started/そして出来上がったのはこちら検証用としてはまずまずの出来ですw次はIBM Cloud側に必要になるNode-RED側に移ります。1)オウム返しするボットを作成完成系はこんな感じです。(超シンプル)<httpノード(Webhook)>以下のように「/line_hook」と設定しました。メソッドは「POST」を指定します。LINE Developerで作成したアプリのWebhook URLに「https://<node-redのURL>.mybluemix.net/line_hook」と設定します。<functionノード>ここのノードでは、メッセージを返す処理を行っています。リファレンスを確認するとこのようになっていました。テキストを返す場合リファレンスとグーグル先生を参考に作成したものが以下のものになります。3行目:Bearer値として、アクセストークン値をコピペします。以下の赤枠の値です。7行目~14行目:ただオウム返しするのはつまらないので乱数を発生させて、発生した分だけ「わん」を追加しています18行目以降はリファレンスを参考に作りました。<httpノード(send_result)>URLはリファレンスを参考に設定しました。<httpノード(http)>特に何も設定してませんデプロイして、早速LINEで試してみましょう見事なオウム返しですね筆者、「わん」をランダムでつけることにより、投稿した言葉を犬語に変換!という風にごまかしていますwwとても簡単でしたよね応用編として・・・・スタンプが投稿されたらスタンプを返す・写真が投稿されたらVisual Recognitionで分析結果を返しちゃうとか追加しておくと、ちょっとおシャンティなボットになりますねw今回はNotes/Dominoなお話はなかったですが、投稿されたメッセージからNotesの文書検索とか出来るといいなーって思ってます。某会社が紹介してたLINEでワークフローもできちゃいそうだな・・・きょうはこの辺で・・・あでゅー

      1
      テーマ:

プロフィール

makotoのプロフィール

makoto

自己紹介:
NotesR4.5からずっと携わっています。 「えっ?!これNotes?」と言われるような、 N...

続きを見る >

フォロー

このブログのフォロワー

フォロワー: 0

フォロー

このサイトの掲載内容は私自身の見解です。
ここでの情報を元にメーカー等に問い合わせたりする事は避けてください。
また、サンプルコードを利用する場合は、利用者の責任の元で十分に利用者環境での動作確認や影響度などについて検討の上、ご利用ください。
このサイトに掲載されているソフトウェア、およびファイルの使用、または使用不具合等により生じたいかなる損害に関しましては作者は一切責任を負いません。
全て利用者の自己責任でお願いします。

最近のコメント

Ameba人気のブログ