Slide 1

Slide 1 text

2023年5⽉23⽇

Slide 2

Slide 2 text

メインフレームで.Netを動かしてみた ⽬次 メインフレームとは LinuxONEとは .NETとは (1)メインフレーム環境の準備 (2).NETのインストール (3)Hello World!アプリを作成する (4)Hello World!アプリを実⾏する (5) メインフレーム対応のパッケージを⼊⼿する (6) メインフレーム対応の.NETアプリを作成する (7) メインフレーム対応の.NETアプリを実⾏する 各環境での実⾏結果 Q&A Z .NET

Slide 3

Slide 3 text

⾃⼰紹介 ⽒名 市川泰久 IT業界歴 25年⽬ 職歴 IBM カスタマーサクセスマネージャー 伊藤忠ケーブルシステム テクニカルサポート Microsoft テクニカルアカウントマネージャー ⽇⽴ソフトウェアエンジニアリング テクニカルサポート等 経験のある製品 IBM製品、Microsoft製品、映像関連機器、ストレージ等 趣味 ドライブ(屋根無し)と将棋観戦

Slide 4

Slide 4 text

免責事項 この資料に含まれる情報は可能な限り正 確を期しておりますが、⽇本アイ・ ビー・エム株式会社の正式なレビューを 受けておらず、当資料に記載された内容 に関して⽇本アイ・ビー・エム株式会社 が何ら保証するものではありません。 従って、この情報の利⽤は使⽤者の責任 において為されるものであり、資料の内 容によって受けたいかなる被害に関して も⼀切の補償をするものではありません。

Slide 5

Slide 5 text

アンケート メインフレームと.NETの経験を教えてください。 メインフレーム 何それ美味しいの メインフレーム 触った事あります メインフレーム ⼀応プロです .NET 何それ美味しいの 1 3 6 .NET 触った事あります 2 4 8 .NET ⼀応プロです 5 7 9

Slide 6

Slide 6 text

メインフレーム(Mainframe)は、⼤規模なデータ処理やトランザクション処理を⾏う ために設計された⾼性能なコンピュータシステムです。メインフレームは、⼤量のデー タを⾼速かつ安定して処理することができ、信頼性やセキュリティの要求が厳しい業務 に適しています。 メインフレームとは z/OSのIBMメインフレーム LinuxONEのIBMメインフレーム 1994〜 2016〜 ←2023/4 New ←2023/4 New

Slide 7

Slide 7 text

IBM LinuxONEは、ミッション・クリティカルなワークロードのニーズを満たすために設計された、独⾃ のアーキテクチャーを持つ、エンタープライズ・グレードのLinuxサーバーです。 IBMのLinuxONE向けに最適化されたLinuxディストリビューション(例︓Red Hat Enterprise Linux for IBM Z、SUSE Linux Enterprise Server for IBM Z)が使⽤されます。これらのディストリビュー ションは、LinuxONEのハードウェアと特定の機能や最適化を組み合わせて、最⾼のパフォーマンスと互 換性を提供します。 https://www.ibm.com/jp-ja/linuxone LinuxONEとは IBM Interactive Product Tour Catalog https://www.ibm.com/demos/it-infrastructure/index.html

Slide 8

Slide 8 text

.NETとは .NETは、マイクロソフトが開発したソフトウェアフ レームワーク(ソフトウェア開発を⽀援するための基 盤や構造を提供するソフトウェアの集合体)です。 .NETは、プログラミング⾔語の実⾏環境や開発ツール を提供し、Windowsベースのアプリケーションや ウェブアプリケーションの開発を⽀援します。 .NETは、C#、VB.NET、F#などのプログラミング⾔ 語をサポートしており、開発者がこれらの⾔語を使⽤ してアプリケーションを作成する際に便利な機能やラ イブラリを提供します。 また、.NETはクロスプラットフォーム対応も⾏ってお り、Windows以外のプラットフォーム(例︓Linux、 macOS)でも動作するアプリケーションを開発する ことも可能です。

Slide 9

Slide 9 text

メインフレームにおける.Netのサポート 2021年にMicrosoftから発表された.NET 6により、RHEL 8 以降では、 AMD および Intel (x64_64)、ARM (aarch64)、IBM Z および LinuxONE (s390x) アーキテクチャで .NET 6 を利⽤できるようになりました。⼅し 年 .NET Framework 2002 1.0 2005 2.0 2006 3.0 2010 4.0 2022 4.8.1 年 .NET 2016 .NET Core 1.0 Linux, Macに対応 2017 .NET Core 2.0 2019 .NET Core 3.0 2020 .NET 5 2021 .NET 6 メインフレームに対応 2022 .NET 7 IBM POWERに対応 2023/11 .NET 8予定 年 Mono 2001 オープンソース プロジェクト発⾜ 2004 1.0 2009 2.4メインフレームに対応? 2016 .NET Foundation に参加 2018 5.12 IBM POWERに対応

Slide 10

Slide 10 text

(1-A) IBM LinuxONE Community Cloud(120⽇評価版) Get started with IBM LinuxONE https://developer.ibm.com/articles/get-started-with-ibm-linuxone/ (1-B) (有料) https://www.ibm.com/jp-ja/cloud [IBM Cloud LinuxONE Virtual Servers for VPC] LinuxONEベースのパブリック クラウド環境が利⽤可能になりました https://community.ibm.com/community/user/ibmz-and- linuxone/blogs/daiki-shimizu1/2021/08/13/ibm-cloud-linuxone-vpc- announcement (1)メインフレーム環境の準備

Slide 11

Slide 11 text

(1-A)IBM LinuxONE Community Cloud (120⽇評価版)の実⾏⼿順① Get started with IBM LinuxONE https://developer.ibm.com/articles/get-started-with-ibm-linuxone/ (1-A-1)画⾯下部の [Try Virtual Machines on the LinuxONE Community Cloud]画像をクリック (1-A-2)メール情報等を⼊⼒し Request your trialをクリック

Slide 12

Slide 12 text

(1-A)IBM LinuxONE Community Cloud (120⽇評価版)の実⾏⼿順② (1-A-3)届いたメールのリンクから、 アカウントをActivate (1-A-4)Activate後に届いたメールのリンクから、 管理ツールにログイン

Slide 13

Slide 13 text

(1-A)IBM LinuxONE Community Cloud (120⽇評価版)の実⾏⼿順③ (1-A-5)管理ツールにUser IDと パスワードを⼊⼒してSign In https://linuxone.cloud.marist.edu/ (1-A-6)Service Catalogから Manage Instancesをクリック

Slide 14

Slide 14 text

(1-A)IBM LinuxONE Community Cloud (120⽇評価版)の実⾏⼿順④ (1-A-7)Createをクリックして 仮想マシンを作成 (1-A-8)OSとスペックの選択と、SSH Keyの作成またはインポートを⾏う

Slide 15

Slide 15 text

(1-A)IBM LinuxONE Community Cloud (120⽇評価版)の実⾏⼿順⑤ (1-A-9)SSH Keyを新規に”Create”する場合、任意の名前を⼊⼒し、 ”Create a new key pair”を実⾏すると、 公開鍵のダウンロードプロンプトが出ますので保存します。

Slide 16

Slide 16 text

(1-A)IBM LinuxONE Community Cloud (120⽇評価版)の実⾏⼿順⑥ (1-A-10)Createをクリックして仮想マシンを作成 (1-A-11)管理画⾯に表⽰される仮想マシンをSTARTさせ、 IPアドレス、ユーザー名前、SSH Keyを指定して接続

Slide 17

Slide 17 text

(2).NETのインストール (2-1)LinuxONE仮想マシンにSSHで接続 ssh -i キーファイル名 ユーザー名@IPアドレス (2-2)root権限に変更 sudo su - (2-3)dotnetをインストールする sudo yum install dotnet-sdk-7.0 (2-4)情報確認コマンド dotnet --info sudo yum install dotnet-runtime-7.0 または

Slide 18

Slide 18 text

(3)Hello World!アプリを作成する① (3-1)Visual Studioで 新しいプロジェクトを作成 (3-2)テンプレートで コンソールアプリを選択 Visual Studio https://visualstudio.microsoft.com/ja/

Slide 19

Slide 19 text

(3)Hello World!アプリを作成する② (3-3) プロジェクト名を指定して次へ (3-4)フレームワークで.NETを選択して次へ

Slide 20

Slide 20 text

(3)Hello World!アプリを作成する③ (3-5) デフォルトでHello World!出⼒部分は 作られているので、[F5]キーでデバッグ実⾏ (3-6)コンソールが起動して Hello World!が出⼒されることを確認

Slide 21

Slide 21 text

(3)Hello World!アプリを作成する④ (3-7) リリース構成をDebugからReleaseに変更 (3-8)ビルドメニューから[選択範囲の公開]を選択

Slide 22

Slide 22 text

(3)Hello World!アプリを作成する⑤ (3-10) [発⾏]をクリックして .NETアプリを発⾏ (3-9)設定画⾯で[すべての設定を表⽰]をクリックし、下記のように設定。 ↑この場所にアプリのファイル群が 作成されます。

Slide 23

Slide 23 text

(4)Hello World!アプリを実⾏する① (4-1) SCPツール(WinSCP等)をA-11までで取得した情報を使⽤して設定し、LinuxONEに接続 仮想マシンIPアドレス ユーザー名 ポート番号 パスワード SSH Keyファイル フォルダごとドラッグ&ドロップ (4-2)ローカルのアプリ出⼒フォルダを LinuxONEにドラッグ&ドロップ

Slide 24

Slide 24 text

(4)Hello World!アプリを実⾏する② (4-5) dotnetコマンドでDLLファイルを指定して実⾏ (4-3)LinuxONE仮想マシンにSSHで接続 ssh -i キーファイル名 ユーザー名@IPアドレス (4-4) net7.0ディレクトリに移動 cd 配置先/net7.0 (4-6)実⾏結果 dotnet ConsoleApp1.dll Hello, World!

Slide 25

Slide 25 text

(5)メインフレーム対応のパッケージを⼊⼿する① https://github.com/search?q=s390x&type=repositories (5-1)Githubで「s390x」で検索 (5-2) JetBrains/habitat-detector を選択し、内容を確認する https://github.com/JetBrains/habitat-detector ※Githubでは「s390x」検索でヒットするが、NuGetではヒットしないため。

Slide 26

Slide 26 text

(5)メインフレーム対応のパッケージを⼊⼿する② (5-3)プロジェクトメニューの NuGetパッケージの管理をクリック (5-4) [参照]を選択後、JetBrains/habitat-detector で検索し、内容を確認後インストールする ※NuGet経由の⽅がプロジェクトに追加しやすいため

Slide 27

Slide 27 text

(5)メインフレーム対応のパッケージを⼊⼿する③ (5-6)ライセンス情報を確認の上同意する (5-5)変更のプレビューが出たら確認の上OKする

Slide 28

Slide 28 text

(5)メインフレーム対応のパッケージを⼊⼿する④ (5-7)画⾯右にJstBrains.HabitatDetectorが 正常に追加されたことを確認する。

Slide 29

Slide 29 text

(6)メインフレーム対応の.NETアプリを作成する① (6-1)Program.csのHello World!出⼒部分の後に下記コードを追加する。 string outtext = "----------------"; outtext += "¥nPlatform: " + HabitatInfo.Platform.ToString(); outtext += "¥nProcessArchitecture: " + HabitatInfo.ProcessArchitecture.ToString(); outtext += "¥nOSArchitecture: " + HabitatInfo.OSArchitecture.ToString(); outtext += "¥nClrImplementation: " + HabitatInfo.ClrImplementation.ToString(); outtext += "¥nLinuxLibC: " + HabitatInfo.LinuxLibC.ToString(); outtext += "¥nWindowsElevationType: " + HabitatInfo.WindowsElevationType.ToString(); outtext += "¥nWindowsInstallationType: " + HabitatInfo.WindowsInstallationType.ToString(); outtext += "¥nWindowsIsElevated: " + HabitatInfo.WindowsIsElevated.ToString(); outtext += "¥nWindowsIsUserAdministrator: " + HabitatInfo.WindowsIsUserAdministrator.ToString(); Console.WriteLine(outtext); ⾃動で追加される

Slide 30

Slide 30 text

(6)メインフレーム対応の.NETアプリを作成する② (6-2)リリース構成をReleaseからDebugに変更 (6-3)F5キーでデバッグ実⾏し、 OSやCPU情報が出⼒されることを確認

Slide 31

Slide 31 text

(6)メインフレーム対応の.NETアプリを作成する③ (6-4)3­7,8,10の⼿順と同様に、Release版を発⾏する。

Slide 32

Slide 32 text

(7)メインフレーム対応の.NETアプリを実⾏する① (7-1)4­1~6の⼿順と同様に、Release版を転送して実⾏する。 フォルダごとドラッグ&ドロップ (7-2)LinuxONE仮想マシンにSSHで接続し、実⾏する。 ssh -i キーファイル名 ユーザー名@IPアドレス cd 配置先/net7.0 (7-3)実⾏結果 dotnet ConsoleApp1.dll Hello, World! ---------------- Platform: Linux ProcessArchitecture: S390x OSArchitecture: S390x ClrImplementation: NetCore LinuxLibC: Glibc

Slide 33

Slide 33 text

各環境での実⾏結果 Windows 10 Mac Linux LinuxONE Linux on POWER Platform Windows MacOsX Linux Linux Linux ProcessArchitecture X64 Arm64 X64 S390x Ppc64le OSArchitecture X64 Arm64 X64 S390x Ppc64le ClrImplementation NetCore NetCore NetCore NetCore NetCore LinuxLibC Glibc Glibc Glibc WindowsElevationType Limited WindowsInstallationType Client WindowsIsElevated False WindowsIsUserAdministra tor False