Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Dojo 20230523 .Net on Mainframe

Dojo 20230523 .Net on Mainframe

Tried to run .Net on LinuxONE.

YasuIchikawa

May 23, 2023
Tweet

More Decks by YasuIchikawa

Other Decks in Education

Transcript

  1. 2023年5⽉23⽇

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  7. 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

    View Slide

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

    View Slide

  9. メインフレームにおける.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に対応

    View Slide

  10. (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)メインフレーム環境の準備

    View Slide

  11. (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をクリック

    View Slide

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

    View Slide

  13. (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をクリック

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  17. (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 または

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  24. (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!

    View Slide

  25. (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ではヒットしないため。

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  29. (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);
    ⾃動で追加される

    View Slide

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

    View Slide

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

    View Slide

  32. (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

    View Slide

  33. 各環境での実⾏結果
    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

    View Slide