IBMとMicrosoft、ついに.NETをPowerに移植
Microsoft .NETランタイムをPowerに導入するプロジェクトの存在について当初は否定していたにもかかわらず、IBMは今週、.NETバージョン7がRed Hat Enterprise Linux on Power上で稼働するようになると公式に発表しました。このテクノロジーはすぐに利用可能になりますが、.NETアプリケーションをDb2 for iへ接続するデータベース ドライバーについては、もう少し時間が掛かるようです。
長年にわたって、.NETランタイムをWindowsの根っこから引き抜いて、Powerプラットフォームに移植しようとする試みは、IBM i オペレーティング システムをターゲットとするものを含めて、様々なものがありました。2011年、Linux、MacOS、BSD、さらにはゲーム機といった様々なシステムをターゲットとしたMicrosoftの.NET Frameworkのオープンソース実装である Mono Projectは、大きく前進しました。
2018年、IBM i 開発者のCalvin Buckley氏は、MonoミドルウェアをAIX上で稼働させるための 作業を完了 させています。そして今度は、MonoがPASE AIXランタイムを介してIBM i 上で稼働することが可能になりました。Buckley氏の尽力は、 Microsoft .NETプログラマーからの支援と相まって、IBM i 上の.NETランタイムという長年の夢の実現に大きく貢献したと、 IBMのIBM i オープンソース担当シニア ビジネス アーキテクトのJesse Gorzinski氏は述べています。
ところが、そうした.NET実装は、IBM i コミュニティで支持を集めるには至らなかったとGorzinski氏は述べます。
「市場に受け入れられなかったのには、いくつもの理由がありました」とGorzinski氏は『 IT Jungle』に述べています。「IBM i 上での.NETの稼働には大きな市場があるという確信はまだありませんが、私はいつでも勉強し直す用意はあります。」
IBM i へのMonoの移植(Gorzinski氏は、PASEで稼働していてもこれを「ネイティブ」と呼びました)が普及しなかった大きな理由の1つは、当時のMonoベースの.NETスタックには、欠けているピースが多過ぎたことでした。
「それを成長させるだけの生態系が十分に移植されなかったということです」とGorzinski氏は述べています。「たくさんあったのは、アプリケーションが抱えていた依存関係であり、それではうまく行きません。」
複雑な言語およびランタイムにまたがった広範にわたる技術的互換性がなかったことと、IBM i コミュニティに.NETに対する熱意が足りなかったことが相まって、Buckley氏の労力は、ほぼ水泡に帰する形になってしまいました。
「当時、.NET開発に勤しんでいた開発者にしてみれば、それをIBM i で稼働できるということに、取り立てて魅力は感じていませんでした」とGorzinski氏は思い起こします。「20年間、Windows PC上で.NETを書いてきたとしましょう。そこへ誰かがやって来て、「あなたが一定の距離を置いているサーバー上で、.NETを稼働できるようになりましたよ」と言われても、それらを移行しようという気には、なかなかならないのではないでしょうか。」
しかし、IBM、Microsoft、およびオープンソース コミュニティは、根気よく続けました。1年前の.NET 6のリリースで、IBM System Zメインフレーム上のLinuxで稼働する.NETの移植が利用可能になりました。このメインフレームの作業によって、.NETをPower上で稼働させる同じようなプロジェクトは刺激されます。その件については、スウェーデンを拠点とし、IBM i コミュニティでアクティブに活動するIBMコントラクター、Torbjörn Appehl氏からの情報を基に、『 IT Jungle 』でも3月の記事で取り上げたところです。IBM幹部は この記事を否定 し、そのようなプロジェクトは存在しないと言明していましたが、結局は、初めからずっと本当のことだったということです(ただし、1つ誤りがありました。.NETはRHELで、コンテナで稼働する必要はない旨をお伝えしましたが、『 IT Jungle 』は、その誤りについてお詫びして訂正します)。
Gorzinski氏らが、RHEL Powerへの.NET 7の新たな移植に関して強気であるのには、1つの大きな理由があります。それは、新たなプロジェクトは、Monoによって行われた初期の作業を基盤としており、そこにさらに多くの.NETエコシステムのサポートが加わるからです。これによって、ユーザーおよびプロジェクトは、さらなる成功を収められるようになるはずです。
たとえば、RHEL on Power向けの.NET 7の新たなディストリビューションには、Monoベースの.NET Core Runtime VMおよびJITに加えて、基本クラス ライブラリー、ASP.NET Core、そしてソフトウェア開発キット(SDK)でのC#、F#、およびVisualBasicコンパイラーのサポートも含まれています。また、msbuildおよびnugetのようなツールも含まれます。詳細については、IBMソフトウェア アーキテクトで、オースティン(テキサス州)のラボのマスター インベンターである、Janani Janakiraman氏による こちらのブログ記事 を参照してください。
より多くのオープン.NETエコシステムがPower上で稼働できるようになることは、将来的に.NETがPower上で成功を収めることを望んでいるプロジェクトおよび組織にとっては好ましいことだとGorzinski氏は述べています。
「オープンソース プロジェクトに目を向け、成功を収めるオープン ソース プロジェクトはどのようなものか考えてみると、結局、いつも「エコシステム」の話になってしまいます」と彼は述べます。「Node.JS、JavaScript、およびPythonのように、IBM iで成功を収めた言語について考えてみても、成功したのは、エコシステムがうまく行くようになってからのことでした。」
顧客は、様々な観点から様々なやり方で、新たな.NET 7ランタイムを採用します(言語の側で関与できることはあまりないとGorzinski氏は述べます)。この機能を使用して、サポート コストを下げるためにサーバー統合戦略を採用する顧客もいるでしょう。NET 7のリリースに合わせて本日投稿された ブログ記事 では、Microsoftのエグゼクティブたちから、そうした懸念が示されています。
「Power上でネイティブに稼働できるようになったことで、25,000を超えるIBM Powerの顧客は、Windows x86上の既存の.NETアプリケーションを統合して、IBM i およびAIXビジネス アプリケーションおよびデータベースと同じPowerプラットフォーム上で稼働できるようになります」と、Microsoftの社員であるJon Douglas氏、Jeremy Likness氏、およびAngelos Petropoulos氏は記しています。
.NETワークロードをX86上で稼働している顧客は、それらをPower上に統合する意味があるのかどうか検討してみる必要はあるものの、Power上での新規の.NET開発は、.NETのスキルを備えた既存の開発者にとっては魅力的な選択肢となるだろうとGorzinski氏は述べます。
「私の個人的な予想では、Power上のLinuxシステムで、そしておそらくX86上のLinuxシステムでも同様に、これまで手付かずだった分野で.NETベースの言語での開発が増えることになるでしょう」と、Gorzinski氏は HelpSystems 社の「2022 IBM i Marketplace Study」を引用して述べています(HelpSystems社は、先日、「Fortra」へ社名変更しています。今号の『 The Four Hundred』の別記事を参照)。同調査によれば、IBM i のショップの55%がLinuxを稼働しており、そのうち30%~35%がX86上で稼働し、約20%がPower上で稼働しているということです。
ネイティブな移植ではありませんが、.NETアプリケーションをPowerプラットフォームへ移植することは、.NETアプリケーションをIBM i データに近付けるための第一歩として素晴らしいことです。Gorzinski氏は、IBM i のショップでの高いWindowsの使用率と、Windows上で稼働している.NETアプリケーションをDb2 for iデータベースに接続するデータベース ドライバーの人気を示す調査を引用します。
IBMでは、RHEL on Power上で稼働している.NETアプリケーションが、直接Db2 for iデータベースにアクセスできるようにするODBCドライバーの強化に引き続き取り組んでいます。まだ、そうしたドライバーの提供時期について発表はありませんが、Gorzinski氏は、作業は続いており、もうすぐ実を結ぶと『 IT Jungle 』に断言しています。
「すべてのピースが揃ったものの、RHEL上の新たな.NET 7ランタイムのDb2 for iへの接続を完全に認証できているとまでは言えません」と彼は述べます。「おそらくご存知かと思われますが、IBM iアプリケーションを書いている.NET開発者は相当数います。そのため、ODBCドライバーの可用性を高め、さらにはコンテナ イメージなどのようなものにもインストールしやすくするべく作業を行ってきました。」
また、IBMは、ODBCドライバーでのTLS暗号化のサポートも追加しています。これは、.NETアプリケーションのDb2 for iデータベースへのアクセス時のセキュリティを確保するのに役立ちます。IBMは、顧客からの要望に応える形でこの作業を行っています。
「このように様々なことが行われてきたのは、Linux on Powerであろうと、それ以外であろうと、周辺テクノロジーからIBM i システムへアクセスできるようにしたいという.NETのようなエコシステムが、その希望を叶えられるようにするためでもあるのです。」とGorzinski氏は述べています。
Janakiraman氏によれば、Red Hatが.NET 7 on Powerのパッケージングおよびサポートを提供するということです。「ppc64le向けにそれらのソースからビルドされた完全サポートされているRPMパッケージおよびコンテナ イメージは、Red Hatによって提供されます」と彼女は記しています。
Power向けの.NETの詳細(およびダウンロードおよびインストールの手順を含む)については、 こちらを参照してください。