ã©ãããŠæã®æ°ã»ã©ããã°ã©ãã³ã°èšèªãããã®ãïŒ
ä»åãããäžçäžã«ãããããããªããã°ã©ãã³ã°èšèªãã¬ãã¥ãŒããé£èŒãäžçã®ããã°ã©ãã³ã°èšèªããå§ãŸããŸããäžçäžã«ã¯æã®æ°ã»ã©ããããã®ããã°ã©ãã³ã°èšèªãããã®ã§ãããããäžã€ãã€ç޹ä»ããŠãããŸããããããããããããªããäžã®äžã«ã¯ããããã®ããã°ã©ãã³ã°èšèªãããã®ã§ããããã
å¹³åçãªããã°ã©ããŒã§ããã°10å以äžã®èšèªã䜿ãåãã?!
質åã«ã€ããŠçããåã«ãçè ãããã€ã®ããã°ã©ãã³ã°èšèªã䜿ããã®ãã玹ä»ããŸãããããŸããçè èªèº«ãããã°ã©ãã³ã°èšèªãéçºããŠãããæ¥æ¬èªããã°ã©ãã³ã°èšèªããªã§ããã(https://nadesi.com)ãå ¬éããŠããŸããããã ãã§ã䜿ããèšèª+1ãªã®ã§ãããæ¯å¹Žã2-3åãã€ããã°ã©ãã³ã°èšèªã«é¢ããæžç±ãå·çããŠããŸããããã§ãæžç±ã§æ±ã£ãããã°ã©ãã³ã°èšèªã«ã¯ãJavaScript/ActionScript/PHP/Python/ã²ãŸãã/ãªã§ããã»ã»ã»ãšããããã§ããããããããããèããŠã¿ããšãæ¥åã§äœ¿çšããããã°ã©ãã³ã°èšèªã§ããã°ãC/C++/C#/VB/Delphi/Java/Perl/Rubyã»ã»ã»ãšãã¡ãã£ãšæãåºããã ãã§äž¡æãè¶³ããªããªããŸãããããŠãè¶£å³ãéã³ã§ããã£ãèšèªãšãªãã°ããã£ãšå€ããªããŸãã
ããã§ãäžè¬ã®æ¹ã«ãã®è©±ããããšããããã€ãã®èšèªã䜿ãããªããŠã¹ãŽã€ããªã©ãšèšãããããšãããã®ã§ãããå®ã¯ããããããšã§ããªãã§ããããŸãããäžå£ã«ãèšèªããšèšã£ãŠãããèªç¶èšèªããšãããã°ã©ãã³ã°èšèªãã«ã¯å€§ããªå·®ããããããã°ã©ãã³ã°èšèªã¯èªç¶èšèªã»ã©é£ãããªãããã§ãã
äžçã«ã¯ãæ¥æ¬èªã ãã§ãªããè±èªã»äžåœèªã»ã¹ãã€ã³èªã»ãã©ã³ã¹èªãªã©ã®èªç¶èšèªããããŸãããããã®èšèªã§ãæ¥åžžäŒè©±ãçè§£ããããã«å¿ èŠãªåèªæ°ã¯ã2000èªãã3000èªã»ã©ãšèšãããŠããŸããããããããã°ã©ãã³ã°ã®èšèªã§äœ¿ãèªåœãšããã®ã¯ãããã»ã©å€ããããŸãããäŸãã°ãæè¿äººæ°ã®èšèªPythonã®äºçŽèªã¯33åãæšæºã®çµã¿èŸŒã¿é¢æ°ã¯149åãšãããã»ã©å€ããããŸããããã¡ãããçµã¿èŸŒã¿é¢æ°ã®ã»ãã«ãå¥éã©ã€ãã©ãªãå©çšããããšãå€ãã®ã§ãå®éã«ã¯ãã£ãšå€ãã®èªåœããã¹ã¿ãŒããªããã°ãªããŸããããããã§ããèªç¶èšèªã»ã©å€æ§ãªèªåœãèŠããªããã°ãªããªãèš³ã§ã¯ãããŸãããããã«ãåããã°ã©ãã³ã°èšèªã®æ ¹åºã«ããèãæ¹ã«å€§ããªå·®ç°ãããããã§ã¯ãããŸããã
ããããçè ãç¹å¥ãªã®ã§ã¯ãªããããã°ã©ãã³ã°ãä»äºã«ããŠãã人ã§ããã°ãè€æ°ã®ããã°ã©ãã³ã°èšèªã䜿ãããªãããšããã®ã¯ãããæå³ãæ®éã®ããšã§ãããããããé·å¹Žããã°ã©ãã³ã°ãããŠãã人ãªãã°ã5å以äžã®èšèªãé§äœ¿ããããšãã§ããããšã§ãããã
äŸãã° Webããã°ã©ããŒãªã
äŸãã°ãæšä»ã®å¹³åçãªWebããã°ã©ããŒã§ããã°ãæ®éã«äºçš®é¡ä»¥äžã®ããã°ã©ãã³ã°èšèªãçµã¿åãããŠãã¢ããªãéçºããŠããŸãããªããªããWebãµãŒããŒäžã§ããã°ã©ã ãåããããã«ã¯ãPHPã䜿ããŸãããããŠãWebãã©ãŠã¶äžã§ããã°ã©ã ãåããããã«ã¯ãJavaScriptãå©çšããŸãã
-

PHPã®Webãµã€ã
ãã®ã»ãã«ããå³å¯ã«èšããšãããã°ã©ãã³ã°èšèªã§ã¯ãããŸããããäžã€ã®Webã¢ããªãäœãããã«ãHTMLãCSSãªã©ã®ããŒã¯ã¢ããèšèªã䜿ãå¿ èŠããããPHPããããŒã¿ããŒã¹ã«ã¢ã¯ã»ã¹ããããã«ãSQLãªã©ã®ããŒã¿ããŒã¹åãåããèšèªãèšè¿°ããå¿ èŠããããŸãã
ããã°ã©ãã³ã°èšèªã¯é©æé©æ
ãã®ããã«ãWebéçºã ããèŠãŠããè€æ°ã®ããã°ã©ãã³ã°èšèªãçµã¿åãããŠäœ¿ãå¿ èŠããããŸããã§ããããçšéããšã«çšæãããŠããããã°ã©ãã³ã°èšèªãã驿驿ã§éžãã§äœ¿ãå¿ èŠããããŸãã
ããããããã°ã©ããŒã®ä»äºãšããã®ã¯ãæä»£ãšå ±ã«å€åããŠãããã®ã§ãã1980幎代以åã¯ãã¡ã€ã³ãã¬ãŒã ãšåŒã°ãã倧åã®ãµãŒããŒæ©ã察象ãšããŠããã°ã©ã ãäœãä»äºãå€ããããŸããããããã90幎代ãã2000幎代ã«ãããŠãWindowsã代衚ãšããããœã³ã³åãã®ã¢ããªãéçºããããšãå€ããªããŸããããããŠã2010幎代以éã¯ãWebãã©ãŠã¶ããå©çšããWebã¢ããªããã¹ããŒããã©ã³åãã®ã¢ããªãäœãæ©äŒãå¢ããŠããŸãã
ãŸããéçºããŒã«ãããã°ã©ãã³ã°èšèªã¯ããã®ãã©ãããã©ãŒã ã§ã®ããŠãŒã¶ãŒãå¢ããOSãæçããŠããã»ã©ã«å€æ§æ§ãå¢ããŠããŸããä»ã§ã¯ãæ¥åã«ãªããŠã¯ãªããªãWindowsã®ã¢ããªãäœãããã°ã©ãã³ã°èšèªã«ã¯ãåœåãC/C++ãVisual BasicãDelphiãªã©ã䜿ãããŸãããããã®åŸãJavaã.NET(C#ãªã©)ãç»å Žããã¹ã¯ãªããèšèªã®RubyãPythonãJavaScriptã䜿ãããããã«ãªã£ãŠããŸããæŽå²ã®é·ãUnix/Linuxç³»ã®OSã§ã¯ããã倿§æ§ã«å¯ãã éçºããŒã«ãæäŸãããŠããŸãã
ããã§ãçµè«ãšãªãã®ã§ãããæä»£ãç°å¢ã®å€åã«å¿ããŠãã³ã³ãã¥ãŒã¿ãŒãOSãå€ãã£ãŠããããããã®ç°å¢ã«å¿ããããŸããŸãªããã°ã©ãã³ã°èšèªãå¿ èŠãšãªãã®ã§ãããŸããç°å¢ã ãã®åé¡ã§ã¯ãªããéçºããããã°ã©ã ã®å®è¡é床ãå®è¡åœ¢æ ãéçºã®ãæããéçºè ã®å¥œã¿ã«å¿ããŠãç°ãªãããã°ã©ãã³ã°èšèªãæäŸãããŠããŸããã
ãŸãã売ããŠããªããã¥ãŒãžã·ã£ã³ã®äžã«ããããããçŽ æŽããã鳿¥œãäœãã¢ãŒãã£ã¹ããããããã«ãããã°ã©ãã³ã°èšèªã®äžã«ããããŸã泚ç®ãããªããªããããã©ãªãšå ãçŽ æŽãããããã°ã©ãã³ã°èšèªããããŸããæ¬åœã¯ã䟿å©ã ã£ãã®ã«ãæä»£ã«æµãŸããªãã£ãããã«ãåèœããããã°ã©ãã³ã°èšèªããããŸããæ¬é£èŒã§ã¯ãããããã¡ãžã£ãŒã§ã¯ãªããã®ã®ãã©ãªãšå ãããã°ã©ãã³ã°èšèªã玹ä»ããŠãããããšæããŸãã
Firefoxé«éåã®ç«åœ¹è ãRustã
第1åç®ã¯ãFirefoxé«éåã®ç«åœ¹è ãRustãã玹ä»ããŸãã2017幎æ«ãFirefox 57ãå ¬éãããŸããããå®è¡é床ã2åã«ãªã人ã ãé©ãããŸãã( ã¬ãã¥ãŒèšäº - https://news.mynavi.jp/article/20171116-firefox57/ )ããã®é«éåã®ãã¥ãŒã¹ã§èªãããŠããã®ããRustããšããããã°ã©ãã³ã°èšèªã§ããäžäœãRustãšã¯äœãªã®ã ãããšçåã«æã£ãæ¹ãå€ããšæããŸããããã§ãå®éã«Rustãã€ã³ã¹ããŒã«ããŠç°¡åãªããã°ã©ã ãåãããŠã¿ãŸãããã
Rustãšã¯ïŒ
ãRust(èªã¿æ¹: ã©ã¹ã)ãã¯ãFirefoxã®éçºå ã§ããMozillaãæ¯æŽãããªãŒãã³ãœãŒã¹ã®ããã°ã©ãã³ã°èšèªã§ããRustãç®æããŠããã®ã¯ãé床ã»å®å šæ§ã»äžŠè¡æ§ã§ãããã®ãããRustã®Webãµã€ãã«ã¯ã倧ãããRustã¯é床ãå®å šæ§ãäžŠè¡æ§ã®3ã€ã®ãŽãŒã«ã«ãã©ãŒã«ã¹ããã·ã¹ãã ããã°ã©ãã³ã°èšèªã§ãããšæ²ããããŠããŸãã
ãã¡ãããFirefoxãéçºã§ããããšããèŠãŠãåãããšãããæ¢ã«ååã«å®çšçãªããã°ã©ãã³ã°èšèªã§ãããŸãã2010幎ã«çºè¡šãããŠä»¥æ¥ãFirefoxã®éçºãéããŠãRustèšèªã¯æ¹è¯ãããŠããŸããããµã€ãã«ã¯ãå©çšå®çžŸãæ²èŒãããŠãããããããã®ãããã¯ããRustãå©çšããŠããŸãã
Rustã®Webãµã€ã [URL] https://www.rust-lang.org/ja-JP/
-

Rustã®Webãµã€ã
ãŸããæåãªæè¡è ã³ãã¥ããã£ãµã€ãã®Stack Overflowã«ãã調æ»ã«ãããšã2016幎ã2017幎ã®ãæãæãããŠããããã°ã©ãã³ã°èšèªãã§äžäœãç²åŸããŠããŸããæ¥æ¬ã§ã¯ããŸã ããã»ã©ãã¬ã€ã¯ããŠããªãã®ã§ãããæ¥æ¬èªã®æ å ±ãå¢ããŠããããããããšäººæ°ãåºãããªããã°ã©ãã³ã°èšèªã§ãã
Rustãã€ã³ã¹ããŒã«ããŠã¿ãã
ãWindowsã®å Žåã
Windowsã§Rustãæè»œã«ã€ã³ã¹ããŒã«ããããã«ãã€ã³ã¹ããŒã©ãŒãæäŸãããŠããŸãã以äžã®Webãµã€ãã«ã¢ã¯ã»ã¹ããŠãããŠã³ããŒãããŠãã ãããWindowsã§ã¢ã¯ã»ã¹ãããšãã€ã³ã¹ããŒã©ãŒã®ããŠã³ããŒãçšãªã³ã¯ã衚瀺ãããŸãããŸããWindowsã§Rustã䜿ãå Žåã«ã¯ãVisual C++ Build ToolsãšC++åé åžå¯èœããã±ãŒãžã®äºã€ãã€ã³ã¹ããŒã«ããŠããå¿ èŠããããŸãããã¡ã(http://landinghub.visualstudio.com/visual-cpp-build-tools)ãšãã¡ã(https://www.microsoft.com/ja-JP/download/details.aspx?id=48145)ãããç¡åã§ããŠã³ããŒãã§ããŸãã®ã§ãã€ã³ã¹ããŒã«ããŸãããã
Rustã®ã€ã³ã¹ããŒã«ããŒãž [URL] https://www.rust-lang.org/ja-JP/install.html
ã€ã³ã¹ããŒã©ãŒãå®è¡ãããšãã³ãã³ãããã³ããã®ç»é¢ã衚瀺ãããŸããããã§ã[1]ããŒãš[Enter]ããŒãæŒããŸãããããšRustã®ææ°çãããŠã³ããŒããããŸãã
ãmacOSã®å Žåã
macOSã§äžèšã®Webãµã€ãã«ã¢ã¯ã»ã¹ãããšãã€ã³ã¹ããŒã«ãè¡ãããã®ã·ã§ã«ã³ãã³ãã衚瀺ãããŸããããã¯ã以äžã®ãããªãã®ã§ããããã§ããã¿ãŒããã«.appããèµ·åãã以äžã®ã³ãã³ããå ¥åããã[Enter]ããŒãæŒããŸãããããšRustã®ææ°çã®ããŠã³ããŒãããã³ã€ã³ã¹ããŒã«ãè¡ãããŸãã
curl https://sh.rustup.rs -sSf | sh
Hello, WorldãæžããŠã¿ãã
ã©ããªããã°ã©ãã³ã°èšèªã§ããæåã«åŠã¶ã®ã¯ãHello, World!ããšè¡šç€ºããããã°ã©ã ããã§ããRustã§ã¯ã以äžã®ããã«æžããŸãã
fn main() {
println!("Hello, World!");
}
äžèšã®ããã°ã©ã ããããã¹ããšãã£ã¿ã«è²Œãä»ããŠãhello.rsããšããååã§ä¿åããŸããããRustã¯ã³ã³ãã€ã«èšèªãªã®ã§ããœãŒã¹ã³ãŒããäžåºŠãå®è¡ãã¡ã€ã«ã«ã³ã³ãã€ã«ããŠããããå®è¡ãã¡ã€ã«ãå®è¡ããŸããå®è¡ãã¡ã€ã«ã«å€æããã«ã¯ã以äžã®ããã«ããŠã rustcã³ãã³ããå®è¡ããŸããã³ãã³ããå®è¡ããã«ã¯ãWindowsãªãã³ãã³ãããã³ãããPowerShellãmacOSãªãã¿ãŒããã«.appã䜿ããŸãã
rustc hello.rs
ãããŠãã³ã³ãã€ã«ãå®äºãããã以äžã®ã³ãã³ããå®è¡ããŸãã
# Windowsã®å Žå
.\hello
# macOS/Linuxã®å Žå
./hello
ãããšããHello, World!ããšè¡šç€ºãããŸããããã°ã©ã ã確èªããŠã¿ãŸãããã
ãã®ããã°ã©ã ãèŠããšãRustã«ã€ããŠåºæ¬çãªããšãåãããŸãããŸããRustã§ã¯ãã¡ã€ã³é¢æ°ãmain()ããå®çŸ©ããŸãããããŠããã®é¢æ°å ã«æžããããã°ã©ã ãå®è¡ãããŸãã颿°ãå®çŸ©ããã«ã¯ãfn 颿°å(åŒæ°) { ... }ãã®ããã«èšè¿°ããŸãããããŠãæååãåºåããã«ã¯ãprintln!()ãå©çšããŸããprintln!ã¯ãæååãåºåãããã¯ãã§ãããã¯ãã¯ååã®æ«å°Ÿã«ã!ããã€ããããšã«ãªã£ãŠããŸãã
FizzBuzzåé¡ãè§£ããŠã¿ãã
ç¶ããŠãFizzBuzzåé¡ãè§£ããŠã¿ãŸããããFizzBuzzåé¡ã¯æ¬¡ã®ãããªãã®ã§ãã
1ãã100ãŸã§ã®æ°ãåºåããããã°ã©ã ãæžããŠãã ããããã ãã3ã®åæ°ã®ãšãã¯æ°ã®ä»£ããã«ïœ¢Fizzãšã5ã®åæ°ã®ãšãã¯ïœ¢Buzzãšè¡šç€ºããŠãã ããã3ãš5ã®åæ°ã®æã¯ïœ¢FizzBuzzãšè¡šç€ºããŠãã ããã FizzBuzzåé¡ã®è§£æ³ã¯ããããããããŸãã®ã§ã以äžã¯ãã®è§£æ³ã®äžã€ã§ãã以äžã®ããã°ã©ã ããfizzbuzz.rsããšããååã§ä¿åããŸãããã
fn main() {
let maxv = 100; // --- (*1)倿°ã®å®£èš
for n in 1 .. (maxv + 1) { // --- (*2)ç¹°ãè¿ãæ§æ
fizzbuzz(n);
}
}
fn fizzbuzz(n:i32) {
// æ¡ä»¶å岿§æ --- (*3)
if (n % 3 == 0) && (n % 5 == 0) {
println!("fizzbuzz");
} else if n % 3 == 0 {
println!("fizz");
} else if n % 5 == 0 {
println!("buzz");
} else {
println!("{}", n.to_string());
}
}
ãã®ããã°ã©ã ãå®è¡ããããã«ã¯ã以äžã®ãããªã³ãã³ããèšè¿°ããŸãã
# ã³ã³ãã€ã«
rustc fizzbuzz.rs
# ããã°ã©ã ãå®è¡(Windows)
.\fizzbuzz
# ããã°ã©ã ãå®è¡(macOS/Linux)
./fizzbuzz
FizzBuzzåé¡ãè§£ãã«ã¯ãæ¡ä»¶åå²ãç¹°ãè¿ãæ§æãå©çšããŸãããã®ãããåºæ¬çãªå¶åŸ¡æ§æã確èªã§ããŸããããã°ã©ã ã®(ïŒ1)ã®éšåã§ã¯ã倿°ã®å®£èšãè¡ããŸãã(ïŒ2)ã®éšåã§ã¯ãåæ°ãæå®ããforæ§æãèšè¿°ããŸãã(ïŒ3)ã®éšåã§ã¯ãæ¡ä»¶å岿§æãèšè¿°ããŠããŸãã
ããŠãããã§å·éã«ãã®ããã°ã©ã ãèŠãŠã¿ããšãRustãã³ã³ãã€ã«èšèªã§ããããšãå¿ããŠããŸãããã«ãªããŸãããã®å€§ããªçç±ãRustã®åæšè«ã®æ©èœã§ããããã°ã©ã ã®(ïŒ1)ã®éšåãèŠããšã倿°å®çŸ©ã«ãletããæå®ããŸãããããæç€ºçã«åãæå®ããå Žåã«ã¯ãlet 倿°å:倿°åãã®ããã«å®çŸ©ããã®ã§ãããèªåçã«æšè«ããŸãã
ã¢ãã³ãªèšèªæ©èœãåããRust
Rustã¯çŸä»£çãªããã°ã©ãã³ã°èšèªã§ããå ã»ã©ç޹ä»ããåæšè«ãã¯ããããã¿ãŒã³ãããã³ã°ãã¯ããŒãžã£ãã¿ãã«ããã¬ã€ãã»ãžã§ããªã¯ã¹ãªã©ãã¢ãã³ãªèšèªã«åãã£ãŠãã䟿å©ãªæ©èœãããããåãã£ãŠããŸãã
ã³ã³ãã€ã«èšèªã§ãããªãããã¹ã¯ãªããèšèªã®ãããªæè»ãªèšè¿°ãã§ããã®ã倧ããªã¡ãªããã§ããä»ã«ããã¬ããŒãžã³ã¬ã¯ã·ã§ã³(GC)ãå©çšããªãå®å šãªã¡ã¢ãªç®¡çã®æ©èœãããã«ãã¹ã¬ãããå©çšããŠãããŒã¿ç«¶åãèµ·ããªãä»çµã¿ãªã©ããããŸãã
ãŸãšã
以äžãä»åã¯ãç°¡åãªããå ·äœçãªRustã®ããã°ã©ã ãåãããŠãRustã®é°å²æ°ã確ãããŠã¿ãŸãããã³ã³ãã€ã«èšèªã§ãããªããããæè»œã«ããã°ã©ã ãäœãããšãã§ããããšããåãã£ãã®ã§ã¯ãªãã§ããããã
Rustã䜿ãã°ãã·ã¹ãã ããã°ã©ã ãäœæã§ããŸããã·ã¹ãã ããã°ã©ã ã®ä»£è¡šäŸã¯ãOSãããŒã¿ããŒã¹ãããã°ã©ãã³ã°èšèªãªã©ãããŸããŸãªã¢ããªã®åºç€ã·ã¹ãã ãšãªãããã°ã©ã ã§ãããããŸã§ãããããã·ã¹ãã ããã°ã©ã ãäœãã«ã¯ããã£ã±ãC/C++èšèªã䜿ãããŠããŸãããããããRustã䜿ãã°ãCèšèªã®çœ®ãæããšãªããããªçšéã§äœ¿ãããšãã§ããŸãããããŠãäœãããFirefoxã®ãããªé«åºŠãªã¢ããªãéçºã§ããããšããRustã®å®åã蚌æããŠããŸããä»åŸããRustã®ååãæ¥œãã¿ã«ããããšæããŸãã


