質問 Yuji Ohata · 2023年10月16日 VsCodeでリモートアクセスした際にSourceControlのUsernameが取得できない。 こんにちは、皆さま。業務でIRISを用いて開発を行っている者です。 同じ現象に陥っていた方がいれば助言頂きたいのですが、VsCodeでIRISにリモートで接続した際、SourceControlでUserNameが取得できていないようです。 { "objectscript.conn": { "host": "xxxx.xxxx.xxxx.xxxx", "port": 52773, "ns": "RKNK", "username": "xxxx", "password": "xxxx", "active": true }, "editor.formatOnType": true} →SourceControlクラスで..Usernameを取得しようとしても値が入っていない。 同じような現象になった方はいらっしゃらないでしょうか?何か情報をお持ちの方がいらっしゃれば、フォローいただけますと幸いです。 #InterSystems IRIS #VSCode 0 4 0 173
記事 Yuji Ohata · 2023年9月8日 6m read AWS環境を用いたCI/CDの仕組みの紹介。 こんにちは、皆さま。業務でIRISを用いて開発を行っている者です。 技術文書ライティングコンテストという事で、私からはAWS環境を用いたCI/CDの仕組みについてご紹介します。 CI/CDとは「Continuous Integration(継続的インテグレーション)/ Continuous Delivery(継続的デリバリー)」の略称で、詳細はネットをググると色々出てくると思いますが、私としてはリポジトリに格納されたものを自動で品質保証して、問題なければ自動でデプロイしてくれる一連の仕組みだと理解しています。 という事で、その第一歩はIRISのソースコードをgitで管理することです。pythonで作成したテストプログラムを用意しました。 #AWS #DevOps #Docker #Git #コンテスト #継続的インテグレーション #継続的デリバリー #InterSystems IRIS #その他 12 0 0 372
質問 Yuji Ohata · 2023年6月1日 SQLでWHERE句に文字列を指定する時、予期せぬデータがヒットする。 こんにちは、皆さま。業務でIRISを用いて開発を行っている者です。 IRISにSQLを投げるときの動作について教えてください。 ■適当なテーブルを作成CREATE TABLE Mst.Test (id int, name varchar(10)) ■データをINSERTINSERT INTO Mst.Test VALUES (2, 'bbb ')※文字列の末尾にスペースを追加。 ■SELECTSELECT * FROM Mst.Test WHERE name = 'bbb'※whereの条件には末尾のスペースを入れない。 ⇒上記の結果、INSERTされたデータがヒットしている。 [疑問点]SQLの実行において、=を使って完全一致検索をしているつもりなのですが、末尾のスペースはその条件を無視してヒットしてしまうものなのでしょうか? 何か情報をお持ちの方がいらっしゃれば、フォローいただけますと幸いです。 #SQL #InterSystems IRIS 0 3 0 171
質問 Yuji Ohata · 2023年4月13日 Pythonからネームスペースを指定してグローバルを参照する方法。 こんにちは、皆さま。業務でIRISを用いて開発を行っている者です。 現在、Embedded Pythonを用いて開発を行おうとしているのですが、別のNMSPに存在するグローバルをiris.gref()で参照する方法がわかりませんでした。 > iris.gref("^[NMSP]GBL") <-----こうしても自身のNMSPのグローバルを参照してしまう。 諦めてznでネームスペースを切り替えてみようかな、とも思ったのですが、python上でznをかける方法もよくわからず、対応方法に悩んでいます。 どなたか、上記の対応方法についてご存じな方はいらっしゃいませんでしょうか? #Embedded Python #InterSystems IRIS 1 5 1 187
質問 Yuji Ohata · 2023年3月24日 グローバルをODBCツールで参照したい。 こんにちは、皆さま。業務でIRISを用いて開発を行っている者です。 私たちのシステムでは一部グローバルを利用しているものがあるのですが、それをテーブル定義したものと同様にDbeaver等で参照できるようにしたいと考えております。 もともと定義していたグローバル(キーを二つ持つもの)に対して、対応するPersistentのクラスを作成し、DataLocationをそのグローバルにすることで、Dbeaverからそのクラスの存在は見えるようになったのですが、valueの値を参照することできず、困っています。どなたか情報をお持ちでしたらご教示いただけないでしょうか…。 ■グローバル>zw ^Test^Test(1,2)="A"^Test(1,3)="B"^Test(2,1)="C"^Test(2,2)="D"■永続クラス #InterSystems IRIS 0 2 0 239
質問 Yuji Ohata · 2022年12月28日 インスタンスの起動イベントをクラスで拾いたい。 こんにちは、皆さま。業務でIRISを用いて開発を行っている者です。 どなたかインスタンスの起動を%ZSTART等のMACではなく、クラスのコールバック等で検知する方法をご存知ではないでしょうか? 背景としましては以下の通りです。 =================================================================== 現在、Interoperabilityを利用する機能を開発しております。Ens.Productionを継承したクラスの中でOnStart()をoverrideしており、その中で上記のクラス自身をリコンパイルする処理が含まれております。 OnStart()でリコンパイルが行われる際、プロダクションの定義が変更されているとそのプロセスでのプロダクションの起動が失敗してしまいます。(プロダクション上の定義と、実際のクラスの状態に不一致が発生するため。) そのため、クラス自身のリコンパイルをプロダクションの開始時ではなく、インスタンスの開始時にしたいのですが、%ZSTART等のMACファイルは今回利用したくありません。 #InterSystems IRIS 0 6 0 174
質問 Yuji Ohata · 2022年12月14日 Ubuntuにおけるpython開発環境について。 こんにちは、皆さま。業務でIRISを用いて開発を行っている者です。 この度、新たにUbuntu環境にIRISを入れてEmbedded Pythonを用いて開発をすることとなりました。初期設定として、Ubuntuへのpythonのインストールが必要だと考えているのですが、その時のバージョンの指定等はあるのでしょうか? 公式サイトを漁ってもうまく見つけられず、ご存知の方がいらっしゃれば教えてください。同様の開発をされている方で、躓きポイントなど(Ubuntuだとスタジオ使えないからVSCode必須だよ)があれば、合わせて助言頂けますと幸いです #Python #Ubuntu #InterSystems IRIS 0 2 0 273
質問 Yuji Ohata · 2022年10月24日 SQLの実行で意図せぬ結果になる。 こんにちは、皆さま。業務でIRISを用いて開発を行っている者です。 SQLの実行結果について、意図せぬ結果になるものが二点ありますので、利用方法等に誤りがないかを確認させてください。 ①CREATE TABLE Tmp.AAA AS SELECT * FROM Mst.AAA WHERE column = ?⇒管理ポータルで実行しても、?パラメータを置換するダイアログが表示されず、 オンコードで%Execute()しても実行エラーになる。 ★この構文では?パラメータは利用できないのでしょうか? #SQL #InterSystems IRIS 0 8 1 287
質問 Yuji Ohata · 2022年9月13日 テーブルアクセス結果の取得APIについて。 こんにちは、皆さま。業務でIRISを用いて開発を行っている者です。 現在開発している処理の中で、大量データをSELECT & INSERTする処理があり、合計で91分かかっています。この処理で用いるSQLは実行結果を再利用したい等の意図があったため、ScrollableResultSetを用いていましたが、このAPI自体がSQL実行時に全件ループを回したり、そもそも古いAPIとの事であったため、%SQL.Statementに書き換えたところ、62分まで短縮することが出来ました。 ここからが問題なのですが、更なる処理時間の軽減のために時間がかかる処理を調査していたところ、カラム情報を取得する%Get()メソッドにコストがかかっていることがわかりました。なので現在はこれを改善したいと思っております。 こちらで動作を見たところ、最速は下記でいう所の「rset.name」でこちらを利用すると、41分まで削減されます。 #InterSystems IRIS 0 4 0 227
質問 Yuji Ohata · 2022年6月13日 トランザクション中に任意のテーブル更新だけ先にCommitを確定させたい。 こんにちは、皆さま。業務でIRISを用いて開発を行っている者です。 現在テーブルを用いてシステムの設計を行っておりますが、トランザクション中に、そのトランザクションの影響を受けずにテーブルを更新するような仕組みが欲しいと考えております。(トランザクションがRollbackされても、そのテーブルの更新だけは確定させたい。) 例えば$INCREMENT()はトランザクション中であっても、その制約を無視して値を更新できます。そのような回避策がないかをご教示いただきたいです。 用途としては、連番を生成するAPIを作成していて、その値をテーブルで管理しています。このAPIは複数プロセスから呼ばれることがありますが、1トランザクション中の連続Updateにより、行ロックからテーブルロックへの昇格が行われる(1000行以上行ロックをしたときのIRISの仕様)ことで、他プロセスがAPIを利用できなくなるなどの影響が出ています。今回のAPIに関しては、番号重複さえ起きなければよいので、そのような影響は受けたくありません。 #InterSystems IRIS 0 4 0 362
質問 Yuji Ohata · 2022年5月26日 スタンドアロン環境におけるEmbeded Pythonの利用について。 こんにちは、皆さま。業務でIRISを用いて開発を行っている者です。 EmbededPythonに興味があり、利用を検討しているのですが、スタンドアロン下におけるライブラリの使用方法について疑問があります。 #Python #InterSystems IRIS 1 2 1 469
質問 Yuji Ohata · 2022年3月6日 Interoperabilityのスケジュール起動について。 こんにちは、皆さま。業務でIRISを用いて開発を行っている者です。 現在複数のJob実行の仕組みをInteroperabilityの機能を使って実現しておりますが、特定のビジネスサービスは、xx:xx~yy:yyの間実行させたくない、という仕組みを実現させる必要が出てきました。 https://docs.intersystems.com/iris20201/csp/docbookj/DocBook.UI.Page.cls... ここに「スケジュール指定の定義」というものがあり、まさにこれが利用できるのかと思ったのですが、文献を見る限りだと、プロダクションそのものを停止するような仕組みに見えており、また実際に定義を作ってみたのですが、それをどうやってプロダクションへ反映させるかもわかりませんでした。 #Ensemble 0 2 0 218
質問 Yuji Ohata · 2022年2月17日 マニフェストを利用したNMSPの作成について。 こんにちは、皆さま。業務でIRISを用いて開発を行っている者です。 現在、共通のIRIS環境を複数個所に用意するため、インストール・マニフェストを利用した環境構築の仕組みを作成しております。https://docs.intersystems.com/iris20211/csp/docbookj/DocBook.UI.Page.cls... #相互運用性 #Ensemble #InterSystems IRIS 0 2 0 174
質問 Yuji Ohata · 2022年1月26日 テーブル定義内のTIMESTAMP型のデータについて。 こんにちは、皆さま。業務でIRISを用いて開発を行っている者です。 TIMESTAMP型のデータを持つテーブルの扱いについて教えてください。 現在Ens_Util.Logを参照するシステムを開発しようとしております。このテーブルの中にTimeLoggedというTIMESTAMP型のデータがあるのですが、それをSELECTした際、CASTの有無で表示されるデータに差異が出ます。 SELECT DATE(TimeLogged), CAST(TimeLogged AS TIME), TimeLoggedFROM Ens_Util.Log #InterSystems IRIS 0 8 0 272
質問 Yuji Ohata · 2021年12月6日 SQL実行時にバインドパラメータを255個以上渡したい場合について。 こんにちは、皆さま。業務でIRISを用いて開発を行っている者です。 私はIRISでSQLアクセスを行うプログラムをを作成しており、テーブルアクセスには%ScrollableResultSetクラスのAPIを用いて処理を実現しています。作成するSQLはインジェクション対策のため、?パラメータを用いておりますが、この度、大量のパラメータ(600項目)を用いるSQLを作成する必要が出てきました。 https://irisdocs.intersystems.com/iris20191/csp/docbookj/DocBook.UI.Page...こちらによりますと、可変長引数を用いても引数の上限値は255個となっており、実際に600個のパラメータを引数に与えてSQLアクセスしようとすると、<STACK>エラーが発生する状況です。 #Caché #InterSystems IRIS 0 2 0 356
質問 Yuji Ohata · 2021年8月17日 $SYSTEM.OBJ.ImportDir()利用時のSourceControlの利用について。 こんにちは、皆さま。業務でIRISを用いて開発を行っている者です。 スタジオ以外でSourceControlを利用されている方がいれば教えてください。 現在SourceControlを用いて、コンパイル前に自動コードレビュー(静的解析)を行うような仕組みを構築しております。実際にスタジオやVSCodeでの保存時には、上記の仕組みが動作しソースチェックが行われるのですが、clsの一括取り込みを行おうと『$SYSTEM.OBJ.ImportDir()』を実行した際にはSourceControlが動作していないように見えております。 以下のような形でメソッド実行しているのですが、オプション等の不備になるのでしょうか? > Do $SYSTEM.OBJ.ImportDir("ファイルが存在するパス","*.cls;*.mac;*.int;*.inc;*.dfi","ck",,1) #ObjectScript #InterSystems IRIS 0 2 0 178
質問 Yuji Ohata · 2021年6月7日 オンコードでのclsファイルのExportについて。 こんにちは、皆さま。業務でIRISを用いて開発を行っている者です。clsファイルのExportについて、ご存じな方がいらしたら教えてください。VSCodeではclsの一覧からExportを選択すると、clsファイルとしてローカルにファイル出力されます。 これと同じことを、ObjectScript上でも行いたいと思っています。しかしながら、Export用のAPIを見てみてもxmlファイルで出力される旨のコメントがあり、clsファイルのまま出力するためのAPIが見当たりません。 #API #InterSystems IRIS 0 2 0 188
質問 Yuji Ohata · 2021年5月18日 AWS CodeBuildを用いた自動ビルドの仕組みについて。 こんにちは、皆さま。業務でIRISを用いて開発を行っている者です。 AWSのcodebuildを利用して、IRIS環境をビルドされた経験がある方がいらっしゃたら情報共有いただきたいです。 ただいま取り組んでいるプロジェクトでは、IRISのclsファイルをaws codecommitのgitリポジトリで管理しております。※Dockerコンテナではない。 ここで作成されたソースコードをaws Codebuildの仕組みを利用して自動でコンパイルチェックをする仕組みを構築したいと考えております。コンパイルを実行する環境としては、AWS ECRに自作したDockerコンテナを利用しております。※コンテナはstore/intersystems/iris-community:2020.1.0.215.0を基底に、簡単なネームスペースを作成しただけのもの。 ローカルPC上ではIRIS環境として利用できることを確認済み。 ビルドはbuildspec.ymlにて、以下のような命令で行おうと考えております。 #AWS #InterSystems IRIS 0 5 0 817
質問 Yuji Ohata · 2021年4月13日 ビジネス・サービスの実行監視について。 こんにちは、皆さま。JOBの実行監視について、いい方法があれば教えてください。 現在Interoperablity上にファイル検知(PassthroughService)をトリガーにしたServiceを作成しており、このServiceがデイリーで正しく動作しているかどうかを監視する仕組みを作りたいと考えています。 例) 「A」というServiceが、毎日20時までに実行されているか? を監視し、実行されていなければエラーメールを送信する。 今考えている案では、タスクスケジューラを用いてJOBが実行されたかを見に行くしかないのかなと考えているのですが、他にいい実現方法をご存じな方がいらっしゃれば、情報頂けますと幸いです。 #InterSystems IRIS 0 2 0 172
質問 Yuji Ohata · 2021年4月13日 RecordMapでのエラー情報の取得について。 こんにちは、皆さま。業務でIRISを用いて開発を行っている者です。 InteroperabilityのRecordMapの仕組みを利用した、ファイル取り込みについて、取り込み時のエラー内容を独自のログ出力グローバルに吐き出したいと考えております。 管理ポータル上だと以下のように表示されている内容を文字列として取得したいだけなのですが、何か方法はありませんでしょうか? Ent_Util.Logの中を見ると上記の内容は確認できたのですが、わざわざシステムが吐いているログを見なくとも、ビジネス・サービスの結果として取得できる情報があるのでは?と考えております。 #InterSystems IRIS 0 4 0 125