{"id":302,"date":"2022-10-25T02:24:17","date_gmt":"2023-05-22T16:02:55","guid":{"rendered":"https:\/\/www.silicloud.com\/ja\/blog\/index.php\/2023\/11\/30\/%e3%82%b9%e3%82%ab%e3%83%a9%e3%81%ae%e9%ab%98%e5%ba%a6%e3%81%aa%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%93%e3%83%a5%e3%83%bc%e3%81%ae%e8%b3%aa%e5%95%8f%e3%81%a8%e5%9b%9e%e7%ad%94\/"},"modified":"2025-07-31T22:29:03","modified_gmt":"2025-07-31T13:29:03","slug":"%e3%82%b9%e3%82%ab%e3%83%a9%e3%81%ae%e9%ab%98%e5%ba%a6%e3%81%aa%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%93%e3%83%a5%e3%83%bc%e3%81%ae%e8%b3%aa%e5%95%8f%e3%81%a8%e5%9b%9e%e7%ad%94","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/ja\/blog\/%e3%82%b9%e3%82%ab%e3%83%a9%e3%81%ae%e9%ab%98%e5%ba%a6%e3%81%aa%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%93%e3%83%a5%e3%83%bc%e3%81%ae%e8%b3%aa%e5%95%8f%e3%81%a8%e5%9b%9e%e7%ad%94\/","title":{"rendered":"\u30b9\u30ab\u30e9\u306e\u9ad8\u5ea6\u306a\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54"},"content":{"rendered":"<p>\u3053\u306e\u6295\u7a3f\u3092\u8aad\u3080\u524d\u306b\u3001\u300cScala Basic\u300d\u3068\u300cScala Intermediate\u300d\u306e\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54\u3092\u8aad\u3093\u3067\u3001Scala\u8a00\u8a9e\u306e\u57fa\u790e\u77e5\u8b58\u3092\u5f97\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<h2>\u30b9\u30ab\u30e9\u306b\u95a2\u3059\u308b\u9ad8\u5ea6\u306a\u9762\u63a5\u8cea\u554f<\/h2>\n<p>\u3053\u306e\u6295\u7a3f\u3067\u306f\u3001Scala\u306e\u9ad8\u5ea6\u306a\u30b3\u30f3\u30bb\u30d7\u30c8\u3068\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u95a2\u9023\u3059\u308b\u3044\u304f\u3064\u304b\u306e\u9ad8\u5ea6\u306aScala\u9762\u63a5\u306e\u8cea\u554f\u306b\u3064\u3044\u3066\u8b70\u8ad6\u3057\u307e\u3059\u3002\u306a\u304a\u3001\u3053\u306e\u30ea\u30b9\u30c8\u304c\u3059\u3067\u306b\u975e\u5e38\u306b\u5927\u304d\u304f\u306a\u3063\u3066\u3044\u308b\u305f\u3081\u3001\u6b8b\u308a\u306e\u8cea\u554f\u3068\u56de\u7b54\u306b\u3064\u3044\u3066\u306f\u5225\u306e\u6295\u7a3f\u3067\u914d\u4fe1\u3059\u308b\u4e88\u5b9a\u3067\u3059\u3002\u305d\u306e\u6295\u7a3f\u306f\u300cScala\u4e2d\u7d1a\u304a\u3088\u3073\u4e0a\u7d1a\u9762\u63a5\u306e\u8cea\u554f\u3068\u56de\u7b54\u300d\u3068\u3057\u3066\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u307e\u305f\u3001\u30b7\u30cb\u30a2\u307e\u305f\u306f\u7d4c\u9a13\u8c4a\u5bcc\u306aScala\/Java\u958b\u767a\u8005\u306b\u5f79\u7acb\u3064Scala\/Java\u306e\u4e26\u884c\u6027\u3068\u4e26\u5217\u6027\u306b\u95a2\u3059\u308b\u9762\u63a5\u306e\u8cea\u554f\u3068\u56de\u7b54\u306b\u3064\u3044\u3066\u3082\u8b70\u8ad6\u3057\u307e\u3059\u3002<\/p>\n<h3>\u30b9\u30ab\u30e9\u306e\u4e0a\u7d1a\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u96c6<\/h3>\n<p>\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3059\u3079\u3066\u306eScala\u4e2d\u7d1a\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3092\u30ea\u30b9\u30c8\u30a2\u30c3\u30d7\u3057\u3001\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u8a73\u7d30\u306b\u8b70\u8ad6\u3057\u307e\u3059\u3002<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>What is the current latest version of Scala?What is the major change or update in Scala 2.12?<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>What is Option in Scala? What are Some and None? What is Option\/Some\/None Design Pattern in Scala?<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>What is Either in Scala? What are Left and Right in Scala? Explain Either\/Left\/Right Design Pattern in Scala?<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>What is the equivalent construct of Scala\u2019s Option in Java SE 8? What is the use of Option in Scala?<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>What are the Advantages of Functional Programming (FP) or Advantages of Pure Functions?<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>What are the Popular Scala-Based Frameworks to develop RESTful Web Services or REST API?<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>What is the best Framework to generate REST API documentation for Scala-based applications?<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>Like Hibernate for Java-based applications, What are the Popular ORM Frameworks available to use in Play\/Scala based applications?<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>What is the best tool to develop Play\/Scala applications to persist data in MongoDB NoSQL data store?<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>Popular clients who are using Play and Scala to develop their applications?<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>What is the best language to use with Play framework: Scala or Java?<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>How Scala supports both Highly Scalable and Highly Performance applications?<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>What are the available Build Tools to develop Play and Scala based Applications?<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>What is SBT? What is the best Build Tool to develop Play and Scala Applications?<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>What are the available Unit Testing, Functional Testing and\/or BDD Frameworks for Play and Scala Based applications?<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>What is the best Code-coverage tool available for Play and Scala based applications?<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>What is the best Scala style checker tool available for Play and Scala based applications?<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>Which IDEs support Play and Scala-Based Applications Development and how?<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>What is the default Unit and Functional Testing Framework for Play? What is the default Build Tool for Play? What is the Default Template Engine for Play? What is the built-in Web Server available in Play Framework?<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>Why Scala is better than Java? What are the advantages of Scala over Java (Java 8)? Compare to Java What are the major advantages or benefits of Scala?<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>What is an Anonymous Function In Scala? What is a Function Literal in Scala? What are the advantages of a Anonymous Function\/Function Literal in Scala?<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>What is an Higher-Order Function (HOF)?<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>What are the differences between Case class and Normal Class?<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>What are the advantages of Play\/Scala stack to develop web applications?<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>What is call-by-name? Does Scala and Java support call-by-name? What is the difference between call-by-value and call-by-name function parameters?<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>What are the Java\u2019s OOP constructs not supported by Scala? What are the Scala\u2019s OOP constructs not supported by Java? What are the new OOPs constructs introduced by Scala, but not supported by Java?<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>What are the popular MVC frameworks for Scala Language to develop Web Applications?<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>What are major differences between Java-Based and Scala-Based Maven Project\u2019s structure?<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>What is Extractor in Scala? What is the difference between Constructor and Extractor in Scala? What is the use of Extractor in Scala?<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>What is the use of \u2018???\u2019 in Scala-based Applications?<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>Explain the main difference between List and Stream in Scala Collection API? How do we prove that difference? When do we choose Stream?<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>What is the difference between :: and #:: in Scala? What is the difference between ::: and #::: in Scala?<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>If I want to become a Fullstack Scala Developer, which technology stack I should learn?<\/ol>\n<h3>\u30b9\u30ab\u30e9\u306e\u9ad8\u5ea6\u306a\u9762\u63a5\u306e\u8cea\u554f\u3068\u56de\u7b54<\/h3>\n<p>\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u4e0a\u8a18\u306e\u30ea\u30b9\u30c8\u304b\u30891\u3064\u305a\u3064\u8cea\u554f\u3092\u53d6\u308a\u4e0a\u3052\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u9069\u5207\u306a\u4f8b\u3092\u7528\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u307e\u3059\u3002\u3082\u3057\u3001\u3053\u308c\u3089\u306e\u6982\u5ff5\u3092\u4f8b\u3092\u4ea4\u3048\u3066\u8a73\u3057\u304f\u7406\u89e3\u3057\u305f\u3044\u5834\u5408\u306f\u3001Scala \u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u904e\u53bb\u306e\u6295\u7a3f\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002<\/p>\n<h3>What is the current latest version of Scala? What is the major change or update in Scala 2.12?<\/h3>\n<p>\u73fe\u5728\u306e\u6700\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3\u306eScala\u306f\u4f55\u3067\u3059\u304b\uff1fScala 2.12\u306e\u4e3b\u306a\u5909\u66f4\u3084\u66f4\u65b0\u306f\u4f55\u3067\u3059\u304b\uff1f<\/p>\n<p>\u73fe\u5728\u306eScala\u306e\u5b89\u5b9a\u7248\u306f2.11.7\u3067\u3059\u3002\u305d\u308c\u306fJava SE 7\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002<br \/>\nScala 2.12\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u4e3b\u306a\u5909\u66f4\u3084\u66f4\u65b0\u70b9\u306f\u3001Java SE 8\u4ee5\u964d\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u307f\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u3053\u3068\u3067\u3059\u3002<br \/>\nScala 2.12\u306f\u30012.11.x\u30b7\u30ea\u30fc\u30ba\u3068\u30d0\u30a4\u30ca\u30ea\u4e92\u63db\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002\u305d\u308c\u306f\u307e\u3060\u30de\u30a4\u30eb\u30b9\u30c8\u30fc\u30f3\u30d3\u30eb\u30c9\u306e\u307f\u3067\u3059\u3002<\/p>\n<h3>Scala\u306b\u304a\u3051\u308bOption\u3068\u306f\u4f55\u3067\u3059\u304b\uff1fSome\u3068None\u3068\u306f\u4f55\u3067\u3059\u304b\uff1fScala\u306b\u304a\u3051\u308bOption\/Some\/None\u306e\u30c7\u30b6\u30a4\u30f3\u30d1\u30bf\u30fc\u30f3\u3068\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>Scala\u3067\u306f\u3001Option\u306f\u5b58\u5728\u3059\u308b\u304b\u5b58\u5728\u3057\u306a\u3044\u304b\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u5024\u3092\u8868\u3059\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002Option\u306f\u62bd\u8c61\u30af\u30e9\u30b9\u3067\u3059\u3002Option\u306b\u306f\u3001Some\u3068None\u3068\u3044\u30462\u3064\u306e\u30b5\u30d6\u30af\u30e9\u30b9\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u3089\u306e3\u3064\u306e\u30af\u30e9\u30b9\uff08Option\u3001Some\u3001None\uff09\u306f\u3001scala.Option\u3068\u3044\u3046\u3088\u3046\u306b\u3001\u3059\u3079\u3066\u300cscala\u300d\u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002Option\u306f\u3001Scala\u306b\u304a\u3051\u308b\u5883\u754c\u4ed8\u304d\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3067\u3042\u308a\u3001\u8981\u7d20\u304c0\u500b\u307e\u305f\u306f1\u500b\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002Option\u304c0\u500b\u306e\u8981\u7d20\u3092\u542b\u3093\u3067\u3044\u308b\u5834\u5408\u3001\u305d\u308c\u306fNone\u3067\u3059\u3002Option\u304c1\u3064\u306e\u8981\u7d20\u3092\u542b\u3093\u3067\u3044\u308b\u5834\u5408\u3001\u305d\u308c\u306fSome\u3067\u3059\u3002Some\u306f\u5b58\u5728\u3059\u308b\u5024\u3092\u8868\u3059\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u3001None\u306f\u5b58\u5728\u3057\u306a\u3044\u5024\u3092\u8868\u3059\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u4f8b\uff1a<\/p>\n<pre class=\"post-pre\"><code>def get(val index: Int): Option[String]\r\n<\/code><\/pre>\n<p>\u3053\u306e\u30e1\u30bd\u30c3\u30c9\u306fList\u304b\u3089\u306e\u3082\u306e\u3068\u4eee\u5b9a\u3057\u307e\u3057\u3087\u3046\u3002\u3053\u306e\u30e1\u30bd\u30c3\u30c9\u306fOption[String]\u3068\u3044\u3046\u623b\u308a\u5024\u306e\u578b\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002List\u306b\u8981\u7d20\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u3053\u306eget\u30e1\u30bd\u30c3\u30c9\u306f\u305d\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u4f4d\u7f6e\u306b\u3042\u308b&#8221;Some[String]&#8221; \u3068\u3044\u3046\u8981\u7d20\u3092\u8fd4\u3057\u307e\u3059\u3002\u305d\u308c\u4ee5\u5916\u306e\u5834\u5408\u306f\u3001&#8221;None&#8221;\uff08\u3064\u307e\u308a\u8981\u7d20\u304c\u5b58\u5728\u3057\u306a\u3044\uff09\u3092\u8fd4\u3057\u307e\u3059\u3002Some\u306f\u30b1\u30fc\u30b9\u30af\u30e9\u30b9\u3067\u3042\u308a\u3001None\u306f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3067\u3059\u3002\u4e21\u8005\u3068\u3082\u30b1\u30fc\u30b9\u30af\u30e9\u30b9\/\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3067\u3042\u308b\u305f\u3081\u3001\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u3067\u975e\u5e38\u306b\u3046\u307e\u304f\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u30893\u3064\u306e\u5b9a\u7fa9\u306e\u7d44\u307f\u5408\u308f\u305b\u306f\u3001Scala\u306b\u304a\u3051\u308bOption\/Some\/None\u30c7\u30b6\u30a4\u30f3\u30d1\u30bf\u30fc\u30f3\u3068\u3057\u3066\u77e5\u3089\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<h3>Scala\u3067\u306eEither\u3068\u306f\u4f55\u3067\u3059\u304b\uff1fScala\u3067\u306eLeft\u3068Right\u306f\u4f55\u3067\u3059\u304b\uff1fScala\u3067\u306eEither\/Left\/Right\u30c7\u30b6\u30a4\u30f3\u30d1\u30bf\u30fc\u30f3\u3092\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/h3>\n<p>Scala\u3067\u306f\u3001Either\u306f\u62bd\u8c61\u30af\u30e9\u30b9\u3067\u3059\u3002\u3053\u308c\u306f2\u3064\u306e\u53ef\u80fd\u306a\u578b\u306e\u3046\u3061\u306e1\u3064\u306e\u5024\u3092\u8868\u3059\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002Either[A,B]\u3068\u3044\u30462\u3064\u306e\u578b\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u53d6\u308a\u307e\u3059\u3002\u305d\u3057\u3066\u3001\u6b63\u78ba\u306b2\u3064\u306e\u30b5\u30d6\u30bf\u30a4\u30d7\u3001Left\u3068Right\u304c\u3042\u308a\u307e\u3059\u3002\u3082\u3057Either[A,B]\u304cA\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u8868\u3059\u5834\u5408\u3001\u305d\u308c\u306fLeft\u3067\u3042\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u3082\u3057B\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u8868\u3059\u5834\u5408\u3001\u305d\u308c\u306fRight\u3067\u3042\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u3053\u308c\u306fScala\u306b\u304a\u3051\u308bEither\/Left\/Right\u30c7\u30b6\u30a4\u30f3\u30d1\u30bf\u30fc\u30f3\u3068\u3057\u3066\u77e5\u3089\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<h3>Java SE 8\u306b\u304a\u3051\u308bScala\u306eOption\u306b\u76f8\u5f53\u3059\u308b\u69cb\u9020\u7269\u306f\u4f55\u3067\u3059\u304b\uff1fScala\u306b\u304a\u3051\u308bOption\u306e\u5229\u7528\u76ee\u7684\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>Scala\u306eOption\u306f\u3001Java SE 8\u306eOptional\u3068\u4f3c\u3066\u3044\u307e\u3059\u3002Java SE 8\u306f\u3001\u65e2\u5b58\u306e\u5024\u306e\u5b58\u5728\u307e\u305f\u306f\u975e\u5b58\u5728\u3092\u8868\u3059\u305f\u3081\u306b\u65b0\u3057\u3044\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u30af\u30e9\u30b9Optional\u3092\u5c0e\u5165\u3057\u307e\u3057\u305f\u3002Optional\u306fjava.util\u30d1\u30c3\u30b1\u30fc\u30b8\u3067\u5229\u7528\u53ef\u80fd\u3067\u3059\u3002Scala\u306eOption\u3068Java SE 8\u306eOptional\u306e\u4e21\u65b9\u306f\u3001\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u5024\u3092\u8868\u3059\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u4e21\u65b9\u3068\u3082\u3001\u4e0d\u8981\u306anull\u30c1\u30a7\u30c3\u30af\u3084NullPointerException\u3092\u907f\u3051\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<\/p>\n<h3>\u95a2\u6570\u578b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\uff08FP\uff09\u306e\u5229\u70b9\u307e\u305f\u306f\u7d14\u7c8b\u95a2\u6570\u306e\u5229\u70b9\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>\u95a2\u6570\u578b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\uff08FP\uff09\u307e\u305f\u306f\u7d14\u7c8b\u306a\u95a2\u6570\u306e\u5229\u70b9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>More Modular<\/li>\n<li>Easier to understand Or Easier reason about<\/li>\n<li>Easier to test<\/li>\n<li>Less prone to bugs<\/li>\n<li>Easier to reuse<\/li>\n<li>Easier to Parallelism and generalize<\/li>\n<\/ul>\n<h3>RESTful Web\u30b5\u30fc\u30d3\u30b9\u307e\u305f\u306fREST API\u3092\u958b\u767a\u3059\u308b\u305f\u3081\u306e\u4eba\u6c17\u306e\u3042\u308bScala\u30d9\u30fc\u30b9\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>RESTful Web\u30b5\u30fc\u30d3\u30b9\u3092\u958b\u767a\u3059\u308b\u305f\u3081\u306eScala\u30d9\u30fc\u30b9\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u305f\u304f\u3055\u3093\u3042\u308a\u307e\u3059\u3002\u6700\u3082\u4eba\u6c17\u306e\u3042\u308b\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u6b21\u306e\u901a\u308a\u3067\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>Play Framework<br \/>\nIn Play, we call REST API URLs as routes. We place all routes at once place in Play framework. It is a stateless web framework to develop REST API easily.- Scalatra Framework<br \/>\nIt is very simple and easy Scala-based web framework to develop REST API- Spray Framework<br \/>\nIt is very concise and built on top of Akka framework so it\u2019s better to develop REST API using Actor Model.- Lift Framework<br \/>\nIt allows routing using Pattern Matching concept.<\/li>\n<\/ul>\n<h3>\u30b9\u30ab\u30e9\u30d9\u30fc\u30b9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306eREST API\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u751f\u6210\u3059\u308b\u305f\u3081\u306e\u6700\u9069\u306a\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u4f55\u3067\u3059\u304b\uff1f (Sukara b\u0113su no apurik\u0113shon no REST API dokyument\u0113shon o seisei suru tame no saiteki na fur\u0113m\u0101ku wa nanidesu ka?)<\/h3>\n<p>Swaggger\u306f\u3001\u3053\u306e\u76ee\u7684\u306b\u304a\u3044\u3066\u6700\u3082\u512a\u308c\u305f\u30c4\u30fc\u30eb\u3067\u3059\u3002Scala\u30d9\u30fc\u30b9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306eREST API\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u751f\u6210\u3059\u308b\u305f\u3081\u306e\u975e\u5e38\u306b\u30b7\u30f3\u30d7\u30eb\u3067\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30c4\u30fc\u30eb\u3067\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>If we use Play with Scala to develop your REST API, then use play-swagger module for REST API documentation.<\/li>\n<li>If we use Spray with Scala to develop your REST API, then use spray-swagger module for REST API documentation.<\/li>\n<\/ul>\n<h3>Play\/Scala\u30d9\u30fc\u30b9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u4f7f\u7528\u3067\u304d\u308b\u4eba\u6c17\u306e\u3042\u308bORM\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u3001Java\u30d9\u30fc\u30b9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5411\u3051\u306b\u63d0\u4f9b\u3055\u308c\u3066\u3044\u308bHibernate\u306e\u3088\u3046\u306a\u3082\u306e\u306f\u3042\u308a\u307e\u3059\u304b\uff1f<\/h3>\n<p>Play\/Scala\u30d9\u30fc\u30b9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u306f\u3001JPA\u3084Hibernate\u3001Toplink\u306a\u3069\u306eJava\u30d9\u30fc\u30b9\u306eORM\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3068\u540c\u69d8\u306b\u3001\u591a\u304f\u306eORM\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u304c\u5229\u7528\u3067\u304d\u307e\u3059\u3002Play\/Scala\u30d9\u30fc\u30b9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u4eba\u6c17\u306e\u3042\u308bORM\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>Slick<\/li>\n<li>Anorm<\/li>\n<li>SORM(Scala ORM)<\/li>\n<li>Squeryl<\/li>\n<\/ul>\n<h3>MongoDB NoSQL \u30c7\u30fc\u30bf\u30b9\u30c8\u30a2\u306b\u30c7\u30fc\u30bf\u3092\u6c38\u7d9a\u5316\u3059\u308b\u305f\u3081\u306e\u6700\u9069\u306aPlay\/Scala\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u30c4\u30fc\u30eb\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>ReactiveMongo\u306f\u3001MongoDB\u306eNoSQL\u30c7\u30fc\u30bf\u30b9\u30c8\u30a2\u306b\u30c7\u30fc\u30bf\u3092\u6c38\u7d9a\u5316\u3059\u308b\u305f\u3081\u306ePlay\/Scala\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u767a\u3059\u308b\u969b\u306b\u6700\u9069\u306aScala\u30c9\u30e9\u30a4\u30d0\u3067\u3059\u3002\u5b8c\u5168\u306a\u975e\u540c\u671f\u304a\u3088\u3073\u975e\u30d6\u30ed\u30c3\u30ad\u30f3\u30b0\u306aI\/O\u64cd\u4f5c\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<h3>Play\u3068Scala\u3092\u4f7f\u7528\u3057\u3066\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u767a\u3057\u3066\u3044\u308b\u4eba\u6c17\u306e\u3042\u308b\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306f\u3044\u307e\u3059\u304b\uff1f<\/h3>\n<p>\u6570\u5343\u306e\u304a\u5ba2\u69d8\u304c\u672c\u756a\u74b0\u5883\u3067Play\u3068Scala\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002\u4ee5\u4e0b\u306b\u306f\u3001\u7a4d\u6975\u7684\u306bPlay\u3068Scala\u3092\u5229\u7528\u3057\u3066\u3044\u308b\u3088\u308a\u4eba\u6c17\u306e\u3042\u308b\u304a\u5ba2\u69d8\u306e\u30ea\u30b9\u30c8\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>LinkedIn<\/li>\n<li>The Guardian<\/li>\n<li>Ocado<\/li>\n<li>LuchidChart<\/li>\n<li>GOV.UK<\/li>\n<\/ul>\n<h3>Play\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u4f7f\u7528\u3059\u308b\u306e\u306b\u6700\u9069\u306a\u8a00\u8a9e\u306f\u3001Scala\u3068Java\u306e\u3069\u3061\u3089\u3067\u3059\u304b\uff1f<\/h3>\n<p>Play 2\u306f\u5b8c\u5168\u306bScala\u3067\u66f8\u304b\u308c\u3066\u3044\u307e\u3059\u3002Java\u3092Play\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3068\u4e00\u7dd2\u306b\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001Java\u306f\u5b8c\u5168\u306aFP\u6a5f\u80fd\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u306a\u3044\u305f\u3081\u3001\u591a\u304f\u306e\u554f\u984c\u306b\u76f4\u9762\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002Scala\u306f\u3001\u9ad8\u3044\u30b9\u30b1\u30fc\u30e9\u30d3\u30ea\u30c6\u30a3\u3001\u512a\u308c\u305f\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u4e26\u884c\u6027\/\u4e26\u5217\u6027\u3001\u4f4e\u30ec\u30a4\u30c6\u30f3\u30b7\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u767a\u3059\u308b\u305f\u3081\u306bPlay\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3068\u7d44\u307f\u5408\u308f\u305b\u308b\u6700\u826f\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>Play 2 is completely written in Scala.<\/li>\n<li>It supports full FP features.<\/li>\n<li>It is more expression language than Java.<\/li>\n<li>It supports Akka Actor model very easily<\/li>\n<li>It supports some new OOP feature like Traits.<\/li>\n<li>Play\u2019s built-in templates are developed in Scala<\/li>\n<\/ul>\n<h3>Scala\u306f\u3069\u306e\u3088\u3046\u306b\u3057\u3066\u3001\u9ad8\u3044\u30b9\u30b1\u30fc\u30e9\u30d3\u30ea\u30c6\u30a3\u3068\u9ad8\u3044\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u4e21\u65b9\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u304b\uff1f<\/h3>\n<p>Scala\u306f\u30de\u30eb\u30c1\u30d1\u30e9\u30c0\u30a4\u30e0\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\uff08OOP\u3068FP\u306e\u4e21\u65b9\uff09\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u304a\u308a\u3001Actor Concurrency Model\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u975e\u5e38\u306b\u30b9\u30b1\u30fc\u30e9\u30d6\u30eb\u3067\u30cf\u30a4\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u975e\u5e38\u306b\u7c21\u5358\u306b\u958b\u767a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<h3>Play\u3068Scala\u30d9\u30fc\u30b9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u767a\u3059\u308b\u305f\u3081\u306e\u5229\u7528\u53ef\u80fd\u306a\u30d3\u30eb\u30c9\u30c4\u30fc\u30eb\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>\u4ee5\u4e0b\u306e3\u3064\u306f\u3001Play\u3068Scala\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u767a\u3059\u308b\u305f\u3081\u306b\u6700\u3082\u4eba\u6c17\u306e\u3042\u308b\u30d3\u30eb\u30c9\u30c4\u30fc\u30eb\u3067\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>SBT<\/li>\n<li>Maven<\/li>\n<li>Gradle<\/li>\n<\/ul>\n<h3>SBT\u3068\u306f\u4f55\u3067\u3059\u304b\uff1fPlay\u3084Scala\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u767a\u3059\u308b\u305f\u3081\u306e\u6700\u9069\u306a\u30d3\u30eb\u30c9\u30c4\u30fc\u30eb\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>SBT\u306fScala Build Tool\u306e\u7565\u3067\u3059\u3002\u3053\u308c\u306fScala\u30d9\u30fc\u30b9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u767a\u3059\u308b\u305f\u3081\u306e\u30b7\u30f3\u30d7\u30eb\u306a\u30d3\u30eb\u30c9\u30c4\u30fc\u30eb\u3067\u3059\u3002\u591a\u304f\u306e\u4eba\u3005\u304cPlay\u3084Scala\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u305f\u3081\u306bSBT\u30d3\u30eb\u30c9\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001IntelliJ IDEA Scala\u30d7\u30e9\u30b0\u30a4\u30f3\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u3053\u306e\u76ee\u7684\u306e\u305f\u3081\u306bSBT\u3092\u30d3\u30eb\u30c9\u30c4\u30fc\u30eb\u3068\u3057\u3066\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<h3>Play\u3068Scala\u30d9\u30fc\u30b9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u306f\u3001\u5229\u7528\u53ef\u80fd\u306a\u30e6\u30cb\u30c3\u30c8\u30c6\u30b9\u30c8\u3001\u6a5f\u80fd\u30c6\u30b9\u30c8\u3001\u304a\u3088\u3073BDD\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u3042\u308a\u307e\u3059\u304b\uff1f<\/h3>\n<p>\u4ee5\u4e0b\u306f\u3001Play\/Scala\u30d9\u30fc\u30b9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u6700\u3082\u4eba\u6c17\u306e\u3042\u308b\u30e6\u30cb\u30c3\u30c8\u30c6\u30b9\u30c8\u3001\u6a5f\u80fd\u30c6\u30b9\u30c8\u3001\u304a\u3088\u3073BDD\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>Spec2<\/li>\n<li>ScalaTest<\/li>\n<li>ScalaCheck<\/li>\n<li>Mokito<\/li>\n<\/ul>\n<h3>Play\u3068Scala\u30d9\u30fc\u30b9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u306f\u3001\u6700\u3082\u512a\u308c\u305f\u30b3\u30fc\u30c9\u30ab\u30d0\u30ec\u30c3\u30b8\u30c4\u30fc\u30eb\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>SCoverage\u306f\u3001Play\u3068Scala\u30d9\u30fc\u30b9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u7528\u306e\u30b3\u30fc\u30c9\u30ab\u30d0\u30ec\u30c3\u30b8\u30c4\u30fc\u30eb\u3067\u3059\u3002SCoverage\u306fScala\u30b3\u30fc\u30c9\u30ab\u30d0\u30ec\u30c3\u30b8\u30c4\u30fc\u30eb\u306e\u7565\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u30d3\u30eb\u30c9\u30c4\u30fc\u30eb\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u305f\u3081\u306b\u30013\u3064\u306e\u72ec\u7acb\u3057\u305f\u30d7\u30e9\u30b0\u30a4\u30f3\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>SBT<\/li>\n<li>Maven<\/li>\n<li>Gradle<\/li>\n<\/ul>\n<h3>Play\u3084Scala\u30d9\u30fc\u30b9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u304a\u3044\u3066\u3001\u6700\u9069\u306aScala\u30b9\u30bf\u30a4\u30eb\u30c1\u30a7\u30c3\u30ab\u30fc\u30c4\u30fc\u30eb\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>Java\u30d9\u30fc\u30b9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u5bfe\u3059\u308bCheckstyle\u306e\u3088\u3046\u306b\u3001Scalastyle\u306fPlay\u3068Scala\u30d9\u30fc\u30b9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u5bfe\u3057\u3066\u6700\u3082\u512a\u308c\u305fScala\u30b9\u30bf\u30a4\u30eb\u30c1\u30a7\u30c3\u30ab\u30fc\u30c4\u30fc\u30eb\u3067\u3059\u3002Scalastyle\u306fScala\u306e\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092\u89b3\u5bdf\u3057\u3001\u6f5c\u5728\u7684\u306a\u554f\u984c\u3092\u793a\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u30d3\u30eb\u30c9\u30c4\u30fc\u30eb\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u305f\u3081\u306b\u30013\u3064\u306e\u72ec\u7acb\u3057\u305f\u30d7\u30e9\u30b0\u30a4\u30f3\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>SBT<\/li>\n<li>Maven<\/li>\n<li>Gradle<\/li>\n<\/ul>\n<p>\u4ee5\u4e0b\u306e2\u3064\u306eIDE\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u305f\u3081\u306e2\u3064\u306e\u5225\u3005\u306e\u30d7\u30e9\u30b0\u30a4\u30f3\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>IntelliJ IDEA<\/li>\n<li>Eclipse IDE<\/li>\n<\/ul>\n<h3>Play\u3068Scala\u30d9\u30fc\u30b9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308bIDE\u306f\u3069\u308c\u3067\u3042\u308a\u3001\u305d\u306e\u65b9\u6cd5\u306f\u3069\u306e\u3088\u3046\u306a\u3082\u306e\u3067\u3059\u304b\uff1f<\/h3>\n<p>\u4ee5\u4e0b\u306e2\u3064\u306e\u4eba\u6c17\u306e\u3042\u308bIDE\u306f\u3001Play\u3068Scala\u30d9\u30fc\u30b9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>IntelliJ IDEA<\/li>\n<li>Eclipse IDE<\/li>\n<\/ul>\n<p>Scala\u30d7\u30e9\u30b0\u30a4\u30f3\u3092\u4f7f\u7528\u3057\u3066\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002Eclipse IDE\u306b\u306f\u3001Play\u3068Scala\u30d9\u30fc\u30b9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308bScala IDE for Eclipse\u304c\u3042\u308a\u307e\u3059\u3002IntelliJ IDEA\u306b\u306f\u3001\u300cScala Plugin for IntelliJ IDEA\u300d\u3068\u3044\u3046\u30d7\u30e9\u30b0\u30a4\u30f3\u304c\u3042\u308a\u3001\u300cScala\u3001SBT\u3001Play 2 Framework\u300d\u30d9\u30fc\u30b9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002Play\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30e6\u30cb\u30c3\u30c8\u30c6\u30b9\u30c8\u304a\u3088\u3073\u6a5f\u80fd\u30c6\u30b9\u30c8\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306fSpec2\u3067\u3059\u3002Spec2\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001Play\/Scala\u30d9\u30fc\u30b9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30c6\u30b9\u30c8\u304c\u975e\u5e38\u306b\u7c21\u5358\u306b\u306a\u308a\u307e\u3059\u3002Play\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30d3\u30eb\u30c9\u30c4\u30fc\u30eb\u306f\u4f55\u3067\u3059\u304b\uff1fPlay\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u306f\u4f55\u3067\u3059\u304b\uff1fPlay Framework\u3067\u4f7f\u7528\u3067\u304d\u308b\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30fc\u306f\u4f55\u3067\u3059\u304b\uff1fPlay\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u7d44\u307f\u8fbc\u307f\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306f\u300cTwirl\u300d\u3067\u3059\u3002\u3053\u308c\u306fScala\u3067\u958b\u767a\u3055\u308c\u307e\u3057\u305f\u3002\u3053\u308c\u3089\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001Play\/Scala\u30d9\u30fc\u30b9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u975e\u5e38\u306b\u7c21\u5358\u306b\u958b\u767a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002Play Framework\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u7d44\u307f\u8fbc\u307f\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30fc\u306fNetty Server\u3067\u3059\u3002<\/p>\n<h3>\u306a\u305cScala\u306fJava\u3088\u308a\u3082\u512a\u308c\u3066\u3044\u308b\u306e\u3067\u3059\u304b\uff1fScala\u306eJava\uff08Java 8\uff09\u306b\u5bfe\u3059\u308b\u5229\u70b9\u306f\u4f55\u3067\u3059\u304b\uff1fJava\u3068\u6bd4\u8f03\u3057\u3066\u3001Scala\u306e\u4e3b\u306a\u5229\u70b9\u3084\u30e1\u30ea\u30c3\u30c8\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>Scala\u306f\u4ee5\u4e0b\u306e\u8ffd\u52a0\u6a5f\u80fd\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u308b\u305f\u3081\u3001Java 8\u3088\u308a\u3082\u512a\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>Full FP Features<\/li>\n<li>More Expression Language<\/li>\n<li>Pattern Matching<\/li>\n<li>Better support for Akka Actor Model<\/li>\n<li>Automatic resolution for Inheritance Diamond Problem with Traits<\/li>\n<li>Asynchronous and Non-blocking IO programming using Akka Framework<\/li>\n<li>Fully Reactive Streaming API<\/li>\n<\/ul>\n<h3>Scala\u306b\u304a\u3051\u308b\u533f\u540d\u95a2\u6570\u3068\u306f\u4f55\u3067\u3059\u304b\uff1fScala\u306b\u304a\u3051\u308b\u95a2\u6570\u30ea\u30c6\u30e9\u30eb\u3068\u306f\u4f55\u3067\u3059\u304b\uff1f\u533f\u540d\u95a2\u6570\/\u95a2\u6570\u30ea\u30c6\u30e9\u30eb\u306e\u30e1\u30ea\u30c3\u30c8\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>\u7121\u540d\u95a2\u6570\u306f\u95a2\u6570\u3067\u3082\u3042\u308a\u307e\u3059\u304c\u3001\u95a2\u6570\u540d\u3092\u6301\u3063\u3066\u3044\u307e\u305b\u3093\u3002\u3053\u308c\u306f\u95a2\u6570\u30ea\u30c6\u30e9\u30eb\u3068\u3057\u3066\u3082\u77e5\u3089\u308c\u3066\u3044\u307e\u3059\u3002Scala\u306b\u304a\u3051\u308b\u7121\u540d\u95a2\u6570\/\u95a2\u6570\u30ea\u30c6\u30e9\u30eb\u306e\u5229\u70b9\u306f\u4ee5\u4e0b\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>We can assign a Function Literal to variable<\/li>\n<li>We can pass a Function Literal to another function\/method<\/li>\n<li>We can return a Function Literal as another function\/method result\/return value.<\/li>\n<\/ul>\n<h3>\u9ad8\u968e\u95a2\u6570\uff08HOF\uff09\u3068\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>\u9ad8\u968e\u95a2\u6570\uff08HOF\uff09\u3082\u95a2\u6570\u3067\u3059\u304c\u3001\u6b21\u306e\u3044\u305a\u308c\u304b\u307e\u305f\u306f\u4e21\u65b9\u3092\u5b9f\u884c\u3059\u308b\u95a2\u6570\u3067\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>Take other functions as arguments<\/li>\n<li>Return functions as their results<\/li>\n<\/ul>\n<h3>\u30b1\u30fc\u30b9\u30af\u30e9\u30b9\u3068\u901a\u5e38\u30af\u30e9\u30b9\u306e\u9055\u3044\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>\u30b1\u30fc\u30b9\u30af\u30e9\u30b9\u3082\u30af\u30e9\u30b9\u306e\u4e00\u7a2e\u3067\u3059\u304c\u3001\u901a\u5e38\u306e\u30af\u30e9\u30b9\u3068\u6bd4\u8f03\u3059\u308b\u3068\u3001\u4ee5\u4e0b\u306e\u8ffd\u52a0\u6a5f\u80fd\u3084\u5229\u70b9\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>By default, Case-class constructor parameters are \u2018val\u2019. We don\u2019t need to declare parameters with \u2018val\u2019.<\/li>\n<li>By default, Case-class constructor parameters become class fields.<\/li>\n<li>These methods are added automatically: toString, equals, hashCode, copy. apply and unapply.<\/li>\n<li>It automatically gets Companion object.<\/li>\n<li>No need to use \u2018new\u2019 keyword to create instance of Case Class.<\/li>\n<li>Easy to use in Pattern Matching.<\/li>\n<\/ul>\n<p>\u3053\u308c\u3089\u306e\u6a5f\u80fd\u306f\u3001\u901a\u5e38\u306e\u30af\u30e9\u30b9\u3067\u306f\u4e0d\u53ef\u80fd\u3067\u3059\u304c\u3001\u30b3\u30f3\u30d1\u30a4\u30eb\u6642\u306bScala\u30b3\u30f3\u30d1\u30a4\u30e9\u306b\u3088\u3063\u3066\u8ffd\u52a0\u3055\u308c\u307e\u3059\u3002<\/p>\n<h3>Play\/Scala\u30b9\u30bf\u30c3\u30af\u3092\u4f7f\u7528\u3057\u3066\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u767a\u3059\u308b\u5229\u70b9\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>\u4ee5\u4e0b\u306f\u3001Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u767a\u3059\u308b\u305f\u3081\u306ePlay\/Scala\u30b9\u30bf\u30c3\u30af\u306e\u4e3b\u306a\u5229\u70b9\u3067\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>Open Source<br \/>\nPlay is an Open-source free-software framework to develop web applications.- Better Productivity<br \/>\nPlay framework\u2019s Auto-reload feature improves Developer Productivity. No need to build, deploy and test our changes. Just do our changes and refresh the page to see our changes.- Stateless and Easy to Develop REST API<br \/>\nPlay is HTTP based stateless model to serve web requests so it is very easy to develop REST API or RESTful Web Services.- Better Error-Handling<br \/>\nIf we develop our web application using Play framework,it informs all errors in the browser in very useful format. It shows error message, the file location, line number where error occurred, highlighting the code-snippet to understand the error very easily.- High Performance and Better Scalability With Reactive<br \/>\nPlay framework is developed by following Reactive design patterns and it is built on top of Netty sever to utilize Non-blocking IO Feature. Because of this feature, we can develop very highly Scalable and performance applications very easily.- Easy to Extend<br \/>\nPlay is very flexible framework and supports developing plug-ins very easy to extend it\u2019s features and functionality.- Highly Concurrency and Better Parallelism<br \/>\nAs both Scala and Play supports Functional Programming, it is very easy to develop Highly Concurrency and Better Parallelism applications very easily because FP supports Immutability, Pure Functions (Functions without side-effects), Pattern Matching, Actor Model etc.- Better Reusability, Easy to Test and More Modular<br \/>\nAs both Scala and Play supports Functional Programming, we can develop more modular and reusable applications. It is also very easy to test more modular applications.<\/li>\n<\/ul>\n<h3>Java\u3067\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u306a\u3044Scala\u306eOOP\u69cb\u9020\u306f\u4f55\u3067\u3059\u304b\uff1fJava\u3067\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u306a\u3044Scala\u306eOOP\u69cb\u9020\u306f\u4f55\u3067\u3059\u304b\uff1fScala\u3067\u5c0e\u5165\u3055\u308c\u305f\u65b0\u3057\u3044OOP\u69cb\u9020\u3067\u3001Java\u3067\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u3082\u306e\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>Scala\u3067\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044Java\u306eOOP\u69cb\u9020<\/p>\n<ul class=\"post-ul\">\n<li>There is no interface concept in Scala<\/li>\n<li>There is no Enum concept in Scala<\/li>\n<\/ul>\n<p>Java\u3067\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044Scala\u306eOOP\u306e\u69cb\u9020:<\/p>\n<ul class=\"post-ul\">\n<li>Scala Traits<\/li>\n<li>Solving Inheritance Diamond Problem automatically.<\/li>\n<\/ul>\n<h3>\u30b3\u30fc\u30eb\u30fb\u30d0\u30a4\u30fb\u30cd\u30fc\u30e0\u3068\u306f\u4f55\u3067\u3059\u304b\uff1fScala\u3068Java\u306f\u30b3\u30fc\u30eb\u30fb\u30d0\u30a4\u30fb\u30cd\u30fc\u30e0\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u304b\uff1f\u30b3\u30fc\u30eb\u30fb\u30d0\u30a4\u30fb\u30d0\u30ea\u30e5\u30fc\u3068\u30b3\u30fc\u30eb\u30fb\u30d0\u30a4\u30fb\u30cd\u30fc\u30e0\u306e\u95a2\u6570\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u9055\u3044\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>\u30b3\u30fc\u30eb\u30d0\u30a4\u30cd\u30fc\u30e0\u306f\u3001\u30e1\u30bd\u30c3\u30c9\/\u95a2\u6570\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u5fc5\u8981\u306a\u6642\u307e\u305f\u306f\u30a2\u30af\u30bb\u30b9\u3059\u308b\u6642\u306b\u306e\u307f\u8a55\u4fa1\u3057\u307e\u3059\u3002\u4f7f\u7528\u3057\u306a\u3044\u5834\u5408\u306f\u8a55\u4fa1\u3057\u307e\u305b\u3093\u3002Scala\u306f\u30b3\u30fc\u30eb\u30d0\u30a4\u30d0\u30ea\u30e5\u30fc\u3068\u30b3\u30fc\u30eb\u30d0\u30a4\u30cd\u30fc\u30e0\u306e\u4e21\u65b9\u306e\u95a2\u6570\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002\u3057\u304b\u3057\u3001Java\u306f\u30b3\u30fc\u30eb\u30d0\u30a4\u30d0\u30ea\u30e5\u30fc\u306e\u307f\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u304a\u308a\u3001\u30b3\u30fc\u30eb\u30d0\u30a4\u30cd\u30fc\u30e0\u306b\u306f\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u305b\u3093\u3002\u30b3\u30fc\u30eb\u30d0\u30a4\u30d0\u30ea\u30e5\u30fc\u3068\u30b3\u30fc\u30eb\u30d0\u30a4\u30cd\u30fc\u30e0\u306e\u9055\u3044\uff1a\u3053\u308c\u30892\u3064\u306e\u4e3b\u306a\u9055\u3044\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u8aac\u660e\u3055\u308c\u307e\u3059\uff1a<\/p>\n<ul class=\"post-ul\">\n<li>In Call-by-name, the function parameters are evaluated only whenever they are needed but not when the function is called.<\/li>\n<li>In Call-by-value, the function parameters are evaluated when the function is called.<\/li>\n<li>In Call-by-value, the parameters are evaluated before executing function and they are evaluated only once irrespective of how many times we used them in that function.<\/li>\n<li>In Call-by-name, the parameters are evaluated whenever we access them and they are evaluated each time we use them in that function.<\/li>\n<li>Scala Syntax Differences<br \/>\nCall-by-value:<\/li>\n<\/ul>\n<pre class=\"post-pre\"><code>def myFunction(a: Int, b: Int) { }\r\n<\/code><\/pre>\n<p>\u3053\u3053\u3067\u306fa\u3068b\u306fmyFunction\u3078\u306ecall-by-value\u30d1\u30e9\u30e1\u30fc\u30bf\u3067\u3059\u3002call-by-name\uff1a<\/p>\n<pre class=\"post-pre\"><code>def myFunction(a: Int, b: =&gt; Int) { }\r\n<\/code><\/pre>\n<p>\u3053\u3053\u3067\u306f\u3001a \u306f\u5024\u6e21\u3057\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u3067\u3042\u308a\u3001b \u306f\u540d\u524d\u6e21\u3057\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u3068\u3057\u3066 myFunction \u306b\u6e21\u3055\u308c\u307e\u3059\u3002<\/p>\n<h3>Scala\u8a00\u8a9e\u3067Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u767a\u3059\u308b\u305f\u3081\u306e\u4eba\u6c17\u306e\u3042\u308bMVC\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>Scala\u8a00\u8a9e\u3067\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u767a\u3059\u308b\u305f\u3081\u306b\u5229\u7528\u53ef\u80fd\u306a\u6700\u3082\u4eba\u6c17\u306e\u3042\u308bMVC\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>Play Framework<\/li>\n<li>Scalatra Framework<\/li>\n<li>Spray Framework<\/li>\n<li>Lift Framework<\/li>\n<\/ul>\n<h3>Java\u30d9\u30fc\u30b9\u3068Scala\u30d9\u30fc\u30b9\u306eMaven\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u69cb\u9020\u306e\u4e3b\u306a\u9055\u3044\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/65648781daa94e2bdf7baa90\/92-1.png\" alt=\"scala advanced interview questions, scala maven project structure\" \/><\/div>\n<h3>Scala\u306b\u304a\u3051\u308b\u300cExtractor\u300d\u3068\u306f\u4f55\u3067\u3059\u304b\uff1f \u300cConstructor\u300d\u3068\u300cExtractor\u300d\u306e\u9055\u3044\u306f\u4f55\u3067\u3059\u304b\uff1f Scala\u306b\u304a\u3051\u308b\u300cExtractor\u300d\u306e\u4f7f\u7528\u76ee\u7684\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>Java\u3084Scala\u3060\u3051\u3067\u306a\u304f\u3001\u307b\u307c\u3059\u3079\u3066\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306b\u304a\u3044\u3066\u3001\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u307e\u305f\u306f\u30af\u30e9\u30b9\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u4f5c\u6210\uff08\u307e\u305f\u306f\u7d44\u307f\u7acb\u3066\u308b\uff09\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306f\u3001\u30d1\u30e9\u30e1\u30fc\u30bf\uff08\u307e\u305f\u306f\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\uff09\u3092\u4f7f\u7528\u3057\u3066\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u4e00\u65b9\u3001\u30a8\u30af\u30b9\u30c8\u30e9\u30af\u30bf\u306f\u3053\u308c\u3068\u306f\u771f\u9006\u306e\u52d5\u4f5c\u3092\u3057\u307e\u3059\u3002Scala\u3067\u306f\u3001\u30a8\u30af\u30b9\u30c8\u30e9\u30af\u30bf\u3092\u7528\u3044\u3066\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u305d\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\uff08\u307e\u305f\u306f\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\uff09\u306b\u5206\u89e3\uff08\u307e\u305f\u306f\u5206\u89e3\uff09\u3057\u307e\u3059\u3002Scala\u3067\u306f\u3001apply\u30e1\u30bd\u30c3\u30c9\u304c\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3068\u3057\u3066\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u5185\u90e8\u7684\u306b\u306f\u3001\u30a8\u30af\u30b9\u30c8\u30e9\u30af\u30bf\u306f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u305d\u306e\u90e8\u5206\uff08\u307e\u305f\u306f\u30d1\u30e9\u30e1\u30fc\u30bf\uff09\u306b\u5206\u89e3\u3059\u308b\u305f\u3081\u306bunapply\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002Scala\u3067\u306f\u3001\u30a8\u30af\u30b9\u30c8\u30e9\u30af\u30bf\u306f\u4e3b\u306b\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u306e\u6982\u5ff5\u3067\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u306e\u6982\u5ff5\u306b\u3064\u3044\u3066\u306f\u3001\u5f8c\u3067\u8b70\u8ad6\u3057\u307e\u3059\u3002<\/p>\n<h3>Scala\u30d9\u30fc\u30b9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u304a\u3051\u308b\u300c???\u300d\u306e\u7528\u9014\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>\u3053\u306e\u300c???\u300d\u306f\u3001Scala\u306e\u6f14\u7b97\u5b50\u3084\u30e1\u30bd\u30c3\u30c9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u3053\u308c\u306f\u300c\u9032\u884c\u4e2d\u300d\u3067\u3042\u308b\u3053\u3068\u3092\u793a\u3059\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u30de\u30fc\u30af\u3067\u3042\u308a\u3001\u958b\u767a\u8005\u304c\u305d\u306e\u30e1\u30bd\u30c3\u30c9\u306e\u5b9f\u88c5\u3092\u63d0\u4f9b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u30e1\u30bd\u30c3\u30c9\u306fscala.PreDef\u30af\u30e9\u30b9\u3067\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>def ??? : Nothing = throw new NotImplementedError\r\n<\/code><\/pre>\n<p>\u305d\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u5b9f\u88c5\u305b\u305a\u306b\u5b9f\u884c\u3059\u308b\u3068\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u300cNotImplementedError\u300d\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>scala&gt; def add(a:Int, b:Int) : Int = ???\r\nadd: (a: Int, b: Int)Int\r\n\r\nscala&gt; add(10,20)\r\nscala.NotImplementedError: an implementation is missing\r\n<\/code><\/pre>\n<h3>Scala\u30b3\u30ec\u30af\u30b7\u30e7\u30f3API\u306eList\u3068Stream\u306e\u4e3b\u306a\u9055\u3044\u3092\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u305d\u306e\u9055\u3044\u3092\u3069\u306e\u3088\u3046\u306b\u8a3c\u660e\u3057\u307e\u3059\u304b\uff1f\u3044\u3064Stream\u3092\u9078\u629e\u3059\u308b\u306e\u3067\u3057\u3087\u3046\u304b\uff1f<\/h3>\n<p>Scala\u306eCollection API\u3067\u306f\u3001List\u3068Stream\u306e\u4e21\u65b9\u304c\u3042\u308a\u3001\u307b\u307c\u540c\u69d8\u306b\u6a5f\u80fd\u3057\u307e\u3059\u3002\u4e21\u65b9\u3068\u3082\u4e0d\u5909\u306e\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3067\u3059\u3002\u305f\u3060\u3057\u3001Scala\u306eCollection API\u306b\u304a\u3044\u3066\u3001List\u3068Stream\u306e\u9593\u306b\u306f1\u3064\u306e\u4e3b\u306a\u9055\u3044\u304c\u3042\u308a\u307e\u3059\uff1a\u305d\u308c\u306fList\u306e\u8981\u7d20\u304c\u71b1\u5fc3\u306b\u8a55\u4fa1\u3055\u308c\u3001Stream\u306e\u8981\u7d20\u304c\u9045\u5ef6\u3057\u3066\u8a55\u4fa1\u3055\u308c\u308b\u3068\u3044\u3046\u3053\u3068\u3067\u3059\u3002\u3064\u307e\u308a\u3001\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3068\u304d\u306b\u8a55\u4fa1\u3055\u308c\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>scala&gt; var list1 = List(1,2,3,4)\r\nlist1: List[Int] = List(1, 2, 3, 4)\r\n<\/code><\/pre>\n<p>\u3053\u3053\u3067\u306f\u3001List\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u4f5c\u6210\u6642\u306b\u5168\u3066\u306e\u8981\u7d20\u304c\u8a55\u4fa1\u3055\u308c\u308b\u3053\u3068\u304c\u89b3\u5bdf\u3055\u308c\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u540c\u3058\u64cd\u4f5c\u3092Stream\u306b\u5bfe\u3057\u3066\u884c\u3046\u3068\u3001\u5168\u3066\u306e\u8981\u7d20\u3092\u898b\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u6700\u521d\u306b\u8a55\u4fa1\u3055\u308c\u305f\u8981\u7d20\u306e\u307f\u304c\u898b\u3048\u3001\u6b8b\u308a\u306e\u8981\u7d20\u306f\u4ee5\u4e0b\u306b\u793a\u3059\u3088\u3046\u306b\u9045\u5ef6\u8a55\u4fa1\u3055\u308c\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>scala&gt; var s1 = Stream(1,2,3,4)\r\ns1: scala.collection.immutable.Stream[Int] = Stream(1, ?)\r\n<\/code><\/pre>\n<p>\u8981\u7d20\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3068\u304d\u306b\u306e\u307fLazy collection\u3092\u8a55\u4fa1\u3057\u305f\u3044\u5834\u5408\u3001Stream\u3092\u4f7f\u7528\u3059\u308b\u65b9\u304c\u9069\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<h3>Scala\u306b\u304a\u3044\u3066\u3001::\u3068#::\u306e\u9055\u3044\u306f\u4f55\u3067\u3059\u304b\uff1f\u307e\u305f\u3001Scala\u306b\u304a\u3044\u3066\u3001:::\u3068#:::\u306e\u9055\u3044\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>Scala Collection API\u306b\u304a\u3044\u3066\u306f\u3001<\/p>\n<ul class=\"post-ul\">\n<li>:: and ::: are methods available in List class.<\/li>\n<li>#:: and #::: are methods available in Stream class<\/li>\n<li>In List class, :: method is used to append an element to the beginning of the list.<\/li>\n<\/ul>\n<pre class=\"post-pre\"><code>scala&gt; var list1 = List(1,2,3,4)\r\nlist1: List[Int] = List(1, 2, 3, 4)\r\n\r\nscala&gt; list1 = 0 :: list1\r\nlist1: List[Int] = List(0, 1, 2, 3, 4)\r\n<\/code><\/pre>\n<ul class=\"post-ul\">\n<li>In List class, ::: method is used to concatenate the elements of a given list in front of this list.<\/li>\n<\/ul>\n<pre class=\"post-pre\"><code>scala&gt; var list1 = List(3,4,5)\r\nlist1: List[Int] = List(3, 4, 5)\r\n\r\nscala&gt; val list2 = List(1,2) ::: list1\r\nlist2: List[Int] = List(1, 2, 0, 1, 2, 3, 4)\r\n<\/code><\/pre>\n<ul class=\"post-ul\">\n<li>In Stream class, #:: method is used to append a given element at beginning of the stream. Only this newly added element is evaluated and followed by lazily evaluated stream elements.<\/li>\n<\/ul>\n<pre class=\"post-pre\"><code>scala&gt; var s1 = Stream(1,2,3,4)\r\ns1: scala.collection.immutable.Stream[Int] = Stream(1, ?)\r\n\r\nscala&gt; s1 = 0 #:: s1\r\ns1: scala.collection.immutable.Stream[Int] = Stream(0, ?)\r\n<\/code><\/pre>\n<ul class=\"post-ul\">\n<li>In Stream class, #::: method is used to concatenate a given stream at beginning of the stream. Only this newly added element is evaluated and followed by lazily evaluated stream elements.<\/li>\n<\/ul>\n<pre class=\"post-pre\"><code>scala&gt; var s1 = Stream(1,2,3,4)\r\ns1: scala.collection.immutable.Stream[Int] = Stream(1, ?)\r\n\r\nscala&gt; val s2 = Stream(-1,0) #::: s1\r\ns2: scala.collection.immutable.Stream[Int] = Stream(-1, ?)\r\n<\/code><\/pre>\n<ul class=\"post-ul\">\n<li>:: method works as a cons operator for List class and #:: method words as a cons operator for Stream class. Here \u2018cons\u2019 stands for construct.<\/li>\n<li>::: method works as a concatenation operator for List class and #::: method words as a concatenation operator for Stream class.<\/li>\n<\/ul>\n<h3>\u30d5\u30eb\u30b9\u30bf\u30c3\u30af\u306eScala\u958b\u767a\u8005\u306b\u306a\u308a\u305f\u3044\u5834\u5408\u3001\u3069\u306e\u6280\u8853\u30b9\u30bf\u30c3\u30af\u3092\u5b66\u3079\u3070\u826f\u3044\u3067\u3059\u304b\uff1f<\/h3>\n<p>\u30d5\u30eb\u30b9\u30bf\u30c3\u30af\u306eScala\u958b\u767a\u8005\u306b\u306a\u308a\u305f\u3044\u5834\u5408\u3001\u4ee5\u4e0b\u306e\u30c6\u30af\u30ce\u30ed\u30b8\u30fc\u30b9\u30bf\u30c3\u30af\u3092\u5b66\u3076\u3079\u304d\u3067\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>Scala 2.11.7<\/li>\n<li>Play 2.4.6 Framework<\/li>\n<li>Akka 2.3 Framework<\/li>\n<li>One Build Tool: SBT\/Maven<\/li>\n<li>One JS Framework: CoffeeScript\/JavaScript<\/li>\n<li>One IDE: IntelliJ IDEA 15\/ Eclipse IDE 4.x<\/li>\n<li>One TDD &amp; BDD Framework: ScalaTest,Spec2,ScalaCheck,Mockito<\/li>\n<li>Micro Services with Play and Scala<\/li>\n<li>SCoverage<\/li>\n<li>Scalastyle<\/li>\n<li>Functional Programming Design Patterns<\/li>\n<li>Machine Learning with Scala<\/li>\n<\/ul>\n<p>\u6ce8\u610f\uff1aScala\u3067\u306f\u3001\u30a8\u30af\u30b9\u30c8\u30e9\u30af\u30bf\u306f\u30a8\u30af\u30b9\u30c8\u30e9\u30af\u30bf\u30c7\u30b6\u30a4\u30f3\u30d1\u30bf\u30fc\u30f3\u306b\u5f93\u3044\u307e\u3059\u3002\u305d\u308c\u3092\u8a73\u3057\u304f\u5b66\u3073\u305f\u3044\u5834\u5408\u306f\u3001\u79c1\u306eScala\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\uff08\u307b\u3068\u3093\u3069\u306e\u6295\u7a3f\u306f\u3053\u306e\u30d1\u30bf\u30fc\u30f3\u306b\u5f93\u3063\u3066\u3044\u307e\u3059\uff1aScala xxxx\u8a73\u89e3\u3001\u3053\u3053\u3067xxxx\u306f\u30a8\u30af\u30b9\u30c8\u30e9\u30af\u30bf\u306e\u3088\u3046\u306a\u6982\u5ff5\u3067\u3059\uff09\u3002\u3053\u308c\u3067\u300cScala\u306e\u9ad8\u5ea6\u306a\u9762\u63a5\u306e\u8cea\u554f\u3068\u56de\u7b54\u300d\u306b\u3064\u3044\u3066\u306f\u4ee5\u4e0a\u3067\u3059\u3002\u4eca\u5f8c\u306e\u6295\u7a3f\u3067\u3055\u3089\u306bScala\u306e\u9762\u63a5\u306e\u8cea\u554f\u3068\u56de\u7b54\u306b\u3064\u3044\u3066\u8b70\u8ad6\u3057\u307e\u3059\u3002\u79c1\u306e\u6295\u7a3f\u304c\u6c17\u306b\u5165\u3063\u305f\u308a\u3001\u554f\u984c\u3084\u63d0\u6848\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u30b3\u30e1\u30f3\u30c8\u3092\u6295\u7a3f\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u3053\u306e\u6295\u7a3f\u3092\u8aad\u3080\u524d\u306b\u3001\u300cScala Basic\u300d\u3068\u300cScala Intermediate\u300d\u306e\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54\u3092\u8aad\u3093\u3067\u3001Scala\u8a00\u8a9e\u306e\u57fa\u790e\u77e5\u8b58\u3092\u5f97\u3066\u304f\u3060\u3055\u3044\u3002 \u30b9\u30ab\u30e9\u306b\u95a2\u3059\u308b\u9ad8\u5ea6\u306a\u9762\u63a5\u8cea\u554f \u3053\u306e\u6295\u7a3f\u3067\u306f\u3001Scala [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[26,61],"class_list":["post-302","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-26","tag-61"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u30b9\u30ab\u30e9\u306e\u9ad8\u5ea6\u306a\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54 - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"\u30b9\u30ab\u30e9\u306e\u9ad8\u5ea6\u306a\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/ja\/blog\/\u30b9\u30ab\u30e9\u306e\u9ad8\u5ea6\u306a\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54\/\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u30b9\u30ab\u30e9\u306e\u9ad8\u5ea6\u306a\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54\" \/>\n<meta property=\"og:description\" content=\"\u30b9\u30ab\u30e9\u306e\u9ad8\u5ea6\u306a\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/ja\/blog\/\u30b9\u30ab\u30e9\u306e\u9ad8\u5ea6\u306a\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-05-22T16:02:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-31T13:29:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/65648781daa94e2bdf7baa90\/92-1.png\" \/>\n<meta name=\"author\" content=\"\u685c, \u6625\u6a39\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u685c, \u6625\u6a39\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"45\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/%e3%82%b9%e3%82%ab%e3%83%a9%e3%81%ae%e9%ab%98%e5%ba%a6%e3%81%aa%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%93%e3%83%a5%e3%83%bc%e3%81%ae%e8%b3%aa%e5%95%8f%e3%81%a8%e5%9b%9e%e7%ad%94\/\",\"url\":\"https:\/\/www.silicloud.com\/ja\/blog\/%e3%82%b9%e3%82%ab%e3%83%a9%e3%81%ae%e9%ab%98%e5%ba%a6%e3%81%aa%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%93%e3%83%a5%e3%83%bc%e3%81%ae%e8%b3%aa%e5%95%8f%e3%81%a8%e5%9b%9e%e7%ad%94\/\",\"name\":\"\u30b9\u30ab\u30e9\u306e\u9ad8\u5ea6\u306a\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#website\"},\"datePublished\":\"2023-05-22T16:02:55+00:00\",\"dateModified\":\"2025-07-31T13:29:03+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/ff22288af1a5455571aff7586b0fb341\"},\"description\":\"\u30b9\u30ab\u30e9\u306e\u9ad8\u5ea6\u306a\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/%e3%82%b9%e3%82%ab%e3%83%a9%e3%81%ae%e9%ab%98%e5%ba%a6%e3%81%aa%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%93%e3%83%a5%e3%83%bc%e3%81%ae%e8%b3%aa%e5%95%8f%e3%81%a8%e5%9b%9e%e7%ad%94\/#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/ja\/blog\/%e3%82%b9%e3%82%ab%e3%83%a9%e3%81%ae%e9%ab%98%e5%ba%a6%e3%81%aa%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%93%e3%83%a5%e3%83%bc%e3%81%ae%e8%b3%aa%e5%95%8f%e3%81%a8%e5%9b%9e%e7%ad%94\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/%e3%82%b9%e3%82%ab%e3%83%a9%e3%81%ae%e9%ab%98%e5%ba%a6%e3%81%aa%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%93%e3%83%a5%e3%83%bc%e3%81%ae%e8%b3%aa%e5%95%8f%e3%81%a8%e5%9b%9e%e7%ad%94\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/ja\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u30b9\u30ab\u30e9\u306e\u9ad8\u5ea6\u306a\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/ja\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"ja\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/ff22288af1a5455571aff7586b0fb341\",\"name\":\"\u685c, \u6625\u6a39\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/cee48863f3d4fd7fef222498f3e71b82312aee42b7257a2dbde56394ca4e19de?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/cee48863f3d4fd7fef222498f3e71b82312aee42b7257a2dbde56394ca4e19de?s=96&d=mm&r=g\",\"caption\":\"\u685c, \u6625\u6a39\"},\"url\":\"https:\/\/www.silicloud.com\/ja\/blog\/author\/sakuraharuki\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/%e3%82%b9%e3%82%ab%e3%83%a9%e3%81%ae%e9%ab%98%e5%ba%a6%e3%81%aa%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%93%e3%83%a5%e3%83%bc%e3%81%ae%e8%b3%aa%e5%95%8f%e3%81%a8%e5%9b%9e%e7%ad%94\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u30b9\u30ab\u30e9\u306e\u9ad8\u5ea6\u306a\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54 - Blog - Silicon Cloud","description":"\u30b9\u30ab\u30e9\u306e\u9ad8\u5ea6\u306a\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/ja\/blog\/\u30b9\u30ab\u30e9\u306e\u9ad8\u5ea6\u306a\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54\/","og_locale":"ja_JP","og_type":"article","og_title":"\u30b9\u30ab\u30e9\u306e\u9ad8\u5ea6\u306a\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54","og_description":"\u30b9\u30ab\u30e9\u306e\u9ad8\u5ea6\u306a\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002","og_url":"https:\/\/www.silicloud.com\/ja\/blog\/\u30b9\u30ab\u30e9\u306e\u9ad8\u5ea6\u306a\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-05-22T16:02:55+00:00","article_modified_time":"2025-07-31T13:29:03+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/65648781daa94e2bdf7baa90\/92-1.png"}],"author":"\u685c, \u6625\u6a39","twitter_card":"summary_large_image","twitter_misc":{"\u57f7\u7b46\u8005":"\u685c, \u6625\u6a39","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"45\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/ja\/blog\/%e3%82%b9%e3%82%ab%e3%83%a9%e3%81%ae%e9%ab%98%e5%ba%a6%e3%81%aa%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%93%e3%83%a5%e3%83%bc%e3%81%ae%e8%b3%aa%e5%95%8f%e3%81%a8%e5%9b%9e%e7%ad%94\/","url":"https:\/\/www.silicloud.com\/ja\/blog\/%e3%82%b9%e3%82%ab%e3%83%a9%e3%81%ae%e9%ab%98%e5%ba%a6%e3%81%aa%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%93%e3%83%a5%e3%83%bc%e3%81%ae%e8%b3%aa%e5%95%8f%e3%81%a8%e5%9b%9e%e7%ad%94\/","name":"\u30b9\u30ab\u30e9\u306e\u9ad8\u5ea6\u306a\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/ja\/blog\/#website"},"datePublished":"2023-05-22T16:02:55+00:00","dateModified":"2025-07-31T13:29:03+00:00","author":{"@id":"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/ff22288af1a5455571aff7586b0fb341"},"description":"\u30b9\u30ab\u30e9\u306e\u9ad8\u5ea6\u306a\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/ja\/blog\/%e3%82%b9%e3%82%ab%e3%83%a9%e3%81%ae%e9%ab%98%e5%ba%a6%e3%81%aa%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%93%e3%83%a5%e3%83%bc%e3%81%ae%e8%b3%aa%e5%95%8f%e3%81%a8%e5%9b%9e%e7%ad%94\/#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/ja\/blog\/%e3%82%b9%e3%82%ab%e3%83%a9%e3%81%ae%e9%ab%98%e5%ba%a6%e3%81%aa%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%93%e3%83%a5%e3%83%bc%e3%81%ae%e8%b3%aa%e5%95%8f%e3%81%a8%e5%9b%9e%e7%ad%94\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/ja\/blog\/%e3%82%b9%e3%82%ab%e3%83%a9%e3%81%ae%e9%ab%98%e5%ba%a6%e3%81%aa%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%93%e3%83%a5%e3%83%bc%e3%81%ae%e8%b3%aa%e5%95%8f%e3%81%a8%e5%9b%9e%e7%ad%94\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/ja\/blog\/"},{"@type":"ListItem","position":2,"name":"\u30b9\u30ab\u30e9\u306e\u9ad8\u5ea6\u306a\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/ja\/blog\/#website","url":"https:\/\/www.silicloud.com\/ja\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"ja"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/ff22288af1a5455571aff7586b0fb341","name":"\u685c, \u6625\u6a39","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/cee48863f3d4fd7fef222498f3e71b82312aee42b7257a2dbde56394ca4e19de?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/cee48863f3d4fd7fef222498f3e71b82312aee42b7257a2dbde56394ca4e19de?s=96&d=mm&r=g","caption":"\u685c, \u6625\u6a39"},"url":"https:\/\/www.silicloud.com\/ja\/blog\/author\/sakuraharuki\/"},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.silicloud.com\/ja\/blog\/%e3%82%b9%e3%82%ab%e3%83%a9%e3%81%ae%e9%ab%98%e5%ba%a6%e3%81%aa%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%93%e3%83%a5%e3%83%bc%e3%81%ae%e8%b3%aa%e5%95%8f%e3%81%a8%e5%9b%9e%e7%ad%94\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/posts\/302","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/comments?post=302"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/posts\/302\/revisions"}],"predecessor-version":[{"id":38868,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/posts\/302\/revisions\/38868"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/media?parent=302"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/categories?post=302"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/tags?post=302"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}