記事 Toshihiko Minamoto · 3月 25, 2021 6m read

HealthShare HealthConnect と Information Exchange のバージョン 15.03 では、C-CDA 2.1 から SDA へのインポートトランスフォーメーションをサポートしています。 こういったプログラムのビルドは、インストレーションパッケージの  csp/xslt/SDA3 ディレクトリにあります。 インポートトランスフォーメーションの概要は、Overview of Health Connect の「CDA Documents and XSL Transforms in HealthShare」をご覧ください。

C-CDA 2.1 サポートに関連するインポート機能の強化の 1 つとして、 C-CDA ファイルをインポートする前に前処理を実行できる機能が追加されました

前処理サポートの導入により、トランスフォーメーションは大幅に簡素化され、その合計処理時間も削減されます。 考えられるユースケースは以下の 2 つです。

  • 要素がない、またはその形式が正しくない
  • 日付スタンプの変換

(1) ノード値の中の特定の句読点がインポートの実行前に取り除かれる、(2) 特定の状況において、すべての effectiveTime 要素にタイムスタンプが取り込まれた high 子ノードを持たせる、という 2 点を確実に行う方法として以下のサンプルと手順をご

0
0 198
記事 Toshihiko Minamoto · 3月 22, 2021 5m read

Caché 2013.1 より、InterSystems は特殊な値を持つフィールドが使われるクエリプランのセレクションを改善する目的で Outlier Selectivity (外れ値の選択性) を導入しました。

この記事では、「Project」テーブルを例に使い、Outlier Selectivity の概要やそれが SQL のパフォーマンスを向上させる仕組み、またクエリを書く際の注意点などについて解説したいと思います。

Selectivity (選択性)

まずは、Selectivity についてさっと説明します。 Selectivity とは、テーブル内の 1 つの列の中にある値に関するメタ情報のことです。 データが典型的なかたちで分布されていると想定した場合、「このテーブル内のこの列に特定の値を持つすべての行を要求するとしたら、通常取得できるのはテーブル内のどの程度の割合であろうか?」という疑問の答えとなる情報です。

Owener と Status という 2 つのフィールドを持つ「Project」という架空のテーブルについて考えます。 Owner にはプロジェクトを担当する従業員が入り、Status には PREP、OPEN、REVIEW、COMPLETE という 4 つのオプションの 1 つが入ります。 Tune Table を実行すると、クラスのストレージに Sele

0
0 186
お知らせ Toshihiko Minamoto · 3月 18, 2021

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

この度、開発者コミュニティでの投稿や翻訳のポイントが2倍に引き揚げられました! 2021年3月18日以降、記事や質問の投稿で得られるポイントは以下の通りとなります。

✅ 200 ポイント(英語)
✅ 400 ポイント (スペイン語、ポルトガル語、中国語、日本語)


✅ 100 ポイント(翻訳記事の投稿)

また、一定数の記事やコメントを投稿すると、まとまったポイントがもらえることをご存知でしょうか?こちらをチェックしてください。

0
0 139
記事 Toshihiko Minamoto · 3月 17, 2021 31m read

この記事では、従来のIRISミラーリング構成の代わりに、Kubernetesの Deploymentと分散永続ストレージを使って高可用性IRIS構成を構築します。 このデプロイでは、ノード、ストレージ、アベイラビリティーゾーンといったインフラストラクチャ関連の障害に耐えることが可能です。 以下に説明する方法を使用することで、RTOがわずかに延長されますが、デプロイの複雑さが大幅に軽減されます。

0
0 1255
記事 Toshihiko Minamoto · 3月 15, 2021 16m read

InterSystems IRIS では、情報を格納する「グローバル」というユニークなデータ構造をサポートしています。 基本的に、グローバルとは、マルチレベルのインデックスを持つ永続配列であり、トランザクションの実行やツリー構造のスピーディなトラバーサルといった機能が備えられているほか、ObjectScript として知られるプログラミング言語にも対応しています。

ここから先、少なくともコードサンプルについては、グローバルの基礎を理解されているという想定のもとに話しを進めていきます。

グローバルはデータを保存するための魔法の剣です パート1
グローバルはデータを保存するための魔法の剣ですパート2 - ツリー
グローバルはデータを保存するための魔法の剣です パート3 - 疎な配列

グローバルは、普通のテーブルとは全く異なる構造でデータを格納し、OSI モデルの下位層で動作します。 それでは、グローバルを使ったトランザクションとはいかなるもので、どのような特性が見られるのでしょうか。

リレーショナルデータベースの理論では、ACID テスト (Wikipedia で ACID を参照する) に合格するトランザクションこそが、適切に実装されたトランザクションとされています。

  • 不可分性: トランザクションで発生する変更内容がすべて記録されるか、そのいずれも記録されない。 Wikiped


0
0 1007
お知らせ Toshihiko Minamoto · 3月 13, 2021

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

最近、インターシステムズ開発者コミュニティにより貢献したいという要望が多く寄せられます。

やり方は簡単です。

1. 質問に答える

開発者コミュニティには多くの 回答のない質問や ベストアンサーのない質問 があります。ぜひ、あなたの知識をシェアして他のメンバーを助けてあげてください。

2. 記事の投稿に貢献する

インターシステムズの技術を使ったあなたの経験をぜひ記事に書いてください。ソリューションや開発時のノウハウ、デバッグ時のTipsやトリック、システム構築、その他、健全な開発をするためのその他のアプローチなど、何でも構いません。

こちらには、コミュニティにとって有益となる記事の例がたくさんあり、各国の言語に翻訳されています。

3. Open Exchangeのアプリケーションに貢献する

あなたのライブラリやソリューション、ツールをGithubやGitlabのリポジトリを使って Open Exchange でシェアしてください。

0
0 230
記事 Toshihiko Minamoto · 3月 10, 2021 9m read

デベロッパーの皆さん、こんにちは!

最近、当社は InterSystems Package Manager (ZPM) をリリースしました。 ZPM を開発した理由の 1 つは、ソリューションをパッケージ化して ZPM レジストリに提出することにより、そのデプロイを「install xxx package」のようなコマンドを実行するだけの単純な作業にするためです。

これを行うには、InterSystems IRIS パッケージの中身を説明する module.xml ファイルをリポジトリに導入する必要があります。

この記事では、module.xml ファイルの異なる構成要素を説明し、独自のファイルを作成する方法をご紹介します。

まずは、samples-objectscript パッケージから始めます。以下のコマンドを実行すれば、IRIS に ObjectScript のサンプルアプリケーションがインストールされます。

zpm: USER>install samples-objectscript

おそらく、これほどシンプルなパッケージはないと思います。以下は、パッケージの中身を説明する module.xml です。


<Export generator="Cache" version="25">
  <Document name="samples-objectscript.ZPM">
    <Module>
      <Name>samples-objectscript</Name>
      <Version>1.0.0</Version>
      <Packaging>module</Packaging>
      <SourcesRoot>src</SourcesRoot>
      <Resource Name="ObjectScript.PKG"/>
    </Module>
  </Document>
</Export>
0
0 263
記事 Toshihiko Minamoto · 3月 4, 2021 10m read

マッピングの例

三連載で 4 記事目を書いてしまったら、これまでのハイライトとして 5 記事目を書かないわけにはいかないでしょう!

注意:  何年か前に Dan Shusman 氏が私に「グローパルのマッピングは芸術だ」と言いました。  そのやり方に正解も不正解もありません。  どのようなマッピングを行うかは、データをどう解釈するかで決まります。  例のごとく、最終的な結論を出す方法は 1 つに限られません。  ここでご紹介する例の中には、同じ型のデータを異なる方法でマッピングする例がいくつかあります。

この記事の最後には、私が長年お客様のために書いてきたマッピングの例をまとめた zip ファイルをご用意しています。  過去 4 つの記事で触れた内容をまとめたハイライトとして、いくつか例を挙げていきたいと思います。  この記事は単なるハイライトですので、過去 4 記事ほどの詳細はカバーいたしません。  不明な点があれば、遠慮なくご連絡ください。もっと詳しく説明させていただきます。

Row ID Spec: クラス例:  Mapping.RowIdSpec.xml

これについては、過去の記事で何度か断言していますが、 これを定義する必要があるのは、添え字の式が単純なフィールドではない場合に限ります。  ご紹介した例では、添え字に格納された値を 100 で乗

スマイル

0
0 216
記事 Toshihiko Minamoto · 3月 1, 2021 11m read

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

三連載のはずが 4 記事目に突入してしまいました。『銀河ヒッチハイク・ガイド』のファンという方はいませんか?

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

上の内容に馴染みが無い方は、以下の記事を初めからお読みください。

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

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

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

この記事は Joel、あなたのために書きます!  前回の例で定義した親子関係を土台に、今度は孫クラスを作成し、^ParentChild グローバルに追加された季節情報を処理したいと思います。

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

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

  1. グローバルデータが繰り返し使用されるパターンを特定する。
  2. 固有キーの構成を特定する。
  3. プロパティとそれぞれの型を特定する。
  4. クラス内の


0
0 233
記事 Toshihiko Minamoto · 3月 1, 2021 6m read

開発者の皆さん
こんにちは。
Windows共有しているリモートサーバに出力されたファイルでデータ連携する際、セキュリティ上、資格情報が必要となるケースが良くあるかと思います。いままでCachéで連携していた時には%ZSTARTルーチンや常駐プロセスのルーチンにて「net useコマンド」を実行されていたかと思いますが、IRISではInteroperability機能が使用できますので、前回の記事で作成したビジネスサービスクラスを元に、資格情報を使ってWindows共有フォルダにアクセスできる機能を追加したいと思います。

仕組み

ビジネスサービスが起動、停止する際に呼び出されるOnInit()、OnTearDown()メソッドにnet useコマンドを埋め込み、指定されている資格情報を使ってnet useコマンドで共有フォルダへの接続、切断を行います。

認証情報設定パラメータ追加

ビジネスサービスの設定画面で認証情報を選択できるよう、以下のようにCredentialsプロパティ、SETTINGSパラメータをTest.BS.ImportMasterクラスに設定します。

/// 共有アクセス用CredentialProperty Credentials As %String;
///  ビジネスサービスにてCredentialを選択させるUIを指定Parameter


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

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

上の内容に馴染みが無い方は、以下の記事を初めからお読みください。

グローバルをマッピングする技術 1

グローバルをマッピングする技術 2

この記事の例では、典型的な親子構造をマッピングする方法をお見せします。

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

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

  1. グローバルデータが繰り返し使用されるパターンを特定する。
  2. 固有キーの構成を特定する。
  3. プロパティとそれぞれの型を特定する。
  4. クラス内のプロパティを定義する (変数の添え字をお忘れなく)。
  5. IdKey のインデックスを定義する。
  6. Storage Definition を以下の手順で定義する。
    1. 添え字を IdKey まで (IdKey を含む) 定義する。
    2. Data セクションを定義する。
    3. Row ID セクションには触れない。  デフォルトが 9



0
0 251
記事 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 221
記事 Toshihiko Minamoto · 2月 22, 2021 4m read

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

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

手順

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

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

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

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

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

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




smiley

3
0 506
お知らせ 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 86
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 160
    記事 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 312
    お知らせ Toshihiko Minamoto · 2月 17, 2021

    皆さん、こんにちは!

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

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

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

    <tr style="height:19.85pt">
      <td style="border:1.5pt double #a5a5a5; width:323.05pt; padding:1pt; height:19.85pt" width="431">
        開発者コミュニティへの記事の投稿
      </td>
      
      <td style="border:1.5pt double #a5a5a5; width:274.15pt; padding:1pt; height:19.85pt" width="366">
        <p style="text-align:right; margin-right:14px"><strong>400<sup>※</sup></strong></p>
      </td>
    </tr>
    
    <tr style="height:19.85pt">
      <td style="border:1.5pt double #a5a5a5; width:323.05pt; background-color:#cfe2f3; padding:1pt; height:19.85pt; background-position:initial initial; background-repeat:initial initial" width="431">
        最初のコメント<br />コメントごと
      </td>
      
      <td style="border:1.5pt double #a5a5a5; width:274.15pt; background-color:#cfe2f3; padding:1pt; height:19.85pt; background-position:initial initial; background-repeat:initial initial" width="366">
        <p style="text-align:right; margin-right:14px">300<br />30</p>
      </td>
    </tr>
    
    <tr style="height:19.85pt">
      <td style="border:1.5pt double #a5a5a5; width:323.05pt; padding:1pt; height:19.85pt" width="431">
        最初に受け入れられた回答<br />受け入れられた回答ごと<br />5 / 10 / 25 / 50 回目の受け入れられた回答
      </td>
      
      <td style="border:1.5pt double #a5a5a5; width:274.15pt; padding:1pt; height:19.85pt" width="366">
        <p style="text-align:right; margin-right:14px">1000<br />150<br />4,000 / 8,000 / 20,000 / 40,000</p>
      </td>
    </tr>
    
    <tr style="height:19.85pt">
      <td style="border:1.5pt double #a5a5a5; width:323.05pt; background-color:#cfe2f3; padding:1pt; height:19.85pt; background-position:initial initial; background-repeat:initial initial" width="431">
        開発者コミュニティの記事を翻訳
      </td>
      
      <td style="border:1.5pt double #a5a5a5; width:274.15pt; background-color:#cfe2f3; padding:1pt; height:19.85pt; background-position:initial initial; background-repeat:initial initial" width="366">
        <p style="text-align:right; margin-right:14px"><strong>100</strong></p>
      </td>
    </tr>
    
    <tr style="height:19.85pt">
      <td style="border:1.5pt double #a5a5a5; width:323.05pt; padding:1pt; height:19.85pt" width="431">
        1 / 5 / 10 / 25 / 50 回目の記事を投稿
      </td>
      
      <td style="border:1.5pt double #a5a5a5; width:274.15pt; padding:1pt; height:19.85pt" width="366">
        <p style="text-align:right; margin-right:14px">1,500 / 7,500 / 15,000 / 40 000 / 75 000</p>
      </td>
    </tr>
    
    <tr style="height:19.85pt">
      <td style="border:1.5pt double #a5a5a5; width:323.05pt; background-color:#cfe2f3; padding:1pt; height:19.85pt; background-position:initial initial; background-repeat:initial initial" width="431">
         1 / 5 / 10 / 25 / 50 回目の質問を投稿
      </td>
      
      <td style="border:1.5pt double #a5a5a5; width:274.15pt; background-color:#cfe2f3; padding:1pt; height:19.85pt; background-position:initial initial; background-repeat:initial initial" width="366">
       <p style="text-align:right; margin-right:14px">500 / 2,000 / 5,000 / 15,000 / 30,000</p>
      </td>
    </tr>
    
    <tr style="height:19.85pt">
      <td style="border:1.5pt double #a5a5a5; width:323.05pt; padding:1pt; height:19.85pt" width="431">
        OpenExhangeにアプリケーションを登録<br />ZPMアプリのボーナスポイント<br />1 / 5 / 10 / 25回目のアプリ登録
      </td>
      
      <td style="border:1.5pt double #a5a5a5; width:274.15pt; padding:1pt; height:19.85pt" width="366">
        <p style="text-align:right; margin-right:14px">800<br />400<br />1,000 / 10,000 / 25,000 / 75,000</p>
      </td>
    </tr>
    
    <tr style="height:19.85pt">
      <td style="border:1.5pt double #a5a5a5; width:323.05pt; background-color:#cfe2f3; padding:1pt; height:19.85pt; background-position:initial initial; background-repeat:initial initial" width="431">
        投稿した記事の閲覧数が 750以上 / 2,000 以上 / 5,000 以上 / 15,000 以上
      </td>
      
      <td style="border:1.5pt double #a5a5a5; width:274.15pt; background-color:#cfe2f3; padding:1pt; height:19.85pt; background-position:initial initial; background-repeat:initial initial" width="366">
        <p style="text-align:right; margin-right:14px">600 / 2,500 / 7,000 / 20,000 </p>
      </td>
    </tr>
    
    <tr style="height:19.85pt">
      <td style="border:1.5pt double #a5a5a5; width:323.05pt; padding:1pt; height:19.85pt" width="431">
        開発者コミュニティの記事を読む<br />ビデオを見る<br />SNSで記事やビデオを共有
      </td>
      
      <td style="border:1.5pt double #a5a5a5; width:274.15pt; padding:1pt; height:19.85pt" width="366">
       <p style="text-align:right; margin-right:14px"> 10<br />20<br />40</p>
      </td>
    </tr>
    
    <tr style="height:19.85pt">
      <td style="border:1.5pt double #a5a5a5; width:323.05pt; background-color:#cfe2f3; padding:1pt; height:19.85pt; background-position:initial initial; background-repeat:initial initial" width="431">
       ベストプラクティスタグの付与された記事が1 / 2 / 3 / 4 / 5 件
      </td>
      
      <td style="border:1.5pt double #a5a5a5; width:274.15pt; background-color:#cfe2f3; padding:1pt; height:19.85pt; background-position:initial initial; background-repeat:initial initial" width="366">
       <p style="text-align:right; margin-right:14px"> 1,000 / 3,000 / 7,000 / 10,000 / 15,000</p>
      </td>
    </tr>
    
    <tr style="height:19.85pt">
      <td style="border:1.5pt double #a5a5a5; width:323.05pt; padding:1pt; height:19.85pt" width="431">
        Open Exchangeに登録したアプリが 50 / 100 / 250 / 500 / 1,000 回ダウンロード
      </td>
      
      <td style="border:1.5pt double #a5a5a5; width:274.15pt; padding:1pt; height:19.85pt" width="366">
        <p style="text-align:right; margin-right:14px">2,500 / 5,000 / 7,500 / 12,500 / 25,000</p>
      </td>
    </tr>
    
    <tr style="height:19.85pt">
      <td style="border:1.5pt double #a5a5a5; width:323.05pt; background-color:#cfe2f3; padding:1pt; height:19.85pt; background-position:initial initial; background-repeat:initial initial" width="431">
        InterSystems や InterSystems 製品 に関するレビュー記事を投稿
      </td>
      
      <td style="border:1.5pt double #a5a5a5; width:274.15pt; background-color:#cfe2f3; padding:1pt; height:19.85pt; background-position:initial initial; background-repeat:initial initial" width="366">
        <p style="text-align:right; margin-right:14px">2,000 ~ 3,000</p>
      </td>
    </tr>
    
    <tr style="height:19.85pt">
      <td style="border:1.5pt double #a5a5a5; width:323.05pt; padding:1pt; height:19.85pt" width="431">
        同僚を開発者コミュニティに招待する
      </td>
      
      <td style="border:1.5pt double #a5a5a5; width:274.15pt; padding:1pt; height:19.85pt" width="366">
        <p style="text-align:right; margin-right:14px">600</p>
      </td>
    </tr>
    
    <tr style="height:19.85pt">
      <td style="border:1.5pt double #a5a5a5; width:323.05pt; background-color:#cfe2f3; padding:1pt; height:19.85pt; background-position:initial initial; background-repeat:initial initial" width="431">
        Open Exchange に公開したアプリに関するビデオを作成する
      </td>
      
      <td style="border:1.5pt double #a5a5a5; width:274.15pt; background-color:#cfe2f3; padding:1pt; height:19.85pt; background-position:initial initial; background-repeat:initial initial" width="366">
        <p style="text-align:right; margin-right:14px">3,000</p>
      </td>
    </tr>
    
    <tr style="height:19.85pt">
      <td colspan="2" style="border:1.5pt double #a5a5a5; width:323.05pt; padding:1pt; height:19.85pt" width="431">
        <p style="text-align:right;font-size:8pt">*グローバルマスターズ・アドボケート・ハブへの登録後に掲載された記事・コメントのみ。</a>
      </td>
    </tr>
    

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

    0
    0 178
    記事 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 のインデックスを定義する。
    6. Stora


    1
    1 485
    記事 Toshihiko Minamoto · 2月 11, 2021 27m read

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

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

    テンプレートのソースコードは、こちらから入手していただけます: https://github.com/antonum/AWSIRISDeployment

    目次

    InterSystems IRIS デプロイガイド – AWS パートナーネットワーク

    はじめに

    前提条件と要件

    所要時間

    製品ライセンスとバイナリ

    AWS アカウント

    IAM エンティティ (ユーザー)

    EC2 の IAM ロール

    S3 バケット

    VPC とサブネット

    EC2 キーペア

    必要な知識

    アーキテクチャ

    マルチ AZ 配置による耐障害性を備え



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

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

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

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

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

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

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

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

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

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

    0
    0 331
    記事 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.Vi
  • 0
    0 235
    記事 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 の入門チュートリアル を完了している程度の基本的な知識をお持ちであるという前提で話を進めていきます。 InterSystems IRIS をデータターゲット、すなわち「データシンク」として使用するかたちで AWS Glu


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

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

    理論

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

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

    デフォルトで、データベースファイルの各ブロックのサイズは 8,192 バイトに固定されています。 既存のデータベースのブロックサイズは変更できません。 新しいデータベースを作成する場合は、保管するデータ型に合わせて、16kB、32 kB、または 64


    0
    1 591
    記事 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つの端子がショートしていることになります。
     
    なので、センサーの左下端子の左側をカッターで切断しました。ルーペが無かったので、カミさんのスマホスタンドを借りて、スマホのカメラで拡大しながら、慎重に切断、テスターで抵抗値を確認... 50歳を過ぎたオッサンの作業としては非常に辛いものとなりました(


    0
    0 1010
    記事 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.h>、BME280のI2C通信に必要な<BME280I2C.


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

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

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

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

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

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

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

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

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

    ネームスペース作成

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

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




    0
    0 557