2022年のIBM Championで、IBM i用Visual Studio Codeのメンテナンスなども担当するコンサルタントのLiam Barry(リアム・バリー)氏が6月1日、「Merlinの印象」(Merlin impressions)と題するブログを公開した。開発者とコンサルタントの視点でMerlinの特徴に触れているので紹介したい。
リアム・バリー氏
コンサルタント
ソフトウェア・アドボケイト
IBM Champion 2022
先週、IBMの新製品Merlinを見ることができ、いくつかの部分にとても興奮しました。その中で、技術的なレベルで気づいたことをブログにまとめたいと思います。
私が今(2022年5月)書こうとしているのは、Merlinの以下の3つのパートについてです。
・ヴォルト(The vault)とインベントリ(Inventory)
・Merlin CI/CD
・Merlin IDE
簡単に言うと、私はMerlinに刺激を受け、IBMがMerlinをユーザーとベンダーのためにどのように使い勝手よくするか、とても楽しみにしています。Merlinは開発者を正しい方向へと導いてくれるので、とてもエキサイティングなのです。
ヴォルトとインベントリ
今回のブログでヴォルトとインベントリを1つにまとめたのは、この2つがある程度、関連するからです。Merlinのインベントリ管理は、異なるIBM i LPARへの接続を構成し、その情報を保存・管理する機能を提供します。企業によっては多くの開発環境がプライベートクラウドやパブリッククラウド上のIBM i LPARに配置されていますが、インベントリはそれらの管理のために機能するのです。
ヴォルトは、ユーザー名、パスワード、キー、およびその他多くのものを管理する機能を提供します。インベントリとヴォルトは、開発環境やCI/CDプロセスを設定する際に大きく関わります。
またヴォルトでは、Merlinのユーザーも管理できます。これにより、開発者がMerlinのインスタンスにサインオンするためのアカウントを作成することができます。
CI/CD
CI/CDは、Merlinの1つのパートです。簡単に説明すると、MerlinのCI/CDは他のCI/CDオーケストレータの上位層に位置しています。現在、MerlinがサポートしているのはJenkinsですが、いずれはもっと多くのCI/CDツール(Bambooなど)がサポートされる可能性があります。つまり、Merlinはパイプラインプロセスやデプロイメントを管理するための独自のCI/CD用コンテナを実装せず、Jenkinsが代わりにそれらの実行ステップを作成するのです。
教訓:MerlinのCI/CDとは、Jenkinsの上位層にあるUIであり、MerlinのUIからJenkinsを使ってパイプラインの作成を自動化します。
MerlinのCI/CDのためのUIは、とても素晴らしくできています。Jenkinsのインスタンスを自動的にセットアップしたり、ほかの場所でセットアップした既存のインスタンスを指定することも可能です。
開発者は「プロファイル」と呼ばれる、多数のステップからなるJenkinsパイプラインを効果的に作成できます。Merlin CI/CDは、以下のような基本的なステップを提供しています。
・IBM iへのファイルのデプロイ
・CLコマンドの実行
・(そのほかのステップについては覚えていません)
プロファイルのセットアップはMerlinのUIで行われ、そこでステップを動的に追加したりアレンジできます。MerlinのUIでプロファイルを作成または変更すると、接続しているJenkinsインスタンスで必要な変更が行われます。プロファイルは、gitリポジトリと同様に、リモートシステム上に「作業ディレクトリ」を持つことができ、最終的に特定のブランチに接続が可能です。
以上のアイデアは、ユーザーがJenkinsインスタンスに触れることなく、Merlinからすべてを管理できるようにするということです。しかし、本当に複雑なパイプラインの場合、ユーザーはいつでも好きなときにJenkinsインスタンスにアクセスすることができます。
ノート:プロファイルを実行するIBM iの選択やプロファイルへの接続時に用いるユーザーの選択(ヴォルトから選択)では、インベントリが大きな役割を果たすことに留意してください。
IDE
MerlinのIDEは、私の興味の対象です。Merlin IDEは、Merlinの内部で管理されるTheiaのインスタンスです。ユーザーはMerlinのUIから多くのTheiaのインスタンスを管理できます(たとえば、多くのプロジェクトで作業している場合など)。TheiaとVisual Studio Codeは別物です。Theiaは、Eclipse FoundationによるVS Codeのオープンソースベースの再実装です。Merlin IDEはVS Codeの拡張機能を実行できますが、最新かつ最高のVS Code APIを使用しないという前提においてです。MerlinでVS Code APIを使用するには、Theiaのキャッチアップを待つ必要があります。
Merlin IDEは、さまざまある言語の中で、RPGLE(RPG Ⅳ)に対応しています。リモートIBM i上でコマンドを実行し、作業ディレクトリをリモートサーバーにアップロード(rsync)したり、そのほか多くのことを行うことができます。これはとてもすばらしい!
問題は、Merlinとは直接関係ありませんが、開発のワークフローが決められていることです。Merlinにソースを取り込むには、gitを使う必要があります。IBMは、ユーザーにソース管理ツールを使用し、Merlin IDEのようなツールを使ってリモートで開発することを推奨しています。しかしほとんどのIBM iユーザーは、まだソースメンバーを使用しています。私は、gitを使用してIFSで開発するようユーザーに働きかけてきました(そしてそうした働きかけを行ったユーザーは、現在そのような開発を行っています!)。要するにMerlinは、次のような2つの大きな変化をユーザーが起こすことを期待しているのです。
・ソースコードをgitに移動する(これはIFSに取り込むということです)
・開発者がリポジトリやビルドツールを使えるようにする
Merlin IDEは本当にすばらしいものですが、開発者や企業がソースコードをgitに取り込むということに関しては、まだやるべきことがあります。
もっと、エキサイティングなやるべきことがあり、その成長を見るのが待ち遠しく感じられます。RPGLE(RPG Ⅳ)の継続的な成長はもちろんのこと、SQL、CL、COBOLの進化も楽しみです。そしてIBMがこの開発手法(git-flow)だけを推奨している今、より多くの企業がこの手法に移行してくれることを期待しています。
ARCADはどうでしょうか?
ARCADは、MerlinのCI/CDとIDEに追加で使える「機能」を提供しています。これは、既存のARCADユーザーにとっては朗報でしょうが、そうでなくても、とくに心配する必要はなさそうです。
ARCADは、Merlin IDEにフックを追加してARCAD Builderを呼び出したり、Merlin CI/CDにフックを追加してARCAD Dropsを使用できるようにします。ARCAD Dropsを使用することで、CIパイプラインを作成する際に追加のステップになる可能性があります。
将来的にはMerlinを拡張し、ほかのベンダー製品も利用できるようにすることが意図されていると思えます。
・Liam barryのTwitter: @notesofbarry
・ブログ「Merlin impressions #58」(英語)
https://github.com/worksofliam/blog/issues/58
◎関連
IBM i Merlinを発表、DevOps・CI/CDツールをセットしたIBM iモダナイゼーション用統合開発環境、Webブラウザで利用 ~IBM iネイティブ機能のRESTful API化も容易
https://www.imagazine.co.jp/merlin001/
[i Magazine・IS magazine]