記事 Toshihiko Minamoto · 2月 23, 2021 6m read

Java Business Host から PEX への移行

InterSystems IRIS 2020.1 および InterSystems IRIS for Health 2020.1 で PEX がリリースされ、Java Business Host を使うよりも優れたかたちで Java プログラムをプロダクション環境に取り込めるようになりました。 PEX は、相互運用性のコンポーネントを構築するための API をすべて提供するほか、Java と .NET の両方で使用できます。 Java Business Host は非推奨となり、今後のリリースで廃止される予定です。

PEX を使うメリット

  • デベロッパーはプロダクションのすべてのコンポーネントを、Java と .Net のどちらでも構築できる
  • コンポーネント間で一層複雑なメッセージ構造の受け渡しができる
  • シンプルな設定
  • 開発のワークフローがシンプルな上に、ObjectScript を使う必要がない

ここからは、既存の Java Business Host のコードを PEX に移行する方法に注目します。

概要

PEX で使用されるクラスとインターフェースは、Java Business Host (JBH) のものとは異なります。 本記事では、その相違点を要約して解説しますが、詳細は完全なドキュメントをご覧ください。

0
0 233
記事 Toshihiko Minamoto · 2月 22, 2021 4m read

皆さん、こんにちは。
他のシステムとファイル連携を行う場合、Cachéでは、Jobコマンドを使った常駐プロセスやタスクを作成し、特定のディレクトリにあるファイルを定期的に監視、データを取り込むといった機能を手作りされていたかと思います。
これにはファイルの監視や、常駐プロセスの監視、プロセスの制御(起動、停止)を行う機能を用意する必要がありましたが、IRISではInteroperability機能が使えますので、そのようなプログラムを省略することが可能です。

今回は、既にファイル読込処理を行うルーチンが存在し、ルーチン呼出時の引数にファイル名があるという前提で、その処理をInteroperability機能を使ってどのように呼び出すかについて説明したいと思います。

手順

作業手順は以下の通りとなります。

  1. ビジネスサービスクラスの作成
  2. OnProcessInput()メソッドの実装
  3. プロダクションの作成
  4. ビジネスサービスの登録
  5. プロダクションの起動

ビジネスサービスクラスの作成

スタジオを起動し、ファイル読込処理を行うルーチンが存在するネームスペースに接続します。

「ファイル」「新規作成」メニューをクリックします。

以下のダイアログボックスが表示されますので、「プロダクション」カテゴリをクリックし「ビジネスサービス」アイコンをクリック、「OK」ボタンをクリックします。

3
0 530
お知らせ Toshihiko Minamoto · 2月 19, 2021

開発者の皆さん、こんにちは。

スペシャリストレベル以上の方へ、グローバルマスターズの新たな🎁賞品が加わりました!

➡️ Raspberry Pi 4 8GB + InterSystems IRIS Community Image セットの予約注文

このセットには、Ubuntu 18.04 64 bit + Docker + InterSystems IRIS Community Editionが入った64GB MicroSD カードと Raspberry Pi 4 8GB、 紅白ケースが入っています。

 

0
0 89
InterSystems公式 Toshihiko Minamoto · 2月 18, 2021

InterSystems API Manager(IAM) バージョン1.5がリリースされました

 

以前のバージョンからアップグレードできるIAMコンテナはWRCソフトウェア配布サイトのComponents areaからダウンロードすることができます。

 

ビルド番号はIAM 1.5.0.9-4 です。

 

InterSystems API Manager 1.5 ではAPIトラフィックの管理や、環境とAPI利用者の統合がさらに簡単になりました。新機能は以下の通りです。

 

  • ユーザエクスペリエンスの改善
  • 新たな開発者ポータル
  • Kafka connectivityのサポート
  •  

    このリリースは、Kong Enterprise バージョン 1.5.0.9 をベースにしています。これまでのIAMリリースにはKong Enterpriseのホワイトラベルバージョンが入っていましたが、このリリースではホワイトラベルなしバージョンが入っています。この変更で、より頻繁にリリースすることができ、 Kongの提供するドキュメントやその他の資産を効果的に活用できるようになりました。

     

    IAM 1.5のドキュメントはこちらです。このドキュメントはIAM固有の部分のみカバーしています。

    0
    0 168
    記事 Toshihiko Minamoto · 2月 18, 2021 9m read

     古くなった MUMPS アプリケーションの新たな生命を吹き込みたいとお考えでしたら、以下にご紹介するステップを実行すれば、グローバルをクラスにマッピングし、美しいデータを Object や SQL に公開できます。

    今回ご紹介する例には、パート 1 ではカバーしなかった内容を 4 つないし 5 つ程度盛り込んでいます。 

    その後は親子マッピングの例を紹介して完結となります。それを修得したらマッピングはもう完璧でしょう。

     

    前回と同じ免責事項:  これらの記事を読んでもグローバルがよく理解できないという方は、WRC (Support@InterSystems.com) までメールでお問い合わせください。喜んでサポートさせていただきます。 

     

    グローバルをクラスにマッピングするステップ。

    1. グローバルデータが繰り返し使用されるパターンを特定する。
    2. 固有キーの構成を特定する。
    3. プロパティとそれぞれの型を特定する。
    4. クラス内のプロパティを定義する (変数の添え字をお忘れなく)。
    5. IdKey のインデックスを定義する。
    6. Storage Definition を以下の手順で定義する。
      1. 添え字を IdKey まで (IdKey を含む) 定義する。
      2. Data セクションを定義する。
      3. Row ID セクションには触れない。  デフォルトが 99% の割合で適切なので、これはシステムに任せます。
    0
    0 332
    お知らせ Toshihiko Minamoto · 2月 17, 2021

    皆さん、こんにちは!

    InterSystems のグローバルマスターズ・アドボケート・ハブがディベロッパーコミュニティ (DC) と緊密につながっていることは、皆さんご存知ではないでしょうか。 DC に何らかの貢献をされると、グローバルマスターズのポイントを獲得できます。 

    そこで、 グローバルマスターズでポイントを獲得するベストな方法について簡単なガイドを作成しました。

    2021/3/19: 投稿や翻訳に関するポイントが改定されましたので、修正しています。記事の投稿で得られるポイントはローンチ期間限定です。

    グローバルマスターズでポイントを獲得する方法

    開発者コミュニティへの記事の投稿

    400

    最初のコメント
    コメントごと

    300
    30

    最初に受け入れられた回答
    受け入れられた回答ごと
    5 / 10 / 25 / 50 回目の受け入れられた回答

    1000
    150
    4,000 / 8,000 / 20,000 / 40,000

    開発者コミュニティの記事を翻訳

    100

    1 / 5 / 10 / 25 / 50 回目の記事を投稿

    1,500 / 7,500 / 15,000 / 40 000 / 75 000

    1 / 5 / 10 / 25 / 50 回目の質問を投稿

    500 / 2,000 / 5,000 / 15,000 / 30,000

    OpenExhangeにアプリケーションを登録
    ZPMアプリのボーナスポイント
    1 / 5 / 10 / 25回目のアプリ登録

    800
    400
    1,000 / 10,000 / 25,000 / 75,000

    投稿した記事の閲覧数が 750以上 / 2,000 以上 / 5,000 以上 / 15,000 以上

    600 / 2,500 / 7,000 / 20,000

    開発者コミュニティの記事を読む
    ビデオを見る
    SNSで記事やビデオを共有

    10
    20
    40

    ベストプラクティスタグの付与された記事が1 / 2 / 3 / 4 / 5 件

    1,000 / 3,000 / 7,000 / 10,000 / 15,000

    Open Exchangeに登録したアプリが 50 / 100 / 250 / 500 / 1,000 回ダウンロード

    2,500 / 5,000 / 7,500 / 12,500 / 25,000

    InterSystems や InterSystems 製品 に関するレビュー記事を投稿

    2,000 ~ 3,000

    同僚を開発者コミュニティに招待する

    600

    Open Exchange に公開したアプリに関するビデオを作成する

    3,000

    *グローバルマスターズ・アドボケート・ハブへの登録後に掲載された記事・コメントのみ。

    0
    0 185
    記事 Toshihiko Minamoto · 2月 16, 2021 8m read

    グローバルをクラスにマッピングする技術 (1/3)

    グローバルをクラスにマッピングする技術 (1/3)

    古くなった MUMPS アプリケーションに新たな生命を吹き込みたいとお考えですか?  以下にご紹介するステップを実行すれば、既存のグローバルをクラスにマッピングし、美しいデータを Object や SQL に公開できます。

    本記事を含む合計 3 回の連載を通じてご紹介する簡単なステップを使えば、すべてのグローバル (特殊なものは除く) を Caché のクラスにマッピングできるようになります。  特殊なものについては、私が長年に渡って集めた様々な種類のマッピングを zip ファイルにまとめて提供いたします。  これは新しいデータを対象としたステップではありません。グローバルがないという方は、デフォルトのストレージをお使いください。

    グローバルデータについて理解できないという方は、Support@InterSystems.com までデータをお送りください。喜んでサポートさせていただきます。

    グローバルをクラスにマッピングするステップ。

    1. グローバルデータが繰り返し使用されるパターンを特定する。
    2. 固有キーの構成を特定する。
    3. プロパティとそれぞれの型を特定する。
    4. クラス内のプロパティを定義する (変数の添え字をお忘れなく)。
    5. IdKey のインデックスを定義する。
    1
    1 510
    記事 Toshihiko Minamoto · 2月 11, 2021 27m read

    InterSystems IRIS デプロイガイド - AWS CloudFormation テンプレート 

      注意: 本ガイド (特に前提条件のセクション) を理解するには、AWS に関する中級から上級レベルの知識が必要になります。 S3 バケット、EC2 インスタンスの IAM ロール、VPC、サブネットを作成する必要があります。 また、InterSystems バイナリへのアクセス (通常は WRC サイトからダウンロード可) および IRIS のライセンスキーも必要になります。

    0
    0 486
    記事 Toshihiko Minamoto · 2月 8, 2021 10m read

    これで 3 記事目になります (パート 1パート 2 をご覧ください) が、引き続き Caché データベースの内部構造をご紹介いたします。 今回は、興味深い内容をいくつかご紹介し、私の Caché Blocks Explorer プロジェクトを使って作業の生産性をアップさせる方法について説明します。

    0
    1 204
    記事 Toshihiko Minamoto · 2月 4, 2021 6m read

    開発者の皆さん、こんにちは!

    InterSystems ObjectScript でライブラリやツール、パッケージなどを開発していると、「このパッケージはどうすればターゲットマシンに展開できるのか?」という疑問がよく浮かびます。

    また、私たちは、既に別のライブラリがインストールされていることを想定したり、その特定のバージョンのことを考慮したりしながらパッケージを開発しています。

    JavaScript や Python などでコーディングを行うと、依存関係を管理しながらパッケージを展開するのに パッケージ管理システム が必要になります。

    これを踏まえ、 InterSystems ObjectScript Package Manager のリリースを発表したいと思います!

    0
    0 373
    記事 Toshihiko Minamoto · 2月 2, 2021 9m read

    この記事は Caché データベースの内部構造を説明したこちらの記事の続編です。 そちらの記事では、様々なブロックタイプ、それぞれのつながりやグローバルとの関係について説明しました。 純粋に理論を述べた記事でした。 ブロックツリーを視覚化するのに役立つプロジェクトを作成しましたので、この記事ではその仕組みを詳しく説明します。

    0
    0 344
    記事 Toshihiko Minamoto · 1月 28, 2021 4m read

    独自の組織データアーキテクチャを書き、InterSystems IRIS にマッピングする必要がある場合は、以下にご紹介するデータアーキテクチャダイアグラムおよび InterSystems IRIS ドキュメンテーションのリファレンスに記載されている内容を考慮してください。

     

    アーキテクチャマッピング

  • SQL データベース: https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=GSQL
  • 管理されるファイル: https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=AFL_mft および https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=SETEDIGuides
  • IoT ブローカー、イベント、センサー: https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=EMQTT
  • メッセージ: https://docs.intersystems.com/irislatestj/csp/docbook/Doc.View.cls?KEY=EMQS
  • 0
    0 241
    記事 Toshihiko Minamoto · 1月 26, 2021 7m read

    2019年 10月 17日

    Anton Umnikov
    InterSystems シニアクラウドソリューションアーキテクト
    AWS CSAA、GCP CACE

     

    AWS Glue は、完全に管理された ETL (抽出、変換、読み込み) サービスです。データの分類、クリーンアップ、強化、そして様々なデータストア間でデータを確実に移動させるという作業を簡単にかつコスト効率の良いかたちで行えるようにするものです。

    InterSystems IRIS の場合、AWS Glue を使用すれば、大規模なデータをクラウドとオンプレミスのデータソースの両方から IRIS に移動させることができます。 ここで考えられるデータソースは、オンプレミスのデータベース、CSV、JSON、S3 バケットに保管されている Parquet ファイルならびに Avro ファイル、AWS Redshift や Aurora といったクラウドネイティブのデータベースを含みますが、これらに限定されません。

    本記事では、読者の皆さんが、AWS Glue について少なくとも AWS Glue の入門チュートリアル を完了している程度の基本的な知識をお持ちであるという前提で話を進めていきます。

    0
    0 767
    記事 Toshihiko Minamoto · 1月 21, 2021 9m read

    InterSystems Caché のグローバルは、デベロッパーにとって非常に便利な機能を提供します。 しかし、グローバルが高速な上に効率が良いのはなぜでしょう?

    理論

    基本的に、Caché データベースとは、データベースと同じ名前を持ち、CACHE.DAT ファイルを含んだカタログのことです。 Unix システムでは、このデータベースを普通のディスクパーティションにすることもできます。

    Caché のデータはすべてブロックとして保管され、バランスド B* ツリーとして整理されます。 基本的にすべてのグローバルがツリーに保管されると考えると、グローバルのサブスクリプトはツリーの枝を意味する一方で、グローバルのサブスクリプトの値はツリーの葉として保管されると言えます。 バランスド B* ツリーと通常の B ツリーの違いは、前者の枝には $Order$Query の両関数を使ってサブスクリプト (この記事ではグローバル) のイテレーションをスピーディに実行するのに役立つ適切なリンクがあり、ツリーの幹に戻る必要がないという点です。 

    デフォルトで、データベースファイルの各ブロックのサイズは 8,192 バイトに固定されています。 既存のデータベースのブロックサイズは変更できません。

    0
    1 617
    記事 Toshihiko Minamoto · 1月 19, 2021 6m read

    みなさん、こんにちは。

    前回の記事では1個のBME280で気象データを取得したのですが、気温のブレが大きかったので基板から
    ただ、基板につけたBME280のはんだを外すのが大変なので、別のBME280を外付けすることにしました。
    当初、ESP8266の別のIO端子と接続することを考えていたのですが、Wire.hが複数のバスに対応していない
    ため、以下の配線図のようにカスケード接続することにしました。

    カスケード接続するということは、外付けのBME280でI2Cのアドレスを変えないといけません。幸いBME280は0x76と0x77の切り替えができるようです。
    こちらの資料を見ると、基板上に3つの端子があり、左2つがつながると0x76,右2つがつながると0x77になるそうで、左2つの端子はつながっているので、ナイフで切断しなさいとなっていました。
    で今回購入したセンサーを見ると、端子はあるけど左2つの端子の間はつながっていません。よく見るとセンサーの左下の端子の左側がつながっており、これで左2つの端子がショートしていることになります。
    なので、センサーの左下端子の左側をカッターで切断しました。ルーペが無かったので、カミさんのスマホスタンドを借りて、スマホのカメラで拡大しながら、慎重に切断、テスターで抵抗値を確認.

    0
    0 1031
    記事 Toshihiko Minamoto · 1月 19, 2021 5m read

    皆さん、こんにちは。
    寒い日が続きますね。
    前々回の記事でDHT11とBMP180を使って作成したのですが、実際に外に置いて計測してみると、氷点下の場合、12~13℃となってしまい、正しく計測できませんでした。(先にデータシートを確認しておけばよかったのですが、DHT11、BMP180共に0℃以上になっていました...)
    そこで代わりのセンサーが無いか探していたところ、BME280というセンサーが見つかりました。-40℃から85℃まで測れ、BMP180と同じBosch製で値段も数百円。

    センサーモジュールはBMP280と共用の基板で、どちらなのか印がなく、湿度が測れるのかどうかちょっと心配していましたが、注文通りBME280だったらしく、湿度も測れました。
     配線図は以下のようになります。BMP180と同様にI2Cで接続しています。また、今回は別のESP8266とユニバーサル基板を使って配線をやり直すついでに電源をUSB給電から3Vの電池にしています。

    前回のようにリード線でセンサーとマイコンを離すのが扱いづらかったので、センサーモジュールをユニバーサル基板上にはんだ付けしました。その上でセンサーが保存容器の外に出るようにケースに切り込みを入れてみました。
    プログラムは以下の通りです。I2C通信に必要な<Wire.

    0
    0 879
    記事 Toshihiko Minamoto · 1月 19, 2021 7m read

    デバッガーは使わないという人はいますか? 最後に使ったのはいつだったか、記憶にないですね。 それは、嫌いだからではなくて、単に必要ないからなんです。 その一番の理由は、ある種の開発手法を使っているおかげで、バグの発生を少なく抑えたり、単体テストのレベルで発見したり、バグをとても簡単に追跡できたりするからです。

    以下にいくつかヒントを紹介します...

    1. 独自の COS チートシートを作成する。

    これは主に COS の初心者が対象になります。 バグを引き起こす大きな原因の一つとして、特定のコマンドや関数の動作を理解していないということがあります。 時間をかけて言語を学び、そのすべてのバリエーションを試すことをおすすめします。 それから独自のチートシートを作成することで、知識が固まり、さっと使えるレビューツールも出来上がります。 生産性アップにつながるほか、避けられるはずのバグをうっかり書いてしまう頻度を確実に減らすことができます。

    2. スタジオで「変数の追跡」をオンにする

    まだオンにしていない方は、スタジオの 「 ツール 」「 オプション 」メニューにて、「 環境」フォルダの「クラス」と順に移動し、「変数を追跡する」のチェックボックスにチェックを入れてください。 宣言時に初期化されていない変数を使用する場合は、その変数の下に波線が引かれます。

    0
    0 182
    記事 Toshihiko Minamoto · 1月 14, 2021 6m read

    前回のつづきとして、いよいよIRISのインターオペラビリティ機能を使ってMQTTブローカーからメッセージを受信し、データベースに格納する方法について解説したいと思います。IRISのインターオペラビリティ機能につきましてはこちらをご参照ください。

    ネームスペース作成

    インストール時に作成されているUSERネームスペースはInteroperabilityに必要なライブラリを参照するためのマッピングができていません。
    そのため、新たにネームスペースを作成する必要があります。
    作成方法は、以下の通りです。

    1. システム管理ポータルを起動し、「システム管理」「構成」「システム構成」「ネームスペース」をクリックします。
    2. 以下のようなネームスペース一覧画面が表示されますので、上にある「新規ネームスペース作成」ボタンをクリックします。 
    3. 以下のような新規ネームスペース作成画面が表示されますので、「ネームスペース名」欄にネームスペースの名称を入力し、「グローバルのための既存のデータベースを選択」欄、「ルーチンのための既存のデータベースを選択」欄で共にデータベース「USER」を選択します。
      「相互運用プロダクション用にネームスペースを有効化」欄にチェックが付いていることを確認の上、画面上の「保存」ボタンをクリックします。
    0
    0 568
    記事 Toshihiko Minamoto · 1月 13, 2021 2m read

    デベロッパーの皆さん、こんにちは! InterSystems Package Manager (ZPM) は、素晴らしいツールですが、インストールせずにすぐ使用できたら、さらに便利です。

    それを実現する方法はいくつかあります。以下に dockerfile を使って ZPM をビルドした IRIS コンテナを用意する方法をご紹介します。

    リポジトリを作成し、そのdockerfile に数行のコードを記述しました。これを使えば、最新バージョンの ZPM をダウンロードし、インストールできます。 

    IRIS コミュニティエディション用のあなたの dockerfile にこれらのコマンドを追加すれば、ZPM がインストールされ、使用できるようになります。

    最新の ZPM クライアントをダウンロードするコマンドは以下の通り。

    0
    0 261
    記事 Toshihiko Minamoto · 1月 11, 2021 4m read

    前回の記事では、データの変更を簡単に記録できる方法をお見せしました。 今回は、監査ログが記録されるデータ構造と監査データを記録する「Audit Abstract クラス」を変更しました。

    また、データ構造は親構造と子構造に変更し、それぞれに「トランザクション」とそのトランザクションで「その値によって変更されたフィールド」を記録するテーブルが 2 つ設けられます。

    新しいデータモデルをご覧ください。

    「監査クラス」から変更したコードをご覧ください。

    Class Sample.AuditBase [ Abstract ]
    {
    Trigger SaveAuditAfter [ CodeMode = objectgenerator, Event = INSERT/UPDATE, Foreach = row/object, Order = 99999, Time = AFTER ]
    {
              #dim %compiledclass As %Dictionary.CompiledClass
              #dim tProperty As %Dictionary.CompiledProperty
              #dim tAudit As Sample.Audit
              Do %code.
    0
    0 192
    記事 Toshihiko Minamoto · 1月 6, 2021 25m read

    データ分析のためにInterSystemsで何ができるかを確認したいとしましょう。 理論を学んだので今度は実践したいと考えた時、InterSystems には、役に立つ実例をいくつか取り入れた Samples BI というプロジェクトが用意されています。 まずは、README ファイルを開き、Docker に関する内容はすべてスキップして、手順に従ってインストールしてゆきます。 仮想インスタンスを起動し、そこに IRIS をインストールしたら、手順に従って Samples BI をインストールします。そして綺麗なチャートやテーブルを見せて上司に感心してもらいましょう。 ここまでは順調ですね。 

    必然的に、ここで変更を加えることになります。

    0
    0 463
    お知らせ Toshihiko Minamoto · 1月 6, 2021

    コミュニティの皆さん、こんにちは! 

    Open Exchange にアプリケーションが掲載されるたびに、グローバルマスターズのポイントを獲得できるのはご存知でしたでしょうか。 つい最近、ZPM アプリケーションに対するボーナスポイントを導入いたしました。 これで各 ZPM アプリケーションにつき 400 ポイントをゲットできるようになりました! ポイントは自動的に調整されます。** **
    ポイントと利用可能なリワードについては、グローバルマスターズでご確認ください。今すぐアクセスしましょう!

    0
    0 126
    記事 Toshihiko Minamoto · 1月 5, 2021 9m read

    はじめに

    多くのアプリケーションに共通する要件は、データベース内のデータ変更のログ記録です。どのデータが変更されたか、誰がいつ変更したかをログに記録する必要があります(監査ログ)。 このような質問について書かれた記事は多く存在し、Caché で行う方法の切り口もさまざまです。

    そこで、データ変更を追跡して記録するためのフレームワークを実装しやすくする仕組みを説明することにします。 これは、永続クラスが「監査抽象クラス」(Sample.AuditBase)から継承すると「objectgenarator」メソッドを介してトリガーを作成する仕組みです。 永続クラスは Sample.AuditBase から継承されるため、永続クラスをコンパイルすると、変更を監査するためのトリガーが自動的に生成されます。


    監査クラス  

    次は、変更が記録されるクラスです。

      Class Sample.
    0
    0 299
    記事 Toshihiko Minamoto · 12月 30, 2020 5m read

    皆さん、こんにちは

    前回のつづきとしてESP8266からMQTTブローカーに接続し、データを送信する部分の内容ついて説明したいと思います。

    今回は温度湿度センサーのDHT11と気圧センサーのBME180を使って気温、湿度、気圧を計測し、1分に1回、MQTTブローカーに送信しています。

    ハードウェア

    回路図は以下のようにDHT11のDATAピンはGPIO、BMP180のSDA,SCLピンはそれぞれGPIO2,GPIO5に接続しました。
    電源は紆余曲折の末、単純にmicro USBから供給し、NodeMCUのボードから出力されている3.3Vをそれぞれのセンサーで使用しています。

     

    今回は外気温を測りたかったので、ケースに入れた方が良いと思いましたが、ブレッドボードだと見合った箱がありませんでした。
    そこで、手元にあったユニバーサル基板にESP8266をはんだ付けし、100均で購入した食品保存用の箱に入れてみました。

     

    箱からUSB電源の接続やセンサーとリード線を出す必要がありますので、ニッパで適当に欠きとっています。
    センサーは各ピンとリード線をはんだ付けし、熱収縮チューブで覆っています。BMP180の表面はそのままですが...

     

    ソフトウェア

    0
    0 2366
    お知らせ Toshihiko Minamoto · 12月 27, 2020

    コミュニティの皆さん、こんにちは!  
    もうご存知かと思いますが、グローバルマスターズでは、InterSystems IRIS、IRIS for Health、Interoperability (Ensemble)、IRIS Analytics (DeepSee)、Caché、HealthShare など、InterSystems のどの製品に関しても InterSystems のエキスパートによるコンサルテーションをご利用いただけます

    そして、皆さまに嬉しいお知らせがあります。このコンサルテーションが 英語、ポルトガル語、ロシア語、ドイツ語、フランス語、イタリア語、スペイン語、日本語、中国語でご利用いただけるようになりました。  さらに、 時間も 1 時間半に拡大され、お好きなトピックについて細かくご相談いただけるようになりました。

     

    0
    0 129
    記事 Toshihiko Minamoto · 12月 25, 2020 8m read

    InterSystems は自社が提供する InterSystems IRIS の Dockerイメージについて、Linux 環境での使用のみをサポートしています。 Docker for Windows は Linux プラットフォームのようにコンテナをネイティブプロセスとして実行するのではなく、Windows の仮想化機能である Hyper-V で実行される Linux VM を作成してコンテナをホストします。 このような追加レイヤーによって複雑度が増しているため、InterSystems は現時点で Docker for Windows をサポートすることができません。

    ただし、テストやその他の特殊な目的のために InterSystems の IRIS ベースのコンテナを Docker for Windows 環境で実行する必要があることは私たちも理解しています。 この記事では、InterSystems が提供するコンテナイメージの使用に関して InterSystems が認識している Docker for Windows と Docker for Linux の違いについて説明します。 その他にも予期しない問題が発生する可能性はあります。

    0
    0 687
    記事 Toshihiko Minamoto · 12月 24, 2020 6m read

    皆さんこんにちは。

    IRIS 2020.1からMQTTアダプタが新たに追加されました。MQTTはPublish/Subscribe型のシンプルで軽量なメッセージングプロトコルです。帯域が低いネットワーク環境やArduinoやRaspberry PIといったワンボードマイコンやシングルボードコンピュータなどでも動作できます。
    今回はクラウド上のUbuntuサーバにIRISをインストールし、MQTTアダプタを使いEsp8266というマイコンで取得した温度、湿度、気圧データをIRIS上のデータベースに登録する方法について説明したいと思います。

    アーキテクチャ

    今回のアーキテクチャは以下の通りです。

    データを送受信するマイコンやアプリケーションにMQTTクライアントを組み込み、MQTTクライアントがMQTTブローカーというメッセージを転送するソフトウェアに接続します。

    同じMQTTブローカーにつながっているMQTTクライアントにてメッセージを送信したい場合はPublishメッセージを使用し、メッセージと共にトピックと呼ばれるメッセージの種類を表す文字列を送信します。情報を受信したい場合はSubscribeメソッドを使用し、受信したいトピックを指定します。

    IRISのインストール

    今回、Ubuntu版のIRIS 2020.1 community editionをインストールしています。

    0
    0 1735
    記事 Toshihiko Minamoto · 12月 23, 2020 3m read

    新しい動的 SQL クラス(%SQL.Statement および %StatementResult)のパフォーマンスは %ResultSet より優れてはいますが、%ResultSet の使用方法をせっかく学習したので、しばらくの間新しい方を使用せずにいましたが、 やっとチートシートを作ったので、新しいコードを書いたり古いコードを書き直す際に役立てています。 皆さんのお役に立てればいいなと思っています。

    次に示すのは、私のチートシートの詳細版です。

    1 %ResultSet::%New() %SQL.Statement::%New()
    2    Prepare() インスタンスメソッドを呼び出す
    3    前のステップがステータスを返すので、それを確認
    4    Execute() インスタンスメソッドを呼び出す
    5    前のステップがステータスを返すので、それを確認
    6
    7
       Get() または Data() インスタンスメソッドを呼び出して、列番号で列を取得

     

    そして、これが私が実際に使用している簡易版チートシートです。

    1
    2
    3    ステータスを確認
    0
    0 256
    記事 Toshihiko Minamoto · 12月 22, 2020 13m read

    HealthShare の理想的な Apache HTTPD Web サーバー構成に関するお問い合わせをよくいただいています。 この記事では、真っ先に推奨される HealthShare 製品の Web サーバー構成について概要を説明します。

    何よりもまず第一に、Apache HTTPD バージョン 2.4.x(64ビット)を使用することをお勧めします。 2.2.x のような旧バージョンも使用できますが、HealthShare のパフォーマンスとスケーラビリティを確保するにはバージョン 2.2 はお勧めできません。

    0
    0 1351
    記事 Toshihiko Minamoto · 12月 21, 2020 9m read

    $LIST のフォーマットと%DynamicArray、%DynamicObject クラス

    IRIS には、様々なデータ値を含むシーケンスを作成する方法がいくつかあります (以前は Cache にもありました)。  長年に渡り使用されているデータシーケンスの 1 つに $LIST の文字列があります。  より最近のデータシーケンスには %DynamicArray クラスと %DynamicObject クラスがあり、両者ともに JSON の文字列表現に対応する IRIS サポートの一部となっています。  これら 2 つのシーケンスにはそれぞれ非常に異なるトレードオフがあります。

    $LIST の文字列形式

    $LIST 形式は、かつてメモリアドレスのスペースが小さいだけでなく、ディスクドライブも小さく、読み取り速度が遅かった時代に考案されました。  $LIST の形式は、複数の異なるデータ型で構成されるシーケンスをバイト数を可能な限り抑えながら 8 ビットの一般的な文字列にパッキングするためにデザインされました。

    $LIST のシーケンスは、ObjectScript の $LISTBUILD 関数を使って作成します。 

    $LIST の文字列の最も重要な機能は、データを 8 ビットの値で構成される最小のシーケンスにぎっしりパッキングできるという点です。

    0
    0 1027