$30 off During Our Annual Pro Sale. View Details »

コンテナDojo #2:[入門者歓迎] C#と.NET 6によるWebアプリの作成とコンテナ化

コンテナDojo #2:[入門者歓迎] C#と.NET 6によるWebアプリの作成とコンテナ化

2022年4月から8月に開催しました「WindowsコンテナDojo 基礎編」に続き、コンテナ技術やOpenShiftを活用するためのセッションを開催いたします。
本セッションでは、ASP.NET Coreのアプリ開発やアプリの動作環境を知り、出来上がったアプリをコンテナ環境やOpenShiftで動作させるための基礎を学びます。C#や.NETが初めての方でも受講できるように、セッション中に簡単なチュートリアルを体験します。

.NET 6を利用するため、Linuxコンテナを利用したセッションとなります。 OpenShift LocalまたはDeveloper Sandbox for OpenShiftを利用して、ASP.NET CoreのアプリをOpenShiftに展開する方法も学びます。

Akira Onishi (IBM)
PRO

October 28, 2022
Tweet

More Decks by Akira Onishi (IBM)

Other Decks in Programming

Transcript

  1. ೔ຊΞΠɾϏʔɾΤϜגࣜձࣾ
    ςΫϊϩδʔࣄۀຊ෦
    ΧελϚʔɾαΫηε ϓϦϯγύϧɾϚωʔδϟʔ
    ݉ 8JOEPXT$POUBJOFS1PSUJOH1SPHSBNਪਐϦʔμʔ
    େ੢ জ "LJSB0OJTIJ!JCNDPN 5XJUUFS!POJBL

    IUUQTXXXGBDFCPPLDPNBLJSBPOJTIJ
    IUUQTXXXMJOLFEJODPNJOPOJBL
    ίϯςφ %PKPୈճ <ೖ໳ऀ׻ܴ>
    $ͱ/&5ʹΑΔ
    8FCΞϓϦͷ࡞੒ͱίϯςφԽ

    View Slide

  2. ࣗݾ঺հ
    1SPQFSUZ 7BMVF
    ࢯ໊ େ੢ জ
    5XJUUFS-JOLFE*O POJBL
    *5ۀքྺ ೥໨
    ௚ۙͷ৬ྺ Microsoft ೥ *#.೥೔໨
    )BTI5BH ͍͍Ͷ͐੩Ԭੜ׆
    ࠲ӈͷ໏ ౿·Εͯ΋ͳ্ཱ͓͕ͪΔಓͷ૲
    Α͘࢖͏ٕ ೴಺ม׵Ͱࣗ෼ΛϙδςΟϒʹ
    IUUQTXXXGBDFCPPLDPNBLJSBPOJTIJ
    'BDFCPPLʮ͓ʹ͋͘ʯͰݕࡧ

    View Slide

  3. ίϯςφ%PKPୈճͷൣғ
    ؆୯ͳνϡʔτϦΞϧͱ߹Θͤͯ
    $ʹΑΔ"41/&5$PSFΞϓϦ࡞੒ͷجૅ
    #MB[PS 4FSWFSΞϓϦͷίϯςφԽͱల։
    ˞ମݧ͕த৺ͷͨΊɺͦΕͧΕͷٕज़Λ
    ໢ཏతʹղઆ͢ΔηογϣϯͰ͸͋Γ·ͤΜɻ

    View Slide

  4. ࠓ೔ͷ࿩୊
    /&5Ͱ"41/&5$PSFΛ࢖ͬͨ8FCΞϓϦͷ࡞੒ͷجૅΛֶͼɺ
    -JOVYίϯςφ্ͰΞϓϦΛల։͢Δ·Ͱͷํ๏ͷ֓ཁΛ஌Γ·͢
    ϋʔυ΢ΣΞ
    -JOVY04
    %PDLFSDSJP
    ίϯςφϓϥοτϑΥʔϜ
    ίϯςφ
    /&5
    ΞϓϦ"
    ίϯςφ
    /&5
    ΞϓϦ#
    ϋʔυ΢ΣΞ
    8JOEPXT.BD-JOVY04
    /&5ϓϥοτϑΥʔϜ
    ΞϓϦ" ΞϓϦ#

    View Slide

  5. /&5ͱ͸
    ༷ʑͳछྨͷΞϓϦΛߏங͢ΔͨΊͷ։ൃऀ༻
    ϓϥοτϑΥʔϜ
    ΦʔϓϯιʔεɺແྉɺϚϧν04ରԠ
    $ ' 7JTVBM#BTJDͰίʔσΟϯά
    https://dotnet.microsoft.com/ja-jp/learn/dotnet/what-is-dotnet

    View Slide

  6. $ ൃԻγʔγϟʔϓ
    ͱ͸
    ΦϒδΣΫτࢦ޲ϓϩάϥϛϯάݴޠ
    ΦʔϓϯιʔεɺϚϧν04ରԠ
    /&5ͷڞ௨ݴޠϥϯλΠϜ $-3
    ্Ͱ࣮ߦ
    https://learn.microsoft.com/ja-jp/dotnet/csharp/tour-of-csharp/
    C#
    ソースコード 中間⾔語(IL)
    リソース (ビット
    マップや⽂字列など)
    アセンブリ (dllファイル)
    共通⾔語ランタイム (CLR)
    ネイティブ
    コード
    JIT コンパイル
    コンパイル

    View Slide

  7. ϒϥ΢βʔͰ /&5ମݧ
    IUUQTEPUOFUNJDSPTPGUDPNKBKQMFBSOEPUOFUJOCSPXTFSUVUPSJBM

    View Slide

  8. "41/&5
    /&5ͱ $Λ࢖ͬͯ 8FCΞϓϦαʔϏεΛ
    ߏங͢ΔͨΊͷϑϨʔϜϫʔΫ
    ·ͣ͸ νϡʔτϦΞϧͰମݧ
    IUUQTEPUOFUNJDSPTPGUDPNKBKQMFBSOBTQOFUIFMMPXPSMEUVUPSJBMJOUSP
    https://dotnet.microsoft.com/ja-jp/apps/aspnet

    View Slide

  9. 3B[PSߏจ
    8FCϖʔδ಺Ͱɺ!ه߸Λ࢖͍ɺ
    $ͷίʔυ΍ΦϒδΣΫτΛ࣮ߦ࣌ʹධՁ͠
    ݁ՌΛ)5.-ϖʔδʹग़ྗ͢Δํ๏
    Q-BTUXFFLUIJTUJNF! %BUF5JNF/PX 5JNF4QBO'SPN%BZT

    Q
    !\
    WBSKPFOFX1FSTPO z+PF

    ^
    Q"HF! KPF"HF
    Q
    https://learn.microsoft.com/ja-jp/aspnet/core/mvc/views/razor?view=aspnetcore-6.0

    View Slide

  10. #MB[PSɺ$Λ࢖༻ͨ͠ର࿩ܕ8FC6*
    https://dotnet.microsoft.com/ja-jp/apps/aspnet/web-apps/blazor
    Blazor Server を利⽤すると
    ・サーバー側で仮想DOMを作成
    ・画⾯の変更はWebSocketで通信
    Blazorチュートリアル: https://dotnet.microsoft.com/ja-jp/learn/aspnet/blazor-tutorial/intro
    CLIによるチュートリアル (Windows): https://dotnet.microsoft.com/ja-jp/learn/aspnet/blazor-cli-tutorial/intro

    View Slide

  11. 3B[PSߏจʹΑΔ)5.-ͱ$ͷࠞࡏ
    !QBHFGFUDIEBUB
    1BHF5JUMF8FBUIFSGPSFDBTU1BHF5JUMF
    !VTJOHCT%BUB
    !JOKFDU8FBUIFS'PSFDBTU4FSWJDF 'PSFDBTU4FSWJDF
    I8FBUIFSGPSFDBTUI
    Q5IJTDPNQPOFOUEFNPOTUSBUFTGFUDIJOHEBUBGSPNBTFSWJDFQ
    !JG GPSFDBTUTOVMM

    \
    QFN-PBEJOHFNQ
    ^
    FMTF
    \
    UBCMFDMBTTUBCMF
    UIFBE
    US
    UI%BUFUI
    UI5FNQ $
    UI
    UI5FNQ '
    UI
    UI4VNNBSZUI
    US
    UIFBE
    UCPEZ
    !GPSFBDI WBSGPSFDBTUJOGPSFDBTUT

    \
    US
    UE!GPSFDBTU%BUF5P4IPSU%BUF4USJOH
    UE
    UE!GPSFDBTU5FNQFSBUVSF$UE
    UE!GPSFDBTU5FNQFSBUVSF'UE
    UE!GPSFDBTU4VNNBSZUE
    US
    ^
    UCPEZ
    UBCMF
    ^
    !DPEF\
    QSJWBUF8FBUIFS'PSFDBTU<> GPSFDBTUT
    QSPUFDUFEPWFSSJEFBTZOD5BTL0O*OJUJBMJ[FE"TZOD

    \
    GPSFDBTUTBXBJU'PSFDBTU4FSWJDF(FU'PSFDBTU"TZOD %BUF5JNF/PX

    ^
    ^

    View Slide

  12. /&5ΞϓϦͷ -JOVYίϯςφԽɺબ୒ࢶ
    ϕʔεͷίϯςφΛ࣮ߦ؀ڥʹQVMMͯ͠ɺ
    ϑΝΠϧΛΞοϓσʔτͯ͠EPDLFSDPNNJU
    ͋͘·Ͱࢼݧ༻ͷ࡞ۀɺ܁Γฦ͠ʹऑ͍

    खಈͰ%PDLFS'JMFΛॻ͍ͯ$-*ͰϏϧυ
    Ͱ͖Ε͹͋·Γ΍Γͨ͘ͳ͍࡞ۀɺ܁Γฦ͠ʹऑ͍

    7JTVBM4UVEJPͰ %PDLFSαϙʔτ෇Ͱ
    *%&্ͰͷϏϧυ ඞཁͳ%PDLFSGJMF͕ੜ੒͞ΕΔ

    1BLFUP #VJME1BDLΛ࢖ͬͯ$-*ͰϏϧυ
    %PDLFSGJMFͷ࡞੒͕ෆཁͰɺ܁Γฦ͠ʹڧ͍

    ιʔείʔυ͔Β௚઀Ϗϧυͱల։
    0QFO4IJGUͷ4PVSDF*NBHFɺ܁Γฦ͠ʹڧ͍

    View Slide

  13. ίϯςφ࡞੒ɺల։ɺࣗಈԽΛҙࣝ͢Δ
    ࠷৽ͷιʔείʔυΛར༻ͯ͠
    ϏϧυɺίϯςφΠϝʔδ࡞੒ɺΞϓϦͷల։
    ιʔείʔυ
    ϦϙδτϦ
    ΞϓϦͷϏϧυ
    ίϯςφ
    Πϝʔδͷ࡞੒
    Πϝʔδ͔Β
    ίϯςφͷ࣮ߦ

    View Slide

  14. /&5ΞϓϦͷίϯςφԽ7JTVBM4UVEJP
    %PDLFSͷαϙʔτΛ༗ޮʹ͢Δ

    View Slide

  15. 7JTVBM4UVEJP಺ͷ%PDLFSGJMF
    dotnet restore
    dotnet build
    dotnet
    Ϗϧυ४උ
    ΞϓϦͷϏϧυ
    ΞϓϦͷ࣮ߦ

    View Slide

  16. 1BLFUP #VJME1BDL
    https://paketo.io/
    ιʔείʔυΛϏϧυͯ͠ɺΞϓϦΛؚΜͩ
    ίϯςφΠϝʔδΛࣗಈੜ੒͢Δ࢓૊Έ
    #VJME1BDLIUUQTCVJMEQBDLTJP
    1BLFUP͸$MPVE'PVOESZΦʔϓϯιʔεϓϩδΣΫτ
    +BWB (SBBM7. (P /&5$PSF /HJOY /PEFKT
    1)1 "QBDIFIUUQE 3VCZ 1ZUIPOʹରԠ

    View Slide

  17. /&5ίϯςφԽ1BLFUP #VJMEQBDL
    https://paketo.io/docs/
    Pack CLI:
    https://buildpacks.io/docs/tools/pack/

    View Slide

  18. #VJMEQBDLΛ࢖ͬͨ/&5ίϯςφ࡞੒
    ճઃఆ͢Ε͹ɺҎ߱͸ࢦఆෆཁ
    QBDLDPOGJHEFGBVMUCVJMEFSQBLFUPCVJMEQBDLTCVJMEFSCBTF
    #MB[PSΞϓϦͷ࡞੒
    EPUOFUOFXCMB[PSTFSWFS P#MB[PS"QQ OPIUUQTGOFU
    ιʔείʔυͷϑΥϧμ΁Ҡಈ
    DE#MB[PS"QQ
    ΞϓϦಈ࡞֬ೝ
    EPUOFUXBUDI
    ίϯςφͷϏϧυ
    QBDLCVJMENZBQQ
    ग़དྷ্͕ͬͨίϯςφͷ࣮ߦ
    EPDLFSSVOQNZBQQ
    Windowsの場合、Docker Desktopを Linux Containerモードに切り替えておくこと

    View Slide

  19. 0QFO4IJGU4PVSDFUP*NBHF 4*

    ࣗಈԽʹΑΔίϯςφΞϓϦల։
    ιʔείʔυΛ௚઀Πϯϙʔτ
    0QFO4IJGUͷ؀ڥ಺ͰΞϓϦΛϏϧυ
    ίϯςφΠϝʔδΛϏϧυ
    ίϯςφΛσϓϩΠ
    ϧʔτ 63-
    Λ࢖ͬͯΞϓϦΛެ։

    View Slide

  20. (JU͔ΒͷΠϯϙʔτ
    https://github.com/dotnet/blazor-samples
    $MPOF༻ͷ63-Λݟ͚ͭͯίϐʔ͢Δ
    https://github.com/dotnet/blazor-samples.git

    View Slide

  21. (JU͔ΒͷΠϯϙʔτ
    ビルドしたいアプリのソースコードが
    ⼊っているディレクトリを⾒つける
    /tree/main の右側にある⽂字列を
    控えておく
    /6.0/BlazorServerEFCoreSample/BlazorServerDbContextExample
    https://github.com/dotnet/blazor-samples/tree/main/6.0/BlazorServerEFCoreSample/BlazorServerDbContextExample

    View Slide

  22. (JU͔ΒͷΠϯϙʔτ
    (JUϦϙδτϦʔ63-
    IUUQTHJUIVCDPNEPUOFUCMB[PSTBNQMFTHJU
    ίϯςΩετσΟϨΫτϦʔ
    #MB[PS4FSWFS&'$PSF4BNQMF#MB[PS4FSWFS%C$POUFYU&YBNQMF
    <(JUϦϙδτϦʔ63->ͱ
    <ίϯςΩετσΟϨΫτϦʔ>Λࢦఆ
    0QFO4PVSDF͕ιʔείʔυΛεΩϟϯ͠
    ΠϯϙʔτετϥςδʔΛܾఆɺ
    ͦͷ݁Ռɺ
    /&5ΛϕʔεΠϝʔδͱͯ͠બ୒

    View Slide

  23. (JU͔ΒͷΠϯϙʔτ
    ΞϓϦέʔγϣϯ໊ άϧʔϐϯά༻ͷ໊લ

    CMB[PSTBNQMF
    ໊લ αʔϏεΛࣝผ͢ΔͨΊʹར༻

    FGTBNQMF
    <ΞϓϦέʔγϣϯ໊>ͱ<໊લ>Λࢦఆ

    View Slide

  24. (JU͔ΒͷΠϯϙʔτ
    λʔήοτϙʔτ
    <࡞੒>ΛΫϦοΫͯ͠Ϗϧυͱల։

    View Slide

  25. /&5
    ࠷৽ͷ/&5ɺ೥݄ʹϦϦʔε༧ఆ
    $ɿଟ͘ͷ৽ػೳΛఏڙ
    /BUJWF"05ωΠςΟϒόΠφϦʹΑΔ࣮ߦ
    )551ɿ"41/&5$PSFطఆͰαϙʔτ
    #VJMUJOίϯςφαϙʔτEPUOFUQVCMJTI

    View Slide

  26. ·ͱΊ
    "41/&5$PSF #MB[PS 4FSWFSɺίϯςφԽ
    $BMMUP"DUJPO
    7JTVBM4UVEJPΛ࢖ͬͨίϯςφΞϓϦ࡞੒
    1BLFUP #VJMEQBDLTΛ࢖ͬͨίϯςφ࡞੒
    0QFO4IJGU4PVSDFUPJNBHFΛ࢖ͬͨΞϓϦల։

    View Slide

  27. ワークショップ、セッション、および資料は、IBMまたはセッション発表者によって準備され、それぞれ独⾃の⾒解を反映したものです。それらは情報
    提供の⽬的のみで提供されており、いかなる参加者に対しても法律的またはその他の指導や助⾔を意図したものではなく、またそのような結果を⽣むも
    のでもありません。本講演資料に含まれている情報については、完全性と正確性を期するよう努⼒しましたが、「現状のまま」提供され、明⽰または暗
    ⽰にかかわらずいかなる保証も伴わないものとします。本講演資料またはその他の資料の使⽤によって、あるいはその他の関連によって、いかなる損害
    が⽣じた場合も、IBMは責任を負わないものとします。 本講演資料に含まれている内容は、IBMまたはそのサプライヤーやライセンス交付者からいかな
    る保証または表明を引きだすことを意図したものでも、IBMソフトウェアの使⽤を規定する適⽤ライセンス契約の条項を変更することを意図したもので
    もなく、またそのような結果を⽣むものでもありません。
    本講演資料でIBM製品、プログラム、またはサービスに⾔及していても、IBMが営業活動を⾏っているすべての国でそれらが使⽤可能であることを暗⽰
    するものではありません。本講演資料で⾔及している製品リリース⽇付や製品機能は、市場機会またはその他の要因に基づいてIBM独⾃の決定権をもっ
    ていつでも変更できるものとし、いかなる⽅法においても将来の製品または機能が使⽤可能になると確約することを意図したものではありません。本講
    演資料に含まれている内容は、参加者が開始する活動によって特定の販売、売上⾼の向上、またはその他の結果が⽣じると述べる、または暗⽰すること
    を意図したものでも、またそのような結果を⽣むものでもありません。 パフォーマンスは、管理された環境において標準的なIBMベンチマークを使⽤し
    た測定と予測に基づいています。ユーザーが経験する実際のスループットやパフォーマンスは、ユーザーのジョブ・ストリームにおけるマルチプログラ
    ミングの量、⼊出⼒構成、ストレージ構成、および処理されるワークロードなどの考慮事項を含む、数多くの要因に応じて変化します。したがって、
    個々のユーザーがここで述べられているものと同様の結果を得られると確約するものではありません。
    記述されているすべてのお客様事例は、それらのお客様がどのようにIBM製品を使⽤したか、またそれらのお客様が達成した結果の実例として⽰された
    ものです。実際の環境コストおよびパフォーマンス特性は、お客様ごとに異なる場合があります。
    IBM、IBM ロゴ、ibm.com、IBM Cloud、IBM Cloud Paksは、 世界の多くの国で登録されたInternational Business Machines Corporationの商標です。他
    の製品名およびサービス名等は、それぞれIBMまたは各社の商標である場合があります。現時点での IBM の商標リストについては、
    www.ibm.com/legal/copytrade.shtmlをご覧ください。
    Microsoft, Windows, Windows Server, .NET Framework, .NET, .NET Coreは、Microsoft Corporationの商標または登録商標です。

    View Slide