記事 Toshihiko Minamoto · 2021年2月2日 9m read Caché データベースブロックの内部構造、パート 2 この記事は Caché データベースの内部構造を説明したこちらの記事の続編です。 そちらの記事では、様々なブロックタイプ、それぞれのつながりやグローバルとの関係について説明しました。 純粋に理論を述べた記事でした。 ブロックツリーを視覚化するのに役立つプロジェクトを作成しましたので、この記事ではその仕組みを詳しく説明します。 #システム管理 #データベース #Caché 0 0 0 220
記事 Toshihiko Minamoto · 2021年1月28日 4m read InterSystems IRIS ドキュメンテーションをコーポレートデータにマッピングする場合について。 独自の組織データアーキテクチャを書き、InterSystems IRIS にマッピングする必要がある場合は、以下にご紹介するデータアーキテクチャダイアグラムおよび InterSystems IRIS ドキュメンテーションのリファレンスに記載されている内容を考慮してください。 #IRIS Analytics Architect #インターシステムズビジネスソリューションとアーキテクチャ #データモデル #InterSystems IRIS #ドキュメント 0 0 0 172
記事 Toshihiko Minamoto · 2021年1月26日 7m read InterSystems IRIS における AWS Glue の使用について 2019年 10月 17日 Anton UmnikovInterSystems シニアクラウドソリューションアーキテクトAWS CSAA、GCP CACE AWS Glue は、完全に管理された ETL (抽出、変換、読み込み) サービスです。データの分類、クリーンアップ、強化、そして様々なデータストア間でデータを確実に移動させるという作業を簡単にかつコスト効率の良いかたちで行えるようにするものです。 #AWS #Python #SQL #クラウド #データベース #ビッグデータ #InterSystems IRIS 0 0 0 510
記事 Toshihiko Minamoto · 2021年1月21日 9m read Caché データベースブロックの内部構造、パート 1 InterSystems Caché のグローバルは、デベロッパーにとって非常に便利な機能を提供します。 しかし、グローバルが高速な上に効率が良いのはなぜでしょう? 理論 基本的に、Caché データベースとは、データベースと同じ名前を持ち、CACHE.DAT ファイルを含んだカタログのことです。 Unix システムでは、このデータベースを普通のディスクパーティションにすることもできます。 #システム管理 #データベース #Caché 1 0 1 352
記事 Toshihiko Minamoto · 2021年1月19日 6m read 2個のBME280で気象データを取得する みなさん、こんにちは。 前回の記事では1個のBME280で気象データを取得したのですが、気温のブレが大きかったので基板からただ、基板につけたBME280のはんだを外すのが大変なので、別のBME280を外付けすることにしました。当初、ESP8266の別のIO端子と接続することを考えていたのですが、Wire.hが複数のバスに対応していないため、以下の配線図のようにカスケード接続することにしました。 #IoT #InterSystems IRIS 0 0 0 712
記事 Toshihiko Minamoto · 2021年1月19日 5m read 気象データを取得するセンサーをBME280に変更する 皆さん、こんにちは。寒い日が続きますね。前々回の記事でDHT11とBMP180を使って作成したのですが、実際に外に置いて計測してみると、氷点下の場合、12~13℃となってしまい、正しく計測できませんでした。(先にデータシートを確認しておけばよかったのですが、DHT11、BMP180共に0℃以上になっていました...)そこで代わりのセンサーが無いか探していたところ、BME280というセンサーが見つかりました。-40℃から85℃まで測れ、BMP180と同じBosch製で値段も数百円。 #IoT #InterSystems IRIS 0 0 0 556
記事 Toshihiko Minamoto · 2021年1月19日 7m read バグ退治を促進する開発を行うためのヒント デバッガーは使わないという人はいますか? 最後に使ったのはいつだったか、記憶にないですね。 それは、嫌いだからではなくて、単に必要ないからなんです。 その一番の理由は、ある種の開発手法を使っているおかげで、バグの発生を少なく抑えたり、単体テストのレベルで発見したり、バグをとても簡単に追跡できたりするからです。 以下にいくつかヒントを紹介します... 1. 独自の COS チートシートを作成する。 これは主に COS の初心者が対象になります。 バグを引き起こす大きな原因の一つとして、特定のコマンドや関数の動作を理解していないということがあります。 時間をかけて言語を学び、そのすべてのバリエーションを試すことをおすすめします。 それから独自のチートシートを作成することで、知識が固まり、さっと使えるレビューツールも出来上がります。 生産性アップにつながるほか、避けられるはずのバグをうっかり書いてしまう頻度を確実に減らすことができます。 2. スタジオで「変数の追跡」をオンにする #ヒントとコツ #Caché 0 0 0 136
記事 Toshihiko Minamoto · 2021年1月14日 6m read IRISにてMQTTブローカーから気象データを取得しデータベースに格納する 前回のつづきとして、いよいよIRISのインターオペラビリティ機能を使ってMQTTブローカーからメッセージを受信し、データベースに格納する方法について解説したいと思います。IRISのインターオペラビリティ機能につきましてはこちらをご参照ください。 ネームスペース作成 インストール時に作成されているUSERネームスペースはInteroperabilityに必要なライブラリを参照するためのマッピングができていません。そのため、新たにネームスペースを作成する必要があります。作成方法は、以下の通りです。 #InterSystems IRIS 0 0 0 440
記事 Toshihiko Minamoto · 2021年1月13日 2m read Docker コンテナ内で InterSystems IRIS と Package Manager を併用する場合について。 デベロッパーの皆さん、こんにちは! InterSystems Package Manager (ZPM) は、素晴らしいツールですが、インストールせずにすぐ使用できたら、さらに便利です。 それを実現する方法はいくつかあります。以下に dockerfile を使って ZPM をビルドした IRIS コンテナを用意する方法をご紹介します。 リポジトリを作成し、そのdockerfile に数行のコードを記述しました。これを使えば、最新バージョンの ZPM をダウンロードし、インストールできます。 IRIS コミュニティエディション用のあなたの dockerfile にこれらのコマンドを追加すれば、ZPM がインストールされ、使用できるようになります。 最新の ZPM クライアントをダウンロードするコマンドは以下の通り。 #Docker #InterSystems Package Manager (IPM) #コンテナ化 #ターミナル #InterSystems IRIS Open Exchange app 0 0 0 188
記事 Toshihiko Minamoto · 2021年1月11日 4m read データ変更の追跡 - 監査ログ - (2/2) 前回の記事では、データの変更を簡単に記録できる方法をお見せしました。 今回は、監査ログが記録されるデータ構造と監査データを記録する「Audit Abstract クラス」を変更しました。 また、データ構造は親構造と子構造に変更し、それぞれに「トランザクション」とそのトランザクションで「その値によって変更されたフィールド」を記録するテーブルが 2 つ設けられます。 新しいデータモデルをご覧ください。 「監査クラス」から変更したコードをご覧ください。 #ObjectScript #オブジェクトデータモデル #Caché 0 0 0 118
記事 Toshihiko Minamoto · 2021年1月6日 24m read GitHub Actions を使って EKS に InterSystems IRIS Solution をデプロイする データ分析のためにInterSystemsで何ができるかを確認したいとしましょう。 理論を学んだので今度は実践したいと考えた時、InterSystems には、役に立つ実例をいくつか取り入れた Samples BI というプロジェクトが用意されています。 まずは、README ファイルを開き、Docker に関する内容はすべてスキップして、手順に従ってインストールしてゆきます。 仮想インスタンスを起動し、そこに IRIS をインストールしたら、手順に従って Samples BI をインストールします。そして綺麗なチャートやテーブルを見せて上司に感心してもらいましょう。 ここまでは順調ですね。 必然的に、ここで変更を加えることになります。 #AWS #DevOps #Docker #Kubernetes #クラウド #コンテナ化 #InterSystems IRIS #Open Exchange Open Exchange app 0 0 0 336
記事 Toshihiko Minamoto · 2021年1月5日 9m read データ変更の追跡 - 監査ログ(1/2) はじめに 多くのアプリケーションに共通する要件は、データベース内のデータ変更のログ記録です。どのデータが変更されたか、誰がいつ変更したかをログに記録する必要があります(監査ログ)。 このような質問について書かれた記事は多く存在し、Caché で行う方法の切り口もさまざまです。 そこで、データ変更を追跡して記録するためのフレームワークを実装しやすくする仕組みを説明することにします。 これは、永続クラスが「監査抽象クラス」(Sample.AuditBase)から継承すると「objectgenarator」メソッドを介してトリガーを作成する仕組みです。 永続クラスは Sample.AuditBase から継承されるため、永続クラスをコンパイルすると、変更を監査するためのトリガーが自動的に生成されます。 監査クラス 次は、変更が記録されるクラスです。 #ObjectScript #オブジェクトデータモデル #ベストプラクティス #Caché 0 0 0 159
記事 Toshihiko Minamoto · 2020年12月30日 5m read ESP8266で取得した気象データをMQTTブローカーに送信する 皆さん、こんにちは 前回のつづきとしてESP8266からMQTTブローカーに接続し、データを送信する部分の内容ついて説明したいと思います。 今回は温度湿度センサーのDHT11と気圧センサーのBME180を使って気温、湿度、気圧を計測し、1分に1回、MQTTブローカーに送信しています。 ハードウェア 回路図は以下のようにDHT11のDATAピンはGPIO、BMP180のSDA,SCLピンはそれぞれGPIO2,GPIO5に接続しました。電源は紆余曲折の末、単純にmicro USBから供給し、NodeMCUのボードから出力されている3.3Vをそれぞれのセンサーで使用しています。 #IoT #相互運用性 #InterSystems IRIS 0 0 0 2K
記事 Toshihiko Minamoto · 2020年12月25日 8m read Docker for Windows で InterSystems IRIS コンテナを使用する InterSystems は自社が提供する InterSystems IRIS の Dockerイメージについて、Linux 環境での使用のみをサポートしています。 Docker for Windows は Linux プラットフォームのようにコンテナをネイティブプロセスとして実行するのではなく、Windows の仮想化機能である Hyper-V で実行される Linux VM を作成してコンテナをホストします。 このような追加レイヤーによって複雑度が増しているため、InterSystems は現時点で Docker for Windows をサポートすることができません。 #Docker #Microsoft Windows #コンテナ化 #デプロイ #InterSystems IRIS 0 0 0 502
記事 Toshihiko Minamoto · 2020年12月24日 6m read MQTTを使ったIRISとデバイスとの通信 皆さんこんにちは。 IRIS 2020.1からMQTTアダプタが新たに追加されました。MQTTはPublish/Subscribe型のシンプルで軽量なメッセージングプロトコルです。帯域が低いネットワーク環境やArduinoやRaspberry PIといったワンボードマイコンやシングルボードコンピュータなどでも動作できます。今回はクラウド上のUbuntuサーバにIRISをインストールし、MQTTアダプタを使いEsp8266というマイコンで取得した温度、湿度、気圧データをIRIS上のデータベースに登録する方法について説明したいと思います。 アーキテクチャ 今回のアーキテクチャは以下の通りです。 #IoT #相互運用性 #InterSystems IRIS 1 0 0 1.3K
記事 Toshihiko Minamoto · 2020年12月23日 3m read 動的SQLの新旧対照表 新しい動的 SQL クラス(%SQL.Statement および %StatementResult)のパフォーマンスは %ResultSet より優れてはいますが、%ResultSet の使用方法をせっかく学習したので、しばらくの間新しい方を使用せずにいましたが、 やっとチートシートを作ったので、新しいコードを書いたり古いコードを書き直す際に役立てています。 皆さんのお役に立てればいいなと思っています。 次に示すのは、私のチートシートの詳細版です。 #Code Snippet #SQL #ベストプラクティス #Caché 0 0 0 171
記事 Toshihiko Minamoto · 2020年12月22日 13m read HealthShare の Apache HTTPD Web サーバー構成 HealthShare の理想的な Apache HTTPD Web サーバー構成に関するお問い合わせをよくいただいています。 この記事では、真っ先に推奨される HealthShare 製品の Web サーバー構成について概要を説明します。 何よりもまず第一に、Apache HTTPD バージョン 2.4.x(64ビット)を使用することをお勧めします。 2.2.x のような旧バージョンも使用できますが、HealthShare のパフォーマンスとスケーラビリティを確保するにはバージョン 2.2 はお勧めできません。 #Red Hat Enterprise Linux (RHEL) #SOAP #インターシステムズビジネスソリューションとアーキテクチャ #システム管理 #パフォーマンス #HealthShare 0 0 0 944
記事 Toshihiko Minamoto · 2020年12月21日 9m read $LIST のフォーマットと%DynamicArray 、%DynamicObject クラス $LIST のフォーマットと%DynamicArray、%DynamicObject クラス IRIS には、様々なデータ値を含むシーケンスを作成する方法がいくつかあります (以前は Cache にもありました)。 長年に渡り使用されているデータシーケンスの 1 つに $LIST の文字列があります。 より最近のデータシーケンスには %DynamicArray クラスと %DynamicObject クラスがあり、両者ともに JSON の文字列表現に対応する IRIS サポートの一部となっています。 これら 2 つのシーケンスにはそれぞれ非常に異なるトレードオフがあります。 $LIST の文字列形式 $LIST 形式は、かつてメモリアドレスのスペースが小さいだけでなく、ディスクドライブも小さく、読み取り速度が遅かった時代に考案されました。 $LIST の形式は、複数の異なるデータ型で構成されるシーケンスをバイト数を可能な限り抑えながら 8 ビットの一般的な文字列にパッキングするためにデザインされました。 $LIST のシーケンスは、ObjectScript の $LISTBUILD 関数を使って作成します。 #JSON #ObjectScript #ベストプラクティス #Caché #InterSystems IRIS 0 0 0 640
記事 Toshihiko Minamoto · 2020年12月16日 1m read TLS/SSL で OS の証明書ストアを使用する Windows と Mac で InterSystems IRIS 2019.1 (および 2018.1.2) の SSL/TLS 設定に認証局 (CA) の証明書を簡単に追加する新しい方法ができました。 IRIS にオペレーティングシステムの証明書ストアを使用することを要求するために、 %OSCertificateStore を "信頼された証明書機関 X.509 証明書を含むファイル" のフィールドに入力します。 以下はポータルでそれを実行する方法を示した画像です。 また、これについて説明したドキュメントへのリンクはこちらです。 "信頼された証明書機関の証明書を含むファイル" のオプションの中を探してください。 #SSL #セキュリティ #ヒントとコツ #ベストプラクティス #InterSystems IRIS 0 0 0 164
記事 Toshihiko Minamoto · 2020年12月16日 17m read Windows10 ホストで実行される Hyper-V Ubuntu 仮想マシンで Docker を使用できるように環境を設定する 今回は、InterSystems IRIS に特有のことではなく、職場で Windows 10 Pro または Enterprise を搭載した PC またはノートパソコンがサーバーとして使用されている環境で Docker を使用する場合に重要と思われる点について触れたいと思います。 ご存知かと思いますが、コンテナテクノロジーは基本的に Linux の世界で生まれ、最近では Linux のホストで使用されており、その最大のポテンシャルを伺わせています。 Windows を普段から使用するユーザーの間では、Microsoft と Docker 両社によるここ数年の重大な試みにより、Windows のシステムで Linux イメージを基にコンテナを実行することがとても簡単になったと理解されています。しかし、生産システムでの使用がサポートされておらず、それが大きな問題となっています。特に、Windows と Linux のファイルシステムに大きな違いがあるため、安心してホストシステム内でコンテナの外に持続データを保管するということができないのです。 ついには、コンテナを実行するために、Docker for Windows 自体で Linux の小さな仮想マシン (MobiLinux) が使用されるようになり、Windows ユーザーに対しては透過的に実行されます。また、先ほど述べたように、データベースの存続がコンテナよりも短くて構わないのであれば、パーフェクトに動作します。 では、何が言いたいかというと、問題を回避して処理を単純化するには、完全な Linux システムが必要になるが、Windows ベースのサーバーを使用していると、仮想マシンを使用する以外に方法がない場合が多い、ということです。 少なくとも、Windows の WSL2 がリリースされるまでの話ですが、それはまた別の機会に触れたいと思います。もちろん、十分堅牢に動作するまでは時間がかかるでしょう。 この記事では、必要に応じて、Windows サーバーの Ubuntu システムで Docker コンテナを使用できる環境をインストールする方法について分かりやすく説明します。 それでは、始めましょう。 #Docker #Microsoft Windows #Ubuntu #システム管理 #ヒントとコツ #開発環境 #InterSystems IRIS #Open Exchange #ドキュメント 0 0 0 2K