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

      LotusScriptでAPI連携してみた

      ご無沙汰しております皆様、体調にお変わりないですかコロナの影響でまともに活動が出来ていない筆者です。やっとサッカーやフットサルを再開することができて、この一年で貯まった夢や脂肪を少しずつですが外に出していけるようになっていきました。Notes/Domino V11にバージョンアップしてからその恩恵を受けるアプリの開発がなかったのですがこの度、正式に依頼があり検証を行っておりました。皆様、トヨクモってご存知ですかトヨクモ株式会社「安否確認サービス」「kintone連携サービス」を提供しています。シンプルな機能と簡単な操作で、IT初心者の方にとっても安心して利用できるクラウドサービスを提供してまいります。toyokumo.co.jp安否確認サービス(?)で最近CMもやっているシステムですね。このトヨクモと人事システムの間を取り持つ中継としてNotesでDBを作りたいと思います。1)下調べトヨクモと連携するにはいくつかパターンがあります。・人事データをもらって決められたCSVを作成し、トヨクモにアップロードする・上記作業をRPAで行う・API連携する元々人力で行っていた作業なので、毎月1日に担当者がアップロードをしていました。(年末年始も出勤していたそうです)かかる時間はおおよそ5時間前後で、組織情報・従業員情報・役割設定などをCSVから丹念に作っていたそうです。さすがにこれはやりたくないですねRPAで同じことをやらせようとするとかかる時間はそんなに変わらないし、PCの電源入れっぱなしにしておかなければならない。誤って電源切ってしまったりLANケーブル抜かれたら動くものも動かないのでこれまた困ってしまいます。残された手段はAPIなのですが、担当者含めNotesがAPI連携出来ることを知らず。筆者に相談が来た時点で「Notesで出来ますよ」と回答し、早速モックを作ってあげることにしました。2)トヨクモAPIをググってみたAPI仕様が公開されていました。安否確認サービス2 API仕様anpi.toyokumo.co.jpGET、POST、PUT、DELETEと標準なものだったので、これはいけるな と確信が持てました。ただ1つだけ問題が・・・部署の更新です安否確認サービス2 API仕様anpi.toyokumo.co.jp以下、一部抜粋---処理概要 ¶ 1つのリクエストで部署全体を更新します。 部署が変更されない場合、304を返します。 リクエストにエラーがある場合、400を返します。使用方法 ¶リクエストボディのプロパティdepartmentは、次のようなオブジェクトの配列であり、 その1つ1つが部署を表します。{ "currentCode": "top", "code": "top", "name": "すべて", "parentCode": ""}それぞれのプロパティの意味は次の通りです。 currentCode: 現在存在する部署のコードを指定する。 code: 更新後の部署コードを指定する。 name: 更新後の部署名を指定する。 parentCode: 親部署コードを指定する。リクエストされたdepartmentプロパティ値から部署構造を構築し、 部署全体を構築された部署構造に置き換えます。入力にエラーがある場合、400が返却され、errorsプロパティにエラーの詳細が含まれます。次の方法に従い、リクエストされた各部署の追加・編集・削除が判別されます。 追加: currentCodeが空白のもの。 編集: currentCodeが入力されているもの。 削除: 現在存在する部署のうち、currentCodeに一致する部署が存在しないもの。※ 次の点にご注意ください。 最上位部署は必ず含める必要があります。 未所属ユーザ部署を含めてはいけません。-----リクエストされたdepartmentプロパティ値から部署構造を構築し、 部署全体を構築された部署構造に置き換えます。えっ組織情報を一気に書き換えるってことだから、Topから一番下の階層まで全部PUTするのテキストの限界値決まっているはずなので、リクエスト時も注意しないといけません・・・いけるのか、LotusScript3)モノは試しに書いて実行してみた Dim session As New NotesSession Dim webRequest As NotesHTTPRequest Dim returnVal As Variant Dim jsonBody As String Set webRequest = session.CreateHTTPRequest() Call webRequest.SetHeaderField("Content-Type","application/json") Call webRequest.SetHeaderField("Accept","application/json") Call webRequest.SetHeaderField("Authorization","Token *********") webRequest.Preferstrings = True jsonBody = |{"department": [{"currentCode": "top","code": "top","name": "最上位部署","parentCode": ""},| jsonBody = jsonBody & |{"currentCode": "","code": "11111","name": "〇〇本部","parentCode": "top"},| jsonBody = jsonBody & |{"currentCode": "","code": "21111","name": "aaaaa部","parentCode": "11111"},| jsonBody = jsonBody & |{"currentCode": "","code": "31111","name": "aaaaa部 zzzzz室","parentCode": "21111"},| jsonBody = jsonBody & |{"currentCode": "","code": "41111","name": "hogehoge","parentCode": "31111"},| jsonBody = jsonBody & |{"currentCode": "","code": "31112","name": "aaaaa部 bbbbb室","parentCode": "21111"},| jsonBody = jsonBody & |{"currentCode": "","code": "31113","name": "aaaaa部 ccccc室","parentCode": "21111"}]}| returnVal = webRequest.put("https://api.cloud.anpikakunin.com/v1/department",jsonBody) MsgBox returnVal実行してみたところ、うまくいきましたこれぐらいの部署の量であれば当然と言えば当然ですね。本番運用にあたりLogを作成するので、最後のreturnValの値は文書保存しておくように変更します。4)実際の部署数で試してみた人事データをCSVで取り込み、トヨクモAPIに連携しやすいように加工したのち、一気にPUTします。案の定、素敵なお知らせが表示されました最後のreturnValをフィールドに突っ込むときですかね。本番運用にあたり以下を変更しました。・変数jsonBodyをVariant型に変更・保存するLog文書のreturnValをセットするフィールドをリッチテキストに変更5)再トライ人事データ取り込み→加工→トヨクモAPIでリクエストを実行。Log文書にもJSONが正しく保存されトヨクモ側にも反映されましたHttpRequestってホント便利ですね次回は従業員登録の方法を試してみたいと思います以下、サンプル{ "username": "yamada", "password": "qawer@nasd", "fullname": "山田太郎", "fullnameRuby": "ヤマダ タロウ", "email": "test@example.com", "tel": "05038166666", "priority": 100, "memo": "APIから追加"}ユーザー登録って一人ずつなのか・・・本年も皆様には大変お世話になりました。来年もよろしくお願いいたしますではよいお年をあでゅー

  • 05Sep
    • datePickerを使ってみた(XPages)の画像

      datePickerを使ってみた(XPages)

      こんばんは最近、XPages開発が増えたほうのサッカー馬鹿です今回は、datePickerをXPagesに入れてみましたよってお話です。datePickerといえばjQueryなのですが、https://jqueryui.com/datepicker/XPagesでもカレンダー表示をして入力することは可能です。カレンダー方式で日付を入力したいという事なら日時ピッカーコントロールや編集ボックスコントロールの表示タイプを「日付/時刻」にすればすぐに実装可能。今回の依頼は・今日から5日後から日付を選べるようにしてほしい・休みは選択できないようにしてほしいでした。XPagesで出来る日時の検証で日付を入れておくとエラーチェックはかけられるのですが、それは嫌だと言われましたそれでググったり、色々な人から教えていただいて出来上がったものが以下になります。(カレンダーアイコンはご自身で準備してください)(カスタムコントロールで実装しています)<?xml version="1.0" encoding="UTF-8"?><xp:view xmlns:xp="http://www.ibm.com/xsp/core"> <link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" /> <script src="http://code.jquery.com/jquery-1.8.3.js"></script> <script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script> <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1/i18n/jquery.ui.datepicker-ja.min.js"> </script> <style> img.ui-datepicker-trigger{ cursor: pointer; margin-left: 15px!important; vertical-align: middle; } </style> <xp:scriptBlock id="scriptBlock1"> <xp:this.value><![CDATA[function x$(idTag){ //正規表現を使って:を\\:に変換idTag = idTag.replace(/:/g,"\\:");//変換結果の先頭に#を付けid指定とし、$()で囲むことでjQueryオブジェクトを返すreturn($("#"+idTag));};$(function(){(x$("#{id:jDateTextBox1}")).datepicker({buttonImage: "calendar-icon2.png", // カレンダーアイコン画像buttonText: "カレンダーから選択", // ツールチップ表示文言buttonImageOnly:true, // 画像として表示showOn: "both", // カレンダー呼び出し元の定義dateFormat: 'yy/mm/dd',minDate: "5d"}).attr('readonly','readonly')})]]></xp:this.value> </xp:scriptBlock> <div class="input-group"> <xp:inputText id="jDateTextBox1" style="width:100.0px" value="#{document1.Date}"> <xp:this.converter> <xp:convertDateTime type="date" dateStyle="medium"> </xp:convertDateTime> </xp:this.converter> </xp:inputText> </div></xp:view>これで今日から5日後からしか選択できないカレンダーになりました土日を選択させないようにするには、beforeShowDayというものを追加するそうです。先ほどのdatePickerにbeforeShowDay: function (date) { if (date.getDay() == 0) { // 日曜日 return [false, 'ui-state-disabled']; } else { // 平日 return [true, '']; } },これを追記すると実装されるそうです。これで休みの日(日曜)も選択されないようになりましたこれで完成と思いきや、次なる追加要望がありました。・祝祭日も選択できないように出来ますか?祝祭日やその他休みを依頼者の皆さんが管理出来るならという仕様付きで以下のような実装を考えてみました。beforeShowDayを以下のように書き換えます。beforeShowDay: function (date) {var holidays = ['20200921', '20200922']; //検証分以外は省略var ymd = date.getFullYear() + ('0' + (date.getMonth() + 1)).slice(-2) + ('0' + date.getDate()).slice(-2); if (holidays.indexOf(ymd) != -1) { // 祝日 return [false, 'ui-state-disabled']; } else if (date.getDay() == 0) { // 日曜日 return [false, 'ui-state-disabled']; } else { // 平日 return [true, '']; } },これで祝祭日も選択できないようになりました上記holidays にセットされる箇所はプロパティ定義を作ってしまえば流用的に使えそうですよね。以上、datePickerをXPagesに入れてみましたという話でした。jQueryならDomino Voltにも実装できそうですね楽しみという事で今日はこの辺で・・・あでゅー

  • 06Aug
    • SpVoice InterfaceをXPagesに組み込んでみたの画像

      SpVoice InterfaceをXPagesに組み込んでみた

      こんばんは以前にWeb Speech APIをXPagesに組み込んでみたを会社で紹介したところ「IEでも出来ないの」って言われたのでIEでTextToSpeech出来るものでググってみましたなんとSpVoice Interfaceなるものを発見しましたhttps://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms723602(v=vs.85)例えば・・・社内の大事なおしらせをなかなか読んでくれない→「読まぬなら聞かせてあげようホーホケキョ♪」という事でどうでしょうか?というわけでXPagesでサンプルを作ってみました以下、掲示板の1ページと想定してください。※HCLさま、掲示されているおしらせ情報拝借しましたページの下に[再生]ボタンを作っています。クリックすると「Haruka Desktop」さんがお話してくれます問題点としては、IEのセキュリティ(イントラ側)を低くする必要があるので十分検討の上お試しください・・・筆者、Excelマクロ(VBA)はほとんどやったことないのですがこんなのも作ってみました。シート下にある[mp3作成]ボタンをクリックするとB2に記載された文字をmp3にしてデスクトップに保存してくれます。という事で今日はこの辺で・・・あでゅー

  • 31Jul
    • 添付するファイルの容量を制限してみた(XPages)の画像

      添付するファイルの容量を制限してみた(XPages)

      こんばんは久々の投稿ですそして久々に新規開発をやってますなかなか本業の開発に時間を費やせない今年ですが、自分のための覚書として残りの日々、色々な記事を残していこうと思います今回は「ファイルを添付させる際に、サイズ制限したい」という要望がありました。こんな感じですXPagesのファイルアップロード/ダウンロードコントロールをうまく使うとそのようなことが出来ると聞いたことがあったのですが、どこに書いてあったかを失念見つからないから試しに簡易的に作ってみたという個人的な覚書ですさて本題に・・・XPagesでファイルをアップロード→更新するとダウンロードコントロールは以下のように表示されます。目に見える状態でサイズが書いてありますねこの情報をJavascriptでうまくとればなんとかなりそうですソースを見てみましたあれ?IDじゃない・・・もう一つファイルを添付してソースを確認してみましたふぁどうやらクラス名で取得しなければならないようですねグーグル先生で調べてみると「getElementsByClassName」というので取得できるようでしたhttps://developer.mozilla.org/ja/docs/Web/API/Document/getElementsByClassNameという事でやってみましたサイズ→ファイル名→作成日時→削除と表示されimage/jpeg・・・お、取れたIMG_3683.JPG→2020/0718 14:14 と準備取れ・・・ゴミ箱アイコンはスキップされてimage/jpeg・・・取れたIMG_5260.JPG→2020/0718 14:15と表示され終了しましたまとめると・・・ファイルタイプから始まる行はファイルタイプ、サイズ、ファイル名、作成日時、削除(見えていない)の5項目が取得され2行目から<ファイルタイプ>、<サイズ>、<ファイル名>、<作成日時>と4項目が取得されました。ファイルダウンロードコントロールの以下の表記の場合はFor文を5からスタートし、6で割り切れる場合に値を取ればうまくいきそうです。実際にやってみるとうまく取れました(自信がなかったのでファイル増やしてみました)あとは取れた値を変数に入れて足し算して閾値と比較すればいいのですがどうも取れている値が「文字」なのでreplaceとNumberを使って数値化してから変数に入れないといけませんねその点に注意しながら出来たものがこちら合計値取れていると思います(桁を増やすためにファイルを変更してみました)最後の仕上げとして、2MB(ここではわかりやすく2000KBにしています)以上なら警告を出して処理を中断するという仕組みにしたいと思います。この状態は2MB未満なので[保存する]ボタンをクリックしても警告は出ません大きな容量のファイルを添付して[保存ボタン]をクリックすると・・・「添付サイズオーバーです」と警告が出ているのがわかりますでしょうか以下、今回のブログ用に作成したXPageです(汚いですが) <xp:label value="添付ファイルのサイズは2MB未満でお願いします!" id="label1" style="color:rgb(255,0,0);font-weight:bold"> </xp:label> <xp:br></xp:br> <xp:panel id="imagePanel"> <xp:this.data> <xp:dominoDocument var="document1" formName="ImageSize" computeWithForm="both"> </xp:dominoDocument> </xp:this.data> 添付ファイル:<xp:fileUpload id="fileUpload1" value="#{document1.Body}"> <xp:eventHandler event="onchange" submit="true" refreshMode="complete"> </xp:eventHandler> </xp:fileUpload> <xp:fileDownload rows="30" id="fileDownload1" displayLastModified="false" value="#{document1.Body}" hideWhen="true" allowDelete="true"> </xp:fileDownload> </xp:panel> <div id="alertMsg" style="color:red"></div> <br/><br/><xp:button value="保存する" id="button1"> <xp:eventHandler event="onclick" submit="false"> <xp:this.script><![CDATA[var tmpList = document.getElementsByClassName('xspTextComputedField');var cnt = 6;var tmpSize = 0;document.getElementById("alertMsg").innerHTML = ""for (var i = 5; i < tmpList.length; i++) { if(cnt == i){ tmpSize += Number(tmpList[i].innerHTML.replace(/,/g, '').replace(/KB/g, '')) cnt += 4; };};if(tmpSize >=2000){ document.getElementById("alertMsg").innerHTML = "添付サイズオーバーです!"; return false;};]]></xp:this.script> </xp:eventHandler></xp:button>もっと簡単な方法があったような気もしましたが、今回は上記の方法で実装してみました。(もしご存知のかたいらっしゃいましたら、コッソリ教えてください)今回はこの辺で・・・あでゅー

  • 17May
    • 調子に乗ってVideoカスタムコントロールを作る-応用編の画像

      調子に乗ってVideoカスタムコントロールを作る-応用編

      調子に乗ってVideoカスタムコントロールを作る-下ごしらえ編調子に乗ってVideoカスタムコントロールを作る-実装編こんばんは最近、引篭もりのサッカー馬鹿です3年半ほど前にXPagesで「Videoカスタムコントロール」を作ってアプリを作成しました。ここ最近になって、社内で「動画マニュアル」といったキーワードで業務内容の説明やオンライン講習のプレイバックなど紹介するのが多くなってきたんです当時Videoカスタムコントロールを作成したときは、動画ファイルをオンプレサーバーに配置して運用していたのですが最近は再生時間が長く、高画質のものも多いせいかオンプレサーバーの容量が大変なことになってきましたそこで注目したのが「Microsoft Stream」というYoutube的な便利なツールがあるのですが筆者には管理が難しすぎてどうしても主管部署に渡せない事情が出てきました(主管部署も以前のNotesの時のように簡単に出来ないのという感じ)何気にNotes好きな利用者のために、アップロードの方法は以前と異なっても、使い方や管理方法はNotesらしい管理方法が出来ないかなという事で在宅勤務中に考えてみました早速検証・・・今回使用したのは以下の動画です。(それなりに大きなものがこれしかなかった)OneDrive for Businessを使ってみるOneDrive for Businessの機能の共有を使えば動画のURLを取れるのではと考えました。(お仕事用だし)ということで動画ファイルをアップロードしてみました。何とかURLを奪い取って試すものの・・・(参照先はSharePointなのね)OneDrive(個人向け)には準備されている「<埋め込み>」がないし・・・サインインが出ちゃいました(筆者環境の場合です)サインしたものの「無効なコンテンツ」となってうまく動画が表示されなかったり、共有されたURLを開いてからなら動画が再生出来たりとAzureADの権限だったり、OAuth認証だったりが必要な感じ------この辺は以前、クラウド研究会で行ったことを実装したりhttps://www.notescons.gr.jp/home.nsf/blog.xsp?action=openDocument&documentId=2B14486D503DD0CC4925834900286155ADとの連携強化を実施すると改善されるのかな365に詳しくないので、誰か教えてください------OneDriveを使ってみる1.OneDriveに動画ファイルをアップロードします。2.アップロードした動画ファイルを再生>右クリック>動画のURLをコピーします。3.「mp4」の後にある文字を削除したものを指定先URLとしますのでクリップボードもしくはエディターツールに控えておきます。4.DBのページを作成し、<video>タグを入力し、srcの値を4でコピーした(控えた)URLにします。タグ全体をパススルーHTMLにして保存し確認してみます。動くかな動いたいい感じですね以前作ったvideoカスタムコントロールにURLを指定して動作確認おお、動いてるよでもNotesクライアントでmp4が再生できなったちょっとブラウザの力を借りたいと思いますビューにアクションを作成。ここでは「Movie」と「Movie2」を作成、@関数式は全く同じものを記述しました。「Movie2」はモバイルアクションボタンにアクションを含めるにチェックを付けました。Notesクライアントで確認「Movie」ボタンをクリックすると・・・当たり前ですがブラウザで表示されましたHCL Nomadで試してみる右下の黒のメニューをタップすると「Movie2」が表示されるのでタップしてみます。Safariが立ち上がり、動画が再生されることを確認できました今回、OneDrive(個人向け)で成功しました。仕事で使うというより、動画再生プログラムやシステムを構築した際に検証用で使われるのがいいのかもしれません。試してみたいというときはダウンロード等されても支障のないものを用意してください。(筆者は責任取れませんので)業務で使用するには「OneDrive for Business」でこの実装が出来ないとダメですね今日はこの辺で・・・あでゅー

  • 29Apr
    • 全角英数字は半角英数字に、半角カタカナは全角カタカナにの画像

      全角英数字は半角英数字に、半角カタカナは全角カタカナに

      こんばんは新型コロナウィルス感染防止のため、筆者の会社では今月からテレワーク推奨になりました。その為、自宅からほぼ外出せず巣ごもりしている状態です。その中、毎日お勤めしている皆様のお陰で、筆者は体調を崩すことなく仕事が出来ています。この場を借りてお礼申し上げます。このような環境になったのと期末期初という時期だったのでNotesの開発にほとんど注力できずにいましたブログのネタも探すもののイマイチなものが多かったので・・・前置きが長くなりましたが本題です日本特有(?)の問題なのかもしれませんが、カタカナに半角/全角があり数字にも半角/全角があり英字にも半角/全角がありますよね。今とあるプログラムを作っていて、人事系のデータをNotesのデータに取り込み、Notesのワークフローやその他情報を付加したのち人事系のシステムに返すといった仕組みがあります。人事系システムでは、振り仮名が半角だったり部署名の英字が全角、カタカナが半角だったりと個人的にしっくりこないんですね例)情報システム部 RD企画課  研究開発センター HD研究室上記のような表記を以下のように変更して管理したいんです情報システム部 RD企画課研究開発センター HD研究室こんな個人的気持ちの理由で作った例が以下のサンプルです。仕組みはとても簡単でinTypeフィールドに入力された文字を全角英数字は半角英数字に、半角カタカナは全角カタカナに変換してoutTypeフィールドに返すというものです。変換ボタンの中身(今回実験用に作成したのでFunctionにしていません)Option Compare Binary DimuiwsAsNewNotesUIWorkspaceDimuidocAsNotesUIDocumentDimStrStocMsgAsStringDimtxtAsStringDimiAsIntegerSetuidoc=uiws.CurrentDocumentStrStocMsg=Strconv(uidoc.FieldGetText("inType"),8)Fori=1ToLen(StrStocMsg)IfMid$(StrStocMsg,i,1)Like"*[a-z,A-Z,0-9]*"Thentxt=txt&Mid$(StrStocMsg,i,1)Elsetxt=txt&Strconv(Mid$(StrStocMsg,i,1),4)EndIfNextCalluidoc.FieldSetText("outType",Fulltrim(txt))MsgboxFulltrim(txt)Calluidoc.Refresh思い通りになったかを確認してみました。パターン1パターン2いい感じですねでは実際にありそうな言葉で変換してみましょうパターン3んん何か変ですね赤線の場所を見てください。「パ」が「ハ」と「゜」になっていたり「ズ」が「ス」と「゛」になってますね・・・StrConvだけではダメなのかな。。。LotusScriptを少し変更してみました。(変換対象を一度@Wideで変換して、Likeを全角の数字と英字を対象に)Option Compare Binary DimuiwsAsNewNotesUIWorkspaceDimuidocAsNotesUIDocumentDimStrStocMsgAsStringDimevalAsVariantDimtxtAsStringDimiAsIntegerSetuidoc=uiws.CurrentDocument'//全角にして渡してみると?'StrStocMsg=uidoc.FieldGetText("inType")Eval=Evaluate(|@Wide("|&uidoc.FieldGetText("inType")&|")|)StrStocMsg=Eval(0)Fori=1ToLen(StrStocMsg)'//全角英数字の場合は半角英数字にするIfMid$(StrStocMsg,i,1)Like"*[a-z,A-Z,0-9]*"Thentxt=txt&Strconv(Mid$(StrStocMsg,i,1),8)Elsetxt=txt&Strconv(Mid$(StrStocMsg,i,1),4)EndIfNextCalluidoc.FieldSetText("outType",Fulltrim(txt))MsgboxFulltrim(txt)Calluidoc.Refreshさて次はどうでしょうかパターン4今度は濁点等もちゃんと変更されました今回、筆者の要件的にはこれでいいのですが、まだ次の問題が解決していませんでしたパターン5赤線部分を見ていただくと半角記号が全角記号になってしまっているんですこれも出来れば半角にしたいので、次回この研究をしてみたいと思いますこんなことしなくてもこれでやりたいこと出来るよという情報お持ちの方是非筆者に教えてください今日はこの辺で・・・あでゅー

  • 14Mar
    • パスワードの変更をプログラムで行ってみようをNomadでやってみよう!の画像

      パスワードの変更をプログラムで行ってみようをNomadでやってみよう!

      こんばんはHCL Master御代さまのブログ「のおつ」を読んでますか最新の記事で何とuser.idのパスワードを変更できるDBを無償でいただけるという事で早速応募してみましたぐへへへ、もらっちゃったここでふと疑問が「Nomadでも使えるのかな?」試してみましたので共有しますAndroid編1)パスワード変更DBを開きます(日本語が化けてる)※何かDBを開いて閉じると文字化けが直っているという不思議2)パスワード変更をクリックします3)あれれidファイル格納場所までたどり着けない・・・Androidの中を探してみましたが、idファイルが探せる場所にはありませんでした気を取り直して・・・iPhone1)パスワード変更DBを開き、パスワード変更をクリックします2)撮影してもだめだと思うので、ファイルから選択を選んでみました。3)一番可能性がありそうな「HCL Nomad」内も全部探しましたがuser.idの格納先まで探せませんでした。結局こうなりました今回の検証でiPhoneにはダウンロードというものがあったので、Nomad経由でダウンロードしたIDファイルは実行できるかなと淡い期待を持ちましたがその後どうしてあげればいいのかわからないので未検証ですまとめパスワード変更は正規ルートで行いましょうw今日はこの辺で・・・あでゅー※パスワード変更DBを使用させていただいた御代さま、ありがとうございました

  • 12Mar
    • NotesクライアントDBを iPhoneでカッコよく見せたい(HCL Nomad)の画像

      NotesクライアントDBを iPhoneでカッコよく見せたい(HCL Nomad)

      こんばんは年度末の忙しさで、Notes開発をしばらくお休みしていたサッカー馬鹿ですHCLジャパンブログで紹介されているNomad 用ディスカッション・テンプレート (Beta) の公開は皆さん既にダウンロードして試してみましたかそんな筆者も実は今年初めのテクてくLotus技術者夜会でNomad用フレームセットの発表させていただきましたせっかくなのでブログに残しておこうと思います。1)まずはDBの準備今回当たり障りのないDBがなかったので、スクラッチでよくありそうな構成のDBをイメージして作成してみました。メニューとビューアウトラインでビューの切り替えが可能なシンプルなDBです。フォームタイトルはテキストフィールド、カテゴリはダイアログリスト、本文はリッチテキストです。このぐらいの設計であれば、大きな改修はないのでHCL Nomadで表示してみたいと思います。2)iPadのHCL Nomadで確認してみる縦向き、横向き共に見づらい、使いづらいは感じませんでした。3)iPhoneのHCL Nomadで確認してみる開いてこれが表示されると「表示が変です!」って問い合わせきそうです赤枠の矢印アイコンでビューとメニューの切り替えは可能ですが、なんかしっくりきません。このままではダメだと思い考えてみました。そんなある日、HCLMasterの御代さまのブログにヒントがありましたそうか、フレームセットを使えばいいのか普段使っているから簡単に実装できるという事で、モノは試しに改修を加えてみました。このDBは上下2フレームで構成されています。このフレームセットを呼び出す外枠のフレームセットを追加します。理想としては、「iPhone」だったら専用フレームセットを呼び出し、それ以外は今まで通りのフレームセットを呼び出せば完成だ!iPhoneとそれ以外を知るには「@Platform」関数を使うようです。という事で、名前付き要素の名前についての式に以下の式を記述し保存しました。iPhoneFrameはiPhone用に作ったフレームセット(iPhoneサイズに幅を調整したもの)、MainFrameは今まで使用していたフレームセットです。最後に起動プロパティで作成した上記のフレームセットを選びます。出来たでは動かしてみましょうNotesクライアントイメージ通りですiPhone予定通り・・・ではありませんでした・矢印アイコンが機能しない・仮にメニューを表示させてもアウトラインも効かないよくよく考えると1フレームから呼び出されている要素なので矢印とか効くわけない(そうなのか)折角の矢印アイコンを使いたいので使える方法を考えてみました。1)ダミーページを作成しPostOpenに「Call Source.Close」と書いて保存します。2)起動時に開くフレームセットの内容をダミーページに変更して保存します。3)データベーススクリプトのPostOpenに以下のLotusScriptを記述します。4)DBを開いてみます。NotesクライアントHCL Nomad for iPadHCL Nomad for iPhone矢印アイコンも問題なく使えますきっと他に正しい設定方法があると思うのでどなたかご存知な方は教えてください今日はこの辺で・・・あでゅー

  • 01Feb
    • HCL Nomadでもリッチテキストらしさを!の画像

      HCL Nomadでもリッチテキストらしさを!

      こんばんは来週は年明け初のテクてくLotus技術者夜会ですね筆者も個人的に勉強しているNomad用のアプリの設計について(特にiPhone)を紹介させていただこうと思っています申し込みはこちらのリンクから出来ます。https://support.hcltechsw.com/csm?id=kb_article&sysparm_article=KB0069193さて、来週の発表用にアプリを作成して(個人的に便利な)機能を試しているんですがNotesのリッチテキストって本当に便利だなーNomadからも便利に使えるなーと思ったので簡単に紹介します以前、「リッチテキストライト」を使うと写真の添付やカメラ起動できるよと教えてもらいました。その時は便利に感じていました。でも既存のアプリには既にリッチテキストが配置されているのにそれとは別にフィールドを設けるのは・・・って思っていましたPCで使うNotesのリッチテキストみたいに文字も写真も添付したいな・・・と思っていたらな、何と既に実装されていました(ベータ版の時に全く気付いてなかった)簡単ですが、確認していきましょう以下のようなフォームを準備しました。タイトル:テキストカテゴリ:ダイアログボックス(複数可)本文:リッチテキストそして本文に普段ありがちな言葉を打ち込み、この場所にファイルを添付したいなってあると思います。そこにカーソルを置いたまま、画面上記の赤枠のメニューをタップすると・・・何とメニューの中に「添付」があるじゃないですかカメラロールもしくはカメラを起動して写真を決定すると・・・(あと、ファイルっていうのもあった)添付されてる保存しても問題ありませんでした再度文書を開きなおして、画像ファイルを長押ししていると・・・iPhoneの標準メニューでしょうか、「表示」があります。タップしてみましょう。すごい表示されたw既にご存じだった人には、あまりいいトピックではないですが個人的にはすごく感動して、これならiPhoneでも文書の登録や編集も可能だなーと感じました本題とはズレますが、このボールペンを使うととても便利にメニューを触ることが出来ました他のNomad用のネタはまた来週簡単ですが、今日はこの辺で・・・Notes client on PC Like "Rich Text".あでゅー

  • 10Jan
    • @関数はとても便利!の画像

      @関数はとても便利!

      あけましておめでとうございます本年もよろしくお願いいたしますHCLジャパンブログで紹介していただいてますが、今年も無事、マスターとして活動させていただきますユーザー企業目線でこんなことにNotesは使えるのではという観点で皆様に開発のヒントやアイデアを提供できたらいいなと思っていますさて、本題ですが@関数といえば、HCL Masterの阿部さまはもうご存知な機能なんでしょうけど改めて賢いなと思ったのでメモ。最近開発していたDBで、ほかの文書(複数)から金額を参照し合計値を出すというよくありそうなことをやっていました。頭の固かった筆者は、複数だから@Forを使って@DBLookupのキーを変えながらとか、変数にどんどん加算していったりとか、LotusScriptでガンガン書いた方がいいのかなと思っていました。簡単に実装するにはどうすればいいのだろう・・・回答はとても簡単で関数はそのままで、フィールドを「複数値も可」にすればいいだけでした合計値を求めるボタンには@Sum関数を使うだけ・・・動作確認です。単一の動き→問題なし複数の動き→問題なし@関数でこんなに簡単に合計値出せるならHCLNomadでも活躍できそうなDBが作れそうですね簡単ですが、本日はこの編で・・・あでゅー@Functions are very useful!

  • 27Nov
    • Domino V11の新機能~DAOS tier 2 storage~の画像

      Domino V11の新機能~DAOS tier 2 storage~

      こんばんは皆さん、Domino V11いじりまくってますか本日もノーツコンソーシアムの研究会でDominoしてきましたNotes/Domino V11はHCLに移管されて初のリリース(になるのかな)にワクワクしている方のサッカー馬鹿ですV11の新機能に(やたらと)詳しいHCLマスターの中野様に「DAOS tier2 storage」なるものを教えてもらい、サッカー馬鹿でも出来るレベルと言われたので試してみました(研究会でも調べていたのですが・・・)What's NewをGoogle先生でなんとなく翻訳すると以下のような感じでした。ここからはWhat's Newを和訳(風)にした記事に、ちょいちょい割り込んでと言った感じで進めていきます(緑字が筆者の声です)なお、注意点ですが筆者は英語は苦手ですので表現等も正しくないところが多々あります。あたたかい心で見ていただくと大変うれしいですDAOS tier2 StorageDomino Attachment Object Service(DAOS)tier 2 storageにより、S3互換ストレージサービスを使用して、指定された日数以内にアクセスされなかった古い添付オブジェクトを保存します。この機能により、DAOSを使用するDominoサーバーに保存されるデータ量を削減します。また、任意のパフォーマンスを向上させることもでき、DAOS用に行うファイルの増分バックアップが可能となります。S3互換のストレージサービスは、Amazon Web Services(AWS)Simple Storage Service(S3)APIを使用します。次のS3互換ストレージサービスがテストおよびサポートされています。・AWS S3・MinIODAOSタスクは、古い添付オブジェクトをDominoサーバーからストレージサービスの指定された場所に移動します。オブジェクトは、バックグラウンドスレッドによってS3オブジェクトストアにプッシュされます。今のDAOSのNLOファイルをクラウド上に逃がせるのであれば、DominoサーバーのNLOファイルのディレクトリのダイエットも出来そうですねDAOStier 2 storageの資格情報ストアの構成ストレージサービスへの接続に使用される資格情報を保存するようにDomino資格情報ストアを構成します。1.ストレージサービスベンダーのドキュメントを参照してください。ストレージサービスの接続に使用するDominoの資格情報を作成します。2.ストレージサービスベンダーのドキュメントを参照してください。Dominoが使用するバケットを作成します。複数のDominoサーバーは同じバケットを使用できます。バケットには任意の名前を使用できます。次のAWSコマンドの例エンドポイントus-east-1にaws-hcl-dominocosという名前のバケットを作成します。aws s3api create-bucket --bucket aws-hcl-dominocos --region us-east-1「DAOSティア2ストレージを有効にする」の手順を完了するときに、この情報を提供します。3.Dominoで、次の手順を実行してDomino資格情報ストアを作成し、資格情報を安全に保存します。ストレージサービスへの接続に使用されます。既存の資格情報ストア(通常はIBM_CredStore\credstore.nsf)がある場合は、それを使用できますが、Domino11で提供されているwebsecuritystore.ntfで設計を置き換える必要があります。Domino資格情報ストアのセットアップの詳細については、資格情報ストアの使用を参照してください。Dominoのドキュメントで資格情報を共有します。AWSのアカウントを作成しなければならないのか・・・筆者は以下のブログを参考にさせていただきましたhttps://go-journey.club/archives/9653DominoサーバーでDomino資格情報ストアを作成するには:a)サーバーコンソールから、次のコマンドを使用して、サーバーIDファイルに追加される名前付き暗号化キー(NEK)を作成します。Dominoは、キーを使用して、資格情報ストアに保存されている資格情報を暗号化します。KEYMGMT CREATE NEK <名前付きキー><named key>は、キーに付ける名前です。例えば:KEYMGMT CREATE NEK credstorenekサーバーコンソールログに次のようなメッセージが表示されていることを確認します。b)サーバーコンソールから、次のコマンドを使用して、作成したNEKを使用して資格情報ストアを作成します。KEYMGMT CREATE CREDSTORE <nek>例えば:KEYMGMT CREATE CREDSTORE credstorenek確認するには:指紋は、前の手順でメモした指紋と一致します。(多分羅列に表示されるキーだと思う)データベースcredstore.nsfは、Domino\data\IBM_CredStoreディレクトリに作成されます。(IBMなんですね・・・)※追加のDominoサーバーがストレージサービスで同じバケットを使用する場合は今回割愛します。5.次の手順を実行して、Domino資格情報ストアにストレージサービスの資格情報を追加します。a)手順1で作成したサービス資格情報を含むテキストファイル(dominocred.txtなど)を作成します。例えば:[dominocos]aws_access_key_id = ABCDEFGHIJH1234567890aws_secret_access_key = AbCdEfGhIjKlMnOpQrStUvWxYz0123456789012括弧内の名前[dominocos]は、資格情報ストア内の資格情報の名前として使用されます。指定するこの名前は、「DAOS tier2 storageを有効にする」の手順を完了するときに使用します。筆者は「domino-daos.txt」にしました。aws_access_key_idと、aws_secret_access_keyはAWSのコンソールから確認してください。b)DAOSサーバーのサーバーコンソールから、次のコマンドを使用して資格情報をDominoクレデンシャルストアに追加します。tell daosmgr S3 storecred <ファイル名>ここで、<filename>は資格情報を含むテキストファイルの名前です。例えば:tell daosmgr S3 storecred dominocred.txt資格情報は、指定された資格情報(たとえば、dominocos)を使用して資格情報ストアに追加されます。コマンドが完了すると、テキストファイルは削除されます。コンソールまたはログファイルに資格情報は表示されません。結構やる事たくさんありますね・・・次の手順を実行して、DominoサーバーでDAOS tier2 storageを有効にします。a)編集モードでDominoディレクトリのサーバー文書を開きます。注意:・Domino管理サーバーでDominoディレクトリを管理する場合は、管理サーバーを設定します。管理サーバーでの資格情報ストアのレプリカの作成など、資格情報ストアを使用します。詳細については、「DAOS tier2 storage用の認証情報ストアの設定」を参照してください。・Domino管理サーバーでDominoディレクトリを管理しない場合は、次のことを確認してください。この手順で行った変更は、管理サーバーに複製されます。b)[DAOS]タブをクリックし、ドキュメントの[Tier 2 Storage]セクションを参照します。c)[DAOS Tier 2]フィールドで、[有効にする]を選択します。d)[S3資格情報名]フィールドで、使用するDomino資格情報ストアから資格情報名を選択します。手順のステップ5で指定されたストレージサービスに接続します。DAOS層の資格情報ストアの構成。(筆者ならdomino-daos)e)[S3 Bucket]フィールドに、手順2で作成したバケットの名前を入力します。aws-hcl-dominocosなど、DAOS tier2 storageの資格情報ストア。(AWS S3に作ったバケット名ですね)f)[S3 Endpoint]フィールドに、ステップで指定されたオブジェクトストレージサービスへの接続に使用するエンドポイントを入力します。「DAOS tier2 storage用のクレデンシャルストアの設定」の手順の2。エンドポイントまたはポート番号付きのURL。例:・AWS:us-east-1・HTTPS経由のローカルサーバー上のMinIOインスタンス:minio.myserver.com・HTTP経由のローカルサーバー上のMinIOインスタンス(ポート番号が必要):minio.myserver.com:9000。g)[アクセスされない場合に保存するプッシュオブジェクト]フィールドに、tier2 storageに配置するため添付ファイルにアクセスしない日数を入力します。デフォルトは1000日です。h)変更を保存します。3. Dominoサーバーを再起動します。サーバーは、DAOS tier2 storage構成をテストします。テストが成功すると、サーバーに次の出力が表示されます。(AWS:AWSSelfTest: Success. AWS connection for DAOS is up and running.)以上で、セットアップは完了のようです。(不足あったらごめんなさい・・・)What's Newを見るとDAOSMGRコマンドが追加され検証することが多々あります。筆者自身が使い方をまだよく理解していません・・・また、即時にS3に反映などのコマンドは用意されているのですが、What's Newには記載がありませんでしたので、製品版の充実したマニュアルに期待をしています。とは言っても・・・AWSにNLOが行くまでに1000日どころか1日も待てないという貴方中野様から小ネタがございますDominoコンソールにTell daosmgr help と打ちなさいとOBJECTPUSHを使えばAWSに即時反映できるよーと教えていただきました。早速発行したところ・・・出来てるーという事で、Google先生で翻訳したレベルでDAOS tier2出来ました製品版でもっと簡単になっているといいな・・・詳しい内容はきっと誰かが分かりやすくブログに書いてくれることを期待して今日はこの辺で・・・あでゅーP.S今回DAOS tier2 storageに関して色々と情報をいただいた中野様に心からお礼申し上げます。あざーす

  • 07Nov
    • インスタみたいな検索画面作ってよ!(その1)の画像

      インスタみたいな検索画面作ってよ!(その1)

      こんばんは最近、RPAの開発に追われているサッカー馬鹿ですこの間、社内で「インスタみたいな検索画面が欲しい」と言われて「[CSS]スクリプト無しで、高さがバラバラの画像を隙間無く配置するスタイルシートのテクニック」のCSSを参考にしてXPagesで作成しました。こちらのサイトのCSSを参考にさせていただいたお陰で、短期間でインスタっぽいページをサクっと作成できましたありがとうございます元ネタになるNotesDBはこちら特に特殊なことはしてませんが、1文書1画像にしています。こんな感じのDBになります。<改修手順>1)XPagesで以下のようにしました。ソースはこんな感じすごく簡単でした出来栄えはというと・・・何か良くない文字検索すると・・・ちゃんと検索もできましたこのネタを元に社内の投稿サイトも改修し、若者ウケ(?)するサイトに変わったはずもっと他にも素敵なネタを仕込んでいるのですが、機会があればまたその時にちなみにこのサンプルDBはV11 Beta2で開発、DominoもV11Betaで動いていますちょっと短いですが今日はこの辺で・・・あでゅー

  • 08Oct
    • NDS2019舞台裏-HCL Nomadアプリを作ろう編の画像

      NDS2019舞台裏-HCL Nomadアプリを作ろう編

      こんばんは9月から全国5拠点で行われた#NDS2019、ご参加いただきました皆さまありがとうございますまた、全イベントでにおいて運営に携わってきた関係者の方々もお疲れ様でした筆者も初の全出席でしたさて、今回はイベントの参加者へのプレゼント企画としてHCL Nomad用のアプリを作成しましたその舞台裏(自分の行ったパート)を少しだけ解説したいと思います主に行った場所はメニューです。普通のありきたりなメニューじゃなくて、今時のスマホアプリであるニュースのタブを切り替えるようなもの何か作れない?と言われたのがきっかけでした。最初の試作品はフォームで作成しました。5列2行の表を作り、1行目にはメニュー名を2行目は背景の計算式でフラグの値によって画像が表示されたりされなかったりを実装しました。しかし、動作検証時に問題が赤枠プレビューが表示されると、コントロールがそっちに持っていかれメニューの切り替えが出来なくなってしまいました・・・折角気に入ってもらえたのに、このまま諦めるわけにはいかないという事で、こんな姑息な技を使いましたメニューの数だけページを作るw作り方はとても簡単です。列5、行2の表を作りページを保存し、メニュー分コピーします。選択されているページの時は、文字色を黒に、2行目には背景を設置します。選択されていないメニューにホットスポットを追加し、関数を記述しています。たったこれだけ2行目の文字サイズを1にしてフォントをちょうどいいのに変えるだけで、シャープなバーが表示されているように見えます。あまり大したことはしていないのですが・・・アピールポイントに載せていただいちゃいましたこのNomad用アプリには他にも素敵な機能がありますので是非、ダウンロードしてみてくださいslack連携については中野様のブログにて掲載中ですhttps://harunakano.blogspot.com/2019/10/nds2019_7.html全体のまとめは萩原様と御代様がブログにまとめてくださっていますhttps://www.tanuchi.com/2019/10/nds2019-notes-domino-solution-2019.html御代様のブログ(グループカレンダーのところ気になるなー)https://guylocke.blogspot.com/2019/10/nds2019.htmlまた、NDS2019で話題になった2コマのフォローアップセミナーも開催されるそうですケートリック株式会社https://product.ktrick.com/events今年のNDS2019は5拠点に参加させていただき、またこのような開発に混ぜていただいてありがとうございます本当に楽しかったイベントでした(NDS2019広島にて)P.Sリッチテキストに添付されているファイルを一気に開く方法知りませんか?という質問がありましたので、筆者が考えた一例を載せておきます(あくまで例です)読み込み時のみ表示されるボタンを作って、以下の関数を書いてみました。tmp:=@AttachmentNames;@For(n :=1; n<=@Elements(tmp); n:= n + 1;path:="http://"+@Name([CN];@ServerName)+"/"+@ReplaceSubstring(@Subset(@DbName;-1);"\\";"/")+"/0/"+@Text(@DocumentUniqueID)+"/$FILE/"+tmp[n]+"?OpenElement";@Command([Execute];path));@True(これだとanonymousの権限いるのか…)何かの役に立てば幸いです・・・今日はこの辺で…あでゅー

  • 03Oct
    • LeapでFormを作ってみる-その1の画像

      LeapでFormを作ってみる-その1

      Leapについて調べてみるこんばんは前回、やっとDemo画面を作ることが出来るようになりましたのでどんなことが出来るのか試してみましたガッツリは作っていないので注意Demoのトップ画面、こちらもLeapで出来ているようです。作成画面を出すには以下赤枠の「Launch HCL Leap」をクリックし・・・In New Tabを選択します。HCL Leapのトップ画面(?)が表示されるのですが何とビックリ日本語表示左側にある[新規アプリケーション]をクリックします。以下の画面が表示されます。空白からは1からデザインするようです。スプレッドシートからはExcelから取り込めるようです。今回は「空白から」を使ってみたいと思います。アプリケーション名とテーマカラーを決めます。アプリケーション名はNotesでいうところのDBのタイトルですね。必要事項を入力して[作成]をクリックします。設計画面が表示されました。パレット/フォーム/アウトラインの3ペインですね。パレットには表示項目/フィールド/特殊の3つのグループにカテゴライズされています。例)テキストのプロパティテキストというかCKEditor風な入力が出来ます。例)イメージのプロパティイメージを選択してサイズ等を調整することが出来るようです。モノは試しで動くgifを選択してみましたというわけで、なんとなく勘であちこちに配置してフォームを作ってみました。プレビュー画面で見た目を確認して・・・(動いてるw)デプロイしてみましたこんな便利な機能もあるんですね・・・今回は自分しか使わないのでそのまま[開始]としました。デプロイが成功すると、以下の画面が表示されます。ビューも自動的に作成されるみたいで、自分で列の表示/非表示も設定できるみたいです。右側にフォームのプレビューも出せるようです。早速新規作成して登録してみます。登録されたようです。登録されてますねータブの切り替えでサマリーも見れるようです。簡単なフォームなら数分で作成できそうですが、ワークフローだったり、権限の設定やレイアウトを考えると数時間はかかるのかな?と感じました。あと、開発できない人も・・・という話でしたが多少のスキルはいるんじゃないかな?と感じました早くLeap on Dominoがリリースされることを待っています今日はこの辺で・・・あでゅー

  • 02Oct
    • Leapについて調べてみるの画像

      Leapについて調べてみる

      こんばんは10月ですねあっという間に1年が経とうとしています。。。去年の今頃は「Domino V10が間もなくリリース」ということでソワソワしていましたが、もうV11が準備されているんですもんねまた、現在NDS2019というイベントが開催中です。http://nds2019.jp/top.nsf/pages/NDS2019top残すは広島会場と福岡会場のみとなりました近隣にお勤めの方で参加できそうな場合は是非遊びに来てくださいさて、今回は自己学習のためV11に搭載される「Leap」についてどんなことが出来るのか(Google先生で)調べてみましたLeapを知った記事はこちら「IBM Forms」みたいなものらしいです。作成後の見た目こんなのが簡単に作れるらしいです。別製品の「HCL Leap」でどんな動きなのか試してみることが可能らしいです。(アカウント登録が必要)アカウント登録完了後にHCL社から登録終わったよというメールが来ますので、パスワードをリセット(?)して再ログインします。※筆者の場合、登録完了メールが迷惑メールに入っていました・・・Leap on Dominoで期待している以下3つ・Dominoのお客様は無料で利用可能・NSFで提供・V11で利用可能楽しみで仕方ありませんこちらのブログにも情報がありましたhttps://hcljapan.co.jp/software/blog/tag/leap(ライセンスに関して触れられていませんっていうのが引っかかるけど)どのようにFormを作成して展開していくのかは、現段階ではこちらの動画が参考になりそうです。という事で次回は、Leapを使って簡単なFormを(見よう見まねで)作ってみたいと思います今日はこの辺で・・・あでゅー

  • 23Aug
    • 【ブラウザNotes】SearchTemplate(ViewTemplate)で画像並べたいの画像

      【ブラウザNotes】SearchTemplate(ViewTemplate)で画像並べたい

      こんばんは久々の投稿です最近、事務集約などでNotesの改修が増えてきて、色々な知恵を絞りだしている方のサッカー馬鹿ですさて、今回は最近開発した「SearchTemplate」を使った改修のネタになります。実際のところ、XPagesすべて作り替えればいいのですが既存の一部分の改修でそんなに日数もかけられないのが事実なんデスケドネ。。。(問題なく動いているDBの改修はしたくない)依頼された内容は、「Webで検索された画像を並べて表示してほしいとの事」※社内の情報は見せられないので簡単作成して再現しています<現在>SearchViewで文字検索をして、SearchTemplateをカスタマイズして表示させています。(イメージ図)こちらのSearchTemplateは以前ブログに書いた「閑話休題:明日から22日までセミナーいっぱい!」を実装しています。こんな感じで列にタグを書き込み・・・ビューのプロパティで「ビューの内容をHTMLとして扱う」にチェックをし保存。$$SearchTemplate for <ビュー名>を作成し、タグを書いてパススルーHTMLと$$ViewBodyフィールドを配置。以上が出来たら、検索URLを叩いてあげれば表示先ほどのように表の中に画像が入ったWebページが出来ます。検索URLの例)http://www.lotus-10.com/products.nsf/ProductView?SearchView&Query=<検索文字>詳しくは文字を検索する URL コマンドを参考にしてください。さて、ここからが本番・・・並んで表示しているけどこれじゃないのか?と聞いたところ・・・こんな風に並べて表示させたいらしいです・・・そっちの並びね実現方法は2つあると思っています。1)?OpenFormを使ってパラメータに検索キーをつけて、フィールドもしくは計算結果テキストに式を書いて表示させる。こちらの方法は、@URLQueryString、@DbLookupを使って列の値(タグ)を取得。@Forでループさせて、ループ内で指定列数で割り切れる数値の時に"</tr><tr>"を追加して・・・とやっていくと実現できます。列が5つの表を作りたい時は@Forのnが5で割り切れる時に折り返しのタグを追加するみたいな感じですね問題点は、画像のファイル名がガッツリ日本語なので@DbLookupで持ってこれない事が多々ありました。その時は計算結果テキストで逃げたりもしました。(埋め込みビューは試していません)2)SearchTemplateを駆使して表示させる。こちらの方法は、URLのパラメータで持ってくる文書数を操れるので例えば「ヒット率の高い上位20件のみ」などと表記をすれば文字数制限の壁は越えられると思っています(多分)。問題点は・・・Tableタグの列対応が出来ない確か@DocNumberは文書の#という事で番号を振ってくれますが、Webでは使用できなかったと記憶しています。さて、どうしたものだろう数分ググったところ、見つけたのがこちらのサイトhttps://gist.github.com/pistatium/5963229#file-tablebuilder-jsなるほどJSONからJavaScriptでTableタグを上手に書いていけばいいのか$$ViewBodyの値が以下のようになればいいんですよね/* テーブルにしたいデータ */var data = [ {'id':1, 'created_at':'2013/05/01', 'updated_at':'2013/07/01','title':'記事1'}, {'id':2, 'created_at':'2013/06/01', 'updated_at':'2013/07/02','title':'記事2'}, {'id':3, 'created_at':'2013/07/01','title':'記事3'},];<やってみた>先ほどのタグを書いたViewを開き、例にならって列を書き込み保存します。Notesで見てみると・・・いい感じですSearchTemplateも書き換えてみます。1)先ほどのJavaScriptをSearchTemplateにコピペし、コードの前後に<script>タグを追加します。2)先頭に「<div id="output"></div>」を追加します。3)テーブルのヘッダーのラベルを変更します。4)return html; の箇所の変更を忘れずに・・・5)var data=[$$ViewBodyフィールド];とし、全コードを選択して「文字>パススルーHTML」として保存します。検索URLを叩いてみると・・・スゲーこれならSearchTemplateの中でJavaScriptを書きまくれば、素敵な表も出来上がりますねという事で、画像を並べてみたのがこちら(デザインはやってませんが)並んだ×2Notesの画像がどうせなので画像ダウンロードリンクも追加してみました。参考にしたサイト:https://qiita.com/gnk0096/items/0e2dfe5d76a7968e1e23XPagesが便利でついつい何でも頼ってしまいがちですが、以前からあるSearchTemplateやViewTemplate、パススルーHTMLでも自由度が高いと改めて感じた今日この頃でした今日はこの辺で・・・あでゅー

  • 10Jul
    • NotesとRPAと私の画像

      NotesとRPAと私

      こんばんは7月1日にIBM社からHCL Technologies社へNotes/Dominoを含む一部のソフトウェア製品群が業務移管されましたね。皆様はもう確認済みですかさて、今回は自分自身の備忘録的な内容です以前、ノーツコンソーシアムのオープンセミナーで紹介させていただいた「Photrawer(フォトロア)」と名前を付けた写真投稿DBについてhttps://www.ibm.com/downloads/cas/EBVPVDXKテクてくでも紹介していましたねhttps://www.ibm.com/developerworks/community/files/app#/file/541f694f-613d-4f17-b865-c9773ab0b328XPagesのおかげで案外簡単に作成できたのですが、便利すぎるが故に起きた問題も結構困りものでした・運用2年でDBサイズが64GBを迎える→スマホの画像設定が高解像度過ぎこれに関してはV10の新機能にある256GBにサイズアップすればどうにかなることは検証済です更に「Scan to Photrawer」機能がオープンセミナー後に追加され写真を撮らなくても、スキャナで読み込ませた紙がPhotrawerに画像登録できるという便利で危険な機能が追加されました常にPhotrawerは64GBを彷徨っていますそんなPhotrawerですが、1年前から困った話を聞いています「どのページと決まったわけではないが、枚数とかは関係なくブラウザ上で写真が表示されない時がある」と問い合わせいただいていましたそんな馬鹿な・・・と確認したところホントだ・・・詳しくはわかりませんが、ブラウザ上で画像イメージを表示する力が限界なんじゃなかろうか試行錯誤であれやこれやといじってはいたのですが利用者の理想には程遠い感じでしたいい報告が出来ないこんな状況ですが、今はどうやってるんですか?と利用者に聞いたところデスクトップにフォルダを作って文書1つ1つ開いて添付ファイルを保存し、全選択してコピー→PDFにしてるとのこと。何百カ所もそれやってたら嫌になりますな・・・そんなある日、とある番組を見ているときに急に思いついたんです。IBMチャンピオンの吉田様が面白いことやってたな・・・と。https://www.ibm.com/developerworks/community/blogs/YoshidaTakeshi/entry/RPA%E3%81%A7_%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E3%83%86%E3%82%B9%E3%83%88%E3%82%92%E3%82%84%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%9F?lang=enそっか、無理にNotesですべてを完結させようとするからうまくいかないんだそれに今更気付いてしまった自分が恥ずかしいということで、利用者の手間になっている「デスクトップにフォルダを作って文書1つ1つ開いて添付ファイルを保存し、全選択してコピー→PDFにしてる」って作業をRPAでやってしまおうと思いついたのですイメージ図①Photrawerから添付ファイルとその文書情報(Text)をRPA専用PCに保存②RPA専用PCはTextを参考に保存された画像からPDFを作成③PhotrawerがPDFを回収これなら画像落ちはないだろうと思い、早速構築してみました※今回UiPathを使用していますhttps://www.uipath.com/ja/一部ですがこんな感じそして無事・・・完成しました\(^o^)/依頼者の反応が楽しみですねwまた、面白いものが出来たら紹介しますその前にICAAの検証終わらせないと本日はこの辺で・・・あでゅー

  • 16Jun
    • Domino Mobile Apps(DMA)向けのDBを考える-「ステッププログレスバー」編の画像

      Domino Mobile Apps(DMA)向けのDBを考える-「ステッププログレスバー」編

      こんばんは随分と期間が空いてしまいました最近は自社内の開発やV10の検証等に時間を追われやっとICAAの日本語版を手に入れ検証を始めたところです急なんですけど・・・Domino Mobile Apps(以下DMA)で今時なDBを作りたいと思いまして。。。DMAって何詳しくはこちらのブログからたくさん勉強できます。https://www.xpages.jp/xpagesjp.nsf/blog.xsp?action=openDocument&documentId=4126031EB0F7BA304925838B001A632B上記リンクをみてたら作りたくなりませんiPadで自身が作ったNotesDBが動くんですもの完全に影響受けて「自作のDB」も試してみたいと感じました結果・・・確かに、ほぼカスタマイズなしで動くのですが、ブログのようにiPad向けにデザインを合わせてあげないとただ動かせるだけであって本当に使いやすいDBなのか?という疑問が残りましたクライアントのデザインを工夫して、より素晴らしいDBにしたいですよねさて、本題に戻りまして・・・せっかくなのでベースとなるDBを作成してみました。どんなDBかというと、巷によくある「お客様アンケート」をベースに今時風なデザインで作成してみました見た目でも「Notesっぽくない」と言われるんですがこのフォームをDMAでどんな感じで見えるんだろうその時ふと気づいたんですこのフォーム、スクロール面倒じゃね??これは使いづらい分類になるのではなかろうか??…ということで、DMAで使いやすい(もしかするとNotesでも使いやすくなるかも?な)インターフェースに変えていきたいと思います<フォームの全体構成を見直す>準備したDBの構成ですが・アンケート・お客様について・ご意見、ご要望、個人情報の取り扱い・確認画面(まだ綺麗にデザインできてません)・受付完了(こちらもどんなメッセージを書くかまだ決まっていない)orzと5つに分けることが出来ましたこの5部構成をiPadで見やすくするには・・・・・ステッププログレスバー(こんなやつ)を使うといいかもと思いつきましたNotesクライアントで比較的簡単にステッププログレスバー(っぽいもの)を作れるんだよーというのを紹介したいと思います。(どこかで既にブログで紹介されている方いましたらごめんなさい)1.画像を作る筆者はよくペイントかパワーポイントで作成しますそして以下のように命名しました(arrowから)。ar1.pngar2.pngar3.pngar4.png2.画像をDBにインポートするリソース>イメージイメージリソースのインポートから作成した画像を取り込みます。画像こだわりすぎて重くならないように注意ですね。3.フォームを作成し、ラジオボタンを配置します。設定は以下のようにしています。デフォルト値は1を設定しておきます。4.Statusフィールドの下に表を配置します。1行5列の20cmの固定幅にしておきましょうか。こんな感じになります。5.表のプロパティを変更します。線を非表示にして、行の間隔を0.2cm(0.199cmになっちゃうけど)にして中央揃えに変更します。6.表セルを全選択して文字を中央揃えにします。7.表の一番左のセルにカーソルを合わせ表のプロパティからイメージの設定を行います。イメージ>ソースにある[@]をクリックして以下の@関数式を入力します。@If(Status="1";"ar1.png";"ar2.png")左から順番に設定をしていきます。(色が薄いほうの画像が表示されるかと)最後のセル(一番右)は以下のように設定します。@If(Status="5";"ar3.png";"ar4.png")8.最後に全セルに計算結果テキストを配置しておきます。中身は用途に合わせて書き換えてください。今回は便宜上「Status」を入れておきます。フォームを保存してプレビューしてみましょう(ちょっと間延びしてますが)いい感じでステッププログレスバー(っぽいもの)ですねラジオボタンの値を2に変更してみましょう。何か動いた気がしますよね一通り動作確認できたら、iPad用フォームに組み込んでみます。そして出来たのがこちら↓なんか、クライアントで見ててもカッコよく見えるあとはボタンを配置したり(細かい設定等がたくさんありますが)して出来上がったフォームをDMAで確認してみました見てもらうとわかるように充電はいまいちですが見た目はいい感じじゃないですかというわけで、DMAで今時っぽいフォームに仕上がりました次回もこのDBからネタを見つけて改良していきたいと思います今日はこの辺で・・・あでゅー

  • 30Apr
    • Domino Admin/Designer/Client/ICAAをインストールしてみたの画像

      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日でも早く出ることを期待しつつ、今日はこの辺で・・・あでゅー

  • 05Apr
    • サッカー馬鹿、Domino V10を構築するの画像

      サッカー馬鹿、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クライアントのセットアップを書きたいと思います。今日はこの辺で・・・あでゅー