1. C#ã®æŠèŠ
C#ã¯ãçŸä»£ã®ããã°ã©ãã³ã°èšèªã®äžã§ãç¹ã«äººæ°ããããå€ãã®ã¢ããªã±ãŒã·ã§ã³ãã·ã¹ãã ã®éçºã«äœ¿çšãããŠããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ãC#ã®èµ·æºãèæ¯ãäž»èŠãªéçºè ããããŠèšèšã®ç®çã«ã€ããŠè©³ãã解説ããŸãã
1.1. C#ã®èµ·æºãšèæ¯
C#ã¯ãMicrosoftã«ãã£ãŠéçºãããããã°ã©ãã³ã°èšèªã§ã2000幎代åé ã«åããŠå ¬éãããŸãããJavaãC++ãªã©ã®æ¢åã®èšèªã®è¯ãç¹ãåãå ¥ãã€ã€ãããã·ã³ãã«ã§å¹ççãªã³ãŒãã£ã³ã°ãå¯èœãªèšèªãšããŠèšèšãããŸãããç¹ã«ãWindowsåãã®ã¢ããªã±ãŒã·ã§ã³éçºãå¹ççã«è¡ãããã®èšèªãšããŠãå€ãã®éçºè ãã泚ç®ã济ã³ãŸããã
1.2. C#ã®äž»èŠãªéçºè
C#ã®éçºã¯ãAnders Hejlsbergãäžå¿ãšããããŒã ã«ãã£ãŠè¡ãããŸãããHejlsbergã¯ã以åã«ãTurbo PascalãDelphiãšãã£ãèšèªã®éçºã«é¢ãã£ãŠããããã®çµéšã掻ãããŠC#ã®èšèšã«åãçµã¿ãŸããã圌ã®ããžã§ã³ã¯ãéçºè ãçŽæçã«ã³ãŒããæžãããããªãã·ã³ãã«ã§åŒ·åãªèšèªãäœãããšã§ããã
1.3. C#ã®èšèšã®ç®ç
C#ã®èšèšã®äž»ãªç®çã¯ãçç£æ§ã®åäžãšå®å šæ§ã®ç¢ºä¿ã§ããããªããžã§ã¯ãæåã®ç¹æ§ããã«ã«æŽ»çšããããšã§ãåå©çšå¯èœãªã³ãŒãã®äœæãã倧èŠæš¡ãªãããžã§ã¯ãã§ã管çããããæ§é ãæã€ã¢ããªã±ãŒã·ã§ã³ã®éçºãå¯èœãšãªããŸããããŸããåã®å®å šæ§ãã¡ã¢ãªç®¡çã®æ©èœã匷åããããšã§ããã°ãæžå°ãããããå®å šãªã¢ããªã±ãŒã·ã§ã³ãäœæããããšãã§ããããã«ãªããŸããã
以äžã®ããã«ãC#ã¯ãã®èµ·æºããçŸåšã«ãããŠãå€ãã®éçºè ã«æãããèšèªãšãªã£ãŠããŸãããã®èåŸã«ã¯ãéçºè ã®ããŒãºããã£ãããšæããèšèšææ³ãååšããŠããŸãã
ãã®ã»ã¯ã·ã§ã³ã¯ãC#ã®åºæ¬çãªèæ¯æ å ±ãæäŸããããšãç®çãšããŠããŸãã次ã®ã»ã¯ã·ã§ã³ã§ã¯ãC#ã®å ·äœçãªæ©èœã䜿çšäŸã«ã€ããŠè©³ãã解説ããŠãããŸãã
2. C#ã®åºæ¬æ§é
C#ã¯ãçŸä»£ã®ããã°ã©ãã³ã°èšèªãšããŠå€ãã®å é²çãªç¹æ§ãæã£ãŠããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ãC#ã®åºæ¬çãªæ§é ãç¹æ§ã«ã€ããŠããªããžã§ã¯ãæåããã°ã©ãã³ã°ãåã®å®å šæ§ããããŠC#ãæã€äž»èŠãªæ©èœã«çŠç¹ãåœãŠãŠè§£èª¬ããŸãã
2.1. ãªããžã§ã¯ãæåããã°ã©ãã³ã°
C#ã¯ããªããžã§ã¯ãæåããã°ã©ãã³ã°ïŒOOPïŒã®ååãå®å šã«ãµããŒãããŠããŸããOOPã¯ãããŒã¿ãšæ©èœãäžã€ã®åäœãããªãã¡ããªããžã§ã¯ãããšããŠãŸãšããããšãåºæ¬ãšããããã°ã©ãã³ã°ã®ã¢ãããŒãã§ããC#ã§ã¯ãã¯ã©ã¹ãšã€ã³ã¹ã¿ã³ã¹ãšããæŠå¿µãéããŠããªããžã§ã¯ãã®äœæãæäœãè¡ãããŸããããã«ãããã³ãŒãã®åå©çšãæ¡åŒµã容æã«ãªãã倧èŠæš¡ãªãããžã§ã¯ãã§ãå¹ççã«éçºãé²ããããšãã§ããŸãã
2.2. åã®å®å šæ§ãšã¡ã¢ãªã®å®å šæ§
C#ã¯ãåã®å®å šæ§ãéèŠããèšèªèšèšãšãªã£ãŠããŸããããã¯ãå€æ°ãæã€ã¹ãããŒã¿ã®çš®é¡ãå³å¯ã«ãã§ãã¯ããäºæããªãåã®ããŒã¿ãä»£å ¥ãããããšãé²ãæ©èœã§ãããŸããC#ã¯èªåçãªã¡ã¢ãªç®¡çãæäŸããŠãããã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãšããæ©èœãéããŠãäžèŠã«ãªã£ãã¡ã¢ãªãèªåçã«è§£æŸããŸããããã«ãããã¡ã¢ãªãªãŒã¯ãäžæ£ãªã¡ã¢ãªã¢ã¯ã»ã¹ãšãã£ãåé¡ãå€§å¹ ã«æžå°ãããããšãã§ããŸãã
2.3. C#ã®äž»èŠãªæ©èœ
C#ã¯ãå€ãã®å é²çãªæ©èœãæã€èšèªã§ããäŸãã°ãã©ã ãåŒãLINQïŒLanguage Integrated QueryïŒãšãã£ãæ©èœãéããŠãããŒã¿ã®æäœãã¯ãšãªã®äœæãéåžžã«ç°¡åã«ãªããŸãããŸããéåæåŠçããµããŒãããasync/awaitãšããããŒã¯ãŒãã䜿çšããããšã§ãå¹ççãªãã«ãã¿ã¹ã¯åŠçãå®çŸããããšãã§ããŸãããããã®æ©èœã¯ãçŸä»£ã®ã¢ããªã±ãŒã·ã§ã³éçºã«ãããŠéåžžã«éèŠãªåœ¹å²ãæãããŠããŸãã
以äžã®ããã«ãC#ã¯ãã®åŒ·åãªæ©èœãšæè»æ§ã«ãããå€ãã®éçºè ããæ¯æãããŠããèšèªãšãªã£ãŠããŸãã次ã®ã»ã¯ã·ã§ã³ã§ã¯ãC#ã§ã®ããã°ã©ãã³ã°ã®åºæ¬ã«ã€ããŠè©³ãã解説ããŠãããŸãã
3. C#ã§ã®ããã°ã©ãã³ã°ã®åºæ¬
C#ã¯ããã®åŒ·åãªæ©èœãšäœ¿ãããããããå€ãã®éçºè ã«éžã°ããŠããèšèªã§ãããã®ã»ã¯ã·ã§ã³ã§ã¯ãC#ã§ã®ããã°ã©ãã³ã°ã®åºæ¬ã«ã€ããŠãæé»çã«åä»ããããå€æ°ãèªåããããã£ãšæ¡åŒµã¡ãœããããããŠãšã©ãŒåŠçãšäŸå€åŠçã«çŠç¹ãåœãŠãŠè§£èª¬ããŸãã
3.1. æé»çã«åä»ããããå€æ°
C#ã§ã¯ãvar
ããŒã¯ãŒãã䜿çšããŠãæé»çã«åä»ããããå€æ°ã宣èšããããšãã§ããŸããããã¯ãå€æ°ã®åãæ瀺çã«æå®ããã«ãã³ã³ãã€ã©ãåãæšè«ããæ©èœã§ããäŸãã°ãvar number = 10;
ãšããã³ãŒãã¯ãnumber
å€æ°ãæŽæ°åã§ããããšãã³ã³ãã€ã©ãèªåçã«èªèããŸãããã®æ©èœã¯ãã³ãŒãã®å¯èªæ§ãåäžãããã ãã§ãªããéçºã®å¹çãåäžãããŸãã
3.2. èªåããããã£ãšæ¡åŒµã¡ãœãã
C#ã«ã¯ãã¯ã©ã¹ã®ããããã£ãç°¡åã«å®£èšã§ããèªåããããã£ãšããæ©èœããããŸããããã«ãããããã¯ã¢ãããã£ãŒã«ããæ瀺çã«å®£èšããããšãªããããããã£ãç°¡æœã«å®çŸ©ããããšãã§ããŸãããŸããæ¡åŒµã¡ãœããã¯ãæ¢åã®åã«æ°ããã¡ãœãããè¿œå ããããšãã§ããæ©èœã§ããããã«ãããæ¢åã®ã©ã€ãã©ãªãã¯ã©ã¹ãå€æŽããããšãªããæ°ããæ©èœãè¿œå ããããšãã§ããŸãã
3.3. ãšã©ãŒåŠçãšäŸå€åŠç
ããã°ã©ã ã®éçºäžã«ã¯ãããŸããŸãªãšã©ãŒãçºçããå¯èœæ§ããããŸããC#ã§ã¯ããããã®ãšã©ãŒãå¹æçã«åŠçããããã®äŸå€åŠçã®ä»çµã¿ãæäŸãããŠããŸããå
·äœçã«ã¯ãtry
ãcatch
ãfinally
ã®ãããã¯ã䜿çšããŠããšã©ãŒãçºçããå Žåã®åŠçãå®çŸ©ããããšãã§ããŸããããã«ããããšã©ãŒãçºçããŠãããã°ã©ã ãé©åã«åäœããããã«ããããšãã§ããŸãã
以äžã®ããã«ãC#ã¯ãã®äœ¿ãããããšåŒ·åãªæ©èœã«ãããåå¿è ããçµéšè±å¯ãªéçºè ãŸã§å¹ åºãæ¯æãããŠããèšèªã§ãã次ã®ã»ã¯ã·ã§ã³ã§ã¯ãC#ã®å®çšäŸãå¿çšã«ã€ããŠè©³ãã解説ããŠãããŸãã
4. C#ã®å®çšäŸ
C#ã¯ãã®å€æ§æ§ãšåŒ·åãªæ©èœãããããŸããŸãªã¢ããªã±ãŒã·ã§ã³ã®éçºã«äœ¿çšãããŠããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ãC#ã®äž»ãªå®çšäŸã«ã€ããŠããŠã§ãã¢ããªã±ãŒã·ã§ã³ãã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ãã¯ãã¹ãã©ãããã©ãŒã ã®éçºããããŠ.NETãšã®é£æºã«çŠç¹ãåœãŠãŠè§£èª¬ããŸãã
4.1. ãŠã§ãã¢ããªã±ãŒã·ã§ã³ãšã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³
C#ã¯ãASP.NETãšãããã¬ãŒã ã¯ãŒã¯ã䜿çšããŠãé«æ§èœãªãŠã§ãã¢ããªã±ãŒã·ã§ã³ãéçºããããšãã§ããŸããããã«ãããEã³ããŒã¹ãµã€ããäŒæ¥ã®å éšã·ã¹ãã ãªã©ãããŸããŸãªãŠã§ããµãŒãã¹ãå¹ççã«æ§ç¯ããããšãã§ããŸãããŸããXamarinãšããããŒã«ã䜿çšããããšã§ãC#ãçšããŠiOSãAndroidåãã®ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ãéçºããããšãã§ããŸããããã«ãããäžã€ã®ã³ãŒãããŒã¹ã§è€æ°ã®ãã©ãããã©ãŒã ã«å¯Ÿå¿ããã¢ããªãäœæããããšãå¯èœãšãªããŸãã
4.2. ã¯ãã¹ãã©ãããã©ãŒã ã®éçº
C#ã¯ãã¯ãã¹ãã©ãããã©ãŒã ã®éçºã«ãéåžžã«é©ããŠããŸããç¹ã«ãUnityãšããã²ãŒã éçºãšã³ãžã³ã䜿çšããããšã§ãC#ãçšããŠPCãã³ã³ãœãŒã«ãã¢ãã€ã«ããã€ã¹ãªã©ãå€å²ã«ããããã©ãããã©ãŒã åãã®ã²ãŒã ãã¢ããªã±ãŒã·ã§ã³ãéçºããããšãã§ããŸãããã®ãããªããŒã«ã®ååšã«ãããC#ã¯å€æ§ãªãã©ãããã©ãŒã ã«å¯Ÿå¿ããéçºèšèªãšããŠã®å°äœã確ç«ããŠããŸãã
4.3. .NETãšã®é£æº
C#ã¯ã.NETãã¬ãŒã ã¯ãŒã¯ãšå¯æ¥ã«é£æºããŠããŸãã.NETã¯ããŠã§ãããã¹ã¯ããããã¢ãã€ã«ãã²ãŒã ãIoTããã€ã¹ãªã©ãããŸããŸãªã¢ããªã±ãŒã·ã§ã³ã®éçºããµããŒããããã©ãããã©ãŒã ã§ããC#ã䜿çšããããšã§ã.NETã®æäŸããè±å¯ãªã©ã€ãã©ãªãããŒã«ã掻çšããŠãå¹ççãã€é«å質ãªã¢ããªã±ãŒã·ã§ã³ã®éçºãè¡ãããšãã§ããŸãã
以äžã®ããã«ãC#ã¯ãã®å€æ§æ§ãšé£æºã®åŒ·ããããããŸããŸãªåéã§ã®ã¢ããªã±ãŒã·ã§ã³éçºã«é©ããŠããŸãã次ã®ã»ã¯ã·ã§ã³ã§ã¯ãC#ã®å¿çšãåŠç¿ãªãœãŒã¹ã«ã€ããŠè©³ãã解説ããŠãããŸãã
5. C#ã®å¿çš
C#ã¯ãåå¿è ããäžçŽè ãŸã§å¹ åºãéçºè ã«å¯Ÿå¿ããããã®å€æ§ãªæ©èœãæã£ãŠããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ãC#ã®é«åºŠãªããã°ã©ãã³ã°æ©èœãããŒã¿ããŒã¹æäœãAPIã®é£æºããããŠããã©ãŒãã³ã¹ãšæé©åã«é¢ããå¿çšçãªæ å ±ãæäŸããŸãã
5.1. é«åºŠãªããã°ã©ãã³ã°æ©èœ
C#ã¯ãéåæããã°ã©ãã³ã°ãããªã²ãŒããã©ã ãåŒãªã©ã®é«åºŠãªããã°ã©ãã³ã°æ©èœããµããŒãããŠããŸãããããã®æ©èœã䜿çšããããšã§ãããå¹ççã§èªã¿ãããã³ãŒããæžãããšãã§ããŸããç¹ã«ãéåæããã°ã©ãã³ã°ã¯ãã¢ããªã±ãŒã·ã§ã³ãã¬ã¹ãã³ã¹ãåŸ ããã«ä»ã®ã¿ã¹ã¯ãå®è¡ã§ããããã«ããããã®éèŠãªæ©èœã§ãã
5.2. ããŒã¿ããŒã¹æäœãšAPIã®é£æº
C#ãš.NETãã¬ãŒã ã¯ãŒã¯ã¯ãEntity Frameworkãªã©ã®ORMããŒã«ã䜿çšããŠãããŒã¿ããŒã¹ãšã®é£æºãç°¡åã«è¡ãããšãã§ããŸããããã«ãããSQLã¯ãšãªãçŽæ¥æžãããšãªããããŒã¿ããŒã¹ã®æäœãè¡ãããšãã§ããŸãããŸããC#ã¯ãRESTful APIãSOAPããŒã¹ã®WebãµãŒãã¹ãšã®é£æºããµããŒãããŠãããå€éšã®ãµãŒãã¹ãããŒã¿ãšã®é£æºãå¹æçã«è¡ãããšãã§ããŸãã
5.3. ããã©ãŒãã³ã¹ãšæé©å
C#ã®ã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãåäžãããããã«ã¯ãã¡ã¢ãªç®¡çãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®æé©åãéèŠã§ãããŸãã䞊ååŠçããã«ãã¹ã¬ããã®æè¡ã䜿çšããããšã§ãã¢ããªã±ãŒã·ã§ã³ã®ã¬ã¹ãã³ã¹ãåäžãããããšãã§ããŸãããããã®æè¡ãé©åã«äœ¿çšããããšã§ãé«éã§å¹ççãªã¢ããªã±ãŒã·ã§ã³ãéçºããããšãã§ããŸãã
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãC#ã®å¿çšçãªåŽé¢ã«çŠç¹ãåœãŠãŠè§£èª¬ããŸããã次ã®ã»ã¯ã·ã§ã³ã§ã¯ãC#ã®åŠç¿ãªãœãŒã¹ãã³ãã¥ããã£ã«ã€ããŠè©³ãã解説ããŠãããŸãã
6. C#ã®åŠç¿ãªãœãŒã¹
ããã°ã©ãã³ã°èšèªãåŠã¶éãé©åãªãªãœãŒã¹ããµããŒãã¯éåžžã«éèŠã§ããC#ãäŸå€ã§ã¯ãããŸããããã®ã»ã¯ã·ã§ã³ã§ã¯ãC#ãåŠã¶ããã®ããããã®ãªãœãŒã¹ããåŠç¿ãæ·±ããããã®å®è·µçãªãããžã§ã¯ãã®ã¢ã€ãã£ã¢ããããŠã³ãã¥ããã£ããµããŒãã«ã€ããŠè§£èª¬ããŸãã
6.1. ããããã®æžç±ãšãŠã§ããµã€ã
å€ãã®åªããC#ã®æžç±ããŠã§ããµã€ããååšããŸããç¹ã«ã“C#ããã°ã©ãã³ã°ã®åºç€”ã“C#å®è·µã¬ã€ã”ãªã©ã®æžç±ã¯ãåå¿è ããäžçŽè ãŸã§ã®åŠç¿è ã«ããããã§ãããŸããMicrosoftã®å ¬åŒããã¥ã¡ã³ããStack Overflowãªã©ã®ãŠã§ããµã€ããã質ã®é«ãæ å ±ããµã³ãã«ã³ãŒããæäŸããŠãããåŠç¿ã®éã®å€§ããªå©ããšãªããŸãã
6.2. å®è·µçãªãããžã§ã¯ãã®ã¢ã€ãã£ã¢
åŠç¿ãæ·±ããããã«ã¯ãå®éã«ããã°ã©ã ãæžããŠã¿ãããšãæãå¹æçã§ããäŸãã°ãç°¡åãªèšç®æ©ã¢ããªãToDoãªã¹ãã®ãŠã§ãã¢ããªã±ãŒã·ã§ã³ãã²ãŒã ã®éçºãªã©ãèå³ãæã£ããããžã§ã¯ããéžãã§åãçµãããšãããããããŸããããã«ãããC#ã®åºæ¬çãªææ³ãæ©èœã ãã§ãªããå®éã®éçºã®æµããåé¡è§£æ±ºã®ã¹ãã«ã身ã«ã€ããããšãã§ããŸãã
6.3. ã³ãã¥ããã£ãšãµããŒã
C#ã¯ãäžçäžã§å€ãã®éçºè ã«æ¯æãããŠããèšèªã§ããããã掻çºãªã³ãã¥ããã£ãååšããŸããGitHubãRedditãDiscordãªã©ã®ãã©ãããã©ãŒã ã§ãC#ã«é¢ããæ å ±äº€æã質åãããããšãã§ããŸãããŸããå€ãã®éœåžã«ã¯C#ã.NETã«ç¹åãããŠãŒã¶ãŒã°ã«ãŒããå匷äŒãååšããå®éã«åå ããŠåŠã³ãæ·±ããããšãå¯èœã§ãã
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãC#ã®åŠç¿ãªãœãŒã¹ã«é¢ããæ å ±ãæäŸããŸãããC#ã¯éåžžã«åŒ·åã§å€æ§ãªèšèªã§ãããããé©åãªãªãœãŒã¹ã掻çšããŠåŠç¿ãé²ããããšã§ãå€ãã®å¯èœæ§ãéãããšãã§ããŸãã
7. ãŸãšã
ãã®èšäºãéããŠãC#ã®åºæ¬ããå¿çšãåŠç¿ãªãœãŒã¹ãŸã§å¹ åºãåŠã¶ããšãã§ããŸãããæåŸã«ãC#ã®åŒ·ã¿ãšåŒ±ã¿ãä»åŸã®å±æããããŠç¶ç¶çãªåŠç¿ã®éèŠæ§ã«ã€ããŠãŸãšããŸãã
7.1. C#ã®åŒ·ã¿ãšåŒ±ã¿
C#ã¯ãMicrosoftãéçºããã¢ãã³ãªããã°ã©ãã³ã°èšèªãšããŠãå€ãã®éçºè ããæ¯æãåããŠããŸãããã®åŒ·ã¿ãšããŠãåã®å®å šæ§ãé«åºŠãªããã°ã©ãã³ã°æ©èœããããŠ.NETãã¬ãŒã ã¯ãŒã¯ãšã®é£æºãæããããŸããããã«ããããŠã§ãã¢ããªã±ãŒã·ã§ã³ããã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ããã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³ãŸã§ãå¹ åºãéçºãå¯èœãšãªã£ãŠããŸããäžæ¹ã匱ã¿ãšããŠã¯ãä»ã®èšèªã«æ¯ã¹ãŠåŠç¿æ²ç·ãããæ¥ã§ããããšããç¹å®ã®ãã©ãããã©ãŒã ã«äŸåããããšãæããããŸãã
7.2. ä»åŸã®C#ã®å±æ
C#ã¯ã.NET 5ãBlazorãªã©ã®æ°ããæè¡ã®ç»å Žã«ãããä»åŸãé²åãç¶ããã§ããããç¹ã«ãã¯ãã¹ãã©ãããã©ãŒã ã®éçºãWebAssemblyãå©çšãããã©ãŠã¶äžã§ã®å®è¡ã泚ç®ãããŠããŸããããã«ãããC#ã®é©çšç¯å²ã¯ããã«åºããããšãæåŸ ãããŸãã
7.3. ç¶ç¶çãªåŠç¿ã®éèŠæ§
æè¡ã®é²åã¯æ¥é²ææ©ã§ãããããã°ã©ãã³ã°èšèªãäŸå€ã§ã¯ãããŸãããC#ãåŠã¶äžã§ãç¶ç¶çãªåŠç¿ã¯éåžžã«éèŠã§ããæ°ããããŒãžã§ã³ã®ãªãªãŒã¹ãæ°æ©èœã®è¿œå ãåžžã«ãã§ãã¯ããå®éã«æãåãããŠè©Šãããšã§ãã¹ãã«ãç¶æã»åäžãããããšãã§ããŸãã
ãã®èšäºãæåŸãŸã§èªãã§ããã ããããããšãããããŸããC#ã¯éåžžã«é åçãªèšèªã§ããããã®å¯èœæ§ã¯ç¡é倧ã§ãããããããç¶ç¶çã«åŠã³ãæ°ããæè¡ãç¥èãåžåããŠãããé«åºŠãªã¢ããªã±ãŒã·ã§ã³ã®éçºãç®æããŠãã ããã