インターシステムズのプログラミングコンテスト、日本初の受賞者になれるチャンス
日進月歩のアプリケーション開発において、最新の開発技術に対応していくことは重要課題だ。インターシステムズでは、1978年より新しい技術に対応しながらデータベース開発一筋に取り組み続けてきた。データ分析機能を追加したり、データベースでありながらシステム連携の基盤を搭載したり、近年では機械学習分野のAutoMLにも取り組む。そうしたさまざまな開発技術に対応し、「選択の自由」を重視したDBMSが同社が提供する「InterSystems IRIS Data Platform(IRIS)」だ。
インターシステムズではエンジニア支援を目的として、この「IRIS」とさまざまな技術を活用し、プログラミングを競い合うコンテストを毎月開催。投票による優秀作品には賞金も用意されているという。コンテストでは参加者にプログラミングを楽しんでもらうために、短時間で簡単に開発環境を準備し、すぐにプログラミングに注力できるよう、開発環境のテンプレートとしてコンテナを利用した作成手順を提供している。なお、テンプレートはコンテスト以外の用途でも自由に使えるようになっている。
すでに4月~12月までのコンテスト開催内容が決まっており、8月はFHIRアプリケーション、9月はフルスタックアプリケーション、10月はInteroperability(相互運用性)機能のアダプター作成、11月はIRISを使用したマルチモデルソリューション、12月はIRISを使用したInteroperability(相互運用性)ソリューションと続く。飯島氏は「いずれもいまだ日本からの応募がなされておらず、初の受賞者となる可能性もある。ぜひ、腕試しとして参加してみてほしい」と強調した。詳細はこちらで確認できる。
簡単に開発環境を用意できるコンテナを用いた開発環境テンプレートとは?
それでは、コンテナを利用したプログラミングコンテスト用の開発環境テンプレートとはどのようなものか。飯島氏は、実際のコンテストで利用していたテンプレートを例に取り、中身を解説しながら「何ができるか」を紹介した。
6月/7月は「AI/MLソリューション」がテーマとなっており、次のような準備が必要とされた。
- 機械学習ができる環境(Python、Rなど)と使用するライブラリのインストール
- データベースに接続するために必要なモジュールの準備
- データ提供元となるデータベース(InterSystems IRIS)の準備
しかし、コンテナを使わずにはじめから手動で用意するのは大変だ。そこで、「便利な開発プロセス」を利用できるよう用意されているのが開発環境テンプレートだ。ソースコードはGitで公開されており、そこにはDockerfileなども含まれる。ローカルに落としたコンテナを開始するだけで開発環境が整うわけだ。
6月/7月開催分では、Docker Hubでイメージを公開している「IRISのコンテナ」と「Jupyter Notebook サーバー/TensorFlow 2.2/JDBC用Python3ライブラリ(JayDeBeApi)を含んだコンテナ」の2つが用意されており、両者間のネットワーク接続も準備した状態でテンプレートが完成する。
飯島氏は、「テンプレートには開発環境の土台の部分が提供されていると考えていただければ。準備が整っているので、日頃Jupyter Notebookを使用している人ならすぐに自由にプログラミングができる」と語る。
また、接続方法など全ての情報を公開しているため、その他の方法を選択できる。なお、IRISのイメージはDocker Hubで公開されている。「InterSystems」と検索して無料版の「IRIS Community Edition」を選び、バージョンアップが頻繁に行われているため最新のタグ名を選ぶようにしたい。
テンプレート起動までの手順としては、コンテスト告知ページで情報をチェックし、InterSystemsの開発者がサンプルやライブラリを共有する公開ポータル「Open Exchange」でテンプレート情報の確認を行ったら、Gitへ移動してローカルにクローンするためのURLをコピーし、その中に含まれるコンテナを起動させればすぐにプログラミングを開始することができる。月によってコンテストの内容は変わり、開発環境テンプレートもそれぞれ変わるが、起動までの手順はほぼ変わらない。
5月開催の「Native APIの回」では、「機械学習チャットボット」を開発したブラジルのBanzaiさんが優勝した。IRISに接続するにはSQLはもちろん、ObjectやJSON、XML、Key-Valueなどの形式が使え、言語もJavaやNode.js、Python、.NETから選択できる。BanzaiさんはPython Native APIを使用してPythonとIRISを組み合わせて、チャットボットで会話したデータをIRISに格納し、機械学習のトレーニングデータとして利用するものだ。また、データをIRISに格納し、Pythonの便利なグラフ用ライブラリを使用してCOVID-19に関するチャートも作成し、応募していたという。こうした応募作品は全て「Open Exchange」で公開されているので、参考にすると良いだろう。