質問 Yuji Ohata · 2021年3月29日 ObjectScriptの変数の型検知について。 こんにちは、皆さま。業務でIRISを用いて開発を行っている者です。 ObjectScriptでは様々な型の変数定義が可能ですが、実際に定義された変数(Object)から、その変数の型を逆引きする方法をご存じな方はいらっしゃいませんでしょうか? 理想としては、Java等で利用可能な『instanceof』演算子の代替えとなるような仕組みが望ましいです。 力技で何とかなりそうなら、専用のメソッドみたいなものを自作で作ってもよいかなとは考えておりますが、現状その力技すら思いついていない状況です。。。 何か情報をお持ちの方がいらしたら、助言いただけますと幸いです。 #API #ObjectScript #言語 #InterSystems IRIS 0 4 0 285
記事 Hiroshi Sato · 2020年6月29日 2m read ターミナルやAPIを使用してネームスペースやデータベースを作成する方法 Config.Configurationクラス、SYS.Databaseクラスのメソッドを使用して、ネームスペース・データベースの作成及び登録をターミナルから実行することができます。以下はデータベースファル/CacheDB/AAA/cache.datを作成し、構成ファイル(cache.cpf)にデータベース AAA、及び、ネームスペースAAAの登録を行う一連の実行例です。 *実行は、%SYSネームスペースで行って下さい。* #API #ObjectScript #システム管理 #ターミナル #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 1 3 0 500
お知らせ Akio Hashimoto · 2023年7月28日 Comment to ObjectScript release 0.0.1 こんにちは。VSCodeでObjectScriptにコメントを挿入する拡張機能を作成してみましたので、共有させて頂きたいと思います。 使い方はとても簡単で、コンテキストメニューから「コメントの追加」を選択するだけです。カーソル位置に合ったコメントが挿入されます。挿入するコメントの定型文は設定で自由に指定できます。 クラスの説明文を挿入する パラメーターやプロパティの説明文を挿入する メソッドの説明文を挿入する #ObjectScript #VSCode 7 3 0 61
記事 Toshihiko Minamoto · 2021年2月22日 4m read IRIS Interoperability機能を使ったファイル連携 皆さん、こんにちは。他のシステムとファイル連携を行う場合、Cachéでは、Jobコマンドを使った常駐プロセスやタスクを作成し、特定のディレクトリにあるファイルを定期的に監視、データを取り込むといった機能を手作りされていたかと思います。これにはファイルの監視や、常駐プロセスの監視、プロセスの制御(起動、停止)を行う機能を用意する必要がありましたが、IRISではInteroperability機能が使えますので、そのようなプログラムを省略することが可能です。 今回は、既にファイル読込処理を行うルーチンが存在し、ルーチン呼出時の引数にファイル名があるという前提で、その処理をInteroperability機能を使ってどのように呼び出すかについて説明したいと思います。 手順 作業手順は以下の通りとなります。 #ObjectScript #相互運用性 #InterSystems IRIS 0 3 0 318
記事 Mihoko Iijima · 2021年3月9日 1m read ダイナミックオブジェクトの JSON 変換で MAXSTRING エラーが出る場合の対処方法 これは InterSystems FAQ サイトの記事です。 ダイナミックオブジェクトから JSON 文字列を生成するときに使用する %ToJSON() の引数にストリームオブジェクトを指定することでエラーを回避できます。 コード例は以下の通りです。 USER>set temp=##class(%Stream.TmpCharacter).%New() USER>set jsonobj={} USER>set jsonobj.pro1=["a","b","c","d"] USER>set jsonobj.pro2=["あ","い","う","え"] USER>do jsonobj.%ToJSON(temp) USER>write temp.Size 51 USER>write temp.Read() {"pro1":["a","b","c","d"],"pro2":["あ","い","う","え"]} 詳細はドキュメントもご参照下さい。 #JSON #ObjectScript #オブジェクトデータモデル #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 1 3 0 346
質問 Taro Yamada · 2021年1月28日 ループ中にエラーが発生してもそのままループを継続したい 皆さんこんにちは。 以下のメソッドでは日付の入った配列を受け取り、すべてのYYYY-MM-DD形式の日付を$horologに変換しているのですが、たまに日付が古すぎるものが入っており<VALUE OUT OF RANGE>エラーが発生して途中で止まってしまいます。エラー時にエラーメッセージを代入してそのまま継続できる方法はないでしょうか? プログラムは以下の通りです。 #ObjectScript #InterSystems IRIS 0 2 0 536
質問 Akio Hashimoto · 2022年2月3日 エラー時の行番号について 皆さん こんにちは。 最近ではVSCodeでIRISのプログラミングを行っている方も多いと思います。 クラスメソッドなんかをコーディングし、実行してエラーとなった場合に、以下のようなエラーメッセージが取得できると思います。 > <UNDEFINED> zNewMethod+32^ClassName.1 これは、NewMethodというメソッド内の32行目でUNDEFINEDが発生した事を指していますが、これは実際にはClassName.clsのNewMethod内の32行目ではなく、ClassName.1というルーチン(int)のzNewMethodでの32行目を示しています。 .clsから生成されるintは空行が削られたり、複数ルーチンに分割されたりしますので、実際のClassName.clsを開いてNewMethodの32行目を見ても実際のエラー箇所では無い場合があります。 VSCodeで開発をしていると、これが結構面倒なのですが、エラーメッセージに出力される行番号を .clsや、.mac 上での行番号に変える方法があれば教えて頂きたく、よろしくお願い致します。 #ObjectScript #InterSystems IRIS 2 2 0 305
記事 Mihoko Iijima · 2021年2月19日 4m read VSCode:プロセスにアタッチしてデバッグする方法 開発者の皆さん、こんにちは! VSCode の ObjectScript エクステンションで、プロセスにアタッチしてデバッグする方法についてご紹介します。 ObjectScript エクステンションの基本的な操作方法については、こちらの記事をぜひご参照ください。 解説ビデオ(4分ちょっと)もあります。ぜひご参照ください。 https://www.youtube.com/embed/NBITqPlMf1M[これは埋め込みリンクですが、あなたはサイト上の埋め込みコンテンツへのアクセスに必要な Cookie を拒否しているため、それを直接表示することはできません。埋め込みコンテンツを表示するには、Cookie 設定ですべての Cookie を受け入れる必要があります。] #ObjectScript #VSCode #デバッグ #ビデオ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 2 2 0 11.5K
質問 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 141
記事 Henrique Dias · 2020年10月8日 2m read 概要 npm-iris npm-iris とは何ですか? N.P.Mは "No Project Mess "の略です。 N.P.M.は、InterSystems IRISとBootstrap 4を使用したプロジェクト&タスク管理アプリです。 No Project Messは、シンプルで直感的なプロジェクトとタスクの管理ソフトウェアで、開発者や中小企業が日々の複雑な問題を軽減できるように作成されています。 スプレッドシート、カンバン、カレンダー、ガントチャートなど、タスクのためのさまざまなビューを提供しています。 #CSP #Docker #JavaScript #ObjectScript #REST API #オープンソース #フロントエンド #Caché #InterSystems IRIS #Open Exchange Open Exchange app 0 2 0 118
記事 Toshihiko Minamoto · 5 hr 前 12m read 150 行未満のコードで IRIS クロスファンクショナルアプリを作成する ローコードへの挑戦 こんな状況を思い浮かべてください。「ウィジェットダイレクト」というウィジェットとウィジェットアクセサリーを販売する一流のネットショップで楽しく勤務しています。先日、上司から一部の顧客がウィジェット商品にあまり満足していないという残念な話を聞き、苦情を追跡するヘルプデスクアプリケーションが必要となりました。さらに面白いことに、上司はコードのフットプリントを最小限に抑えることを希望しており、InterSystems IRIS を使って 150 行未満のコードでアプリケーションを提供するという課題をあなたに与えました。これは実際に可能なのでしょうか? 免責事項: この記事は、非常に基本的なアプリケーションの構築を記すものであり、簡潔さを維持するために、セキュリティやエラー処理などの重要な部分は省略されています。このアプリケーションは参考としてのみ使用し、本番アプリケーションには使用しないようにしてください。この記事ではデータプラットフォームとして IRIS 2023.1 を使用していますが、それ以前のバージョンでは記載されているすべての機能が提供されているとは限りません。 #JSON #ObjectScript #REST API #SQL #キューブ # データのインポートとエクスポート #分析 #相互運用性 #管理ポータル #InterSystems IRIS Open Exchange app 1 1 0 9
記事 Toshihiko Minamoto · 2022年11月2日 7m read 時間の支配者になるには ー誕生 良識のある人にはルールなんていらない。 ドクター 日付と時間のマスターになるのは簡単なことではありません。いつも問題になる上、どのようなプログラミング言語でも混乱することがあります。そこでこのタスクが可能な限り単純になるように、分かりやすく説明していくつかのヒントをご紹介しましょう。 さぁ、ターディスに乗り込みましょう。あなたを時間の支配者にして差し上げます。 #ObjectScript #ヒントとコツ #Caché 1 1 0 175
質問 Yugi AA · 2023年6月30日 IRISインスタンスが起動できない。[irisstart.exe エラー] VScodeを使用してローカルのルーチンを編集している途中で、PCが重かったため再起動を行って、 再びIRISを起動しようとするとエラーとなり起動できません。 どなたか解決策をご存知でしょうか?よろしくお願いいたします。 ーーーーーーーーーーーーー 現象: ローカルのIRISを起動すると、エラーとなり起動できない。 操作: 1. PCを起動し、iris.exeで起動。 2. InterSystems IRIS 開始(S)[IRIS] ボタンで起動を試みる。 3. エラーメッセージが表示される。 詳細: ・接続先 IPアドレス: localhost ポート: 51773 ・mgr/mesages.logのエラーログ #ObjectScript #InterSystems IRIS 0 1 0 148
記事 Mihoko Iijima · 2022年12月7日 1m read ObjectScript クックブック 開発者の皆さん、こんにちは! InterSystems全製品のサーバ側コードで利用できる「ObjectScript」の基本の使い方から、困ったときのヒント集、エラーの読み方など、日本語ドキュメントの逆引きになるようなページを目指して、「ObjectScriptクックブック」を作成しました! - ObjectScriptの基本の「き」 Hello Worldの出力から始めたい方に最適です。 2024/3/25更新:8. デバッグ方法 を追加しました。ぜひご参照ください。 - CookBook(こんなときどうする?集) ObjectScriptの記述に困ったときに読んでいただけるヒント集です。コミュニティに寄せられたご質問をどんどん掲載していきます。 - ObjectScriptでエラーが発生したら ObjectScriptのプログラムでエラーが発生したときのエラーメッセージの読み方から、エラー情報の取得方法などを解説しています。 #ObjectScript #ヒントとコツ #初心者 #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 4 1 0 247
記事 Tomoko Furuzono · 2021年5月26日 2m read Windows のバッチスクリプトでIRISのルーチンやメソッドの戻り値を取得する方法 これは、InterSystems FAQサイトの記事です。 iris コマンドを使用して、InterSystems IRIS のインスタンスを制御できます。iris コマンドは多くの機能をサポートします。以下の構文を使用します。 #ObjectScript #InterSystems IRIS 0 1 0 415
記事 Megumi Kakechi · 2023年2月6日 4m read ファイル操作関連のTips ファイルとディレクトリの操作に使用できる API 、%Library.File クラス (%File が省略形) の便利なサンプルコードをご紹介します。 こちらのAPIを使用して、ディレクトリやファイルの中身をのぞいたり、作成・書込み・読込みを行ってみます。 ★ディレクトリ内のファイル一覧をリストする 以下のサンプルは、C:\temp フォルダ内の *.txt ファイルをリストします(ファイルパス_サイズ_作成日)。 #ObjectScript #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 2 1 0 355
記事 Megumi Kakechi · 2021年3月2日 2m read $ZF(-100) で実行したコマンドの出力を取得する方法 これは InterSystems FAQ サイトの記事です。※記事後半に、「2>&1」で 標準エラー出力(2) を 標準出力(1) にリダイレクトする方法を追記しました。 $ZF(-100) では実行したコマンドの出力を取得することはできませんが、代わりにコマンド・パイプ デバイスを使用する方法があります。 詳細は、以下ドキュメントをご参照ください。 コマンド・パイプ デバイスを使用する方法について こちらを %File クラスで使用した例が以下になります。 #ObjectScript #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 1 0 355
記事 Toshihiko Minamoto · 2021年4月12日 24m read アトミックでない属性のインデックス作成 (1NF/2NF/3NF)露 からの引用 行と列で特定される位置には、それぞれアプリケーションドメインの値が 1 つだけあります (それ以外は何もない)。 その目的によって、同じ値がアトミックであったり、なかったりします。 例えば、「4286」という値は、 「クレジットカードの PIN コード」を意味するのであれば、アトミックとなります (破損している場合や並び替えられている場合は、使用できません)。 単に「連続する番号」であれば、非アトミックとなります (いくつかに分割されていたり、並び替えられていても、値は意味を成します)。 この記事では、文字列や日付、($LB 形式の) 単純なリスト、「list of <...>」、「array of <...>」といったフィールドの型を伴う SQL クエリのパフォーマンスを向上させる標準的な方法にして検証します。 #ObjectScript #SQL #インデックス付け #オブジェクトデータモデル #パフォーマンス #Caché 0 1 0 88
記事 Mihoko Iijima · 2020年10月15日 5m read サーバ側ロジック(ObjectScript)で SQL を実行するときの DATE 型や TIME 型カラムの操作方法 これはInterSystems FAQ サイトの記事です。 DATE 型は InterSystems 製品のデータ型の %Date に、TIME 型は %Time に対応しています。 %Date は内部日付(特殊変数 $Horolog のカンマ区切り1番目)、%Time は内部時刻($Horolog のカンマ区切り2番目)を登録するタイプであるため、サーバ側ロジックでは表示モードを切り替えない限り、内部(論理)形式の値が使用されます。サーバ側ロジックで内部日付・時刻の表示形式を変更する方法は、操作方法により異なります。 以降の実行例では、Sample.Person テーブルを使用して解説します。(コマンド実行例は SELECT 文で記載していますが、更新文に対しても同様に記述できます。) #ObjectScript #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 2 0 0 533
記事 Hiroshi Sato · 2021年2月1日 1m read ローカル変数の値がOREFであるかどうかの判定法 これは InterSystems FAQ サイトの記事です。 $IsObject()を使用して判別できます。 調べたい変数をvとすると、 $IsObject(v)=1 // vはOREF$IsObject(v)=0 // vはOREFではない$IsObject(v)=-1 // vはOREFだが、有効なオブジェクトを指していない となります。 vが未定義の場合は、$IsObject(v)はUNDEFINEDエラーとなりますので、ご注意ください。 UNDEFINEDエラーを防止するには、次のように$Getを使用することをお勧めします。 #ObjectScript #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 142
記事 Megumi Kakechi · 2021年3月25日 2m read Base64文字列でクラスに画像を保存・復元する方法 これは InterSystems FAQ サイト の記事です。 以下のサンプルでは、画像ファイルをクラスプロパティにBase64文字列にエンコードして保存し、再びそれをBase64でデコードし、別のファイルに復元しています。 【使用クラス】 Class User.test Extends %Persistent { Property pics As %GlobalBinaryStream; } 【取込み時】 #ObjectScript #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 1.1K
記事 Toshihiko Minamoto · 2021年11月9日 18m read 別のIRISメッセージビューワを作成する IRISインターオペラビリティのメッセージビューワで何かを変更できるとしたら、何を変更しますか? #Docker #ObjectScript #InterSystems Package Manager (IPM) #ビジネスオペレーション #ビジネスサービス #メッセージ検索 #相互運用性 #Ensemble #InterSystems IRIS Open Exchange app 0 0 0 190
記事 Seisuke Nakahashi · 2022年5月31日 6m read OAuth 2.0 を利用して IRIS から Gmail を送信する 2022年5月30日より、外部アプリからGmailを送信するには OAuth 2.0が必須になりました (リンク) そのため、IRIS から Gmail を送信したい 場合は、今後は OAuth 2.0 を利用して Gmailアカウントに接続する 必要があります。 そこで、IRIS コード ObjectScript を使って、OAuth 2.0 でGmailアカウントに接続&メール送信するサンプルを作成しました。 ぜひご活用ください! #OAuth2 #ObjectScript #InterSystems IRIS 2 0 0 929
記事 Megumi Kakechi · 2023年5月1日 6m read 一時グローバルと IRISTEMP データベースについて IRISTEMPというデータベースをご存じでしょうか? 特定の処理に対してデータを無期限に保存する必要がなく、「同一プロセス内でのみ使用したい場合」や「IRISが起動中のみ使用したい場合」に、IRISTEMPデータベースに保存されるグローバルを使用できます。IRISTEMPデータベースに保存されるグローバルに対する操作は ”一切ジャーナルされない” ため、効率性を最大限にしたい作業に使用できます。 IRISTEMPデータベースに保存されるグローバル(データ)には、以下の種類があります。 #ObjectScript #SQL #ヒントとコツ #InterSystems IRIS #InterSystems IRIS for Health 1 0 1 155
記事 Hiroshi Sato · 2020年12月15日 3m read クラス定義をスタジオ、Atelier以外を使用して作成する方法 これはInterSystems FAQ サイトの記事です。 InterSystems OpenExchangeのVS Code用のプラグインを利用することでVS Code上でクラス定義の編集が可能です。 (今後は、AtelierではなくVS Codeの使用を推奨しています。) 詳細は、以下ページをご参照ください。 vscode-objectscript また、逆にテーブル定義からクラス定義を生成することも可能です。 方法①として、他社RDBMS用に作成したDDL文をインターシステムズ製品上で実行、またはインポートする方法があります。 詳細は、以下ドキュメントをご参照ください。 #ObjectScript #VSCode #スタジオ #Caché #Ensemble #InterSystems IRIS 0 0 0 230
記事 Hiroshi Sato · 2021年1月27日 1m read ObjectScriptにはメソッドのオーバーロードはありません これは InterSystems FAQ サイトの記事です。 InterSystems ObjectScript言語では引数の異なる同名のメソッドを定義することはできません。 InterSystems ObjectScript言語は一般的に動的言語と呼ばれるプログラミング言語に分類されます。 ObjectScriptではメソッド実行時にどの引数を使用するかどうかは自由に制御可能ですので、動的プログラミング言語ではないJava等の言語と異なり、コンパイルの段階で厳密に引数の数でメソッドを区別する必要がありません。 従って ObjectScript言語は、オーバーロードと一般に呼ばれる言語仕様を含んでいません。 Java等で記述されたプログラムを移植する際にオーバーロード相当の機能を実現するには、 ClassMethod test(args... as %String) のように引数の後ろに ... を付加します。 #ObjectScript #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 174
記事 Megumi Kakechi · 2021年3月25日 3m read ^%GSIZE で出力される各項目の意味 これは InterSystems FAQ サイトの記事です。 ^%GSIZE ユーティリティでは、グローバルのサイズを算出することができます。 このユーティリティで出力される各項目の意味について説明します。 例えば、USERネームスペースのグローバルについて do ^%GSIZE を実行し、以下のように出力結果を得られたとします。 #ObjectScript #システム管理 #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 2 0 0 357
記事 Toshihiko Minamoto · 2022年2月1日 5m read DockerマイクロサーバーとしてIRIS Native APIを使用したWebSocketクライアントJS これはIRIS 2020.2で動作するコーディングの例です 最新バージョンとは同期していません。 また、InterSystemsのサポートによるサービスはありません動作中のデモを確認できるデモビデオを以下で公開しています。https://youtu.be/dSV-0RJ5Olg 皆さんこんにちは 完全に新しいIRISイメージとたった4行のDockerコマンドを使って実行するイメージを使ってマイクロサービスのデモを行いましょう。 2020年6月1日 - rcc すべてのパーツを1つのコンテナイメージにまとめたコンパクトなオールインワンバージョンが公開されました。 詳細はこちら: IRIS-NativeAPI-Nodejs-compact 2020年5月24日 - rcc Dockerを使った簡易インストールを追加しました。コンテキストを参照 2020年5月25日 - rcc Linux & Windowsに最適な検証済みの強化スクリプトはこちら https://github.com/rcemper/WSockClientMicroSV/blob/master/READMEwindows.MD 2020年5月26日 - rcc このデモは、Caché用にすでに存在するNode.jsに基づくWebSocketクライアントを再設計したものです。 主に以下のような変更点があります。 新しいIRIS Native API for Node.jsの使用。特にグローバル配列を操作する場合 直接トリガーされたクライアントからサーバー設計への変更 マイクロサービス/マイクロサーバーの例として、結果を別のdockerイメージに配置 マイクロサービスの実行を制御するための単純なインターフェースをIRISに追加 #Docker #JavaScript #Microservices #Node.js #ObjectScript #グローバル #コンテスト #コンテナ化 #InterSystems IRIS Open Exchange app 0 0 0 214
記事 Toshihiko Minamoto · 2022年9月26日 8m read プログラムによるインターオペラビリティの実行例 プログラムによる本番環境アクセス プログラムで本番環境(インターフェース)を編集するには、相互運用性 apis と SQL クエリを組み合わせて使用できます。 現在のネームスペース 大まかに言えば、その時点で作業しているネームスペースと本番環境を知ることが重要です。 // Object script // アクティブなネームスペースはこの変数に格納される $$$NAMESPACE // ネームスペースを出力 Write $$$NAMESPACE # Python import iris # このメソッドからアクティブなネームスペースが返される iris.utils._OriginalNamespace() # ネームスペースを出力 print(iris.utils._OriginalNamespace()) >>> DEMONSTRATION 現在の本番環境(アクティブまたは最後に実行した本番環境) 本番環境の名前を知ることも重要です。次の API を使用してネームスペース内のアクティブな本番環境を取得できます。 #Embedded Python #ObjectScript #相互運用性 #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 117
ディスカッション Miqueias Santos · 2023年5月18日 助けを求めに来ました。インターシステムズ こんにちは、大丈夫ですか? 助けを求めに来ました。インターシステムズ ポルトガル語のコンテストに参加しているので、リンクからこの記事を作成しました。私の記事にアクセスしてフィードバックをいただけますか。「いいね!」も歓迎です。 ここ: https://pt.community.intersystems.com/post/veremos-seguir-como-o-intersystems-iris-aliado-com-machine-learning-pode-transformar-para 読むには、ブラジル系ポルトガル語からあなたの言語に翻訳するだけです。 #IntegratedML #InterSystems API Manager (IAM) #IRIS Analytics Architect #ObjectScript #プラットフォーム #InterSystems IRIS 0 0 0 78