プログラマーですが何か?まだプログラマーですが何か?プログラマーネタとアスリートネタ中心。クライアント機能を持っている多くのプラットフォームやプログラミング言語から利用できるようになっています。ノーツからどうやって使うか、という情報があまり公開されておらず、「ノーツからは使えないんじゃないか?」と思われてしまっているように感じています。実際、ハードル高いと思う。1点補足すると、これは「ドミノサーバー」からの話ではなく「ノーツクライアント」からの話です。使う、というケースです。使おうとしてもクロスサイトスクリプティング制約があったりするので、結構難しい問題だと思っています。返ってくるものという緩い定義で考えるものにします。これをノーツクライアントから実行して結果を受け取る、というものです。そのまま表示されて、こんな感じの結果になります。データを取得し、中身を解析してノーツで活用しよう、というのが今回の目的です。エージェントを使う必要があります。プロトコルのレベルで処理をカスタマイズする方法は用意されていません。プロトコルを実装、となるとさすがに非現実的です。解析も行う必要がありますが、それもライブラリに任せることができます)。ライブラリを用意しておきます。ライブラリを全てダウンロードします。ライブラリをダウンロードしておきます。これらは同様の機能を持っているものであれば別のライブラリを使ってもいいのですが、以下のサンプルではこれらを使っている前提で紹介します。ファイルをあらかじめ取得しておいてください。エージェントを作ります。エージェントが追加されました。この中身を記述する前に、先ほど用意した4つのライブラリファイルを、このエージェント内にインポートして使えるようにしておきます。ファイルをまとめて指定して「終了」ボタンをクリックします。ファイルが追加されていることを確認してください。エージェント内でこれらのライブラリを使った処理を記述することができるようになりました。ここで記述された内容がこのエージェントの実行内容になります。実行して、その結果を取得する、という実装を行います。コンソールに出力する、という内容にします。実装コードはこんな感じです。Sample")エージェントを保存します。試しにこのエージェントをノーツクライアント上で実行してみます。ノーツでこのエージェントを作ったデータベースを開きます。コンソールウィンドウが開きます。エージェントを実行します。作ってブラウザで表示する(参考記事)なり、色々な応用があると思います。実行することができました。使う形で応用できると思っています。使った解析を行うなど、いろんな使い方の可能性が広がると思っています。コードからブラウザを起動できることを知りました。ページ(この例だとマンホールマップ)がデフォルトブラウザで開きます。部分との連携がしにくくて、「実行結果をどうやって見せるか」の問題があるのでした。コンソールに出力するくらいはできても、それを見てもらうのも至難の技だし、そもそも見栄えも悪い。自由度高く作れるしで、重宝します。メソッドなど、デスクトップ関連の便利なメソッドが用意されています。コマンドを使ってみました。コマンドではわからない情報も表示してくれて便利です。リポジトリを有効にする必要があります。htopこんな感じで起動します。比べて見やすく表示されています。展開/格納したり、といった表示も可能になるようです。試してみるとこんな感じ。キーでプロセスの検索もできます。プロセスに移動している様子です:特定のユーザーのプロセスだけを表示する、といった操作も可能です。:インストールも簡単だし、シェル環境では入れておいて損のない、便利なツールだと思ってます。アプリケーションサーバーを作った場合、そのサーバーインスタンスの数やメモリ量については管理コンソール画面から(自分が持っているリソースの上限まで)動的に変更できます:サーバーのワークロードがある程度安定しているのであれば、これらの数値を手動で設定すればいいのですが、実際には変化するワークロードに対応するため、何らかの運用ルールを決めた上で自動的にスケールイン/アウトするように設定できると便利です。環境の場合、このオートスケール機能もサービスの1つとして提供されています。このオートスケールサービス自体は無料でお使いいただけます。サインアップ後の30日間は無料、有料アカウント移行後もこのオートスケールサービス自体は無料でお使いいただけます。有料アカウント移行後の無料枠があり、その範囲内でご利用いただくぶんには料金は発生しません。有料アカウント移行後にこのオートスケールサービス機能でサーバーインスタンスがスケールアウトした結果、いつの間にか無料枠を超えた状態で運用されてしまっている、という可能性がありえます。オートスケールを利用する場合の設定内容と利用料金についてはご注意ください。オートスケールサービスの使い方について紹介します。オートスケールの対象となるアプリケーションランタイムを用意します。環境である必要はありません。上で動くランタイム環境があれば、それをお使いいただいても構いません)。メモリの利用状況を確認します。PHP)をクリックします:このランタイムアプリケーションの現在の状態が表示されます。使っている、ということがわかります:この状態を元にオートスケールの条件を決めます。下回ったらスケールインという(このままでもスケールアウトが発生するような)条件で運用してみます。メモリに対して設定することができますので、実際の環境を確認した上で、簡単に発生させられそうな条件を決めてください。このランタイムにオートスケールサービスを追加します。追加」をクリックします:追加できるサービスの一覧が表示されます。サービスの説明と利用条件が表示され、無料サービスであることが分かります。dotnsf-wp)が選択されていることを確認して「作成」ボタンをクリックします:サービスを1つ追加したので、ランタイムを再ステージングするか聞かれます。サービスが追加されていることが確認できるようになります。サービスのアイコンをクリックします:オートスケールサービスのパネルが開きます。最初はまだ何のルール(ポリシー)も定義していないので作成する必要があります。「ポリシー構成」タブ内の「自動スケーリングポリシーの作成」ボタンをクリックします:最初のポリシールールを編集する画面になります。名称などは適当に付けるとして、設定すべきは具体的なルールの部分です。スケールイン時の最小インスタンス数はデフォルトの1のままとして、スケールアウト時の最大インスタンスは念のため4にしてみます。現在は1インスタンスのメモリが128MBなので、4インスタンスまで稼働させても無料枠内、という安心設定です(笑)。これで何もしなくても今のままでスケールアウトしてくれます。細かい条件を設定するため「拡張構成」をクリックします:拡張構成では、どれだけの期間測定してスケールイン/アウトを判断するか?を指定できます。"PHP")に移ってしばらく様子を見ていると、スケールアウトの様子が見えてくるはずです。これは1インスタンス増えて2インスタンスになった様子:条件を厳し目に設定したので(苦笑)、2分おきにインスタンスがどんどん増えていきます。アプリケーションサーバーであるランタイムと、データベースなど各種サービスを組み合わせて環境を構築するのが特徴ですが、オートスケーリングに関してもサービスの1つとして提供されており、簡単に使えることも分かっていただけるのではないかと思っています。状態でも設定できるので、用途・目的に合わせて使ってみてください。センサーシミュレータと接続し、送られてくるセンサーの値を取得して表示する、というシンプルなワークフローを作りました。他のブロック機能を組み合わせて、もう少し実用に近いワークフローを記述してみます。エディタでの、上記ワークフローの完成形を示しておきます。エディタ上でこのワークフローを作っていきます。ボイラープレートを使ってプロジェクトを作ります。しましたが、実際には個別の名前を付けることになります。ブロックをキャンバスに1つ追加します。ブロックをダブルクリックして編集状態に移り、このデバイスの属性を入力します。アドレスを指定しますが、これは最後に入れるので空にしておいても構いません。デバイスであり、ここから送られてくるセンサーの値を使ってワークフローを記述します:次にワークフローを進める中でセンサーの機器温度を何度も調べるのは効率が悪いため、「センサーの機器温度だけを取り出す」という処理を最初に行っておきます。テキストを解析することなく、一度取り出した機器温度の値を多くの処理の中でそのまま使うことができるようになるからです。いう名前を付けて返す、という関数処理を加えます。プロパティを参照することで機器温度を取得することができるようになります:次のブロックを追加します。書かれたボタンをクリックして追加します)。超えている(=警告)場合はルート1へ、40以下(=正常)の場合はルート2へ、処理を分岐するようにしています:次は分岐の正常処理を用意します。正常処理の場合は単純に画面に機器温度を出力するだけとします。タブに出力する)にします。機器温度が正常範囲内と判断された場合はこれだけです:次に分岐の警告処理を用意します。記録するようにします。ブロックの上側(ルート1)から線で結びます。ブロックをダブルクリックして編集状態にして、下図のような内容に書き換えます。いう文字列を付加するような処理を施しています:更に、この警告時の機器温度をデータベースに追加するためのブロックを追加します。ブロックから線で結びます。ブロックはデータを検索する処理で、検索結果を次のブロックに渡します。ブロックは単純なデータ追加処理です。ブロックをダブルクリックして編集状態にして、下図のような内容に書き換えます。エディタのキャンバスに必要なパーツは全て揃いました。いうデータベースは標準で存在しているわけではないので、このままデータを挿入しようとしてもエラーとなります。そのためこのデータベースを事前に作成しておきます。dotnsf-nodered)を開きます。データベースの管理画面が表示されます。いう名前のデータベースが作られているはずです。アドレスを指定します。Tempreture"(機器温度)と書かれた画面まで移動します。機器アプリのワークフローは完成です。実際に動かしてみましょう。機器の機器温度が上がった状態をシミュレートしてみます。格納する、というブロックも追加していました。データベースを更新すると、いくつかのデータが格納されていることを確認できます。データベースに格納された情報が一覧表示されます。この状態のままだと個別データが表示されないので、どれか1つ選んで右上の鉛筆マークをクリックしてみます:選択したデータの全情報が表示されます。エディタを使って実現してみました。機器からのセンサーデータを受け取って、特定の条件にもとづいてデータベース内に格納する、という処理が実現できました。2回に分けて小出しにしたつもりでしたが、いずれもブログエントリとしては大作になってしまいました。コーディングを行うような手続きはほとんどなく、画面のドラッグ&ドロップと属性値の設定程度でこのくらいはできてしまったことになります。この手軽感を多くの人に体験してほしいと思っています。エディタには今回紹介した以外にも色々な処理や格納、他サービスとの連携などがやはりコーディング処理を行うことなく実現できる便利なブロックが多く用意されています。使い方も今後紹介していこうと思っています。ブログ検索」ブログパーツは、サービスを終了しました。