クリアフィルター
お知らせ
Seisuke Nakahashi · 2023年9月28日
Red Hat Insights アラートが InterSystems IRIS に対応しました
InterSystems と Red Hat は共同で、IRIS 固有の Red Hat Insights アラートを開発しました。
Red Hat Insights は、Red Hat Enterprise Linux 環境におけるシステムリスクの予測と改善策を提案するサービスです。Insights は、ほぼすべてのバージョンの RHEL, OpenShift, Ansible サブスクリプションにて無料でご利用いただけます。詳細については、Red Hat の Insights ページをご参照ください。
Swappiness 推奨インサイト
最初の推奨インサイト 「InterSystems IRIS パフォーマンス向上のための swappiness 推奨設定を適用する」 が追加されました。
この推奨インサイトは、システムのメモリ状況を確認し、弊社の想定以上にスワップが発生していた場合は、理想的なレベルの swappiness 推奨値をシステムに送信します。 一般的に swappiness の設定はメモリがかなり圧迫されたときに効いてきます。ファイルバッファー・キャッシュは、メモリの範囲内でできるだけ多く確保すべきです。Linux では、計算処理のためにページを解放する必要があるときだけバッファー・キャッシュを追い出すため、swappiness をできるだけ小さく設定することを推奨しています。
今後の推奨インサイト
Red Hat は現在、IRIS 関連の以下の推奨インサイトに関する開発に取り組んでいます。
Huge Pages 設定
古いインスタンスのアップグレード
Shmmax
その他
IRIS に関連するその他の Red Hat Insights についてご提案がございましたら、弊社の担当営業もしくは Bob Kuszewski までご連絡ください。
Red Hat Insights に関するご質問や問題がございましたら、 Red Hat サポートまでご連絡ください。
記事
Megumi Kakechi · 2024年3月15日
インターシステムズは、InterSystems IRIS Data Platform の2024.1 リリースを一般提供開始(GA)したことを発表しました。2024.1 は、拡張メンテナンス(EM)リリースです。
【リリースハイライト】
今回のリリースには、以下のような数々の興味深いアップデートが含まれます:
1. ObjectScript でのベクトルの使用: データ操作を最適化する強力な機能2. ベクトル検索 (実験的機能): 効率的なデータ検索のための最先端機能3. マルチボリュームデータベース: スケーラビリティとストレージ管理の強化4. ファスト・オンライン・バックアップ(実験的機能): バックアッププロセスの合理化5. 複数のスーパーサーバポート: ネットワーク構成の柔軟性を提供6. その他多数!
【ドキュメント】
注目機能の詳細は、以下のリンクからご覧いただけます。InterSystems IRIS 2024.1 (英語)
ドキュメント
リリースノート
非推奨および廃止された機能
アップグレードチェックリスト
本バージョンではプライベートWebサーバを使用した管理ポータル/Webアクセスが非推奨となりました。詳細については以下もご参照ください。https://jp.community.intersystems.com/node/558511
【早期アクセス・プログラム(EAP)】
現在、多くのEAPが用意されています。以下ののページより、興味のあるものに登録してください。https://www.intersystems.com/early-access-program/
【ソフトウェアの入手方法】
通常通り、Extended Maintenance (EM)リリースには、サポートされているすべてのプラットフォーム用のクラシックインストールパッケージと、Docker コンテナ形式のコンテナイメージが付属しています。詳細については、ドキュメント を参照してください。インストール・パッケージとプレビュー・キーは、WRCの InterSystems IRIS Data Platform フルキットのページ から入手できます。さらに、キットは評価サービスのウェブサイトでも提供しています。IRIS: https://wrc.intersystems.com/wrc/coDistIRIS.csp評価サービス: https://evaluation.intersystems.com/コンポーネント: https://wrc.intersystems.com/wrc/coDistGen.cspInterSystems IRIS のコンテナイメージと、対応するすべてのコンポーネントは、InterSystems Container Registry(ICR) から入手できます。※コンテナには "2024.1"または"latest-em"の両方のタグが付けられています。docker コマンドに関する追加情報については、以下の投稿をご覧ください。https://jp.community.intersystems.com/node/533171このリリースのビルド番号は、 2024.1.0.262.0 です。
記事
Mihoko Iijima · 2020年12月17日
みなさん、こんにちは。
昨日、Apache Spark、Apache Zeppelin、そして InterSystems IRIS を接続しようとしたときに問題が発生したのですが、有用なガイドが見つからなかったので、自分で書くことにしました。
### **はじめに**
Apache Spark と Apache Zeppelin とは何か、そしてどのように連携するのかを理解しましょう。
Apache Spark はオープンソースのクラスタコンピューティングフレームワークです。暗黙的なデータ並列化と耐障害性を備えるようにクラスタ全体をプログラミングするためのインターフェースを提供しています。そのため、ビッグデータを扱う必要のある場合に非常に役立ちます。
一方の Apache Zeppelin はノートブックです。分析や機械学習に役立つ UI を提供しています。組み合わせて使う場合、IRIS がデータを提供し、提供されたデータを Spark が読み取って、ノートブックでデータを処理する、というように機能します。
注意: 以下の内容は、Windows 10 で行っています。
### **Apache Zeppelin**
では、必要なすべてのプログラムをインストールしましょう。
まず、[Apache Zeppelin の公式サイト](https://zeppelin.apache.org/download.html)から Apache Zeppelin をダウンロードします。私は **zeppelin-0.8.0-bin-all.tgz** を使用しました。このファイルには、**Apache** **Spark**、**Scala**、および **Python** が含まれます。
ダウンロードファイルを任意のフォルダに解凍します。解凍後、Zeppelin フォルダのルートから \bin\zeppelin.cmd を呼び出して、Zeppelin を起動します。
「**Done, zeppelin server started**」が表示されたら、ブラウザでhttp://localhost:8080 を開きます。
すべてうまくいった場合、「**Welcome to Zeppelin!**」メッセージが表示されます。

注意: InterSystems IRIS がインストール済みであることを前提としています。まだインストールしていない場合は、次のステップに進む前に IRIS をダウンロードしてインストールしてください。
### **Apache Spark**
ブラウザウィンドウに Zeppelin ノートブックが開いている状態です。右上の「**anonymous**」をクリックし、「**Interpreter**」をクリックします。下にスクロールして「**spark**」を見つけてください。

「spark」の横に「 **edit** 」ボタンがあるので、それをクリックしましょう。 下にスクロールして、**intersystems-spark-1.0.0.jar** と **intersystems-jdbc-3.0.0.jar** に依存関係を追加します。 私の環境は InterSystems IRIS を C:\InterSystems\IRIS\ ディレクトリにインストールしているため、追加しなければならないものは以下の場所にあります。

私の環境でのファイルは以下の通りです。

そして保存します。
### **動作確認**
動作確認してみましょう。 新しいノートを作成し、段落に次のコードを貼り付けます。
var dataFrame=spark.read.format("com.intersystems.spark").option("url", "IRIS://localhost:51773/NAMESPACE").option("user", "UserLogin").option("password", "UserPassword").option("dbtable", "Sample.Person").load()
// dbtable - name of your table
URL - IRIS アドレスを 次の書式で指定します。IRIS://ipAddress:superserverPort/namespace
**プロトコル「IRIS」** は、Java 共有メモリ接続を提供する TCP/IP 経由の JDBC 接続です。
**ipAddress** - InterSystems IRIS インスタンスの IP アドレス。 ローカルで接続している場合は、localhost の代わりに 127.0.0.1 を使用してください。
**superserverPort** - IRIS インスタンスのスーパーサーバーのポート番号。Web サーバーのポート番号とは異なります。 スーパーサーバーのポート番号を見つけるには、管理ポータルを開き、画面上部にある「概要」のリンクをクリックして表示される画面の「Superserver Port」を確認してください。
**namespace** - InterSystems IRIS インスタンスの既存のネームスペースを指定します。 このデモでは、USER ネームスペースに接続しています。
この段落を実行しましょう。 うまくいけば、「FINISHED」が表示されます。
私のノートブックでの実行例です。
まとめ
この記事の内容をまとめると、Apache Spark、Apache Zeppelin、および InterSystems IRIS がどのように連携できるかがわかりました。 次の記事では、データ分析についてお話しします。
リンク
* [Apache Spark の公式サイト](https://spark.apache.org)
* [Apache Spark のドキュメント](https://spark.apache.org/documentation.html)
* [IRIS プロトコル](https://docs.intersystems.com/irislatestj/csp/docbook/DocBook.UI.Page.cls?KEY=AFL_jdbc)
* [InterSystems Spark コネクタの使用](https://docs.intersystems.com/irislatestj/csp/docbook/DocBook.UI.Page.cls?KEY=BSPK)
お知らせ
Mihoko Iijima · 2020年11月2日
開発者の皆さん、こんにちは!
Interoperability(相互運用性)コンテストの続報の「テクノロジーボーナス」について紹介します。
対象となる技術は、以下の通りです。
BPL エディタを利用したビジネス・プロセスの開発、または、ビジネスルールとデータ変換(DTL)を使用した開発
カスタムアダプタを使用した開発
プロダクションエクステンション(PEX)Java または .NET を使用した開発
ワークフローエンジンを使用した開発
ZPM パッケージによるデプロイが行える開発環境
Docker コンテナを使用した開発
それぞれの詳細については以下ご参照ください。
BPL エディタを利用したビジネス・プロセスの開発、または、ビジネスルールとデータ変換(DTL)を使用した開発 - 1 point
IRIS の Interoperability(相互運用性)プロダクションの特徴の1つである、BPL エディタで記述できるビジネス・プロセスがあります。また、ビジネス・ルールは、Interoperability プロダクション内で実行したい処理を、ノーコード/ローコードのアプローチで指定できる開発エディタです(ビジネス・ルールを利用するためには、構築済ビジネス・プロセスを使用します)。
以下参考ドキュメントをご参照ください。
Interoperabilityの動作の仕組みについて記事
プロダクションについての解説する記事
ビジネス・プロセスについて解説する記事
ビジネス・プロセスの作成方法を解説するドキュメント
ビジネス・ルールのサンプルコード
ビジネス・ルールのドキュメント
カスタムアダプタを使用した開発 - 1 point
InterSystems Interoperability プロダクションでは、プロダクション内のビジネス・サービスやビジネス・オペレーションの開発に、外部システムとの通信を簡単に行うことができる「インバウンド/アウトバウンド・アダプタ」を利用することができます。アダプタは独自のカスタマイズを行うこともでき、今回のコンテストでは、カスタムアダプタを使用することでボーナスポイントを獲得できます。
カスタムアダプタ例(サンプル)
既存アダプタの種類についてはこちらをご参照ください。
Production EXtension (PEX) を使用した開発 - 2 points
PEX は、Interoperability プロダクションの Java/.NET 用拡張機能です。
プロダクションの開発に、Java/.NET の PEX を使用した開発を行った場合、ボーナスポイントを獲得できます。
詳しくは、デモや PEX のドキュメントをご参照ください。
ワークフローエンジンを使用した開発 - 1 point
IRIS Interoperability の1つの機能である「ワークフロー」は、一連の処理の中に「人の介在」を含むことができます(次のステップに移動するために、目視を必要とする/人による選択が必要 などの処理を追加できます)。
ワークフローを含めた場合ボーナスポイントを獲得できます。
ワークフローのドキュメント
WorkflowAPI と WorkflowUI-ngx というコミュニティモジュールもあり、Angular上に動作する素敵なUIレイヤーを提供しています。
ZPM パッケージによるデプロイが行える開発環境 - 1 point
フルスタックアプリケーション用に ZPM(ObjectScript Package Manager)パッケージをビルドして公開し、ZPM でデプロイできるように開発した場合、ボーナスポイントを獲得できます。
以下、ZPM クライアントがインストールされている IRIS でのコマンド実行例です。
zpm "install your-full-stack-solution-name"
ZPM クライアント、 ドキュメントもご参照ください。
Docker コンテナを使用した開発 - 1 point
Dockerコンテナ上で動く IRIS を使用した場合、ボーナスポイントを獲得できます。
以下の開発テンプレートを使用すれば、ボーナスポイントを獲得できます。
IRIS Interoperability Template
掲載されている技術の使用方法について、ご質問がありましたら、お気軽にお問い合わせください。
ぜひ、コンテストへのご応募ご検討ください!
お知らせ
Toshihiko Minamoto · 2022年11月28日
ObjectScript パッケージマネージャ ZPM のライフサイクルにおけるマイルストーンをここに発表させていただきます。このパッケージマネージャは、ObjectScript コードや 配置構成設定、バージョン情報などを便利にパッケージ化する機能を開発者に提供し てきました。 ここ数年のうちに、多くの開発ワークフローに不可欠な存在として大きく進化しました。
その結果、インターシステムズは所有するコンポーネントをパッケージ化するのに使用することとし、コミュニティのGitHubリポジトリをコーポレートリポジトリに移行、InterSystems Package Manager (IPM) に改名することとなりました。IPMはオープンソースのままです。コミュニティのメンバーは、コードをレビューし、プルリクエストを提出することができます。この変更により、従業員以外の方がコードベースに変更を加えることができないような方法で、ソフトウェアのセキュリティを確保することができるようになりました。また、データと一緒にコードをインストールできるソフトウェアでは、より高いレベルのセキュリティと信頼性が重要です。
ですから、 ZPM の存続を祝い、IPM の誕生を歓迎し、貢献いただいた皆さんに感謝したいと思います。特に、Nikolay Soloviev ならびに@Dmitry.Maslennikov には開発者ニーズを掘り起こし、スキルと融合し、素晴らしいソフトウェアの構築に貢献いただきました。
---
https://github.com/intersystems/ipm
お知らせ
Mihoko Iijima · 2021年6月20日
開発者の皆さん、こんにちは!次のコンテストのテーマが発表されました!
🏆 InterSystems AI Programming Contest 🏆
応募期間は 2021年6月28日~7月18日 です!
💰 賞金総額: $8,750 💰
(投票期間は 2021年7月19日~7月25日、勝者発表は 7月26日を予定しています)
優勝特典
1、審査員から多く票を集めたアプリケーションには、以下の賞金が贈られます。
🥇 1位 - $4,000
🥈 2位 - $2,000
🥉 3位 - $1,000
2、開発者コミュニティで多く票を集めたソリューションには、以下の賞金が贈られます。
🥇 1位 - $1000
🥈 2位 - $500
🥉 3位 - $250
複数の参加者が同数の票を獲得した場合、全参加者が勝者となり賞金は勝者間で分配されます。
参加資格
どなたでもご参加いただけます!(InterSystems 開発者コミュニティのアカウントを作成するだけでご応募いただけます)
👥 開発者がチームを組んで共同でアプリケーションを作成し、応募することもできます! 1チーム 2~5名 までご参加いただけます。
チームでご応募いただく場合は、アプリケーションの README にチームメンバー名の記載をお忘れなく!!(開発者コミュニティのプロファイルのリンクもお願いします)
コンテストのスケジュール
6月28日~7月18日 応募期間(Open Exchange へ作成されたアプリケーションをアップロードいただける期間=3週間です。この期間内であればアップロード後も自由に編集できます。)
7月19日~7月25 投票(1週間)
7月26日 勝者発表(US時間に発表します)
コンテストのテーマ
🤖 Artificial Intelligence and Machine Learning 🤖
InterSystems IRIS を使用した AI/ML ソリューションを開発してください。
IRIS を使用して、ライブラリ、パッケージ、ツール、AI/ML ソリューションを作成いただき、ご応募ください。
応募要件は以下の通りです。
1、応募可能なアプリケーション
Open Exchange アプリケーションの新規作成、または既存アプリケーションであっても大幅に改善されているものであればご応募いただけます。
コミュニティの担当チームは、コンテストへの応募を承認する前に申請された全アプリケーションをレビューします。
2、アプリケーションは、InterSystems IRIS の AI/ML 機能のいずれかを使用してください。
3、アプリケーションは、IRIS Community Edition 、IRIS for Health Community Edition、IRIS Advanced Analytics Community Edition のいずれかで動作する必要があります。
4、アプリケーションはオープンソースとして、GitHub で公開する必要があります。
5、アプリケーションの README ファイルは、英語で記述してください(日本語で記述したものがあればそのまま掲載いただき、英文の追記をお願いします)。また、インストール手順や、アプリケーションがどのように動作するかの説明、またはビデオデモを含めてください。
6、InterSystems ObjectScript で記述したソースコードがある場合は、(XMLでエクスポートしたファイルではなく)UDL 形式 で提供する必要があります。例
上記要件は、変更される場合もあります。予めご了承ください。
Helpful resources
1. 開発環境テンプレート
InterSystems IntegragedML template:こちらの記事に含まれるビデオに、テンプレートの使い方(日本語)をご紹介しています。 00:46~17:55 をご参照ください。
IRIS R Gateway template
2. データインポートツール
Data Import Wizard
CSVGEN - CSV インポートユーティリティ
CSVGEN-UI - CSVGEN の Web UI 版
3. ドキュメント
Using IntegratedML
4. オンラインコース(英語)
Learn IntegratedML in InterSystems IRIS
Preparing Your Data for Machine Learning
Predictive Modeling with the Machine Learning Toolkit
5. IntegratedML ー SQLから始める機械学習(ビデオ:日本語)
6. コンテスト応募方法(このページ末尾のビデオをご参照ください)
審査及び投票ルール
投票ルールは近日公開します。
皆様からの✨素敵な✨プロジェクトをお待ちしております!コミュニティのコーディングマラソンに参加して、優勝を目指しましょう!(ง`0´)ง
❗️ コンテスト規約については、こちらをご参照ください。❗️
ご応募方法について
以下の応募方法ビデオをご参照ください。
以下の応募方法ビデオをご参照ください。
以下、コンテストに応募する迄の手順をご説明します。
コンテスト応募までの流れは以下の通りです(※ビデオでは、3番以降の内容をご紹介しています)。
1、IRISプログラミングコンテスト用テンプレートを使用して、開発環境を準備します。
2、コンテスト用アプリケーションを作成します。
3、コンテストの準備が完了したら、ソースコードをローカルのGitリポジトリへコミットします。
初回コミット時に、Gitの初期設定がないためコミットが失敗することがあります。その場合は、以下のコマンドでGitユーザ名とEmailを設定します。
git config --global user.name "ここにユーザ名"
git config --global user.email "ここにメールアドレス”
4、ローカルのGitリポジトリのコミットが完了したら、リモートのGitリポジトリを作成します。
リポジトリ作成後、リモートリポジトリのURLをコピーします。
5、リモートのGitリポジトリへPushします。
git push ここにリモートのリポジトリのURL
6、OpenExchangeにログインし、アプリケーションを追加します。
※事前にDeveloper communityでユーザアカウントを作成する必要があります。ログイン後、Profile→Applications から Application をクリックし、4 でコピーしたリモートのGitリポジトリのURLを設定します。
アプリケーションを登録すると、画面右上に「Send Approval」のボタンが表示されるので、クリックします。
再度作成したアプリケーションを開くと、「Apply for Contest」ボタンが表示されるので、クリックすると応募が完了します。
記事
Mihoko Iijima · 2021年9月16日
これは InterSystems FAQ サイトの記事です。
答え:必要ありません。
InterSystems 製品では、クライアント機能用に特別なライセンスを設けておりません。
通常のサーバーライセンス(サブスクリプションを含む)を保有していれば、そのサーバーライセンスで許容しているキャパシティに応じて、複数のクライアントシステムにクライアント機能をインストールして利用することができます。
記事
Toshihiko Minamoto · 2022年2月16日
この記事では、InterSystems IRIS プラットフォームを使用して基本的な IMAP クライアントを記述する方法を説明します。 はじめに IMAP の概要を確認してから、本題の IMAP コマンドとクライアント実装について説明します。 最後に、IRIS 相互運用性アプリケーションでこの IMAP クライアントを簡単に使用します。
この記事では IMAP を詳しく説明していません。 詳細な情報については、この記事のリソースをご覧ください。
IMAP の概要
ユーザーは IMAP(Internet Message Access Protocol)を使ってメールを取得できます。 IMAP は 1980 年代に Marc Crispin によって提唱されました。以来、このプロトコルは RFC 3501 として公開され、改訂されています。 この記事の執筆時点での最新バージョンは、IMAP4rev1 です。
このプロトコルは取得のみを目的に設計されていることに十分に注意してください。 メールを送信するのであれば、SMTP(Simple Mail Transfer Protocol)という別のプロトコルを使用する必要があります。 また、メールの取得には、IMAP よりも古い POP3(Post Office Protocol version 3)があります。これも IMAP と同様に一般的に使用されています。
基本的な IMAP コマンドを試す
POP3 と同様に、IMAP はプレーンテキストプロトコルです。 Telnet や OpenSSL などの TCP クライアントを使用して、自分で簡単にコマンドを試すことができます。
まず、IMAP ホストとメールサーバーポートが必要です。 たとえば以下は、この記事の執筆時点での、Microsoft Outlook サービスに接続するためのホストとポートです。
outlook.office365.com:993
TCP クライアントを使ってこのサーバーに接続してみましょう。 以下のコマンドを入力して ENTER キーを押します。 -crlf フラグを使用しているところに注意してください。 IMAP の改行コードはキャリッジリターンとラインフィード(CRLF)であるため、IMAP にはこのフラグが必要です。
$ openssl s_client -connect outlook.office365.com:993 -crlf -quiet
Enter キーを押すと、IMAP サーバーから情報が提示され、入力待ちとなります。
depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert ...
* OK The Microsoft Exchange IMAP4 service is ready. [...]
この時点で、最初の IMAP コマンドである CAPACITY コマンドを実行できます。 名前からわかるように、これはサーバーが提供できる機能を提示するコマンドです。 最初の行は IMAP コマンド自体であり、残りの行はその出力です。これは、ここで示すすべての IMAP コマンドに共通しています。
TAG1 CAPABILITY
* CAPABILITY IMAP4 IMAP4rev1 AUTH=PLAIN AUTH=XOAUTH2 SASL-IR UIDPLUS ID UNSELECT CHILDREN IDLE NAMESPACE LITERAL+
TAG1 OK CAPABILITY completed.
CAPABILITY コマンドの前にある TAG1 というトークンに注意してください。 すべての IMAP コマンドの前にはタグを配置する必要があり、任意の文字列を使用できます。 このタグによって、サーバーの応答先であるコマンドインスタンスを識別しています。 一般に、任意のプレフィックスに単純なカウンターを使用したものがあらゆるニーズに対応できます。
IMAP サーバーの応答は、コマンドの発行に使用したタグ、コマンドのステータスを示すフラグ、コマンドとステータスに関連するその他の情報となります。 許可されているステータスは、OK(成功)、NO(失敗)、および BAD(誤ったコマンド)です。
LOGIN コマンドでは、引数としてユーザーとパスワードが想定されています。 まず、誰かが無効なユーザー名とパスワードを入力した場合にサーバーがどのように応答するかを確認してみましょう。
TAG2 LOGIN user@outlook.com wrong-password
TAG2 NO LOGIN failed.
コマンドタグに続くのは NO ステータスであることに注意してください。
次に、有効なログインを試してみましょう。
TAG3 LOGIN user@outlook.com password
TAG3 OK LOGIN completed.
これでログインできました。 セッションを終了するには、LOGOUT コマンドを使用します。
TAG4 LOGOUT
* BYE Microsoft Exchange Server IMAP4 server signing off.
TAG4 OK LOGOUT completed.
IMAP クライアントを実装するには他のコマンドが必要であるため、もう一度 IMAP サーバーに接続してログインする必要があります。
では、受信トレイに関する情報を取得しましょう。
まず、アクセスしようとしているメールボックスがどれかをサーバーに伝える必要があります。この場合は INBOX です。
TAG5 SELECT "INBOX"
* 14 EXISTS
* 0 RECENT
...
TAG5 OK [READ-WRITE] SELECT completed.
これで、受信トレイのメッセージにアクセスする準備は整いましたが、メッセージを参照する方法が必要です。 この方法には、メッセージ番号または一意の識別子(UID)を使用する 2 つがあります。
メッセージ番号は、1 から始まり、受信トレイ内のメッセージ数までの単純なカウンターです。 メッセージが削除されると、後続のすべてのメッセージの番号が 1 つずつ減ります。 要素の 1 つが削除された配列として考えるとよいでしょう。
一方 UID は、他のメッセージに何が起ころうとも、その値を保持します。
UID は SEARCH コマンドを使って取得できます。 このコマンドには、特定の UID を取得する場合はメッセージ番号を、ディレクトリ内のすべての UID を取得する場合は ALL パラメーターを指定できます。
以下の例では、メッセージ番号 1 の UID を検索しています。UID は 483 です。
TAG6 UID SEARCH 1
* SEARCH 483
TAG6 OK SEARCH completed.
次に、ヘッダー、本文、添付ファイルなどのメッセージ情報を取得してみましょう。 これには FETCH コマンドを使用します。 このコマンドには多数のパラメーターがあります。詳細は、RFC 3501 をご覧ください。 この記事では、IMAP クライアントを実装するというニーズに関連するパラメーターのみを説明しています。
このデモで必要となる最初の情報は、メッセージのサイズです。 この情報は、RFC822.SIZE パラメーターを使って取得できます。
TAG7 FETCH 1 RFC822.SIZE
* 1 FETCH (RFC822.SIZE 70988)
TAG7 OK FETCH completed.
ここでは、メッセージ番号 1 のサイズは 70,988 バイトであることが示されています。
メッセージ番号の代わりに UID を使用してメッセージ情報をフェッチすることも可能です。
TAG8 UID FETCH 483 RFC822.SIZE
* 1 FETCH (RFC822.SIZE 70988 UID 483)
TAG8 OK FETCH completed.
メッセージヘッダーの基本的な From(送信者)、To(宛先)、Sbuject(件名)を取得することもできます。
TAG9 FETCH 1 (FLAGS BODY[HEADER.FIELDS (FROM TO DATE SUBJECT)])
* 1 FETCH (FLAGS (\Seen) BODY[HEADER.FIELDS (FROM TO DATE SUBJECT)] {157}
Date: Thu, 22 Apr 2021 15:49:05 +0000
From: Another User <anotheruser@outlook.com>
To: user@outlook.com
Subject: Greetings from Another User!
FLAGS (\Seen))
TAG9 OK FETCH completed.
次に、メッセージ本文を取得しましょう。 以下のコマンドを使用して、本文の全コンテンツを取得できます。
TAG10 FETCH 1 BODY[]
* 1 FETCH (BODY[] {9599}
...
MIME-Version: 1.0
--00000000000041bd3405c3403048
Content-Type: multipart/alternative; boundary="00000000000041bd3205c3403046"
--00000000000041bd3205c3403046
Content-Type: text/plain; charset="UTF-8"
...
--00000000000041bd3405c3403048
Content-Type: image/png; name="download.png"
Content-Disposition: attachment; filename="download.png"
...
TAG10 OK FETCH completed.
上記のコードでは、いくつかのブロックが -- -- の間の 16 進数で区切られているのがわかります。これはパートと呼ばれるもので、 パートが複数含まれるメッセージはマルチパートメッセージと呼ばれます。 コマンドにパートインデックスを渡すと、パートを直接取得することができます。
メッセージを削除するために、プロトコルには、STORE と EXPUNGE という、メッセージを削除済みとしてマークし、操作をコミットするコマンドがあります。
TAG11 STORE 1 +FLAGS (\Deleted)
* 0 EXISTS
* 0 RECENT
TAG11 OK [READ-WRITE] SELECT completed; now in selected state
TAG12 EXPUNGE
EXPUNGE: TAG12 OK EXPUNGE completed
最後は NOOP というシンプルなコマンドです。 このコマンドは、keep-alive ストラテジーを実装するためだけに使用されます。 デフォルトでは、IMAP セッションはコマンドなしで 30 分後に閉じられるようになっています。 そのため、NOOP コマンドを発行することで、接続をアクティブな状態に維持することができます。
TAG17 NOOP
TAG17 OK NOOP completed.
これで、IMAP の概要は終了です。 さらに詳しい情報が必要な方は、Web 上の多数あるお役立ち記事をご覧ください(一部をリソースのセクションに記載しました)。もちろん、RFC 3501 もご参考ください。
リソース
Atmail の「IMAP 101: Manual IMAP Sessions」
Fastmail の「Why is IMAP better than POP?」
IETF の「Internet Message Access Protocol」
IETF の「Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies」
Nylas の「Everything you need to know about IMAP」
次回パートでは、IRIS 内でこれらのコマンドを使用し、実際の動作を確認します!
それではまた!
記事
Toshihiko Minamoto · 2022年2月22日
## 最初のパートでは、IMAP プロトコルコマンドについて簡単に説明しました。このパートでは、IRIS を使用してこれらのコマンドを実装し、独自の IMAP クライアントを作成してみましょう!
## IRIS Email フレームワーク
IRIS プラットフォームには電子メールを操作するためのデフォルトのインターフェースとクラスがあります。 これらのアーティファクトは元々 POP3 実装用に設計されていますが、 これらのインターフェースとクラスを IMAP クライアントの実装に使用して拡張できないということではありません。 それでは、このことについて説明しましょう。
%Net.FetchMailProtocol: メールを取得するための基本クラスです。 IMAP クライアントはこれを拡張しています。
%Net.MailMessage: MIME メッセージです。 %Net.MailMessagePart. を拡張します。
%Net.MailMessagePart: マルチパートメッセージの MIME メッセージをカプセル化します。 このクラスにはそれ自体の配列があり、メッセージのサブパートをツリーで表現できるようにします。
%Net.MIMEReader: このユーティリティは、メッセージの MIME コンテンツを解析するメソッドで、%Net.MIMEPart インスタンスを生成します。
%Net.MIMEPart: メッセージの MIME パートをカプセル化し、それらに関する情報を取得するためのメソッドを提供します。
IMAP クライアントの実装
このセクションでは、IMAP クライアント、インバウンドアダプタ、および単純なプロダクションに関する実装内容を紹介します。 スペースを節約するために、ほとんどの実装メソッドは説明していないことに注意してください。 代わりに、それぞれの実装の完全な詳細へのリンクを付けています。 完全なソースコードは、GitHub から入手できます。
基本的な IMAP クライアントの作成
前のパートで説明したように、IMAP は TCP を介すプレーンテキストベースのプロトコルです。 つまり、そのようなプロトコル向けにクライアントを実装するベースコードは TCP クライアントということになります。
IRIS プラットフォームには、OPEN、USE、READ、WRITE、および CLOSE という I/O 操作を実行するための標準の ObjectScript コマンドが提供されています。
以下に、MS Outlook サーバーに接続し、ログインしてからログアウトする方法例を簡単に示します。
ClassMethod SimpleTest()
{
// connection configuration
SET dev = "|TCP|993"
SET host = "outlook.office365.com"
SET port = "993"
SET mode = "C"
SET sslConfig = "ISC.FeatureTracker.SSL.Config"
SET timeout = 30
// connection to MS Outlook IMAP server
OPEN dev:(host:port:mode:/TLS=sslConfig):timeout
THROW:('$TEST) ##class(%Exception.General).%New("Sorry, can't connect...")
USE dev
READ resp($INCREMENT(resp)):timeout
WRITE "TAG1 LOGIN user@outlook.com password", !
READ resp($INCREMENT(resp)):timeout
WRITE "TAG2 LOGOUT", !
READ resp($INCREMENT(resp)):timeout
CLOSE dev
// come back to default device (terminal) and prints responses
USE 0
ZWRITE resp
}
この出力は以下のようになります。
USER>d ##class(dc.Demo.Test).SimpleTest()
resp=3
resp(1)="* OK The Microsoft Exchange IMAP4 service is ready. [QwBQ..AA==]"_$c(13,10)
resp(2)="TAG1 OK LOGIN completed."_$c(13,10)
resp(3)="* BYE Microsoft Exchange Server IMAP4 server signing off."_$c(13,10)_"TAG2 OK LOGOUT completed."_$c(13,10)
このコードにはいくつかのハイライトがあります。
mode 変数を C に設定します。これはキャリッジリターンモードです。 IMAP の場合、この設定は必須です。
フラグ /TLS によって安全な通信レイヤー(SSL)を確立します。 このフラグ値を有効な SSL IRIS 接続に設定する必要があります。
OPEN コマンドによって、接続を開始します。
特殊なブール変数の $TEST は、タイムアウト付きのコマンドが成功した場合またはタイムアウトが期限切れになった場合に 1 を返します。 この例では、OPEN コマンドが 30 秒を超えると、コードは例外をスローします。
接続が確立したら、コマンド USE によって TCP デバイスが所有され、すべての READ と WRITE コマンドがこのデバイスにリダイレクトされるようになります。
WRITE コマンドが IMAP サーバーにコマンドを発行し、READ コマンドがその出力を取得します。
接続を終了するために、CLOSE コマンドを使用します。
デバイスを所有すると、READ と WRITE へのすべての呼び出しは、dev 変数に指定されているデバイスで、USE dev コマンドを使用した後に実行されます。 ターミナルに戻ってもう一度書き込む場合は、先に USE 0 コマンドを発行する必要があります。
それぞれの READ コマンドには、サーバーの応答を格納するバッファがありますが、容量が制限されています。 応答のサイズがこの制限を上回る場合は、別の READ コマンドを発行して全応答を読み取る必要があります。 もちろん、バッファサイズを増やすこともできますが、制限を超えるような状況に対処する準備を整えておく方が適しています。
前のパートで説明したように、IMAP の各コマンドにはタグが必要です。 このタグは、コードが完全な応答を取得したか、別の READ コマンドを発行する必要があるかどうかをチェックする上で役立ちます。 この場合は、ReadResponse メソッドを実装して、コードが確実にメッセージ全体を読み取るようにしています。
IMAP の %Net.FetchMailProtocol インターフェースの実装
%Net.FetchMailProtocol 抽象クラスは、IRIS プラットフォームでの電子メールの取得を抽象化します。 実装するのは以下のメソッドです。
Connect: IMAP サーバーへの接続を確立し、ユーザーをログインさせます。
GetMailBoxStatus: メールボックスのサイズとその中のメッセージの件数を取得します。
GetSizeOfMessages: メッセージ番号で識別される 1 件またはすべてのメッセージのサイズを取得します。
GetMessageUIDArray: 受信トレイ内の 1 件またはすべてのメッセージ UID を配列で取得します。
GetMessageUID: メッセージ番号に対応する UID を取得します。
Fetch: メッセージ番号で、メッセージのコンテンツ(またはマルチパートコンテンツ)を取得します。 %Net.MailMessage オブジェクトにカプセル化されたメッセージコンテンツを取得します。
FetchFromStream: これは Fetch と同じですが、IMAP サーバーを呼び出す代わりに、%BinaryStream オブジェクトにカプセル化された EML メッセージコンテンツからコンテンツを取得します。
FetchMessage: これは Fetch と同じですが、ByRef 変数で特定のメッセージヘッダーを返します。
FetchMessageInfo: メッセージヘッダーとメッセージのテキストのみを取得します。
DeleteMessage: 削除用の配列にメッセージを追加します。
RollbackDeletes: 削除用の配列をクリーンアップします。
QuitAndCommit: 削除用の配列のすべてのメッセージを削除し、IMAP サーバーから切断します。
QuitAndRollback: 削除用の配列をクリーンアップし、IMAP サーバーから切断します。
Ping: セッションをアクティブに維持するように IMAP に ping を送信します。
まず、インターフェースを実装するために、dc.Demo.IMAP という新しいクラスを作成します。 このクラスはいくつかのプロパティを継承します。IMAP サーバーへの接続を確立するように設定する必要があります。
また、dc.Demo.IMAPHelper というヘルパークラスも作成します。 このクラスは、IMAP 応答のメソッドを解析し、マルチパートメッセージのすべてもパートを取得し、コマンドを送信して応答全体が読み取られるようにするメソッドなどの周辺機能を格納します。
最初に実装するメソッドは、Connect メソッドです。 このメソッドは、クラスプロパティにカプセル化された構成を使用して、IMAP サーバーへの接続を確立します。 ログインも発行します。 このメソッドは、IRIS プラットフォームの OPEN コマンドを使用して IMAP サーバーへの接続を確立し、IMAP コマンドの LOGIN を使用してサーバーへの認証を行います。
次に実装するメソッドは GetMailBoxStatus です。 このメソッドは、SELECT コマンドを使用してメールボックスを選択し、メールボックス内のメッセージ件数などの追加情報を集めます。
IMAP には、すべてのメッセージのサイズを取得するためにすぐに使用できるコマンドがありません。 もちろん、すべてのメッセージを反復処理して、サイズの合計を計算することは可能ですが、 この方法では、処理速度の低下の問題が発生する可能性があります。 そこで、この実装では、すべてのメッセージのサイズは取得しません。
次のメソッドは GetSizeOfMessages です。 このメソッドは、受信トレイ内の 1 件以上のメッセージのサイズを取得します。 メッセージ番号が定義されていない場合、GetMailBoxStatus メソッドで説明した IMAP の制限と同じ理由で例外がスローされます。 ここでは、IMAP コマンドの FETCH <message_number> (RFC822.SIZE) を使用して、番号でメッセージのサイズを取得します。
次は、GetMessageUIDArray メソッドで、これは IMAP コマンドの SELECT と UID SEARCH [ALL | <message_number>] を使用して応答を解析し、UID 配列を取得します。
そして GetMessageUID メソッドを実装します。 このメソッドは、定義されたメッセージ番号の UID を取得して、GetMessageUIDArray メソッドと同じロジックを使用します。
その後に、Fetch メソッドを実装します。 これは、IMAP コマンドの SELECT と FETCH <message_number> BODY を使用して、MIME format でエンコードされているメッセージのコンテンツを取得します。 幸いなことに、IRIS プラットフォームには、MIME コンテンツのリーダーである %Net.MIMEReader クラスがあります。 このクラスは、ストリーム内のメッセージを取得して、解析済みのメッセージを %Net.MIMEPart オブジェクトで返します。
このメソッドは、MIME コンテンツを取得したら、%Net.MailMessage オブジェクトを作成し、%Net.MIMEPart オブジェクトのデータを挿入してそれを返します。
MIME コンテンツは、dc.Demo.IMAPHelper クラスの GetMailMessageParts メソッドを介して %Net.MailMessagePart オブジェクトにマッピングする %Net.MIMEPart オブジェクトにカプセル化されています。
次のメソッドは、FetchFromStream です。 このメソッドは、EML メッセージと共にストリームオブジェクトを取得し、それを %Net.MailMessage オブジェクトに変換します。 このメソッドはサーバーからコンテンツを取得しません。
次は、Fetch メソッドの特殊ケースである FetchMessage と FetchMessageInfo メソッドです。
DeleteMessage メソッドは、メッセージを削除するようにマークするのに対し、RollbackDeletes メソッドは、削除用にマークされたメッセージの配列をクリーンアップするだけです。
次は、QuitAndCommit メソッドです。 これは、IMAP サーバーから切断し、メッセージを削除するための CommitMarkedAsDeleted メソッドを呼び出します。
QuitAndRollback メソッドは、IMAP サーバーから切断して、削除用にマークされたメッセージの配列をクリーンアップするだけです。
最後のメソッドは Ping で、これは NOOP コマンドを発行して IMAP セッションをアクティブに維持します。
IMAP のインバウンドアダプタの実装
IRIS プラットフォームにおけるインバウンドメールの基本クラスは EnsLib.EMail.InboundAdapter です。 このインバウンドアダプタには、以下の構成が必要です。
メールサーバーのホストアドレス
メールサーバーのポート
サーバーにアクセスするためのユーザー名とパスワードを格納する資格情報 ID
SSL 構成
このクラスを拡張し、新しい dc.Demo.IMAPInboundAdapter という IMAP インバウンドアダプタが作成されました。
この新しいアダプタを使用するために、Mailbox 本番パラメーターにどのメールボックスを使用するのかを設定します。 デフォルト値は INBOX です。
実装は単純なもので、MailServer プロパティをオーバーライドして、そのタイプを dc.Demo.POP3ToIMAPAdapter IMAP クライアントに設定するだけです。 基本のアダプタクラスは POP3 コマンド用に設計されているため、このアダプタは POP3 フローを IMAP フローにマッピングします。
したがって、この POP3 から IMAP へのアダプタを使用すると、元のすべてのインバウンドアダプタロジックを実行しながら、POP3 コマンドの代わりに IMAP コマンドを使用することができます。
dc.Demo.POP3ToIMAPAdapter クラスでは、サーバー通信のプロキシとして、タイプ dc.Demo.IMAP の IMAP クライアント IMAPClient を使用しますが、 dc.Demo.POP3ToIMAPAdapter は %Net.POP3 を拡張しているため、%Net.FetchMailProtocol のすべての抽象メソッドをオーバーライドする必要があります。
また、%Net.POP3 クライアントが直接実装していた ConnectPort と FetchMessageHeaders という新しいメソッドを実装する必要がありました。 同様に、ConnectedGet と SSLConfigurationSet メソッドを作成して、%New.POP3 が直接実装していたプロパティを設定して取得しました。
単純なプロダクションのセットアップ
すべてのクラスが連携するように、単純なプロダクションをセットアップします。 IRIS プロダクションに関する詳細については、プロダクションの作成 をご覧ください。
このプロダクションには、IMAP インバウンドアダプタを使って新着メッセージをチェックするビジネスサービスとビジネスオペレーションが含まれています。 このコードは、Demo.Loan.FindRateProduction の相互運用性サンプルを変更したものです。
要するに、このプロダクションでは以下のことを行います。
GetMessageUIDArray メソッドを使用して、構成済みのメールボックスに存在するすべてのメッセージを取得する
メッセージをループし、Fetch メソッドでフェッチされた出力をトレースする
各メッセージの件名が、「[IMAP test] で開始」という基準に一致しているかどうかをチェックする
メッセージの件名が基準に一致する場合は送信者に返信し、そうでない場合はメッセージを無視する
それらのメッセージを削除して、もう一度解析されないようにする
この例では、Yahoo メールの IMAP サーバーである imap.mail.yahoo.com(ポート 993)を構成します。 また、「ISC FeatureTacker.SSL.Config」というデフォルトの IRIS SSL 構成を使用します。
次に、ユーザー名とパスワードを含む、imap-test という資格情報を以下のように構成します。
以下の画像が示すように、プロダクションが開始され、IMAP サーバーに新着メッセージを照会し続けます。 新着メッセージがある場合、インバウンドアダプタは、ヘッダーや件名といった情報を取得し、その情報に基づいてプロダクションでさらにアクションを実行できるようにします。
この例では、プロダクションはメッセージの件名が「[IMAP test]」で開始しているかどうかをチェックし、送信者にメッセージを送り返します。
メッセージがこの基準に一致していない場合は、そのまま無視されます。
まとめ
この記事では、IMAP クライアントの実装について説明しました。 最初に、IMAP とその主要コマンドに関するいくつかの重要な背景を確認しました。 次に、クライアントと IRIS プラットフォームからクライアントに接続する方法など、実装を詳しく説明しました。 また、IMAP を使用するためのデフォルトの相互運用性アダプタの拡張機能と、単純なプロダクションの例も示しました。
IMAP とその設定についてさらに理解し、IRIS への接続方法を学習したため、アプリケーションにメール機能をセットアップできるようになったことでしょう。 ここで言及した IMAP 関連トピックの詳細については、以下のリソースをご覧ください。
リソース
Atmail の「IMAP 101: Manual IMAP Sessions」
Fastmail の「Why is IMAP better than POP?」
IETF の「Internet Message Access Protocol」
IETF の「Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies」
InterSystems の「I/O Devices and Commands」
InterSystems の「Using the Email Inbound Adapter」
Nylas の「Everything you need to know about IMAP」
お知らせ
Mihoko Iijima · 2024年8月2日
開発者の皆さん、こんにちは!
昨年初めて開催した日本の InterSystems 開発者コミュニティのコンテストですが、📣今年も開催します!📣
テーマは昨年と同じで InterSystems IRIS/InterSystems IRIS for Health に関連した内容であればどのような内容でもご応募いただけます。
🖋 InterSystems Japan 技術文書ライティングコンテスト2024:IRISに関連した記事 🖋
🎁 参加賞:投稿いただいた方全員に👚開発者コミュニティ特製Tシャツ👕をプレゼントいたします!
🏆 特別賞:選ばれた3作品に特別賞があります。
8/30更新:賞品情報追加しました!ぜひご確認ください!👇
コンテストへの応募はとても簡単です。2024年9月2日(月)~10月18日(金)までの期間に開発者コミュニティに「IRISに関連した記事」を投稿してください(詳細は後述の「応募条件」「ボーナスポイント」をご参照ください)。
参加資格
どなたでもご参加いただけます(InterSystems 開発者コミュニティのアカウントを作成するだけでご応募いただけます)。
コンテストスケジュール
📝 応募期間
2024年9月2日(月)0時0分0秒 :応募開始日
2024年10月18日(金)23時59分59秒:応募締切日
✅ 投票期間
2024年9月2日(月)0時0分0秒 :投票開始日
2024年10月31日(木)23時59分59秒:投票終了日
※ 開発者コミュニティメンバーは、公開された記事に対して「いいね!👍」をクリックすることで投票したことになります。※ 記事の投稿が早ければ早いほど、「いいね!👍」を集める期間が長くなります。
応募条件
❗️ コンテスト期間中に書かれた記事で以下の条件を満たすものは、自動的にコンテストに応募することができます。
InterSystems IRISまたはInterSystems IRIS for Healthに関する内容の記事を日本語で投稿してください。
800文字以上の記事でご応募ください。(エディタの右下に表示される文字数をご確認の上ご応募下さい)
記事を投稿するときは、タグに「コンテスト」を必ず設定してください。(付け忘れた場合、投稿いただいた記事がコンテスト対象記事と認識されません)
同じテーマや似た内容であっても著者が異なる場合はご応募いただけます。
複数の記事を投稿いただけます(詳細は「ボーナスポイント」をご参照ください)
他国のコミュニティに公開されている記事の翻訳記事でのご応募は対象外となります。
投稿内容はコミュニティチームにより審査されます。予めご了承ください。
記事投稿方法、エディタの使い方については昨年と同様です。詳しくは👉「記事の投稿方法:第 1 回技術文書ライティングコンテスト」をご参照ください。
賞品情報🎁
審査員投票とコミュニティメンバーからの「いいね」の数の合計で順位を決定します。1位~3位を受賞された方は、各順位に記載された賞品の中からお好きな1点をお選びいただけます。(1位の方は1~3位の賞品を、2位の方は2~3位の賞品をお選びいただけます)
賞品は、表彰式の場でお選びいただく予定です。
🥇 1位
Apple Watch SE (第二世代, 2023)
SanDisk エクストリーム ポータブルSSD V2 外付け 2TB
Apple AirPods(第3世代)
🥈 2位
ソーダストリーム Genesis Deluxe v2(ジェネシス デラックス) スターターキット
moonka デジタルフォトフレーム 10.1インチ wifi 人感センサー 1280*800 32GBストレージ内蔵 タッチパネル
moonmoon トトノエライト 光 目覚まし時計 (トトノエライトプレーン)
🥉 3位
【温熱&加圧】ホットアイマスク<EYE RELAX>
スタバギフトカード(5000円分)
パナソニック 頭皮エステ 皮脂洗浄タイプ シルバー EH-HM7A-S
審査方法
以下の合計得点で順位を競います。
開発者コミュニティメンバーからの「いいね」の数(1いいね=1点)
ボーナスポイント(詳細は後述します)
審査員による投票(1位5点、2位3点、3位2点)
審査員はコミュニティチームが選出いたします。
表彰式について
(2024/9/18追記)今年のコンテスト表彰式は、11月8日(金)に開催する「開発者コミュニティミートアップ in東京」懇親会の中で行います!
ミートアップ詳細はこちらの記事をご参照ください👉「第2回 InterSystems Japan 開発者コミュニティ・ミートアップ in 東京開催のお知らせ」
ぜひ、ミートアップへのご参加もご検討ください!
ボーナスポイント
🎯 以下の内容を満たす記事を投稿すると、ボーナスポイントを獲得できます。
Embedded Pythonに関連する記事:4点
Embedded Pythonに関連する内容であれば、どのような内容でも対象となります。例えば、試してみた内容、使ってみての感想や工夫など共有してください。
参考となる記事:#Embedded Python
生成AIに関する記事:4点
InterSystems IRIS または InterSystems IRIS for Healthを使用した生成AIに関連する内容であれば、どのような内容でも対象となります。 生成AI をIRISと組み合わせて使ってみた例や感想など共有してください。
参考となる記事(英語):#Generative AI
2024年のPythonコンテストで1位に輝いた作品の翻訳記事:Text to IRIS SQL with LangChain:Pythonプログラミングコンテスト受賞作品紹介!
FHIRに関連する記事:3点
FHIRに関連する内容であれば、どのような内容でも対象となります。例えば、IRIS for HealthのFHIRリポジトリを試してみた感想、挑戦してみたこと、特定リソースに対してファサードを試してみた際の感想やコード例、工夫した点など共有してください。
参考となる記事:#FHIR
コードの記述が含まれる記事:2点
試されたコード例を記事に含めた場合、2点獲得できます。
動作するコードサンプルをGitリポジトリへ公開する:5点
ご自身のGitリポジトリにコードサンプルを公開し、記事内にリポジトリのURLを含めると5点獲得できます。
記事の内容に関連した画面キャプチャや図を貼る:1点
動作を試したときの画面キャプチャや補足説明用の図を記事含めた場合、1記事毎に1点獲得できます。
コンテスト投稿者が他者の記事に質問を書く:1記事毎に1点
コンテスト応募者が他者の記事に質問を投稿した場合、1記事毎に1点獲得できます。
コンテスト応募者がコミュニティ内の質問記事に対して回答を書く:回答毎に1点
コンテスト応募者がコミュニティに寄せられた質問に対して回答を書いた場合、回答毎に1点獲得できます。
この後も、コンテスト最新情報を投稿していきます。👀お見逃しなく!
皆様からのご応募、お待ちしております! 本日より、コンテスト始まりました!💨
そして、賞品詳細が確定しましたので、以下お知らせいたします(お知らせ記事も更新しています)。
今回は、少し方式を変えてみました。
1位~3位を受賞された方は、各順位に記載された賞品の中からお好きな1点をお選びいただけます(1位の方は1~3位の賞品を、2位の方は2~3位の賞品をお選びいただけます)。
賞品は、表彰式の場でお選びいただく予定です。表彰式詳細はについては、後日お知らせいたします。
🥇 1位
Apple Watch SE (第二世代, 2023)
SanDisk エクストリーム ポータブルSSD V2 外付け 2TB
Apple AirPods(第3世代)
🥈 2位
ソーダストリーム Genesis Deluxe v2(ジェネシス デラックス) スターターキット
moonka デジタルフォトフレーム 10.1インチ wifi 人感センサー 1280*800 32GBストレージ内蔵 タッチパネル
moonmoon トトノエライト 光 目覚まし時計 (トトノエライトプレーン)
🥉 3位
【温熱&加圧】ホットアイマスク<EYE RELAX>
スタバギフトカード(5000円分)
パナソニック 頭皮エステ 皮脂洗浄タイプ シルバー EH-HM7A-S
そして、📣今年も参加賞あります!📣
参加賞:記事を応募された方全員に開発者コミュニティ特製Tシャツ👚をプレゼントいたします!
ぜひご応募ください!🖋 今年のコンテストへ最初の応募がありました!👏
✅ FHIR Object Modelを使ったInteroperability開発
コミュニティメンバーは、コミュニティにログイン後「いいね」をクリックすることで投票できます。コミュニティのアカウント登録がまだの方は、ぜひ登録してください!
アカウント作成方法
もう1つお知らせがあります。
コンテスト表彰式の情報を更新しました。
コンテスト表彰式は、11月8日(金)開催のミートアップ懇親会の中で行います!ぜひ、ミートアップへの参加もご検討ください!
✅第2回 InterSystems Japan 開発者コミュニティ・ミートアップ in 東京開催のお知らせ 応募締め切りまであと10日となりました!IRISに関連する情報ならどのような内容でもご応募いただけます。ぜひチャレンジしてみてください!
また、応募作品を応援📣したい方、開発者コミュニティログイン後、イイネをクリックすることで投票できます!
応募作品まとめページはこちらです:🖋 InterSystems Japan 技術文書ライティングコンテスト2024:IRISに関連した記事 🖋
応募締め切りまで残り数日となりました。応募のし忘れはございませんか??
2024年10月18日(金)23時59分59秒:応募締切日
現在、6作品の応募があります。コミュニティメンバーは、イイネをクリックすることで応募作品を応援できます📣
@Yusuke.Kojima さんの 「FHIR Object Modelを使ったInteroperability開発」
@Kosaku.Ikeda さんの「UnitTest(ユニットテスト)の自動化について考察」
@Saori.Murata さんの「IRIS環境設定の自動化について~インストールマニフェストの利用~」
@Akio.Hashimoto1419 さんの「Embedded Python を利用する時の注意点」
@So.Ochi さんの「IRIS開発における生成AIの活用について」
@Kawasaki.Kazuhito さんの「SourceControlを用いた自動ソースチェックツールについて」イイネによる投票は、2024年10月31日(木)23時59分59秒 まで受け付けています。
記事の応募、そしてイイネによる投票をお忘れなく!!👉https://jp.community.intersystems.com/contests/2
お知らせ
Seisuke Nakahashi · 2024年8月14日
InterSystems IRIS 2024.3 と InterSystems IRIS for Health 2024.3 の最初の開発者プレビューが WRC プレビューダウンロードページ に公開されました。コンテナ版は InterSystems コンテナレジストリ から入手いただけます。コンテナは latest-preview とタグ付けされています。
今回はリリースサイクルの中で非常にはやいビルドであり、「本リリースの注目点」と呼べる機能はまだありません。今後のプレビューリリースで順次、新機能が追加されていく予定です。
ドキュメントは以下のリンクからご覧いただけます。
InterSystems IRIS
InterSystems IRIS for Health
キットについて
本リリースでは、すべてのサポート対象プラットフォーム向けに、従来のインストーラ形式を提供します。サポート対象プラットフォーム一覧は こちらのドキュメント をご覧ください。
インストーラとプレビュー用ライセンスキーは、WRC プレビューダウンロードページ もしくは 評価サービスページ ("Show Preview Software" フラグをチェックしてください) から入手いただけます。
お知らせ
Mihoko Iijima · 2024年10月28日
開発者の皆さん、こんにちは!
第2回 技術文書ライティングコンテスト に応募された作品のボーナスポイント獲得状況をお知らせします📣(順位発表は11月1日を予定しています)
記事
EmbeddedPythonに関連する記事(4点)
生成AIに関連する記事(4点)
FHIRに関連する記事(3点)
コードの記述が含まれる記事(2点)
動作するコードサンプルをGitリポジトリへ公開する(5点)
記事の内容に関連した画面キャプチャや図を貼る(1点)
合計点
FHIR Object Modelを使ったInteroperability開発
✅
✅
✅
✅
11
UnitTest(ユニットテスト)の自動化について考察
✅
✅
6
IRIS環境設定の自動化について~インストールマニフェストの利用~
✅
✅
✅
✅
12
Embedded Python を利用する時の注意点
✅
✅
✅
7
IRIS開発における生成AIの活用について
✅
✅
✅
7
SourceControlを用いた自動ソースチェックツールについて
✅
✅
✅
8
コンテストにご応募いただいた @Yusuke.Kojima さん @Kosaku.Ikeda さん @Saori.Murata さん @Akio.Hashimoto1419 さん @So.Ochi さん @Kawasaki.Kazuhito さん、もし点数に間違いがある場合は、この記事のコメント欄やダイレクトメッセージでお知らせください!
まだ、「いいね」クリックによる投票を行っていないコミュニティメンバーの皆さんは、これだ🔥と思う作品にぜひ「いいね」してください!
投票方法については「投票受付中!:第2回 InterSystems Japan 技術文書ライティングコンテスト」の記事をご参照ください。
お知らせ
Mihoko Iijima · 2024年10月31日
開発者の皆さん、こんにちは!
📣 第2回 InterSystems Japan 技術文書ライティングコンテストの勝者が決定しましたので、発表します!📣
🥇 1位 - @Saori.Murata さんが投稿された「IRIS環境設定の自動化について~インストールマニフェストの利用~」
以下賞品の中からお好きな1点をお選びいただけます。
Apple Watch SE (第二世代, 2023)
SanDisk エクストリーム ポータブルSSD V2 外付け 2TB
Apple AirPods(第3世代)
🥈2位 - @So.Ochi さんが投稿された「IRIS開発における生成AIの活用について」
以下賞品の中からお好きな1点をお選びいただけます。
ソーダストリーム Genesis Deluxe v2(ジェネシス デラックス) スターターキット
moonka デジタルフォトフレーム 10.1インチ wifi 人感センサー 1280*800 32GBストレージ内蔵 タッチパネル
moonmoon トトノエライト 光 目覚まし時計 (トトノエライトプレーン)
🥉 3位 - @Kawasaki.Kazuhito さんが投稿された「SourceControlを用いた自動ソースチェックツールについて」
以下賞品の中からお好きな1点をお選びいただけます。
【温熱&加圧】ホットアイマスク<EYE RELAX>
スタバギフトカード(5000円分)
パナソニック 頭皮エステ 皮脂洗浄タイプ シルバー EH-HM7A-S
🌟 参加賞 - 投稿者全員
(今回のコンテストは賞品を選択式にしてみました。1位の方は1~3位の賞品を、2位の方は2~3位の賞品をお選びいただけます。)
受賞者の皆さん、おめでとうございます!🎊 またコンテストへチャレンジいただきありがとうございます!
コンテスト表彰式は、11月8日開催のミートアップ第2部の中で行います。ご都合よろしければぜひご参加ください!
(各順位の賞品も表彰式の中でご選択いただく予定です。)
さて、投票結果の得点内訳ですが、コミュニティメンバーからの「いいね」の数とエキスパート得点(審査員:インターシステムズ社員投票+ボーナス得点)の合計得点での結果となります。
🥉3位が接戦でしたので、以下得点詳細をお知らせします。
記事
いいね
エキスパート得点
合計
IRIS環境設定の自動化について~インストールマニフェストの利用~
24
21
45
IRIS開発における生成AIの活用について
12
30
42
SourceControlを用いた自動ソースチェックツールについて
15
17
32
UnitTest(ユニットテスト)の自動化について考察
11
20
31
FHIR Object Modelを使ったInteroperability開
8
22
30
Embedded Python を利用する時の注意点
6
7
13
コンテストへ記事を投稿いただいた、 @Saori.Murata さん @So.Ochi さん @Kawasaki.Kazuhito さん @Yusuke.Kojima さん @Kosaku.Ikeda さん @Akio.Hashimoto1419 さん、素晴らしい内容をコミュニティメンバーに共有してくださりありがとうございました!
また、いいねで記事を応援してくださったコミュニティメンバーの皆様、ありがとうございました!
日本、アメリカ、中国、etc..国を問わずインターシステムズ開発者コミュニティのコンテストはどこかで何かを開催しております。最近ではコンテスト以外にもアイデアを出し合うアイデアソン、コーディングではなくウォーキングにチャレンジするウォーキングチャレンジなども開催しています。
コミュニティメンバーの方ならどなたでもご参加いただけます。各国のコミュニティページもぜひ、覗いてみてください👀
今後も日本独自のコンテストを企画できたら!と思っておりますので、ぜひコミュニティのお知らせ記事に今後もご注目ください!
お知らせ
Mihoko Iijima · 2025年2月28日
開発者の皆さん、こんにちは!
今年最初のプログラミング・コンテスト(USコミュニティ)の開催が決定しました!
🏆 InterSystems AI プログラミングコンテスト:ベクトル検索、生成AI、AIエージェント 🏆
期間:2025年3月17日~4月6日
賞品総額:$12,000 + Global Summit 2025 へご招待!
コンテストのテーマ
InterSystems IRIS、InterSystems IRIS for Health、または IRIS Cloud SQL 上で、生成 AI を使用するあらゆるソリューションを開発したものをご提出ください。
応募要件:
アプリケーションやライブラリは完全に機能するものでなければなりません。他の言語ですでに存在するライブラリのインポートや直接のインターフェイスであってはなりません(C++を除きます)。既存のアプリケーションやライブラリのコピーペーストでの応募もできません。
応募可能なアプリケーション
Open Exchange アプリケーションの新規作成、または既存アプリケーションであっても大幅に改善されているものであればご応募いただけます。
コミュニティの担当チームは、コンテストへの応募を承認する前に申請された全アプリケーションをレビューします。
全てのアプリケーションは、IRIS Community Edition 、IRIS for Health Community Edition または、IRIS Cloud SQLで動作する必要があります。MacやWindowsのホスト版をご利用いただく場合は、インストールキットをダウンロードしてください。コンテナを利用する場合は InterSystems Container Registryから pull、または、最新バージョンのイメージ(intersystemsdc/iris-community:latest または intersystemsdc/irishealth-community:latest)をご利用ください。
コミュニティエディションのインストールキット入手方法については、「InterSystems IRIS/InterSystems IRIS for Health コミュニティエディションのダウンロード方法」をご参照ください。
コンテナ版IRISの利用方法については、「InterSystemsコンテナレジストリの使い方とコンテナ開始までの流れ(解説ビデオ付き)」をご参照ください。
アプリケーションはオープンソースであり、GitHubで公開されている必要があります。
アプリケーションの README ファイルは、英語で記述してください(日本語で記述したものがあればそのまま掲載いただき、英文の追記をお願いします。翻訳アプリを使用しますが翻訳をお手伝いすることもできますのでお気軽にお知らせください!)。また、インストール手順や、アプリケーションがどのように動作するかの説明、またはビデオデモを含めてください。
1人の開発者は最大3つのアプリケーションを応募できます。
記事はUSコミュニティに投稿してください。
注意:インターシステムズの審査員は、複雑さと有用性の基準に基づきコンテストに応募が承認されるかどうかの最終決定権を持ちます。その決定は最終的なものであり、不服申し立ての対象にはなりません。
入賞特典:
❗AIエージェントの活用を紹介する最も興味深いプロジェクトを応募された方は、 Global Summit 2025 にご招待いたします(イベントのチケットと宿泊施設を提供)。
1. Experts Nomination - 審査員から多く票を集めたアプリケーションには、以下の賞金が贈られます。
🥇 1位 - $5,000
🥈 2位 - $2,500
🥉 3位 - $1,000
🏅 4位 - $500
🏅 5位 - $300
🌟 6-10位 - $100
2. Community winners - 開発者コミュニティで多く票を集めたソリューションには、以下の賞金が贈られます。
🥇 1位 - $1,000
🥈 2位 - $600
🥉 3位 - $300
🏅 4位 - $200
🏅 5位 - $100
複数の参加者が同数の票を獲得した場合、全参加者が勝者となり賞金は勝者間で分配されます
参加資格:
どなたでもご参加いただけます!(InterSystems 開発者コミュニティのアカウントを作成するだけでご応募いただけます)
開発者がチームを組んで共同でアプリケーションを作成し、応募することもできます! 1チーム 2~5名 までご参加いただけます。
チームでご応募いただく場合は、アプリケーションの README にチームメンバー名の記載をお忘れなく!!(開発者コミュニティのプロファイルのリンクもお願いします)
スケジュール:
🛠 アプリケーション開発と応募期間:
2025年3月17日 (00:00 EST):コンテスト開始!
2025年3月30日 (23:59 EST):応募締切日
✅ 投票期間:
2025年3月31日 (00:00 EST):投票開始!
2025年4月6日 (23:59 EST):投票終了日
応募、投票期間中、アップロードしたアプリケーションは改良できます。
Helpful Resources:
✓ ドキュメント
InterSystems IRIS ベクトル検索ドキュメント
InterSystems IntegratedML ドキュメント
Boosting Facial Recognition Vector Search
✓ サンプルアプリケーションやライブラリ
IRIS Vector Search
llamaindex-iris
langchain-iris
workshop-vector-face
IRIS FHIR SQL Builder DBT IntegratedML
integratedml-demo-template
integratedml-demo - Embedded Python demo suite
iris-local-ml - Hugging Face and python usage with IRIS
iris-fine-tune-ml - training and tuning ml models with python and InterSystems IRIS
QuinielaML - soccer match predictions with IntegratedML
workshop-integratedml-csv
iris-rag-demo - RAG demo implementation
✓ オンラインコース(英語)
Using Vector Search for Generative AI
IntegratedML Interactive Intro Course
Hands-on with IntegratedML
✓ ビデオ
Using Vector Search for Generative AI
Adding AI into Interoperability Production
Building Models with integratedML in the cloud
Generative AI Use Cases in Healthcare
日本語ビデオ:ベクトル検索のご紹介(2024/5/30開催ウェビナー)
✓ IRIS初心者向け
Build a Server-Side Application with InterSystems IRIS
Learning Path for beginners
ラーニングパス
✓ ObjectScript Package Manager (IPM):
How to Build, Test and Publish IPM Package with REST Application for InterSystems IRIS
Package First Development Approach with InterSystems IRIS and IPM
✓ コンテストへの応募方法
Need Help?
ご質問がある場合は、この投稿へコメントいただくか、InterSystems の Discord server チャンネルにご参加ください!
皆様からのアプリケーションのご応募、お待ちしております!👍
❗️ コンテストに参加された場合、こちらに記載されているコンテスト規約に同意したものとみなされます。ご応募の際、ご一読いただきますよう、お願い申し上げます❗️
ご応募方法について
以下の応募方法ビデオをご参照ください。
以下、コンテストに応募する迄の手順をご説明します。
コンテスト応募までの流れは以下の通りです(※ビデオでは、3番以降の内容をご紹介しています)。
1、IRISプログラミングコンテスト用テンプレートを使用して、開発環境を準備します。
2、コンテスト用アプリケーションを作成します。
3、コンテストの準備が完了したら、ソースコードをローカルのGitリポジトリへコミットします。
初回コミット時に、Gitの初期設定がないためコミットが失敗することがあります。その場合は、以下のコマンドでGitユーザ名とEmailを設定します。
git config --global user.name "ここにユーザ名"
git config --global user.email "ここにメールアドレス"
4、ローカルのGitリポジトリのコミットが完了したら、リモートのGitリポジトリを作成します。
リポジトリ作成後、リモートリポジトリのURLをコピーします。
5、リモートのGitリポジトリへPushします。
git push ここにリモートのリポジトリのURL
6、OpenExchangeにログインし、アプリケーションを追加します。
※事前にDeveloper communityでユーザアカウントを作成する必要があります。ログイン後、Profile→Applications から Application をクリックし、4 でコピーしたリモートのGitリポジトリのURLを設定します。
アプリケーションを登録すると、画面右上に「Send Approval」のボタンが表示されるので、クリックします。
再度作成したアプリケーションを開くと、「Apply for Contest」ボタンが表示されるので、クリックすると応募が完了します。
お知らせ
Mihoko Iijima · 2024年10月20日
開発者の皆さん、こんにちは!
🖋 InterSystems Japan 技術文書ライティングコンテスト2024:IRISに関連した記事 🖋の応募受付期間が終了し、残るは投票のみとなりました!
第2回目のコンテストは✨6作品✨の応募がありました!
コミュニティメンバーは「イイネ」 をクリックすることで投票できます。2024年10月31日(木)23時59分59秒 まで投票受付中です。
素晴らしい6作品のなかから、🔥これだ!🔥と思う記事の「イイネ」をクリックしてください。
以下、投票方法についてご案内します。
(1) 開発者コミュニティにログインする。
ログインアカウントをお持ちでない方は、コミュニティページ上部の (下図赤枠)をクリックし、アカウント登録を行って下さい。
クリックした後の流れは「アカウント作成方法」の記事をご参照ください。
(2) 投稿記事一覧ページに移動します。
投稿記事を👀じっくり読みます👀
(3) 「いいね」をクリックします。
投稿記事一覧ページ上でクリックする場合はそれぞれの投稿画面左下にあるのマークをクリックします。クリック前はグレーの表示ですがクリック後に変わります。
各記事を参照している状態で「いいね」をクリックする場合は、画面左側にアイコン一覧が縦に並んでいますのでのマークをクリックします。
良い記事が見つかったらをクリックして作者を応援しましょう!📣