$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ΞϓϦͷ࡞੒ͱίϯςφԽ
  2. ࣗݾ঺հ 1SPQFSUZ 7BMVF ࢯ໊ େ੢ জ 5XJUUFS-JOLFE*O POJBL *5ۀքྺ ೥໨

    ௚ۙͷ৬ྺ Microsoft ೥ *#.೥೔໨ )BTI5BH ͍͍Ͷ͐੩Ԭੜ׆ ࠲ӈͷ໏ ౿·Εͯ΋ͳ্ཱ͓͕ͪΔಓͷ૲ Α͘࢖͏ٕ ೴಺ม׵Ͱࣗ෼ΛϙδςΟϒʹ IUUQTXXXGBDFCPPLDPNBLJSBPOJTIJ 'BDFCPPLʮ͓ʹ͋͘ʯͰݕࡧ
  3. ίϯςφ%PKPୈճͷൣғ ؆୯ͳνϡʔτϦΞϧͱ߹Θͤͯ $ʹΑΔ"41/&5$PSFΞϓϦ࡞੒ͷجૅ #MB[PS 4FSWFSΞϓϦͷίϯςφԽͱల։ ˞ମݧ͕த৺ͷͨΊɺͦΕͧΕͷٕज़Λ ໢ཏతʹղઆ͢ΔηογϣϯͰ͸͋Γ·ͤΜɻ

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

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

  6. $ ൃԻγʔγϟʔϓ ͱ͸ ΦϒδΣΫτࢦ޲ϓϩάϥϛϯάݴޠ ΦʔϓϯιʔεɺϚϧν04ରԠ /&5ͷڞ௨ݴޠϥϯλΠϜ $-3 ্Ͱ࣮ߦ https://learn.microsoft.com/ja-jp/dotnet/csharp/tour-of-csharp/ C#

    ソースコード 中間⾔語(IL) リソース (ビット マップや⽂字列など) アセンブリ (dllファイル) 共通⾔語ランタイム (CLR) ネイティブ コード JIT コンパイル コンパイル
  7. ϒϥ΢βʔͰ /&5ମݧ IUUQTEPUOFUNJDSPTPGUDPNKBKQMFBSOEPUOFUJOCSPXTFSUVUPSJBM

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

  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
  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
  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  ^ ^
  12. /&5ΞϓϦͷ -JOVYίϯςφԽɺબ୒ࢶ  ϕʔεͷίϯςφΛ࣮ߦ؀ڥʹQVMMͯ͠ɺ ϑΝΠϧΛΞοϓσʔτͯ͠EPDLFSDPNNJU ͋͘·Ͱࢼݧ༻ͷ࡞ۀɺ܁Γฦ͠ʹऑ͍  खಈͰ%PDLFS'JMFΛॻ͍ͯ$-*ͰϏϧυ Ͱ͖Ε͹͋·Γ΍Γͨ͘ͳ͍࡞ۀɺ܁Γฦ͠ʹऑ͍ 

    7JTVBM4UVEJPͰ %PDLFSαϙʔτ෇Ͱ *%&্ͰͷϏϧυ ඞཁͳ%PDLFSGJMF͕ੜ੒͞ΕΔ  1BLFUP #VJME1BDLΛ࢖ͬͯ$-*ͰϏϧυ %PDLFSGJMFͷ࡞੒͕ෆཁͰɺ܁Γฦ͠ʹڧ͍  ιʔείʔυ͔Β௚઀Ϗϧυͱల։ 0QFO4IJGUͷ4PVSDF*NBHFɺ܁Γฦ͠ʹڧ͍
  13. ίϯςφ࡞੒ɺల։ɺࣗಈԽΛҙࣝ͢Δ ࠷৽ͷιʔείʔυΛར༻ͯ͠ ϏϧυɺίϯςφΠϝʔδ࡞੒ɺΞϓϦͷల։ ιʔείʔυ ϦϙδτϦ ΞϓϦͷϏϧυ ίϯςφ Πϝʔδͷ࡞੒ Πϝʔδ͔Β ίϯςφͷ࣮ߦ

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

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

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

    /&5$PSF /HJOY /PEFKT 1)1 "QBDIFIUUQE 3VCZ 1ZUIPOʹରԠ
  17. /&5ίϯςφԽ1BLFUP #VJMEQBDL https://paketo.io/docs/ Pack CLI: https://buildpacks.io/docs/tools/pack/

  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モードに切り替えておくこと
  19. 0QFO4IJGU4PVSDFUP*NBHF 4* ࣗಈԽʹΑΔίϯςφΞϓϦల։ ιʔείʔυΛ௚઀Πϯϙʔτ 0QFO4IJGUͷ؀ڥ಺ͰΞϓϦΛϏϧυ ίϯςφΠϝʔδΛϏϧυ ίϯςφΛσϓϩΠ ϧʔτ 63- Λ࢖ͬͯΞϓϦΛެ։

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

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

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

    /&5ΛϕʔεΠϝʔδͱͯ͠બ୒
  23. (JU͔ΒͷΠϯϙʔτ ΞϓϦέʔγϣϯ໊ άϧʔϐϯά༻ͷ໊લ  CMB[PSTBNQMF ໊લ αʔϏεΛࣝผ͢ΔͨΊʹར༻  FGTBNQMF <ΞϓϦέʔγϣϯ໊>ͱ<໊લ>Λࢦఆ

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

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

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

  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の商標または登録商標です。