{"id":1147,"date":"2023-04-13T14:13:54","date_gmt":"2023-04-13T05:13:54","guid":{"rendered":"http:\/\/edu.ujhb.org\/?p=1147"},"modified":"2023-04-13T14:13:54","modified_gmt":"2023-04-13T05:13:54","slug":"scalan%e5%85%a5%e9%96%80%ef%bc%88%e6%97%a5%e6%9c%ac%e8%aa%9e%e7%89%88%ef%bc%89","status":"publish","type":"post","link":"https:\/\/edu.ujhb.org\/?p=1147","title":{"rendered":"Scalan\u5165\u9580\uff08\u65e5\u672c\u8a9e\u7248\uff09"},"content":{"rendered":"\n<p>IT\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u306e\u30d3\u30c7\u30aa\u3092\u3084\u308a\u305f\u3044\u306e\u3067\u3059\u304c\u3001\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u306b\u5fdc\u3058\u3066\u30d3\u30c7\u30aa\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u306e\u30c6\u30ad\u30b9\u30c8\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u914d\u7f6e\u3057\u3066\u3044\u305f\u3060\u3051\u307e\u3059\u304b\u3002 Scala\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u304b\u3089\u59cb\u3081\u307e\u3057\u3087\u3046\u3001\u305d\u3057\u3066\u3042\u306a\u305f\u306f\u79c1\u306b\u30ab\u30d0\u30fc\u3059\u308b\u3082\u306e\u306e\u30ea\u30b9\u30c8\u3092\u4e0e\u3048\u308b\u3053\u3068\u304b\u3089\u59cb\u3081\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<p>\u78ba\u304b\u306b\u3001\u3053\u3053\u306bScala\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u306e\u63d0\u6848\u3055\u308c\u305f\u6982\u8981\u304c\u3042\u308a\u307e\u3059:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30b9\u30ab\u30e9\u5165\u9580\n<ul class=\"wp-block-list\">\n<li>Scala\u306e\u80cc\u666f\u3068\u6b74\u53f2\u306e\u7d39\u4ecb<\/li>\n\n\n\n<li>\u30b9\u30ab\u30e9\u306e\u5229\u70b9\u3068\u7279\u5fb4<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Scala \u3092\u4f7f\u3044\u59cb\u3081\u308b\n<ul class=\"wp-block-list\">\n<li>Scala \u958b\u767a\u74b0\u5883\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b<\/li>\n\n\n\n<li>\u6700\u521d\u306e Scala \u30d7\u30ed\u30b0\u30e9\u30e0<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u30b9\u30ab\u30e9\u306e\u57fa\u672c\n<ul class=\"wp-block-list\">\n<li>\u5909\u6570\u3068\u30c7\u30fc\u30bf\u578b<\/li>\n\n\n\n<li>\u5236\u5fa1\u69cb\u9020 (\u6761\u4ef6\u4ed8\u304d\u304a\u3088\u3073\u30eb\u30fc\u30d7)<\/li>\n\n\n\n<li>\u95a2\u6570\u3068\u30e1\u30bd\u30c3\u30c9<\/li>\n\n\n\n<li>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u57fa\u790e<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Scala Advanced\n<ul class=\"wp-block-list\">\n<li>\u53ce\u96c6\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af<\/li>\n\n\n\n<li>\u7fd2\u6027<\/li>\n\n\n\n<li>\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0<\/li>\n\n\n\n<li>\u6697\u9ed9\u7684\u306a\u5909\u63db\u3068\u6697\u9ed9\u7684\u306a\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc<\/li>\n\n\n\n<li>\u30a2\u30af\u30bf\u30fc\u30e2\u30c7\u30eb\u306f\u540c\u6642\u306b\u30d7\u30ed\u30b0\u30e9\u30e0\u3055\u308c\u307e\u3059<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u5b9f\u969b\u306e\u30b9\u30ab\u30e9\n<ul class=\"wp-block-list\">\n<li>\u30a6\u30a7\u30d6\u958b\u767a\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af (Play \u3084 Scalatra \u306a\u3069)<\/li>\n\n\n\n<li>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30a2\u30af\u30bb\u30b9\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af(Slick\u3084Quill\u306a\u3069)<\/li>\n\n\n\n<li>\u30c7\u30fc\u30bf\u51e6\u7406\u3068\u5206\u6790(\u4f8b:Spark\u3068Flink)<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Scala \u30a8\u30b3\u30b7\u30b9\u30c6\u30e0\u3068\u30c4\u30fc\u30eb\n<ul class=\"wp-block-list\">\n<li>Maven \u304a\u3088\u3073 SBT \u30d3\u30eb\u30c9\u30c4\u30fc\u30eb<\/li>\n\n\n\n<li>\u30c6\u30b9\u30c8\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af (ScalaTest \u3084 Specs2 \u306a\u3069)<\/li>\n\n\n\n<li>IDE (IntelliJ IDEA \u3084 Eclipse \u306a\u3069)<\/li>\n\n\n\n<li>Scala \u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3068\u30ea\u30bd\u30fc\u30b9<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p>\u3053\u308c\u306f\u5358\u306a\u308b\u4e88\u5099\u7684\u306a\u6982\u8981\u3067\u3042\u308a\u3001\u7279\u5b9a\u306e\u5185\u5bb9\u306f\u5bfe\u8c61\u8aad\u8005\u3068\u5b66\u7fd2\u76ee\u7684\u306b\u5fdc\u3058\u3066\u8abf\u6574\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1144\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=64&amp;q=75\" alt=\"\u8ecd\u4ead\"\/><\/figure>\n\n\n\n<p>Scala\u306e\u80cc\u666f\u3084\u6b74\u53f2\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u6559\u3048\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Scala\u306f\u3001EPFL(\u30ed\u30fc\u30b6\u30f3\u30cc\u306e\u30b9\u30a4\u30b9\u9023\u90a6\u5de5\u79d1\u5927\u5b66)\u306eMartin Odersky\u6559\u6388\u3068\u5f7c\u306e\u30c1\u30fc\u30e0\u306b\u3088\u3063\u30662003\u5e74\u306b\u958b\u767a\u3055\u308c\u305fJVM(Java\u4eee\u60f3\u30de\u30b7\u30f3)\u306b\u57fa\u3065\u304f\u6700\u65b0\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u3059\u3002 Scala\u3068\u3044\u3046\u540d\u524d\u306f\u3001\u30b9\u30b1\u30fc\u30e9\u30d6\u30eb\u306a\u8a00\u8a9e\u3092\u610f\u5473\u3059\u308b\u300c\u30b9\u30b1\u30fc\u30e9\u30d6\u30eb\u306a\u8a00\u8a9e\u300d\u306b\u7531\u6765\u3057\u3001\u300c\u30b9\u30b1\u30fc\u30e9\u30d6\u30eb\u306a\u8a00\u8a9e\u300d\u3068\u300c\u96fb\u5353\u300d\u3068\u3044\u3046\u8a00\u8449\u306e\u7d44\u307f\u5408\u308f\u305b\u3068\u3057\u3066\u89e3\u91c8\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>Scala\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3068\u95a2\u6570\u578b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u30a2\u30a4\u30c7\u30a2\u3092\u878d\u5408\u3059\u308b\u3088\u3046\u306b\u8a2d\u8a08\u3055\u308c\u3066\u304a\u308a\u3001\u30d7\u30ed\u30b0\u30e9\u30de\u30fc\u306f\u3088\u308a\u5c11\u306a\u3044\u30b3\u30fc\u30c9\u3067\u3088\u308a\u591a\u304f\u306e\u3053\u3068\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 Scala\u306f\u3001\u578b\u63a8\u8ad6\u3068\u3001\u30d5\u30a1\u30fc\u30b9\u30c8\u30af\u30e9\u30b9\u306e\u5e02\u6c11\u3068\u3057\u3066\u4f7f\u7528\u3067\u304d\u308b\u9ad8\u968e\u95a2\u6570\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u9759\u7684\u578b\u4ed8\u3051\u8a00\u8a9e\u3067\u3059\u3002<\/p>\n\n\n\n<p>Scala\u306e\u767a\u660e\u8005\u3067\u3042\u308bMartin Odersky\u306f\u3001Scala\u3092\u958b\u767a\u3059\u308b\u524d\u306b\u3001Funnel\u3001Pizza\u3001GJ\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3092\u8a2d\u8a08\u3057\u307e\u3057\u305f\u3002 \u3053\u308c\u3089\u306e\u8a00\u8a9e\u306f\u4e3b\u306b\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u3042\u308a\u3001Scala\u306f\u8a2d\u8a08\u6642\u306b\u305d\u308c\u3089\u306b\u89e6\u767a\u3055\u308c\u3001\u4ed6\u306e\u8a00\u8a9e\u306e\u6700\u9ad8\u306e\u6a5f\u80fd\u306e\u591a\u304f\u3092\u5438\u53ce\u3057\u307e\u3057\u305f\u3002 \u305f\u3068\u3048\u3070\u3001Scala\u306f\u3001Java\u306e\u69cb\u6587\u3068JVM\u306e\u79fb\u690d\u6027\u3001Haskell\u3084ML\u306a\u3069\u306e\u95a2\u6570\u578b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306e\u9ad8\u968e\u95a2\u6570\u3084\u578b\u63a8\u8ad6\u306a\u3069\u306e\u6a5f\u80fd\u3001Smalltalk\u3084Ruby\u306a\u3069\u306e\u52d5\u7684\u8a00\u8a9e\u306e\u67d4\u8edf\u6027\u3068\u30b7\u30f3\u30d7\u30eb\u3055\u304b\u3089\u501f\u7528\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>Scala\u306f\u3001Java\u3084C#\u306a\u3069\u306e\u8a00\u8a9e\u3067\u306e\u95a2\u6570\u578b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u30b5\u30dd\u30fc\u30c8\u304c\u4e0d\u5341\u5206\u3067\u3042\u3063\u305f\u308a\u3001\u52d5\u7684\u8a00\u8a9e\u306e\u578b\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u554f\u984c\u306a\u3069\u3001\u5f53\u6642\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306e\u5236\u9650\u306e\u3044\u304f\u3064\u304b\u306b\u5bfe\u51e6\u3059\u308b\u305f\u3081\u306b\u3082\u751f\u307e\u308c\u307e\u3057\u305f\u3002 Scala\u306e\u51fa\u73fe\u306f\u3053\u308c\u3089\u306e\u30ae\u30e3\u30c3\u30d7\u3092\u57cb\u3081\u3001JVM\u30a8\u30b3\u30b7\u30b9\u30c6\u30e0\u3067\u6700\u3082\u4eba\u6c17\u306e\u3042\u308b\u8a00\u8a9e\u306e1\u3064\u306b\u306a\u308a\u3001Web\u958b\u767a\u3001\u30c7\u30fc\u30bf\u51e6\u7406\u3068\u5206\u6790\u3001\u4e26\u884c\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306a\u3069\u3067\u5e83\u304f\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1144\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=64&amp;q=75\" alt=\"\u8ecd\u4ead\"\/><\/figure>\n\n\n\n<p>Scala\u306e\u5229\u70b9\u3068\u7279\u5fb4\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u6700\u65b0\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3068\u3057\u3066\u3001Scala\u306b\u306f\u6b21\u306e\u5229\u70b9\u3068\u6a5f\u80fd\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u9759\u7684\u578b\u30c1\u30a7\u30c3\u30af:Scala\u306f\u9759\u7684\u306b\u578b\u4ed8\u3051\u3055\u308c\u305f\u8a00\u8a9e\u3067\u3042\u308a\u3001\u30b3\u30f3\u30d1\u30a4\u30eb\u4e2d\u306b\u578b\u30c1\u30a7\u30c3\u30af\u3092\u884c\u3063\u3066\u4e00\u822c\u7684\u306a\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30a8\u30e9\u30fc\u3092\u56de\u907f\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3068\u95a2\u6570\u578b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u878d\u5408:Scala\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3068\u95a2\u6570\u578b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e2\u3064\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30d1\u30e9\u30c0\u30a4\u30e0\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u304a\u308a\u3001\u30d7\u30ed\u30b0\u30e9\u30de\u30fc\u306f\u3055\u307e\u3056\u307e\u306a\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u624b\u6cd5\u3092\u4f7f\u7528\u3057\u3066\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u67d4\u8edf\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u95a2\u6570\u306f\u30d5\u30a1\u30fc\u30b9\u30c8\u30af\u30e9\u30b9\u306e\u5e02\u6c11\u3067\u3059:Scala\u306f\u95a2\u6570\u3092\u30d5\u30a1\u30fc\u30b9\u30c8\u30af\u30e9\u30b9\u306e\u30b7\u30c1\u30ba\u30f3\u3068\u3057\u3066\u6271\u3044\u3001\u95a2\u6570\u306f\u5f15\u6570\u3001\u623b\u308a\u5024\u3001\u5909\u6570\u3068\u3057\u3066\u6e21\u3057\u3066\u5272\u308a\u5f53\u3066\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u305f\u3081\u3001\u9ad8\u968e\u95a2\u6570\u3068\u95a2\u6570\u578b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u30a2\u30a4\u30c7\u30a2\u3092\u7c21\u5358\u306b\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u5f37\u529b\u306a\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af:Scala\u306f\u3001\u30ea\u30b9\u30c8\u3001\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3001\u30de\u30c3\u30d7\u306a\u3069\u3092\u542b\u3080\u8c4a\u5bcc\u306a\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u63d0\u4f9b\u3057\u3001\u9ad8\u968e\u95a2\u6570\u3068\u578b\u63a8\u8ad6\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u30d7\u30ed\u30b0\u30e9\u30de\u30fc\u306f\u30c7\u30fc\u30bf\u3092\u3088\u308a\u4fbf\u5229\u306b\u64cd\u4f5c\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u4e26\u884c\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u30b5\u30dd\u30fc\u30c8: Scala \u306f\u3001\u4e26\u884c\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u7c21\u5358\u306b\u5b9f\u88c5\u3057\u3001\u5f93\u6765\u306e\u30b9\u30ec\u30c3\u30c9\u30e2\u30c7\u30eb\u3067\u306e\u30ed\u30c3\u30af\u3068\u540c\u671f\u306e\u554f\u984c\u3092\u56de\u907f\u3067\u304d\u308b\u30a2\u30af\u30bf\u30fc\u30e2\u30c7\u30eb\u306e\u4e26\u884c\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u62e1\u5f35\u6027:Scala\u306fDSL(\u30c9\u30e1\u30a4\u30f3\u56fa\u6709\u8a00\u8a9e)\u306e\u8a2d\u8a08\u3068\u8a18\u8ff0\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u304a\u308a\u3001\u8a00\u8a9e\u6a5f\u80fd\u3092\u7c21\u5358\u306b\u62e1\u5f35\u3057\u3001\u30d7\u30ed\u30b0\u30e9\u30de\u30fc\u304c\u30c9\u30e1\u30a4\u30f3\u56fa\u6709\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u7c21\u5358\u306b\u4f5c\u6210\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>Java\u30a8\u30b3\u30b7\u30b9\u30c6\u30e0\u3068\u306e\u4e92\u63db\u6027:Scala\u306fJava\u3068\u30b7\u30fc\u30e0\u30ec\u30b9\u306b\u7d71\u5408\u3067\u304d\u3001Java\u306e\u30af\u30e9\u30b9\u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u4f7f\u7528\u3057\u305f\u308a\u3001Scala\u30b3\u30fc\u30c9\u3092Java\u30d0\u30a4\u30c8\u30b3\u30fc\u30c9\u306b\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066JVM\u4e0a\u3067\u5b9f\u884c\u3057\u305f\u308a\u3057\u3066\u3001Java\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e\u5229\u4fbf\u6027\u3068\u5e45\u5e83\u3055\u3092\u4eab\u53d7\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u5168\u4f53\u3068\u3057\u3066\u3001Scala\u306f\u3001Web\u958b\u767a\u3001\u30c7\u30fc\u30bf\u51e6\u7406\u3068\u5206\u6790\u3001\u4e26\u884c\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u7a2e\u985e\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30bf\u30b9\u30af\u306b\u9069\u3057\u305f\u3001\u5f37\u529b\u3067\u67d4\u8edf\u3067\u30b9\u30b1\u30fc\u30e9\u30d6\u30eb\u306a\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u3059\u3002 \u540c\u6642\u306b\u3001Scala\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306f\u975e\u5e38\u306b\u6d3b\u767a\u3067\u3042\u308a\u3001\u591a\u6570\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u304c\u5229\u7528\u53ef\u80fd\u3067\u3042\u308b\u305f\u3081\u3001Scala\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u304c\u3088\u308a\u7c21\u5358\u3067\u697d\u3057\u3044\u3082\u306e\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1144\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=64&amp;q=75\" alt=\"\u8ecd\u4ead\"\/><\/figure>\n\n\n\n<p>Scala\u306e\u5229\u70b9\u3068\u7279\u5fb4\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u6700\u65b0\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3068\u3057\u3066\u3001Scala\u306b\u306f\u6b21\u306e\u5229\u70b9\u3068\u6a5f\u80fd\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u9759\u7684\u578b\u30c1\u30a7\u30c3\u30af:Scala\u306f\u9759\u7684\u306b\u578b\u4ed8\u3051\u3055\u308c\u305f\u8a00\u8a9e\u3067\u3042\u308a\u3001\u30b3\u30f3\u30d1\u30a4\u30eb\u4e2d\u306b\u578b\u30c1\u30a7\u30c3\u30af\u3092\u884c\u3063\u3066\u4e00\u822c\u7684\u306a\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30a8\u30e9\u30fc\u3092\u56de\u907f\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3068\u95a2\u6570\u578b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u878d\u5408:Scala\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3068\u95a2\u6570\u578b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e2\u3064\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30d1\u30e9\u30c0\u30a4\u30e0\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u304a\u308a\u3001\u30d7\u30ed\u30b0\u30e9\u30de\u30fc\u306f\u3055\u307e\u3056\u307e\u306a\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u624b\u6cd5\u3092\u4f7f\u7528\u3057\u3066\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u67d4\u8edf\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u95a2\u6570\u306f\u30d5\u30a1\u30fc\u30b9\u30c8\u30af\u30e9\u30b9\u306e\u5e02\u6c11\u3067\u3059:Scala\u306f\u95a2\u6570\u3092\u30d5\u30a1\u30fc\u30b9\u30c8\u30af\u30e9\u30b9\u306e\u30b7\u30c1\u30ba\u30f3\u3068\u3057\u3066\u6271\u3044\u3001\u95a2\u6570\u306f\u5f15\u6570\u3001\u623b\u308a\u5024\u3001\u5909\u6570\u3068\u3057\u3066\u6e21\u3057\u3066\u5272\u308a\u5f53\u3066\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u305f\u3081\u3001\u9ad8\u968e\u95a2\u6570\u3068\u95a2\u6570\u578b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u30a2\u30a4\u30c7\u30a2\u3092\u7c21\u5358\u306b\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u5f37\u529b\u306a\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af:Scala\u306f\u3001\u30ea\u30b9\u30c8\u3001\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3001\u30de\u30c3\u30d7\u306a\u3069\u3092\u542b\u3080\u8c4a\u5bcc\u306a\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u63d0\u4f9b\u3057\u3001\u9ad8\u968e\u95a2\u6570\u3068\u578b\u63a8\u8ad6\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u30d7\u30ed\u30b0\u30e9\u30de\u30fc\u306f\u30c7\u30fc\u30bf\u3092\u3088\u308a\u4fbf\u5229\u306b\u64cd\u4f5c\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u4e26\u884c\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u30b5\u30dd\u30fc\u30c8: Scala \u306f\u3001\u4e26\u884c\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u7c21\u5358\u306b\u5b9f\u88c5\u3057\u3001\u5f93\u6765\u306e\u30b9\u30ec\u30c3\u30c9\u30e2\u30c7\u30eb\u3067\u306e\u30ed\u30c3\u30af\u3068\u540c\u671f\u306e\u554f\u984c\u3092\u56de\u907f\u3067\u304d\u308b\u30a2\u30af\u30bf\u30fc\u30e2\u30c7\u30eb\u306e\u4e26\u884c\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u62e1\u5f35\u6027:Scala\u306fDSL(\u30c9\u30e1\u30a4\u30f3\u56fa\u6709\u8a00\u8a9e)\u306e\u8a2d\u8a08\u3068\u8a18\u8ff0\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u304a\u308a\u3001\u8a00\u8a9e\u6a5f\u80fd\u3092\u7c21\u5358\u306b\u62e1\u5f35\u3057\u3001\u30d7\u30ed\u30b0\u30e9\u30de\u30fc\u304c\u30c9\u30e1\u30a4\u30f3\u56fa\u6709\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u7c21\u5358\u306b\u4f5c\u6210\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>Java\u30a8\u30b3\u30b7\u30b9\u30c6\u30e0\u3068\u306e\u4e92\u63db\u6027:Scala\u306fJava\u3068\u30b7\u30fc\u30e0\u30ec\u30b9\u306b\u7d71\u5408\u3067\u304d\u3001Java\u306e\u30af\u30e9\u30b9\u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u4f7f\u7528\u3057\u305f\u308a\u3001Scala\u30b3\u30fc\u30c9\u3092Java\u30d0\u30a4\u30c8\u30b3\u30fc\u30c9\u306b\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066JVM\u4e0a\u3067\u5b9f\u884c\u3057\u305f\u308a\u3057\u3066\u3001Java\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e\u5229\u4fbf\u6027\u3068\u5e45\u5e83\u3055\u3092\u4eab\u53d7\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u5168\u4f53\u3068\u3057\u3066\u3001Scala\u306f\u3001Web\u958b\u767a\u3001\u30c7\u30fc\u30bf\u51e6\u7406\u3068\u5206\u6790\u3001\u4e26\u884c\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u7a2e\u985e\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30bf\u30b9\u30af\u306b\u9069\u3057\u305f\u3001\u5f37\u529b\u3067\u67d4\u8edf\u3067\u30b9\u30b1\u30fc\u30e9\u30d6\u30eb\u306a\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u3059\u3002 \u540c\u6642\u306b\u3001Scala\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306f\u975e\u5e38\u306b\u6d3b\u767a\u3067\u3042\u308a\u3001\u591a\u6570\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u304c\u5229\u7528\u53ef\u80fd\u3067\u3042\u308b\u305f\u3081\u3001Scala\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u304c\u3088\u308a\u7c21\u5358\u3067\u697d\u3057\u3044\u3082\u306e\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1144\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=64&amp;q=75\" alt=\"\u8ecd\u4ead\"\/><\/figure>\n\n\n\n<p>Scala\u958b\u767a\u74b0\u5883\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Scala \u958b\u767a\u74b0\u5883\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u306b\u306f\u3001\u6b21\u306e\u624b\u9806\u3092\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>JDK \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb: Scala \u306f JDK \u306b\u4f9d\u5b58\u3059\u308b\u305f\u3081\u3001\u6700\u521d\u306b JDK \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u6700\u65b0\u306eJDK\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30aa\u30e9\u30af\u30eb\u306e\u516c\u5f0fWeb\u30b5\u30a4\u30c8\u307e\u305f\u306fOpenJDK\u306e\u516c\u5f0fWeb\u30b5\u30a4\u30c8\u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3001\u30d7\u30ed\u30f3\u30d7\u30c8\u306b\u5f93\u3063\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>Scala \u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9: Scala&nbsp;<a href=\"https:\/\/www.scala-lang.org\/%EF%BC%89%E4%B8%8B%E8%BD%BDScala%E7%9A%84%E5%AE%89%E8%A3%85%E5%8C%85%E3%80%82%E9%80%9A%E5%B8%B8%E4%BC%9A%E6%8F%90%E4%BE%9B%E5%A4%9A%E4%B8%AA%E7%89%88%E6%9C%AC%E7%9A%84Scala%E5%AE%89%E8%A3%85%E5%8C%85%EF%BC%8C%E9%9C%80%E8%A6%81%E6%A0%B9%E6%8D%AE%E8%87%AA%E5%B7%B1%E7%9A%84%E9%9C%80%E8%A6%81%E9%80%89%E6%8B%A9%E5%90%88%E9%80%82%E7%9A%84%E7%89%88%E6%9C%AC%E3%80%82\">\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u30d1\u30c3\u30b1\u30fc\u30b8\u306f\u3001Scala \u306e\u516c\u5f0f\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8 (https:\/\/www.scala-lang.org\/) \u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u307e\u3059\u3002 \u901a\u5e38\u3001Scala\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u306f\u8907\u6570\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u3042\u308a\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u9069\u5207\u306a\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/a><\/li>\n\n\n\n<li>Scala \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u62bd\u51fa\u3059\u308b: \u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u304c\u5b8c\u4e86\u3057\u305f\u3089\u3001Scala \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30ed\u30fc\u30ab\u30eb\u30c7\u30a3\u30b9\u30af\u4e0a\u306e\u4efb\u610f\u306e\u5834\u6240\u306b\u89e3\u51cd\u3057\u307e\u3059\u3002 WinZip\u3001WinRAR\u3001\u304a\u3088\u3073\u305d\u306e\u4ed6\u306e\u89e3\u51cd\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3092\u4f7f\u7528\u3057\u3066\u89e3\u51cd\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u74b0\u5883\u5909\u6570\u306e\u8a2d\u5b9a: \u62bd\u51fa\u3057\u305f Scala \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u30d1\u30b9\u3092\u30b7\u30b9\u30c6\u30e0\u74b0\u5883\u5909\u6570\u306b\u8ffd\u52a0\u3057\u3066\u3001\u30b7\u30b9\u30c6\u30e0\u304c Scala \u30b3\u30de\u30f3\u30c9\u3068\u30e9\u30a4\u30d6\u30e9\u30ea\u30d5\u30a1\u30a4\u30eb\u3092\u898b\u3064\u3051\u3089\u308c\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002 \u3053\u308c\u3092\u884c\u3046\u306b\u306f\u3001\u6b21\u306e 2 \u3064\u306e\u5909\u6570\u3092\u74b0\u5883\u5909\u6570\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002\n<ul class=\"wp-block-list\">\n<li>SCALA_HOME: Scala \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3078\u306e\u30d1\u30b9 (C:\\Program Files\\Scala \u306a\u3069)<\/li>\n\n\n\n<li>PATH: Scala \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304b\u3089 PATH \u5909\u6570 (%SCALA_HOME%\\bin \u306a\u3069) \u306b bin \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306e\u78ba\u8a8d: \u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u3067 scala \u30b3\u30de\u30f3\u30c9\u3092\u5165\u529b\u3057\u3001Scala REPL (Read-Eval-Print Loop) \u306e\u5bfe\u8a71\u578b\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9\u304c\u8868\u793a\u3055\u308c\u308c\u3070\u3001Scala \u306f\u6b63\u5e38\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u4e0a\u8a18\u306e\u624b\u9806\u306b\u52a0\u3048\u3066\u3001Scala\u306e\u30d3\u30eb\u30c9\u30c4\u30fc\u30ebSBT\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u8ffd\u52a0\u306eSBT\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002&nbsp;<a href=\"https:\/\/www.scala-sbt.org\/%EF%BC%89%E4%B8%8B%E8%BD%BD%E6%9C%80%E6%96%B0%E7%9A%84SBT%E5%AE%89%E8%A3%85%E5%8C%85%EF%BC%8C%E6%8C%89%E7%85%A7%E6%8F%90%E7%A4%BA%E8%BF%9B%E8%A1%8C%E5%AE%89%E8%A3%85%E5%8D%B3%E5%8F%AF%E3%80%82\">SBT\u306e\u516c\u5f0fWeb\u30b5\u30a4\u30c8(https:\/\/www.scala-sbt.org\/)\u304b\u3089\u6700\u65b0\u306eSBT\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3001\u30d7\u30ed\u30f3\u30d7\u30c8\u306b\u5f93\u3063\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u307e\u3059\u3002<\/a><\/p>\n\n\n\n<p>Scala\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3068\u69cb\u6210\u306f\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0\u3068\u30d0\u30fc\u30b8\u30e7\u30f3\u306b\u3088\u3063\u3066\u7570\u306a\u308b\u5834\u5408\u304c\u3042\u308a\u3001\u7279\u5b9a\u306e\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0\u3068\u30d0\u30fc\u30b8\u30e7\u30f3\u306b\u5fdc\u3058\u3066\u9069\u5207\u306a\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3068\u69cb\u6210\u65b9\u6cd5\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1144\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=64&amp;q=75\" alt=\"\u8ecd\u4ead\"\/><\/figure>\n\n\n\n<p>\u6700\u521d\u306eScala\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u4f5c\u6210\u65b9\u6cd5\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u6700\u521d\u306e Scala \u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u4f5c\u6210\u3059\u308b\u306b\u306f\u3001\u6b21\u306e\u624b\u9806\u304c\u5fc5\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30a8\u30c7\u30a3\u30bf\u306e\u9078\u629e:Scala\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u66f8\u304f\u306e\u306b\u9069\u3057\u305f\u30c6\u30ad\u30b9\u30c8\u30a8\u30c7\u30a3\u30bf\u307e\u305f\u306fIDE(\u7d71\u5408\u958b\u767a\u74b0\u5883)\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \u4e00\u822c\u7684\u306a Scala \u958b\u767a\u30c4\u30fc\u30eb\u306b\u306f\u3001IntelliJ IDEA\u3001Eclipse\u3001Visual Studio Code \u306a\u3069\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4f5c\u6210: \u30a8\u30c7\u30a3\u30bf\u30fc\u3067\u65b0\u3057\u3044 Scala \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002 \u30a8\u30c7\u30a3\u30bf\u30fc\u306b\u3088\u3063\u3066\u3001\u65b0\u3057\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3059\u308b\u65b9\u6cd5\u306f\u7570\u306a\u308a\u307e\u3059\u3002 \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u901a\u5e38\u3001IDE\u306e\u30e1\u30cb\u30e5\u30fc\u3067\u300c\u65b0\u3057\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u300d\u3084\u300c\u65b0\u3057\u3044Scala\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u300d\u306a\u3069\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u9078\u629e\u3059\u308b\u3053\u3068\u3067\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>Scala \u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3059\u308b: \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u65b0\u3057\u3044 Scala \u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059 (\u901a\u5e38\u306f\u62e1\u5f35\u5b50\u304c .scala)\u3002 Scala \u30d5\u30a1\u30a4\u30eb\u3067\u306f\u3001Scala \u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u30b3\u30fc\u30c9\u3092\u66f8\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>Scala \u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u66f8\u304f: &#8220;Hello, Scala!&#8221; \u3068\u51fa\u529b\u3059\u308b\u3088\u3046\u306a\u5358\u7d14\u306a Scala \u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u66f8\u304f\u3002 \u6b21\u306e\u30b3\u30fc\u30c9\u3092 Scala \u30d5\u30a1\u30a4\u30eb\u306b\u8ffd\u52a0\u3067\u304d\u307e\u3059: \u30bf\u30a4\u30d7\u30b9\u30af\u30ea\u30d7\u30c8\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u306f\u3001Array[String] \u578b\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u53d7\u3051\u53d6\u308b main \u3068\u3044\u3046\u540d\u524d\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u542b\u3080 HelloWorld \u3068\u3044\u3046\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002 main \u30e1\u30bd\u30c3\u30c9\u3067\u306f\u3001println \u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066 &#8220;\u3053\u3093\u306b\u3061\u306f\u3001Scala!&#8221; \u3092\u51fa\u529b\u3057\u307e\u3059\u3002 \u6587\u5b57\u5217\u306e\u6587\u5b57\u5217\u3002<code>object HelloWorld { def main(args: Array[String]) { println(\"Hello, Scala!\") } }<\/code><\/li>\n\n\n\n<li>\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u5b9f\u884c\u3059\u308b: Scala \u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3057\u305f\u5f8c\u3001\u30a8\u30c7\u30a3\u30bf\u306e Run \u30dc\u30bf\u30f3\u307e\u305f\u306f\u30b3\u30f3\u30bd\u30fc\u30eb\u306e Scala \u30a4\u30f3\u30bf\u30fc\u30d7\u30ea\u30bf\u30fc\u3092\u4f7f\u7528\u3057\u3066\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002 \u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001\u300c\u3053\u3093\u306b\u3061\u306f\u3001Scala!\u300d\u3068\u51fa\u529b\u3055\u308c\u307e\u3059\u3002 \u6587\u5b57\u5217\u306e\u6587\u5b57\u5217\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u3053\u308c\u304c\u3001\u6700\u521d\u306e Scala \u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u4f5c\u6210\u3059\u308b\u305f\u3081\u306e\u57fa\u672c\u7684\u306a\u624b\u9806\u3067\u3059\u3002 Scala\u30d7\u30ed\u30b0\u30e9\u30e0\u306f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u307e\u305f\u306f\u30af\u30e9\u30b9\u3068\u3057\u3066\u5b58\u5728\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u3078\u306e\u30a8\u30f3\u30c8\u30ea\u30dd\u30a4\u30f3\u30c8\u306fmain\u30e1\u30bd\u30c3\u30c9\u3092\u542b\u3080\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u307e\u305f\u306f\u30af\u30e9\u30b9\u3067\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \u3055\u3089\u306b\u3001Scala\u30d7\u30ed\u30b0\u30e9\u30e0\u306f\u3001SBT\u306a\u3069\u306e\u30d3\u30eb\u30c9\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u30b3\u30f3\u30d1\u30a4\u30eb\u304a\u3088\u3073\u5b9f\u884c\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1144\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=64&amp;q=75\" alt=\"\u8ecd\u4ead\"\/><\/figure>\n\n\n\n<p>\u5909\u6570\u3068\u30c7\u30fc\u30bf\u578b\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Scala\u306f\u9759\u7684\u306b\u578b\u4ed8\u3051\u3055\u308c\u305f\u8a00\u8a9e\u3067\u3042\u308a\u3001\u5404\u5909\u6570\u306b\u306f\u578b\u304c\u5fc5\u8981\u3067\u3042\u308a\u3001\u578b\u306f\u30b3\u30f3\u30d1\u30a4\u30eb\u6642\u306b\u6c7a\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 Scala \u306e\u5909\u6570\u3068\u30c7\u30fc\u30bf\u578b\u306b\u306f\u3001\u6b21\u306e\u7279\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u5909\u6570\u5ba3\u8a00: Scala \u3067\u306f\u3001\u5909\u6570\u306f\u30ad\u30fc\u30ef\u30fc\u30c9 var \u3068 val \u3092\u4f7f\u7528\u3057\u3066\u5ba3\u8a00\u3067\u304d\u3001var \u3067\u5ba3\u8a00\u3055\u308c\u305f\u5909\u6570\u306f\u5909\u66f4\u53ef\u80fd\u3067\u3042\u308a\u3001val \u3067\u5ba3\u8a00\u3055\u308c\u305f\u5909\u6570\u306f\u4e0d\u5909\u3067\u3059\u3002 \u4f8b: \u30b8\u30e3\u30d0\u30b3\u30d4\u30fc\u30b3\u30fc\u30c9<code>var x = 10 \/\/ \u58f0\u660e\u4e00\u4e2a\u53ef\u53d8\u53d8\u91cfx\uff0c\u521d\u59cb\u503c\u4e3a10 val y = \"hello\" \/\/ \u58f0\u660e\u4e00\u4e2a\u4e0d\u53ef\u53d8\u53d8\u91cfy\uff0c\u521d\u59cb\u503c\u4e3a\"hello\"<\/code><\/li>\n\n\n\n<li>\u30c7\u30fc\u30bf\u578b: Scala \u306f\u3001\u3055\u307e\u3056\u307e\u306a\u57fa\u672c\u30c7\u30fc\u30bf\u578b\u3068\u53c2\u7167\u30c7\u30fc\u30bf\u578b\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002 \u4e00\u822c\u7684\u306a\u57fa\u672c\u30c7\u30fc\u30bf\u578b\u306b\u306f\u6574\u6570\u3001\u6d6e\u52d5\u5c0f\u6570\u70b9\u6570\u3001\u30d6\u30fc\u30eb\u5024\u3001\u304a\u3088\u3073\u6587\u5b57\u304c\u542b\u307e\u308c\u3001\u53c2\u7167\u30c7\u30fc\u30bf\u578b\u306b\u306f\u6587\u5b57\u5217\u3068\u914d\u5217\u304c\u542b\u307e\u308c\u307e\u3059\u3002 \u4f8b:\u30b3\u30c8\u30ea\u30f3\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>val i: Int = 10 \/\/ \u58f0\u660e\u4e00\u4e2a\u6574\u578b\u53d8\u91cfi\uff0c\u521d\u59cb\u503c\u4e3a10 val d: Double = 3.14 \/\/ \u58f0\u660e\u4e00\u4e2a\u6d6e\u70b9\u578b\u53d8\u91cfd\uff0c\u521d\u59cb\u503c\u4e3a3.14 val b: Boolean = true \/\/ \u58f0\u660e\u4e00\u4e2a\u5e03\u5c14\u578b\u53d8\u91cfb\uff0c\u521d\u59cb\u503c\u4e3atrue val c: Char = 'A' \/\/ \u58f0\u660e\u4e00\u4e2a\u5b57\u7b26\u578b\u53d8\u91cfc\uff0c\u521d\u59cb\u503c\u4e3a'A' val s: String = \"hello\" \/\/ \u58f0\u660e\u4e00\u4e2a\u5b57\u7b26\u4e32\u53d8\u91cfs\uff0c\u521d\u59cb\u503c\u4e3a\"hello\" val arr: Array[Int] = Array(1, 2, 3, 4) \/\/ \u58f0\u660e\u4e00\u4e2a\u6574\u578b\u6570\u7ec4arr\uff0c\u5305\u542b4\u4e2a\u5143\u7d20<\/code><\/li>\n\n\n\n<li>\u578b\u306e\u63a8\u8ad6: Scala \u306f\u5909\u6570\u306e\u30c7\u30fc\u30bf\u578b\u3092\u81ea\u52d5\u7684\u306b\u63a8\u8ad6\u3057\u3001\u5909\u6570\u578b\u306e\u5ba3\u8a00\u3092\u7701\u7565\u3067\u304d\u307e\u3059\u3002 \u4f8b: \u30b8\u30e3\u30d0\u30b3\u30d4\u30fc\u30b3\u30fc\u30c9<code>var x = 10 \/\/ Scala\u4f1a\u81ea\u52a8\u63a8\u65adx\u7684\u7c7b\u578b\u4e3aInt val y = \"hello\" \/\/ Scala\u4f1a\u81ea\u52a8\u63a8\u65ady\u7684\u7c7b\u578b\u4e3aString<\/code><\/li>\n\n\n\n<li>\u578b\u5909\u63db: Scala \u306f\u578b\u5909\u63db\u3092\u81ea\u52d5\u7684\u306b\u884c\u3046\u3053\u3068\u3082\u3001\u30ad\u30e3\u30b9\u30c8\u3059\u308b\u3053\u3068\u306b\u3088\u3063\u3066\u884c\u3046\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002 \u4f8b:\u30b3\u30c8\u30ea\u30f3\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>val x: Int = 10 val d: Double = x \/\/ \u81ea\u52a8\u5c06\u6574\u578b\u8f6c\u6362\u4e3a\u6d6e\u70b9\u578b val y: Int = d.toInt \/\/ \u5c06\u6d6e\u70b9\u578b\u5f3a\u5236\u8f6c\u6362\u4e3a\u6574\u578b<\/code><\/li>\n<\/ol>\n\n\n\n<p>\u8981\u3059\u308b\u306b\u3001\u5909\u6570\u3068\u30c7\u30fc\u30bf\u578b\u306fScala\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u975e\u5e38\u306b\u57fa\u672c\u7684\u306a\u6982\u5ff5\u3067\u3042\u308a\u3001Scala\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u3088\u308a\u9069\u5207\u306b\u8a18\u8ff0\u3059\u308b\u306b\u306f\u3001\u57fa\u672c\u7684\u306a\u69cb\u6587\u3068\u4f7f\u7528\u6cd5\u3092\u7fd2\u5f97\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1144\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=64&amp;q=75\" alt=\"\u8ecd\u4ead\"\/><\/figure>\n\n\n\n<p>Scala\u5236\u5fa1\u69cb\u9020\u4f53\u306e\u6761\u4ef6\u6587\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Scala\u306e\u6761\u4ef6\u6587\u306f\u4ed6\u306e\u8a00\u8a9e\u3068\u4f3c\u3066\u304a\u308a\u3001if\u6587\u3068if&#8230; \u5b9f\u88c5\u3059\u308belse \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3002 Scala\u306f\u307e\u305f\u3001if\u306e\u3088\u3046\u306a\u3044\u304f\u3064\u304b\u306e\u4fbf\u5229\u306a\u69cb\u6587\u4e0a\u306e\u7cd6\u3092\u63d0\u4f9b\u3057\u307e\u3059&#8230; else \u5f0f\u3068\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u306b\u3088\u308a\u3001\u6761\u4ef6\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306e\u8a18\u8ff0\u304c\u3088\u308a\u7c21\u6f54\u3067\u67d4\u8edf\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>If \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8: if \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306f\u3001\u6761\u4ef6\u304c\u771f\u3067\u3042\u308b\u304b\u3069\u3046\u304b\u3092\u5224\u65ad\u3057\u3001\u6761\u4ef6\u304c\u771f\u3067\u3042\u308b\u5834\u5408\u306f\u3001\u3044\u304f\u3064\u304b\u306e\u64cd\u4f5c\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 if \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306e\u57fa\u672c\u7684\u306a\u69cb\u6587\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002scssCopy \u30b3\u30fc\u30c9 (\u6761\u4ef6\u306f\u30d6\u30fc\u30eb\u5f0f) \u3067\u3001true \u306e\u5834\u5408\u306f\u4e2d\u62ec\u5f27\u3067\u56f2\u307e\u308c\u305f\u30b3\u30fc\u30c9 \u30d6\u30ed\u30c3\u30af\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002<code>if (condition) { \/\/ \u5f53\u6761\u4ef6\u6210\u7acb\u65f6\u6267\u884c\u7684\u4ee3\u7801\u5757 }<\/code><\/li>\n\n\n\n<li>\u3082\u3057\u3002\u3002\u3002 else \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8: \u6b21\u306e\u5834\u5408&#8230; else \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306f\u3001\u6761\u4ef6\u304c\u771f\u3067\u3042\u308b\u5834\u5408\u3068\u305d\u3046\u3067\u306a\u3044\u5834\u5408\u306b\u7570\u306a\u308b\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 \u3082\u3057\u3002\u3002\u3002 else \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306e\u57fa\u672c\u7684\u306a\u69cb\u6587\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059: arduinoCopy \u30b3\u30fc\u30c9 \u3053\u3053\u3067\u3001\u6761\u4ef6\u306f\u30d6\u30fc\u30eb\u5f0f\u3067\u3042\u308a\u3001true \u306e\u5834\u5408\u3001if \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306e\u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\u304c\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002 false \u306e\u5834\u5408\u3001else \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306e\u30b3\u30fc\u30c9 \u30d6\u30ed\u30c3\u30af\u304c\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002<code>if (condition) { \/\/ \u5f53\u6761\u4ef6\u6210\u7acb\u65f6\u6267\u884c\u7684\u4ee3\u7801\u5757 } else { \/\/ \u5f53\u6761\u4ef6\u4e0d\u6210\u7acb\u65f6\u6267\u884c\u7684\u4ee3\u7801\u5757 }<\/code><\/li>\n\n\n\n<li>\u3082\u3057\u3002\u3002\u3002 else \u5f0f: if&#8230; else\u5f0f\u306f\u7c21\u6f54\u306a\u5834\u5408\u3067\u3059&#8230; else \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306e\u69cb\u6587\u4e0a\u306e\u7cd6\u5206\u3002\u5f0f\u306e\u5024\u3092\u8fd4\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u3082\u3057\u3002\u3002\u3002 else \u5f0f\u306e\u57fa\u672c\u7684\u306a\u69cb\u6587\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059: javaCopy \u30b3\u30fc\u30c9\u3067\u3001result \u306f\u6761\u4ef6\u306b\u5fdc\u3058\u3066\u5024\u304c\u5909\u5316\u3059\u308b\u5909\u6570\u3067\u3059\u3002 \u6761\u4ef6\u304c true \u306e\u5834\u5408\u306f\u3001if \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306e\u5024\u304c\u8fd4\u3055\u308c\u307e\u3059\u3002 \u6761\u4ef6\u304c\u771f\u3067\u306a\u3044\u5834\u5408\u306f\u3001else \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306e\u5024\u304c\u8fd4\u3055\u308c\u307e\u3059\u3002<code>val result = if (condition) { \/\/ \u5f53\u6761\u4ef6\u6210\u7acb\u65f6\u8fd4\u56de\u7684\u503c } else { \/\/ \u5f53\u6761\u4ef6\u4e0d\u6210\u7acb\u65f6\u8fd4\u56de\u7684\u503c }<\/code><\/li>\n\n\n\n<li>\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0:\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u306fScala\u306e\u3082\u3046\u4e00\u3064\u306e\u4fbf\u5229\u306a\u5236\u5fa1\u69cb\u9020\u3067\u3042\u308a\u3001\u3055\u307e\u3056\u307e\u306a\u6761\u4ef6\u306b\u57fa\u3065\u3044\u3066\u3055\u307e\u3056\u307e\u306a\u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\u3092\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002 \u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u306e\u57fa\u672c\u7684\u306a\u69cb\u6587\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059:javascript\u30b3\u30d4\u30fc\u30b3\u30fc\u30c9\u3001\u3053\u3053\u3067\u5024\u306f\u30de\u30c3\u30c1\u30f3\u30b0\u3059\u308b\u5024\u3001\u30d1\u30bf\u30fc\u30f31\u3001\u30d1\u30bf\u30fc\u30f32\u3001&#8230;\u3001\u30d1\u30bf\u30fc\u30f3N\u306f\u8907\u6570\u306e\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u3067\u3042\u308a\u3001\u5404\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u306f\u5024\u306b\u5bfe\u3057\u3066\u7570\u306a\u308b\u5224\u65ad\u3068\u64cd\u4f5c\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 value \u304c\u30d1\u30bf\u30fc\u30f3\u306b\u4e00\u81f4\u3059\u308b\u3068\u3001\u5bfe\u5fdc\u3059\u308b\u30b3\u30fc\u30c9 \u30d6\u30ed\u30c3\u30af\u304c\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002<code>value match { case pattern1 =&gt; \/\/ \u5f53value\u4e0epattern1\u5339\u914d\u65f6\u6267\u884c\u7684\u4ee3\u7801\u5757 case pattern2 =&gt; \/\/ \u5f53value\u4e0epattern2\u5339\u914d\u65f6\u6267\u884c\u7684\u4ee3\u7801\u5757 ... case patternN =&gt; \/\/ \u5f53value\u4e0epatternN\u5339\u914d\u65f6\u6267\u884c\u7684\u4ee3\u7801\u5757 }<\/code><\/li>\n<\/ol>\n\n\n\n<p>Scala\u3067\u306f\u3001if\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3001if&#8230; else \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3001\u6b21\u306e\u5834\u5408&#8230; else \u5f0f\u3084\u30d1\u30bf\u30fc\u30f3 \u30de\u30c3\u30c1\u30f3\u30b0\u306a\u3069\u306e\u6761\u4ef6\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306f\u3001\u5024\u3092\u8fd4\u3059\u3053\u3068\u304c\u3067\u304d\u308b\u5f0f\u3067\u3059\u3002 \u3053\u306e\u6a5f\u80fd\u306b\u3088\u308a\u3001Scala \u3067\u3044\u304f\u3064\u304b\u306e\u4e00\u822c\u7684\u306a\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30bf\u30b9\u30af\u3092\u7c21\u5358\u306b\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1144\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=64&amp;q=75\" alt=\"\u8ecd\u4ead\"\/><\/figure>\n\n\n\n<p>Scala\u5236\u5fa1\u69cb\u9020\u4f53\u306e\u30eb\u30fc\u30d7\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Scala\u306e\u30eb\u30fc\u30d7\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306f\u3001for\u30eb\u30fc\u30d7\u3001while\u30eb\u30fc\u30d7\u3001do&#8230; while\u30eb\u30fc\u30d7\u306a\u3069 Scala \u306b\u306f\u3001\u6d3e\u751f\u3084 foreach \u30e1\u30bd\u30c3\u30c9\u306a\u3069\u306e\u7279\u6b8a\u306a\u30eb\u30fc\u30d7\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3082\u3044\u304f\u3064\u304b\u7528\u610f\u3055\u308c\u3066\u304a\u308a\u3001\u30eb\u30fc\u30d7\u69cb\u9020\u306e\u8a18\u8ff0\u3092\u3088\u308a\u7c21\u6f54\u3067\u67d4\u8edf\u306b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>for \u30eb\u30fc\u30d7: for \u30eb\u30fc\u30d7\u306f\u3001\u64cd\u4f5c\u3092\u7279\u5b9a\u306e\u56de\u6570\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u30eb\u30fc\u30d7\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 \u30eb\u30fc\u30d7\u306e\u57fa\u672c\u7684\u306a\u69cb\u6587\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002 cssCopy \u30b3\u30fc\u30c9 \u3053\u3053\u3067\u3001i \u306f\u30eb\u30fc\u30d7\u672c\u4f53\u3067\u4f7f\u7528\u3067\u304d\u308b\u30eb\u30fc\u30d7\u5909\u6570\u3067\u3059\u3002 0 \u304b\u3089 n \u307e\u3067\u306f\u30010 \u304b\u3089\u59cb\u307e\u308a n-1 \u3067\u7d42\u308f\u308b i \u306e\u5024\u306e\u7bc4\u56f2\u3092\u8868\u3057\u307e\u3059\u3002<code>for (i &lt;- 0 until n) { \/\/ \u6267\u884c\u5faa\u73af\u4f53\u4e2d\u7684\u4ee3\u7801\u5757n\u6b21\uff0c\u6bcf\u6b21\u5faa\u73afi\u7684\u503c\u4ece0\u5230n-1 }<\/code><\/li>\n\n\n\n<li>While \u30eb\u30fc\u30d7: While \u30eb\u30fc\u30d7\u306f\u3001\u6761\u4ef6\u304c\u6210\u308a\u7acb\u3064\u5834\u5408\u306b\u64cd\u4f5c\u3092\u7e70\u308a\u8fd4\u3059\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 while \u30eb\u30fc\u30d7\u306e\u57fa\u672c\u7684\u306a\u69cb\u6587\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059: arduinoCopy \u30b3\u30fc\u30c9 \u3053\u3053\u3067\u3001condition \u306f\u3001\u6761\u4ef6\u304c\u4fdd\u6301\u3055\u308c\u3066\u3044\u308b\u9650\u308a\u3001\u30eb\u30fc\u30d7\u672c\u4f53\u5185\u306e\u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\u306e\u5b9f\u884c\u3092\u7e70\u308a\u8fd4\u3059\u30d6\u30fc\u30eb\u5f0f\u3067\u3059\u3002<code>while (condition) { \/\/ \u5f53\u6761\u4ef6\u6210\u7acb\u65f6\u6267\u884c\u5faa\u73af\u4f53\u4e2d\u7684\u4ee3\u7801\u5757 }<\/code><\/li>\n\n\n\n<li>\u3059\u308b\u3002\u3002\u3002 \u30eb\u30fc\u30d7\u4e2d:\u884c\u3046&#8230; while \u30eb\u30fc\u30d7\u306f\u3001\u30eb\u30fc\u30d7\u672c\u4f53\u5185\u306e\u30b3\u30fc\u30c9 \u30d6\u30ed\u30c3\u30af\u3092\u5c11\u306a\u304f\u3068\u3082 1 \u56de\u5b9f\u884c\u3057\u3001\u6761\u4ef6\u304c true \u304b\u3069\u3046\u304b\u306b\u57fa\u3065\u3044\u3066\u5b9f\u884c\u3092\u7d9a\u884c\u3059\u308b\u304b\u3069\u3046\u304b\u3092\u6c7a\u5b9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 \u3059\u308b\u3002\u3002\u3002 while \u30eb\u30fc\u30d7\u306e\u57fa\u672c\u7684\u306a\u69cb\u6587\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059: arduinoCopy \u30b3\u30fc\u30c9 \u3053\u3053\u3067\u3001condition \u306f\u3001\u30eb\u30fc\u30d7\u672c\u4f53\u306e\u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\u304c\u5b9f\u884c\u3055\u308c\u305f\u5f8c\u306b\u306e\u307f\u6761\u4ef6\u304c\u771f\u3067\u3042\u308b\u304b\u3069\u3046\u304b\u3092\u30c1\u30a7\u30c3\u30af\u3059\u308b\u30d6\u30fc\u30eb\u5f0f\u3067\u3059\u3002<code>do { \/\/ \u6267\u884c\u5faa\u73af\u4f53\u4e2d\u7684\u4ee3\u7801\u5757 } while (condition)<\/code><\/li>\n\n\n\n<li>\u6d3e\u751f\u306e\u5834\u5408:\u6d3e\u751f\u306b\u306f\u3001\u30eb\u30fc\u30d7\u5185\u3067\u65b0\u3057\u3044\u30bb\u30c3\u30c8\u307e\u305f\u306f\u30b7\u30fc\u30b1\u30f3\u30b9\u3092\u751f\u6210\u3059\u308b\u4fbf\u5229\u306a\u69cb\u6587\u4e0a\u306e\u7cd6\u304c\u3042\u308a\u307e\u3059\u3002 for \u5c0e\u51fa\u306e\u57fa\u672c\u7684\u306a\u69cb\u6587\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059: cssCopy \u30b3\u30fc\u30c9\u3001\u3053\u3053\u3067 i \u306f\u30eb\u30fc\u30d7\u5909\u6570\u30010 \u304b\u3089 n \u306f i \u306e\u5024\u306e\u7bc4\u56f2\u3092\u8868\u3057\u3001i % 2 == 0 \u306e\u5834\u5408\u306f\u6761\u4ef6\u3092\u8868\u3057\u3001yield i * 2 \u306f\u65b0\u3057\u3044\u30bb\u30c3\u30c8\u306e\u751f\u6210\u3092\u8868\u3057\u307e\u3059\u3002<code>val result = for (i &lt;- 0 until n if i % 2 == 0) yield i * 2<\/code><\/li>\n\n\n\n<li>Foreach \u30e1\u30bd\u30c3\u30c9: foreach \u30e1\u30bd\u30c3\u30c9\u306f\u3001\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u5185\u306e\u3059\u3079\u3066\u306e\u8981\u7d20\u306b\u5bfe\u3057\u3066\u540c\u3058\u64cd\u4f5c\u3092\u30eb\u30fc\u30d7\u3057\u3066\u5b9f\u884c\u3059\u308b\u305f\u3081\u306e\u3001\u3088\u308a\u7c21\u6f54\u3067\u67d4\u8edf\u306a\u65b9\u6cd5\u3067\u3059\u3002 foreach \u30e1\u30bd\u30c3\u30c9\u306e\u57fa\u672c\u7684\u306a\u69cb\u6587\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002scssCopy \u30b3\u30fc\u30c9 (list \u306f\u30ea\u30b9\u30c8)\u3001foreach \u30e1\u30bd\u30c3\u30c9\u306f\u30ea\u30b9\u30c8\u5185\u306e\u5404\u8981\u7d20\u306b\u5bfe\u3057\u3066\u4e2d\u304b\u3063\u3053\u3067\u56f2\u307e\u308c\u305f\u30b3\u30fc\u30c9 \u30d6\u30ed\u30c3\u30af\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002<code>val list = List(1, 2, 3, 4) list.foreach { x =&gt; \/\/ \u5bf9\u5217\u8868\u4e2d\u7684\u6bcf\u4e2a\u5143\u7d20\u6267\u884c\u76f8\u540c\u7684\u64cd\u4f5c }<\/code><\/li>\n<\/ol>\n\n\n\n<p>Scala\u3067\u306f\u3001for\u30eb\u30fc\u30d7\u3001while\u30eb\u30fc\u30d7\u3001\u304a\u3088\u3073do&#8230; while \u30eb\u30fc\u30d7\u306a\u3069\u306e\u30eb\u30fc\u30d7 \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306e\u4f7f\u7528\u65b9\u6cd5\u306f\u3001\u4ed6\u306e\u8a00\u8a9e\u3068\u540c\u69d8\u3067\u3059\u3002 \u3060\u304c\u3057\u304b\u3057<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1144\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=64&amp;q=75\" alt=\"\u8ecd\u4ead\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Scala\u3067\u306f\u3001for\u30eb\u30fc\u30d7\u3001while\u30eb\u30fc\u30d7\u3001\u304a\u3088\u3073do&#8230; while \u30eb\u30fc\u30d7\u306a\u3069\u306e\u30eb\u30fc\u30d7 \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306e\u4f7f\u7528\u65b9\u6cd5\u306f\u3001\u4ed6\u306e\u8a00\u8a9e\u3068\u540c\u69d8\u3067\u3059\u3002 \u3057\u304b\u3057\u3001Scala\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u30eb\u30fc\u30d7\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306f\u5024\u3092\u8fd4\u3059\u3053\u3068\u304c\u3067\u304d\u308b\u5f0f\u3067\u3082\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u305f\u3068\u3048\u3070\u3001for \u30eb\u30fc\u30d7\u306f\u3001yield \u30ad\u30fc\u30ef\u30fc\u30c9 (for \u6d3e\u751f\u3068\u547c\u3070\u308c\u308b\u65b9\u6cd5) \u3092\u4f7f\u7528\u3057\u3066\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3092\u8fd4\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u4f8b\u3048\u3070\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">cssCopy code<code>val result = for (i &lt;- 0 until 10) yield i * 2\n<\/code><\/pre>\n\n\n\n<p>\u3053\u306e for \u30eb\u30fc\u30d7\u306f\u30010 \u304b\u3089 9 \u307e\u3067\u306e\u6574\u6570\u306b 2 \u3092\u4e57\u7b97\u3057\u3001\u7d50\u679c\u3092\u542b\u3080\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3092\u8fd4\u3057\u307e\u3059\u3002 \u3053\u306e\u30eb\u30fc\u30d7\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001\u7d50\u679c\u306e\u5024\u306f Vector(0, 2, 4, 6, 8, 10, 12, 14, 16, 18) \u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u540c\u69d8\u306b\u3001while\u30eb\u30fc\u30d7\u3057\u3066\u5b9f\u884c\u3057\u307e\u3059&#8230; While \u30eb\u30fc\u30d7\u306f\u5024\u3092\u8fd4\u3059\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002 \u4f8b\u3048\u3070\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">cssCopy code<code>val result = {\n  var i = 0\n  var sum = 0\n  while (i &lt; 10) {\n    sum += i\n    i += 1\n  }\n  sum\n}\n<\/code><\/pre>\n\n\n\n<p>\u3053\u306ewhile\u30eb\u30fc\u30d7\u306f\u30010\u304b\u30899\u307e\u3067\u306e\u6574\u6570\u3092\u5408\u8a08\u3057\u3001\u7d2f\u7a4d\u7d50\u679c\u3092\u8fd4\u3057\u307e\u3059\u3002 \u3053\u306e\u30eb\u30fc\u30d7\u306e\u5b9f\u884c\u5f8c\u3001\u7d50\u679c\u306e\u5024\u306f 45 \u3067\u3059\u3002<\/p>\n\n\n\n<p>\u8981\u7d04\u3059\u308b\u3068\u3001Scala\u306e\u30eb\u30fc\u30d7\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306f\u4ed6\u306e\u8a00\u8a9e\u3068\u4f3c\u3066\u3044\u307e\u3059\u304c\u3001\u72ec\u81ea\u306e\u7279\u6027\u3082\u3042\u308a\u307e\u3059\u3002 Scala \u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u3088\u308a\u9069\u5207\u306b\u8a18\u8ff0\u3059\u308b\u306b\u306f\u3001Scala \u306e\u57fa\u672c\u7684\u306a\u69cb\u6587\u3068\u3055\u307e\u3056\u307e\u306a\u30eb\u30fc\u30d7\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306e\u4f7f\u7528\u6cd5\u3092\u7fd2\u5f97\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1144\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=64&amp;q=75\" alt=\"\u8ecd\u4ead\"\/><\/figure>\n\n\n\n<p>Scala\u306e\u95a2\u6570\u3068\u30e1\u30bd\u30c3\u30c9\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Scala\u306e\u95a2\u6570\u3068\u30e1\u30bd\u30c3\u30c9\u306f\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306b\u304a\u3044\u3066\u975e\u5e38\u306b\u91cd\u8981\u306a\u6982\u5ff5\u3067\u3042\u308a\u3001\u30b3\u30fc\u30c9\u3092\u3088\u308a\u30e2\u30b8\u30e5\u30fc\u30eb\u5316\u3057\u3066\u4fdd\u5b88\u3057\u3084\u3059\u304f\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u518d\u5229\u7528\u53ef\u80fd\u306a\u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\u3092\u30ab\u30d7\u30bb\u30eb\u5316\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 \u95a2\u6570\u3068\u30e1\u30bd\u30c3\u30c9\u306f\u591a\u5c11\u4f3c\u3066\u3044\u307e\u3059\u304c\u3001Scala \u306b\u306f\u3044\u304f\u3064\u304b\u306e\u91cd\u8981\u306a\u9055\u3044\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u95a2\u6570: \u95a2\u6570\u306f\u3001\u3044\u304f\u3064\u304b\u306e\u5165\u529b\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u53d7\u3051\u53d6\u308a\u3001\u7d50\u679c\u3092\u8fd4\u3059\u72ec\u7acb\u3057\u305f\u30b3\u30fc\u30c9 \u30d6\u30ed\u30c3\u30af\u3067\u3059\u3002 \u95a2\u6570\u306e\u5b9a\u7fa9\u3067\u306f\u30ad\u30fc\u30ef\u30fc\u30c9 def \u3092\u4f7f\u7528\u3057\u3001\u95a2\u6570\u306e\u540d\u524d\u3068\u5f15\u6570\u30ea\u30b9\u30c8\u306f def \u30ad\u30fc\u30ef\u30fc\u30c9\u306e\u5f8c\u306b\u7d9a\u304f\u5fc5\u8981\u304c\u3042\u308a\u3001\u95a2\u6570\u672c\u4f53\u306f\u4e2d\u62ec\u5f27\u3067\u56f2\u307e\u308c\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u4e0a\u8a18\u306e sqlCopy \u30b3\u30fc\u30c9\u3067\u306f\u30012 \u3064\u306e Int \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc x \u3068 y \u3092\u53d7\u3051\u53d6\u308a\u3001\u305d\u308c\u3089\u306e\u5408\u8a08\u3092\u8fd4\u3059 add \u3068\u3044\u3046\u95a2\u6570\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002 \u95a2\u6570\u672c\u4f53\u306e\u5f0f x + y \u306f\u3001\u95a2\u6570\u306e\u623b\u308a\u5024\u3067\u3059\u3002<code>def add(x: Int, y: Int): Int = { x + y }<\/code><\/li>\n\n\n\n<li>\u30e1\u30bd\u30c3\u30c9: \u30e1\u30bd\u30c3\u30c9\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u5bfe\u3057\u3066\u4f55\u3089\u304b\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3059\u308b\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u95a2\u9023\u4ed8\u3051\u3089\u308c\u305f\u95a2\u6570\u3067\u3059\u3002 \u30e1\u30bd\u30c3\u30c9\u306f\u95a2\u6570\u306e\u3088\u3046\u306b\u5b9a\u7fa9\u3055\u308c\u307e\u3059\u304c\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u5185\u3067\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u4f8b: kotlin\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b \u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001int x \u578b\u3068 y \u578b\u306e 2 \u3064\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u53d7\u3051\u53d6\u308a\u3001\u305d\u308c\u3089\u306e\u5408\u8a08\u3092\u8fd4\u3059 add \u3068\u3044\u3046\u540d\u524d\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066 Calculator \u3068\u3044\u3046\u30af\u30e9\u30b9\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002<code>class Calculator { def add(x: Int, y: Int): Int = { x + y } }<\/code><\/li>\n\n\n\n<li>\u95a2\u6570\u3068\u30e1\u30bd\u30c3\u30c9\u306e\u547c\u3073\u51fa\u3057: \u95a2\u6570\u3068\u30e1\u30bd\u30c3\u30c9\u306e\u4e21\u65b9\u304c\u3001\u95a2\u6570\u540d\u3068\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc \u30ea\u30b9\u30c8\u3092\u4f7f\u7528\u3057\u3066\u547c\u3073\u51fa\u3055\u308c\u307e\u3059\u3002 \u95a2\u6570\u304a\u3088\u3073\u30e1\u30bd\u30c3\u30c9\u3078\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306f\u3001\u5024\u307e\u305f\u306f\u53c2\u7167\u306b\u3088\u3063\u3066\u6e21\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u4f8b: scssCopy \u30b3\u30fc\u30c9 \u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u95a2\u6570 add \u304c\u6700\u521d\u306b\u547c\u3073\u51fa\u3055\u308c\u3001\u5f15\u6570\u3068\u3057\u3066 1 \u3068 2 \u304c\u6e21\u3055\u308c\u3001\u7d50\u679c 3 \u304c\u8fd4\u3055\u308c\u307e\u3059\u3002 \u6b21\u306b\u3001\u96fb\u5353\u30aa\u30d6\u30b8\u30a7\u30af\u30c8 c \u3092\u4f5c\u6210\u3057\u3001\u305d\u306e add \u30e1\u30bd\u30c3\u30c9\u3092\u547c\u3073\u51fa\u3057\u3001\u5f15\u6570\u3068\u3057\u3066 3 \u3068 4 \u3092\u6e21\u3057\u3066\u3001\u7d50\u679c 7 \u3092\u8fd4\u3057\u307e\u3059\u3002<code>val result1 = add(1, 2) \/\/ \u8c03\u7528add\u51fd\u6570\uff0c\u5c061\u548c2\u4f20\u9012\u7ed9x\u548cy\u53c2\u6570\uff0c\u8fd4\u56de3 val c = new Calculator() val result2 = c.add(3, 4) \/\/ \u8c03\u7528Calculator\u5bf9\u8c61c\u4e0a\u7684add\u65b9\u6cd5\uff0c\u5c063\u548c4\u4f20\u9012\u7ed9x\u548cy\u53c2\u6570\uff0c\u8fd4\u56de7<\/code><\/li>\n\n\n\n<li>\u95a2\u6570\u578b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0:Scala\u306f\u95a2\u6570\u578b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u8a00\u8a9e\u3067\u3042\u308a\u3001\u9ad8\u968e\u95a2\u6570\u3001\u7121\u540d\u95a2\u6570\u3001\u30af\u30ed\u30fc\u30b8\u30e3\u306a\u3069\u306e\u6a5f\u80fd\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002 \u9ad8\u968e\u95a2\u6570\u306f\u30011 \u3064\u4ee5\u4e0a\u306e\u95a2\u6570\u3092\u5f15\u6570\u3068\u3057\u3066\u53d7\u3051\u5165\u308c\u308b\u304b\u3001\u7d50\u679c\u3068\u3057\u3066\u95a2\u6570\u3092\u8fd4\u3059\u95a2\u6570\u3067\u3059\u3002 \u7121\u540d\u95a2\u6570\u306f\u3001\u540d\u524d\u3092\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u306a\u3044\u95a2\u6570\u3067\u3042\u308a\u3001\u5fc5\u8981\u306a\u3068\u304d\u306b\u95a2\u6570\u3092\u76f4\u63a5\u5b9a\u7fa9\u3059\u308b\u305f\u3081\u306b\u3088\u304f\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 \u30af\u30ed\u30fc\u30b8\u30e3\u306f\u3001\u95a2\u6570\u3068\u305d\u306e\u53c2\u7167\u74b0\u5883\u306e\u7d44\u307f\u5408\u308f\u305b\u306e\u7d50\u679c\u3067\u3042\u308a\u3001\u95a2\u6570\u5916\u306e\u95a2\u6570\u5185\u306e\u5909\u6570\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u53ef\u80fd\u306b\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u8981\u3059\u308b\u306b\u3001Scala\u306e\u95a2\u6570\u3068\u30e1\u30bd\u30c3\u30c9\u306f\u91cd\u8981\u306a\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u6982\u5ff5\u3067\u3042\u308a\u3001Scala\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u3088\u308a\u9069\u5207\u306b\u8a18\u8ff0\u3059\u308b\u306b\u306f\u3001\u57fa\u672c\u7684\u306a\u69cb\u6587\u3068\u4f7f\u7528\u6cd5\u3092\u7fd2\u5f97\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 Scala \u306e\u95a2\u6570\u578b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u6a5f\u80fd\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u3082\u6709\u76ca\u3067\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1144\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=64&amp;q=75\" alt=\"\u8ecd\u4ead\"\/><\/figure>\n\n\n\n<p>Scala\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u57fa\u672c\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Scala \u306f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u8a00\u8a9e\u3067\u3042\u308a\u3001\u30af\u30e9\u30b9\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3001\u7d99\u627f\u3001\u30dd\u30ea\u30e2\u30fc\u30d5\u30a3\u30ba\u30e0\u3001\u30ab\u30d7\u30bb\u30eb\u5316\u306a\u3069\u3001\u8c4a\u5bcc\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u6a5f\u80fd\u3092\u5099\u3048\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30af\u30e9\u30b9\u3068\u30aa\u30d6\u30b8\u30a7\u30af\u30c8: \u30af\u30e9\u30b9\u306f\u3001\u30c7\u30fc\u30bf\u3068\u30e1\u30bd\u30c3\u30c9\u306e\u5b9a\u7fa9\u3092\u542b\u3080\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u5b9a\u7fa9\u3059\u308b\u305f\u3081\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3067\u3059\u3002 Scala \u306e\u30af\u30e9\u30b9\u5b9a\u7fa9\u306f\u30ad\u30fc\u30ef\u30fc\u30c9 class \u3092\u4f7f\u7528\u3057\u3001\u30af\u30e9\u30b9\u540d\u3068\u30af\u30e9\u30b9\u672c\u4f53\u306f\u4e2d\u62ec\u5f27\u3067\u56f2\u307e\u308c\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u4e0a\u8a18\u306e kotlinCopy \u30b3\u30fc\u30c9\u3067\u306f\u3001\u540d\u524d\u3068\u5e74\u9f62\u306e 2 \u3064\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3068 speak \u3068\u3044\u3046\u30e1\u30bd\u30c3\u30c9\u3092\u542b\u3080 Person \u3068\u3044\u3046\u30af\u30e9\u30b9\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f\u3001\u30af\u30e9\u30b9\u306e\u3059\u3079\u3066\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u3068\u30e1\u30bd\u30c3\u30c9\u3092\u6301\u3064\u30af\u30e9\u30b9\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3067\u3059\u3002 Scala \u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u5b9a\u7fa9\u3067\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u540d\u3068\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u672c\u4f53\u3092\u4e2d\u62ec\u5f27\u3067\u56f2\u3093\u3060\u30ad\u30fc\u30ef\u30fc\u30c9 object \u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 \u4f8b: less\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b \u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001main \u3068\u3044\u3046\u540d\u524d\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u5b9a\u7fa9\u3057\u3001p \u3068\u3044\u3046\u540d\u524d\u306e Person \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u3001\u305d\u306e speak \u30e1\u30bd\u30c3\u30c9\u3092\u547c\u3073\u51fa\u3057\u307e\u3059\u3002<code>class Person(name: String, age: Int) { def speak(): Unit = { println(s\"My name is $name and I'm $age years old.\") } }&nbsp;<\/code><code>object Main extends App { val p = new Person(\"Tom\", 20) p.speak() }<\/code><\/li>\n\n\n\n<li>\u7d99\u627f\u3068\u30dd\u30ea\u30e2\u30fc\u30d5\u30a3\u30ba\u30e0: \u7d99\u627f\u306f\u3001\u5b50\u30af\u30e9\u30b9\u304c\u89aa\u30af\u30e9\u30b9\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u3068\u30e1\u30bd\u30c3\u30c9\u3092\u7d99\u627f\u3057\u3001\u305d\u308c\u3089\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u65e2\u5b58\u306e\u30af\u30e9\u30b9\u3092\u62e1\u5f35\u3059\u308b\u305f\u3081\u306e\u30e1\u30ab\u30cb\u30ba\u30e0\u3067\u3059\u3002 Scala \u306e\u7d99\u627f\u3067\u306f\u30ad\u30fc\u30ef\u30fc\u30c9 extends \u304c\u4f7f\u7528\u3055\u308c\u3001\u30b5\u30d6\u30af\u30e9\u30b9\u306f\u89aa\u30af\u30e9\u30b9\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u3066\u30dd\u30ea\u30e2\u30fc\u30d5\u30a3\u30ba\u30e0\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002 \u4f8b: kotlin\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b \u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u306f\u3001Person \u30af\u30e9\u30b9\u3092\u7d99\u627f\u3057\u3001\u89aa\u30af\u30e9\u30b9\u306e sspeak \u30e1\u30bd\u30c3\u30c9\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3059\u308b Student \u3068\u3044\u3046\u540d\u524d\u306e\u30af\u30e9\u30b9\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002<code>class Student(name: String, age: Int, id: String) extends Person(name, age) { override def speak(): Unit = { println(s\"My name is $name, I'm $age years old and my student ID is $id.\") } }<\/code><\/li>\n\n\n\n<li>\u30ab\u30d7\u30bb\u30eb\u5316: \u30ab\u30d7\u30bb\u30eb\u5316\u306f\u3001\u30af\u30e9\u30b9\u5185\u306e\u30c7\u30fc\u30bf\u3068\u30e1\u30bd\u30c3\u30c9\u3092\u96a0\u3059\u305f\u3081\u306e\u30e1\u30ab\u30cb\u30ba\u30e0\u3067\u3042\u308a\u3001\u30c7\u30fc\u30bf\u304c\u5916\u90e8\u304b\u3089\u76f4\u63a5\u30a2\u30af\u30bb\u30b9\u304a\u3088\u3073\u5909\u66f4\u3055\u308c\u308b\u306e\u3092\u9632\u304e\u307e\u3059\u3002 Scala \u306e\u30ab\u30d7\u30bb\u30eb\u5316\u3067\u306f\u3001\u30ad\u30fc\u30ef\u30fc\u30c9 private \u3068 protected \u304c\u4f7f\u7528\u3055\u308c\u3001\u30c7\u30fc\u30bf\u3068\u30e1\u30bd\u30c3\u30c9\u306e\u53ef\u8996\u6027\u3068\u30a2\u30af\u30bb\u30b9\u6027\u304c\u5236\u9650\u3055\u308c\u307e\u3059\u3002 \u4f8b: kotlin\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b \u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u306f\u3001\u540d\u524d\u3068\u5e74\u9f62\u306e\u5c5e\u6027\u304c\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u3068\u3057\u3066\u5ba3\u8a00\u3055\u308c\u3001\u30af\u30e9\u30b9\u5185\u3067\u306e\u307f\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b Person \u3068\u3044\u3046\u540d\u524d\u306e\u30af\u30e9\u30b9\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002<code>class Person(private val name: String, private val age: Int) { def speak(): Unit = { println(s\"My name is $name and I'm $age years old.\") } }<\/code><\/li>\n<\/ol>\n\n\n\n<p>\u8981\u7d04\u3059\u308b\u3068\u3001Scala\u306f\u3001\u30af\u30e9\u30b9\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3001\u7d99\u627f\u3001\u30dd\u30ea\u30e2\u30fc\u30d5\u30a3\u30ba\u30e0\u3001\u30ab\u30d7\u30bb\u30eb\u5316\u306a\u3069\u306e\u91cd\u8981\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u6a5f\u80fd\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u5f37\u529b\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u3059\u3002 \u512a\u308c\u305f Scala \u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u4f5c\u6210\u3059\u308b\u306b\u306f\u3001Scala \u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u57fa\u790e\u3092\u5b8c\u5168\u306b\u7406\u89e3\u3057\u3001\u305d\u308c\u3089\u3092\u4f7f\u7528\u3057\u3066\u8907\u96d1\u306a\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u30b7\u30b9\u30c6\u30e0\u3092\u69cb\u7bc9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1144\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=64&amp;q=75\" alt=\"\u8ecd\u4ead\"\/><\/figure>\n\n\n\n<p>Scala\u306e\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Scala \u306e\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u3001\u914d\u5217\u3001\u30ea\u30b9\u30c8\u3001\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3001\u30de\u30c3\u30d7\u3001\u30bf\u30d7\u30eb\u306a\u3069\u3001\u8c4a\u5bcc\u306a\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u30bb\u30c3\u30c8\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306f\u3001\u30c7\u30fc\u30bf\u51e6\u7406\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5b9f\u88c5\u3001\u4e26\u884c\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 \u30bf\u30b9\u30af\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>Scala \u306e\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u3001\u53ef\u5909\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3068\u4e0d\u5909\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u306e 2 \u3064\u306e\u30bf\u30a4\u30d7\u306b\u5206\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u4e0d\u5909\u30b3\u30ec\u30af\u30b7\u30e7\u30f3: \u4e0d\u5909\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u306f\u3001\u4e00\u5ea6\u4f5c\u6210\u3059\u308b\u3068\u5909\u66f4\u3067\u304d\u306a\u3044\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3067\u3042\u308a\u3001\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u5185\u306e\u8981\u7d20\u3092\u64cd\u4f5c\u3059\u308b\u305f\u3081\u306e\u8c4a\u5bcc\u306a\u65b9\u6cd5\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 Scala \u306e\u4e0d\u5909\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u306b\u306f\u3001\u30ea\u30b9\u30c8\u3001\u30d9\u30af\u30c8\u30eb\u3001\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3001\u30de\u30c3\u30d7\u306a\u3069\u304c\u3042\u308a\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001kotlinCopy \u30b3\u30fc\u30c9\u306e\u4e0d\u5909\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u306f\u3001\u30b9\u30ec\u30c3\u30c9 \u30bb\u30fc\u30d5\u3068\u4e0d\u5909\u6027\u3092\u7279\u5fb4\u3068\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9\u74b0\u5883\u3067\u306e\u4f7f\u7528\u306b\u6700\u9069\u3067\u3059\u3002<code>val list = List(1, 2, 3, 4, 5) \/\/ \u521b\u5efa\u4e00\u4e2a\u4e0d\u53ef\u53d8\u7684\u5217\u8868 val set = Set(\"apple\", \"banana\") \/\/ \u521b\u5efa\u4e00\u4e2a\u4e0d\u53ef\u53d8\u7684\u96c6\u5408 val map = Map(1 -&gt; \"one\", 2 -&gt; \"two\") \/\/ \u521b\u5efa\u4e00\u4e2a\u4e0d\u53ef\u53d8\u7684\u6620\u5c04<\/code><\/li>\n\n\n\n<li>\u63ee\u767a\u6027\u30b3\u30ec\u30af\u30b7\u30e7\u30f3: \u63ee\u767a\u6027\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u306f\u3001\u5b9f\u884c\u6642\u306b\u8ffd\u52a0\u3001\u524a\u9664\u3001\u304a\u3088\u3073\u5909\u66f4\u3067\u304d\u308b\u8981\u7d20\u306e\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3067\u3059\u3002 Scala \u306e\u5909\u6570\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u306b\u306f\u3001\u914d\u5217\u3001\u30ea\u30b9\u30c8\u3001\u30d9\u30af\u30c8\u30eb\u3001\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3001\u30de\u30c3\u30d7\u306a\u3069\u304c\u3042\u308a\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001arduinoCopy \u30b3\u30fc\u30c9\u306e\u5909\u66f4\u53ef\u80fd\u306a\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u306f\u3001\u67d4\u8edf\u6027\u3068\u53ef\u5909\u6027\u306b\u3088\u3063\u3066\u7279\u5fb4\u4ed8\u3051\u3089\u308c\u308b\u305f\u3081\u3001\u983b\u7e41\u306b\u5909\u66f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u30b7\u30ca\u30ea\u30aa\u306b\u6700\u9069\u3067\u3059\u3002<code>val buffer = collection.mutable.ListBuffer(1, 2, 3) \/\/ \u521b\u5efa\u4e00\u4e2a\u53ef\u53d8\u7684\u5217\u8868 val array = collection.mutable.ArrayBuffer(\"apple\", \"banana\") \/\/ \u521b\u5efa\u4e00\u4e2a\u53ef\u53d8\u7684\u6570\u7ec4 val map = collection.mutable.Map(1 -&gt; \"one\", 2 -&gt; \"two\") \/\/ \u521b\u5efa\u4e00\u4e2a\u53ef\u53d8\u7684\u6620\u5c04<\/code><\/li>\n<\/ol>\n\n\n\n<p>Scala \u306e\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306b\u306f\u3001\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3092\u7c21\u5358\u306b\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3001\u5909\u63db\u3001\u4e26\u3079\u66ff\u3048\u3001\u7d50\u5408\u3059\u308b\u305f\u3081\u306e\u8c4a\u5bcc\u306a\u6f14\u7b97\u5b50\u3068\u30e1\u30bd\u30c3\u30c9\u3082\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u4f8b\u3048\u3070\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">scssCopy code<code>val list = List(1, 2, 3, 4, 5)\nval result = list.filter(_ % 2 == 0).map(_ * 2).sortBy(-_).mkString(\", \")\nprintln(result)\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u30d5\u30a3\u30eb\u30bf\u30fc\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u5076\u6570\u3092\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3057\u3001map\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u7d50\u679c\u30922\u3067\u4e57\u7b97\u3057\u3001sortBy\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u964d\u9806\u306b\u4e26\u3079\u66ff\u3048\u3001\u6700\u5f8c\u306bmkString\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u7d50\u679c\u3092\u6587\u5b57\u5217\u51fa\u529b\u306b\u5909\u63db\u3057\u307e\u3059\u3002 \u51fa\u529b\u306f &#8220;8, 4, 2&#8221; \u3067\u3059\u3002<\/p>\n\n\n\n<p>\u8981\u7d04\u3059\u308b\u3068\u3001Scala\u306e\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306fScala\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u91cd\u8981\u306a\u90e8\u5206\u3067\u3042\u308a\u3001\u8c4a\u5bcc\u306a\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u63d0\u4f9b\u3057\u3001\u95a2\u6570\u578b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30b9\u30bf\u30a4\u30eb\u306e\u64cd\u4f5c\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002 \u52b9\u7387\u7684\u3067\u8aad\u307f\u3084\u3059\u3044Scala\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u66f8\u304f\u306b\u306f\u3001Scala\u306e\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u5b8c\u5168\u306b\u7fd2\u5f97\u3057\u3001\u305d\u308c\u3089\u3092\u67d4\u8edf\u306b\u4f7f\u7528\u3057\u3066\u3055\u307e\u3056\u307e\u306a\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30bf\u30b9\u30af\u3092\u89e3\u6c7a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1144\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=64&amp;q=75\" alt=\"\u8ecd\u4ead\"\/><\/figure>\n\n\n\n<p>\u30b9\u30ab\u30e9\u306e\u7279\u5fb4(\u5f62\u8cea)\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u6559\u3048\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Scala \u306e\u7279\u5fb4\u306f\u3001Java \u306e\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306b\u4f3c\u3066\u3044\u307e\u3059\u304c\u3001\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3088\u308a\u3082\u5f37\u529b\u3067\u67d4\u8edf\u306a\u30b3\u30fc\u30c9\u518d\u5229\u7528\u30e1\u30ab\u30cb\u30ba\u30e0\u3067\u3059\u3002 \u7279\u6027\u306f\u3001\u62bd\u8c61\u30e1\u30bd\u30c3\u30c9\u3001\u5177\u8c61\u30e1\u30bd\u30c3\u30c9\u3001\u30d5\u30a3\u30fc\u30eb\u30c9\u3001\u304a\u3088\u3073\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u30fc\u3092\u5b9a\u7fa9\u3067\u304d\u3001\u30af\u30e9\u30b9\u3068\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u3088\u3063\u3066\u6df7\u5408\u3057\u3066\u52d5\u4f5c\u3092\u62e1\u5f35\u3067\u304d\u307e\u3059\u3002 Scala\u306e\u7279\u6027\u306f\u591a\u91cd\u7d99\u627f\u306e\u57fa\u790e\u3067\u3042\u308a\u3001\u30af\u30e9\u30b9\u3068\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u8907\u6570\u306e\u7279\u6027\u3092\u7d99\u627f\u3057\u3001\u7279\u6027\u5185\u306e\u30e1\u30bd\u30c3\u30c9\u3068\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>Scala\u306e\u7279\u7570\u6027\u306e\u3044\u304f\u3064\u304b\u306e\u91cd\u8981\u306a\u6a5f\u80fd\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u7279\u6027\u306e\u5b9a\u7fa9: \u7279\u6027\u306e\u5b9a\u7fa9\u3067\u306f\u3001\u7279\u6027\u540d\u3068\u7279\u6027\u672c\u4f53\u304c\u4e2d\u62ec\u5f27\u3067\u56f2\u307e\u308c\u3066\u3044\u308b\u30ad\u30fc\u30ef\u30fc\u30c9\u7279\u6027\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001 kotlinCopy \u30b3\u30fc\u30c9 \u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u306f\u3001\u62bd\u8c61\u30e1\u30bd\u30c3\u30c9\u30ed\u30b0\u3092\u542b\u3080 Logger \u3068\u547c\u3070\u308c\u308b\u7279\u6027\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002<code>trait Logger { def log(message: String): Unit }<\/code><\/li>\n\n\n\n<li>\u7279\u6027\u3092\u5b9f\u88c5\u3059\u308b: \u30af\u30e9\u30b9\u3068\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f\u3001extends \u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u4f7f\u7528\u3057\u3066\u7279\u6027\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u4e0a\u8a18\u306earduinoCopy\u30b3\u30fc\u30c9\u306f\u3001\u30ed\u30ac\u30fc\u30c8\u30ec\u30a4\u30c8\u3092\u5b9f\u88c5\u3057\u3001\u30ed\u30b0\u30e1\u30bd\u30c3\u30c9\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3059\u308b\u30b3\u30f3\u30bd\u30fc\u30eb\u30ed\u30ac\u30fc\u3068\u3044\u3046\u30af\u30e9\u30b9\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002<code>class ConsoleLogger extends Logger { def log(message: String): Unit = { println(message) } }<\/code><\/li>\n\n\n\n<li>\u6df7\u5408\u7279\u6027: \u30af\u30e9\u30b9\u3068\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f\u3001\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u4f7f\u7528\u3057\u3066 1 \u3064\u4ee5\u4e0a\u306e\u7279\u6027\u3068\u6df7\u5408\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u4e0a\u8a18\u306earduinoCopy\u30b3\u30fc\u30c9\u306f\u3001UserDAO\u3068Logger\u306e\u7279\u6027\u3092\u7d44\u307f\u5408\u308f\u305b\u3066save\u30e1\u30bd\u30c3\u30c9\u3092\u5b9f\u88c5\u3059\u308bUserService\u3068\u3044\u3046\u30af\u30e9\u30b9\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002<code>class UserService extends UserDAO with Logger { def save(user: User): Unit = { log(s\"Saving user: $user\") \/\/ save user to database } }<\/code><\/li>\n\n\n\n<li>\u7279\u6027\u306e\u7d44\u307f\u5408\u308f\u305b:\u7279\u6027\u3092\u7d44\u307f\u5408\u308f\u305b\u3066\u3001\u3088\u308a\u5927\u304d\u306a\u7279\u6027\u3092\u5f62\u6210\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001 kotlinCopy \u30b3\u30fc\u30c9 \u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u306f\u3001\u30c7\u30fc\u30bf\u30a2\u30af\u30bb\u30b9\u3068\u76e3\u67fb\u53ef\u80fd\u3068\u3044\u3046 2 \u3064\u306e\u54c1\u8cea\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002 \u76e3\u67fb\u53ef\u80fd\u7279\u6027\u306f\u3001DataAccess \u3068 Logger \u306e\u7279\u6027\u3092\u7d99\u627f\u3057\u3001\u4fdd\u5b58\u30e1\u30bd\u30c3\u30c9\u3068\u524a\u9664\u30e1\u30bd\u30c3\u30c9\u3092\u66f8\u304d\u63db\u3048\u3066\u30ed\u30b0\u6a5f\u80fd\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<code>trait DataAccess { def get(id: Int): Option[Record] def getAll: Seq[Record] def save(record: Record): Unit def delete(id: Int): Unit } trait Auditable extends DataAccess with Logger { abstract override def save(record: Record): Unit = { super.save(record) log(s\"Saved record: $record\") } abstract override def delete(id: Int): Unit = { super.delete(id) log(s\"Deleted record with id: $id\") } }<\/code><\/li>\n<\/ol>\n\n\n\n<p>\u8981\u7d04\u3059\u308b\u3068\u3001Scala\u306e\u99ac\u9e7f\u306f\u3001\u30af\u30e9\u30b9\u3068\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u8907\u6570\u306e\u30c8\u30ec\u30a4\u30c8\u3092\u7d99\u627f\u3059\u308b\u3053\u3068\u3092\u53ef\u80fd\u306b\u3057\u3001\u30c8\u30ec\u30a4\u30c8\u3067\u62bd\u8c61\u7684\u3067\u5177\u4f53\u7684\u306a\u30e1\u30bd\u30c3\u30c9\u3092\u5b9a\u7fa9\u304a\u3088\u3073\u5b9f\u88c5\u3067\u304d\u308b\u5f37\u529b\u306a\u30b3\u30fc\u30c9\u518d\u5229\u7528\u30e1\u30ab\u30cb\u30ba\u30e0\u3067\u3059\u3002 Scala \u306e\u7279\u6027\u3092\u5229\u7528\u3059\u308b\u306b\u306f\u3001\u57fa\u672c\u7684\u306a\u69cb\u6587\u3068\u7279\u6027\u306e\u4f7f\u3044\u65b9\u3092\u7fd2\u5f97\u3057\u3001\u7279\u6027\u3092\u67d4\u8edf\u306b\u4f7f\u7528\u3057\u3066\u30af\u30e9\u30b9\u3084\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u6a5f\u80fd\u3092\u62e1\u5f35\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1144\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=64&amp;q=75\" alt=\"\u8ecd\u4ead\"\/><\/figure>\n\n\n\n<p>Scala\u306e\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u6559\u3048\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Scala\u306e\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u306f\u3001\u30c7\u30fc\u30bf\u578b\u3001\u5024\u3001\u304a\u3088\u3073\u69cb\u9020\u3092\u7167\u5408\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3067\u304d\u308b\u5f37\u529b\u306a\u6a5f\u80fd\u3067\u3042\u308a\u3001\u8907\u96d1\u306a\u8ad6\u7406\u7684\u5224\u65ad\u3068\u30c7\u30fc\u30bf\u51e6\u7406\u3092\u53ef\u80fd\u306b\u3057\u307e\u3059\u3002 \u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u306f\u3001\u5909\u6570\u3001\u5b9a\u6570\u3001\u95a2\u6570\u547c\u3073\u51fa\u3057\u3001\u30c7\u30fc\u30bf\u69cb\u9020\u306a\u3069\u3001\u4efb\u610f\u306e Scala \u5f0f\u306b\u9069\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>Scala \u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u306e\u91cd\u8981\u306a\u6a5f\u80fd\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u57fa\u672c\u69cb\u6587: \u30d1\u30bf\u30fc\u30f3 \u30de\u30c3\u30c1\u30f3\u30b0\u3067\u306f\u3001\u30ad\u30fc\u30ef\u30fc\u30c9 match \u3068 case \u3092\u69cb\u6587\u30de\u30fc\u30af\u30a2\u30c3\u30d7\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002 \u4e00\u81f4\u306e\u5f8c\u306b\u306f\u4e00\u81f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5024\u304c\u7d9a\u304d\u3001\u30b1\u30fc\u30b9\u306e\u5f8c\u306b\u306f\u30d1\u30bf\u30fc\u30f3 \u30de\u30c3\u30c1\u30f3\u30b0\u5f0f\u304c\u7d9a\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u4e0a\u8a18\u306e javaCopy \u30b3\u30fc\u30c9\u306e\u30b3\u30fc\u30c9\u306f\u3001\u30d1\u30bf\u30fc\u30f3 \u30de\u30c3\u30c1\u30f3\u30b0\u3092\u4f7f\u7528\u3057\u3066\u8272\u306e\u5024\u3092\u6c7a\u5b9a\u3057\u3001\u5bfe\u5fdc\u3059\u308b\u8aac\u660e\u3092\u8fd4\u3057\u307e\u3059\u3002<code>val color = \"red\" val description = color match { case \"red\" =&gt; \"It's a red color.\" case \"green\" =&gt; \"It's a green color.\" case \"blue\" =&gt; \"It's a blue color.\" case _ =&gt; \"It's an unknown color.\" }<\/code><\/li>\n\n\n\n<li>\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u306e\u30bf\u30a4\u30d7: Scala \u306e\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u306f\u3001\u30d7\u30ea\u30df\u30c6\u30a3\u30d6\u578b\u3001\u30bf\u30d7\u30eb\u3001\u30ea\u30b9\u30c8\u3001\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3001\u30de\u30c3\u30d7\u3001\u30b5\u30f3\u30d7\u30eb\u30af\u30e9\u30b9\u306a\u3069\u3001\u8907\u6570\u306e\u30bf\u30a4\u30d7\u306e\u30de\u30c3\u30c1\u30f3\u30b0\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u4e0a\u8a18\u306egoCopy\u30b3\u30fc\u30c9\u306f\u3001\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u306e\u30bf\u30a4\u30d7\u3092\u6c7a\u5b9a\u3057\u3001\u5bfe\u5fdc\u3059\u308b\u8aac\u660e\u3092\u51fa\u529b\u3057\u307e\u3059\u3002<code>val data: Any = 1 data match { case i: Int =&gt; println(\"It's an integer.\") case s: String =&gt; println(\"It's a string.\") case (x, y) =&gt; println(s\"It's a tuple with values ($x, $y).\") case Seq(1, 2, 3) =&gt; println(\"It's a sequence with values 1, 2, 3.\") case map: Map[_, _] =&gt; println(\"It's a map.\") case _ =&gt; println(\"It's an unknown type.\") }<\/code><\/li>\n\n\n\n<li>\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u306e\u30cd\u30b9\u30c8: Scala \u306e\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u306f\u30cd\u30b9\u30c8\u30de\u30c3\u30c1\u30f3\u30b0\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3001\u8907\u96d1\u306a\u30c7\u30fc\u30bf\u69cb\u9020\u306b\u30de\u30c3\u30c1\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u4e0a\u8a18\u306e scssCopy \u30b3\u30fc\u30c9\u3067\u306f\u3001\u30d1\u30bf\u30fc\u30f3 \u30de\u30c3\u30c1\u30f3\u30b0\u3092\u4f7f\u7528\u3057\u3066\u5165\u308c\u5b50\u306b\u306a\u3063\u305f\u30ea\u30b9\u30c8\u3092\u7167\u5408\u3057\u3001\u305d\u3053\u304b\u3089\u5024\u3092\u62bd\u51fa\u3057\u307e\u3059\u3002<code>val data: Any = List(List(1, 2), List(3, 4)) data match { case List(List(1, x), List(y, 4)) =&gt; println(s\"x=$x, y=$y\") case _ =&gt; println(\"Not matched.\") }<\/code><\/li>\n\n\n\n<li>\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u30ac\u30fc\u30c9: Scala \u306e\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u306f\u30ac\u30fc\u30c9\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u304a\u308a\u3001\u30de\u30c3\u30c1\u30f3\u30b0\u30d7\u30ed\u30bb\u30b9\u306b\u6761\u4ef6\u4ed8\u304d\u5224\u65ad\u3092\u8ffd\u52a0\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u4e0a\u8a18\u306e goCopy \u30b3\u30fc\u30c9\u3067\u306f\u3001\u30d1\u30bf\u30fc\u30f3 \u30de\u30c3\u30c1\u30f3\u30b0\u3092\u4f7f\u7528\u3057\u3066\u6587\u5b57\u5217\u306e\u9577\u3055\u3092\u6c7a\u5b9a\u3057\u307e\u3059\u3002<code>val data: Any = \"abc\" data match { case s: String if s.length &gt; 3 =&gt; println(\"It's a long string.\") case s: String if s.length == 3 =&gt; println(\"It's a string with length 3.\") case s: String if s.length &lt; 3 =&gt; println(\"It's a short string.\") case _ =&gt; println(\"It's an unknown type.\") }<\/code><\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1144\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=64&amp;q=75\" alt=\"\u8ecd\u4ead\"\/><\/figure>\n\n\n\n<p>Scala\u306e\u6697\u9ed9\u306e\u5909\u63db\u3068\u6697\u9ed9\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Scala \u306e\u6697\u9ed9\u7684\u306a\u5909\u63db\u3068\u6697\u9ed9\u7684\u306a\u30d1\u30e9\u30e1\u30fc\u30bf\u306f\u3001\u30b3\u30fc\u30c9\u3092\u3088\u308a\u7c21\u6f54\u3067\u67d4\u8edf\u3067\u8aad\u307f\u3084\u3059\u304f\u3059\u308b\u9ad8\u5ea6\u306a\u6a5f\u80fd\u3067\u3059\u3002 \u6697\u9ed9\u7684\u306a\u5909\u63db\u3068\u6697\u9ed9\u7684\u306a\u30d1\u30e9\u30e1\u30fc\u30bf\u306f\u3001Scala\u3001\u7279\u306b\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u8a2d\u8a08\u3068\u578b\u30b7\u30b9\u30c6\u30e0\u3067\u5e83\u304f\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u6697\u9ed9\u7684\u306a\u5909\u63db: \u6697\u9ed9\u7684\u306a\u5909\u63db\u3068\u306f\u3001Scala \u304c\u3042\u308b\u30c7\u30fc\u30bf\u578b\u3092\u5225\u306e\u30c7\u30fc\u30bf\u578b\u306b\u81ea\u52d5\u7684\u306b\u5909\u63db\u3059\u308b\u30d7\u30ed\u30bb\u30b9\u3092\u6307\u3057\u307e\u3059\u3002 \u591a\u304f\u306e\u5834\u5408\u3001\u65e2\u5b58\u306e\u30af\u30e9\u30b9\u3068\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u62e1\u5f35\u3057\u3066\u3001\u65b0\u3057\u3044\u64cd\u4f5c\u3068\u30c7\u30fc\u30bf\u578b\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u4e0a\u8a18\u306e cssCopy \u30b3\u30fc\u30c9\u3067\u306f\u3001Money \u578b\u306e\u6a5f\u80fd\u3092\u62e1\u5f35\u3057\u3066\u52a0\u7b97\u6f14\u7b97\u3068\u4e57\u7b97\u6f14\u7b97\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b MoneyOps \u3068\u3044\u3046\u6697\u9ed9\u7684\u306a\u30af\u30e9\u30b9\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002<code>case class Money(amount: Double) implicit class MoneyOps(m: Money) { def +(other: Money): Money = Money(m.amount + other.amount) def *(times: Int): Money = Money(m.amount * times) } val a = Money(10.0) val b = Money(20.0) val c = a + b \/\/ \u7f16\u8bd1\u5668\u81ea\u52a8\u5c06a\u548cb\u8f6c\u6362\u4e3aMoneyOps\u7c7b\u578b\uff0c\u7136\u540e\u8c03\u7528+\u65b9\u6cd5 val d = a * 3 \/\/ \u7f16\u8bd1\u5668\u81ea\u52a8\u5c06a\u8f6c\u6362\u4e3aMoneyOps\u7c7b\u578b\uff0c\u7136\u540e\u8c03\u7528*\u65b9\u6cd5<\/code><\/li>\n\n\n\n<li>\u6697\u9ed9\u306e\u5f15\u6570: \u6697\u9ed9\u306e\u5f15\u6570\u306f\u3001Scala \u304c\u95a2\u6570\u307e\u305f\u306f\u30e1\u30bd\u30c3\u30c9\u306b\u5f15\u6570\u3092\u81ea\u52d5\u7684\u306b\u6e21\u3059\u30d7\u30ed\u30bb\u30b9\u3067\u3059\u3002 \u591a\u304f\u306e\u5834\u5408\u3001\u65e2\u5b58\u306e\u95a2\u6570\u3068\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u62e1\u5f35\u3057\u3066\u3001\u65b0\u3057\u3044\u6a5f\u80fd\u3084\u30c7\u30fc\u30bf\u578b\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u4e0a\u8a18\u306e kotlinCopy \u30b3\u30fc\u30c9\u3067\u306f\u3001User \u578b\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3068\u6697\u9ed9\u7684\u306a\u6328\u62f6\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u53d7\u3051\u53d6\u308a\u3001\u6587\u5b57\u5217\u3092\u8fd4\u3059 greet \u3068\u3044\u3046\u95a2\u6570\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u6697\u9ed9\u7684\u306a\u30b0\u30ea\u30fc\u30c6\u30a3\u30f3\u30b0 \u30d1\u30e9\u30e1\u30fc\u30bf\u306f implicit \u30ad\u30fc\u30ef\u30fc\u30c9\u306b\u3088\u3063\u3066\u30de\u30fc\u30af\u3055\u308c\u3001\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u304b\u3089\u81ea\u52d5\u7684\u306b\u691c\u7d22\u3055\u308c\u3066\u30b0\u30ea\u30fc\u30c6\u30a3\u30f3\u30b0 \u30e1\u30bd\u30c3\u30c9\u306b\u6e21\u3055\u308c\u307e\u3059\u3002<code>case class User(id: Int, name: String) def greet(user: User)(implicit greeting: String): String = { s\"$greeting, ${user.name}!\" } implicit val greeting: String = \"Hello\" val user = User(1, \"Alice\") val message = greet(user) \/\/ \u7f16\u8bd1\u5668\u81ea\u52a8\u5c06greeting\u53c2\u6570\u4f20\u9012\u7ed9greet\u65b9\u6cd5<\/code><\/li>\n<\/ol>\n\n\n\n<p>\u8981\u7d04\u3059\u308b\u3068\u3001Scala\u306e\u6697\u9ed9\u7684\u306a\u5909\u63db\u3068\u6697\u9ed9\u7684\u306a\u30d1\u30e9\u30e1\u30fc\u30bf\u306f\u3001\u30b3\u30fc\u30c9\u3092\u3088\u308a\u7c21\u6f54\u3067\u67d4\u8edf\u6027\u304c\u3042\u308a\u3001\u8aad\u307f\u3084\u3059\u304f\u3059\u308b\u5f37\u529b\u306a\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u6a5f\u80fd\u3067\u3059\u3002 Scala \u306e\u6697\u9ed9\u7684\u306a\u5909\u63db\u3068\u6697\u9ed9\u7684\u306a\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001\u6697\u9ed9\u7684\u306a\u5909\u63db\u3068\u6697\u9ed9\u7684\u306a\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u57fa\u672c\u7684\u306a\u69cb\u6587\u3068\u4f7f\u7528\u6cd5\u3092\u7fd2\u5f97\u3057\u3001\u305d\u308c\u3089\u3092\u67d4\u8edf\u306b\u4f7f\u7528\u3057\u3066\u30af\u30e9\u30b9\u3068\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u6a5f\u80fd\u3092\u62e1\u5f35\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1144\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=64&amp;q=75\" alt=\"\u8ecd\u4ead\"\/><\/figure>\n\n\n\n<p>Scala\u306e\u4e26\u884c\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u7528\u30a2\u30af\u30bf\u30fc\u30e2\u30c7\u30eb\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Scala \u306e\u30a2\u30af\u30bf\u30fc \u30e2\u30c7\u30eb \u4e26\u884c\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306f\u3001\u52b9\u7387\u7684\u306a\u540c\u6642\u64cd\u4f5c\u3068\u30b9\u30b1\u30fc\u30e9\u30d3\u30ea\u30c6\u30a3\u3092\u53ef\u80fd\u306b\u3059\u308b\u30e1\u30c3\u30bb\u30fc\u30b8 \u30d1\u30c3\u30b7\u30f3\u30b0\u540c\u6642\u5b9f\u884c\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 \u30e2\u30c7\u30eb\u3067\u3059\u3002 Actor \u30e2\u30c7\u30eb\u306f\u30011 \u3064\u306e\u30b9\u30ec\u30c3\u30c9\u3067\u591a\u6570\u306e\u540c\u6642\u8981\u6c42\u3092\u51e6\u7406\u3067\u304d\u308b\u8efd\u91cf\u306e\u30b9\u30ec\u30c3\u30c9 \u30e2\u30c7\u30eb\u3067\u3042\u308a\u3001\u30b9\u30ec\u30c3\u30c9\u306e\u5207\u308a\u66ff\u3048\u3084\u30ed\u30c3\u30af\u306e\u7af6\u5408\u306a\u3069\u306e\u4e00\u822c\u7684\u306a\u540c\u6642\u5b9f\u884c\u306e\u554f\u984c\u3092\u56de\u907f\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>Scala \u30a2\u30af\u30bf\u30fc\u30e2\u30c7\u30eb\u306e\u4e26\u884c\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u91cd\u8981\u306a\u6a5f\u80fd\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30a2\u30af\u30bf\u30fc\u306e\u5b9a\u7fa9: \u30a2\u30af\u30bf\u306f Scala \u306e\u7279\u5225\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3067\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u53d7\u4fe1\u3057\u3066\u51e6\u7406\u3057\u305f\u308a\u3001\u4ed6\u306e\u30a2\u30af\u30bf\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u4fe1\u3057\u305f\u308a\u3067\u304d\u307e\u3059\u3002 \u5404\u30a2\u30af\u30bf\u30fc\u306b\u306f\u3001\u672a\u51e6\u7406\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u683c\u7d0d\u3057\u3001\u4e00\u5ea6\u306b 1 \u3064\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u307f\u3092\u51e6\u7406\u3067\u304d\u308b\u30e1\u30fc\u30eb\u30dc\u30c3\u30af\u30b9\u304c\u3042\u308a\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u4e0a\u8a18\u306e javaCopy \u30b3\u30fc\u30c9\u3067\u306f\u3001\u30b0\u30ea\u30fc\u30c6\u30a3\u30f3\u30b0 \u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u53d7\u4fe1\u3057\u3001\u5bfe\u5fdc\u3059\u308b\u30b0\u30ea\u30fc\u30c6\u30a3\u30f3\u30b0\u3092\u51fa\u529b\u3059\u308b Greeter \u3068\u3044\u3046\u540d\u524d\u306e\u30a2\u30af\u30bf\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002 \u30a2\u30af\u30bf\u30b7\u30b9\u30c6\u30e0\u306f Scala \u306e\u30a2\u30af\u30bf\u30b7\u30b9\u30c6\u30e0\u3067\u3042\u308a\u3001\u30a2\u30af\u30bf\u306e\u30e9\u30a4\u30d5\u30b5\u30a4\u30af\u30eb\u3068\u30e1\u30c3\u30bb\u30fc\u30b8\u30f3\u30b0\u3092\u7ba1\u7406\u3057\u307e\u3059\u3002<code>import akka.actor.{Actor, ActorSystem, Props} case class Greeting(message: String) class Greeter extends Actor { def receive = { case Greeting(message) =&gt; println(s\"Hello, $message!\") } } val system = ActorSystem(\"MyActorSystem\") val greeter = system.actorOf(Props[Greeter], \"greeter\") greeter ! Greeting(\"Alice\")<\/code><\/li>\n\n\n\n<li>\u30e1\u30c3\u30bb\u30fc\u30b8\u30f3\u30b0:Scala\u306e\u30a2\u30af\u30bf\u30fc\u30e2\u30c7\u30eb\u306f\u30e1\u30c3\u30bb\u30fc\u30b8\u30f3\u30b0\u3092\u4ecb\u3057\u3066\u540c\u6642\u64cd\u4f5c\u3092\u5b9f\u88c5\u3057\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u306f\u30d7\u30ea\u30df\u30c6\u30a3\u30d6\u578b\u3001\u30ab\u30b9\u30bf\u30e0\u578b\u3001\u95a2\u6570\u578b\u306a\u3069\u3001\u4efb\u610f\u306e\u30bf\u30a4\u30d7\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u30e1\u30c3\u30bb\u30fc\u30b8\u306f\u975e\u540c\u671f\u3067\u9001\u53d7\u4fe1\u3055\u308c\u3001\u5404\u30a2\u30af\u30bf\u306b\u306f\u72ec\u81ea\u306e\u30e1\u30fc\u30eb\u30dc\u30c3\u30af\u30b9\u304c\u3042\u308a\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u306f\u9001\u4fe1\u3055\u308c\u305f\u9806\u5e8f\u3067\u9806\u756a\u306b\u51e6\u7406\u3055\u308c\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u4e0a\u8a18\u306e javaCopy \u30b3\u30fc\u30c9\u3067\u306f\u3001incr \u30e1\u30c3\u30bb\u30fc\u30b8\u3068 get \u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u4e21\u65b9\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3001\u30ab\u30a6\u30f3\u30bf\u30fc\u5024\u3092\u7d2f\u7a4d\u3067\u304d\u308b Counter \u3068\u3044\u3046\u540d\u524d\u306e\u30a2\u30af\u30bf\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002 \u30e1\u30c3\u30bb\u30fc\u30b8 get \u306f\u30ab\u30a6\u30f3\u30bf\u306e\u5024\u3092\u8fd4\u3057\u3001\u3053\u308c\u306f sender() \u95a2\u6570\u306b\u3088\u3063\u3066\u9001\u4fe1\u8005\u306b\u8fd4\u3055\u308c\u307e\u3059\u3002<code>class Counter extends Actor { var count = 0 def receive = { case \"incr\" =&gt; count += 1 case \"get\" =&gt; sender() ! count } } val system = ActorSystem(\"MyActorSystem\") val counter = system.actorOf(Props[Counter], \"counter\") counter ! \"incr\" counter ! \"incr\" counter ! \"get\" Thread.sleep(1000)<\/code><\/li>\n\n\n\n<li>\u30a2\u30af\u30bf\u30fc\u306e\u76e3\u8996: Scala \u306e\u30a2\u30af\u30bf\u30fc \u30e2\u30c7\u30eb\u3067\u306f\u3001\u30a2\u30af\u30bf\u30fc\u306e\u76e3\u8996\u3068\u56de\u5fa9\u3001\u3064\u307e\u308a\u3001\u30a2\u30af\u30bf\u30fc\u306b\u30a8\u30e9\u30fc\u3084\u4f8b\u5916\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306b\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u5fa9\u5143\u307e\u305f\u306f\u518d\u8d77\u52d5\u3067\u304d\u307e\u3059\u3002 \u30a2\u30af\u30bf\u30fc\u306e\u76e3\u8996\u3068\u56de\u5fa9\u306b\u3088\u308a\u3001\u30b7\u30b9\u30c6\u30e0\u306e\u4fe1\u983c\u6027\u3068\u5b89\u5b9a\u6027\u3092\u78ba\u4fdd\u3067\u304d\u307e\u3059\u3002 \u4f8b: \u30b8\u30e3\u30d0\u30b3\u30d4\u30fc\u30b3\u30fc\u30c9<code>class MyActor extends Actor { def receive = { case \"crash\" =&gt; throw new RuntimeException(\"Crashed!\") case _ =&gt; println(\"Message received.\") } override def preRestart(reason: Throwable, message: Option[Any]): Unit = { println(\"Actor restarting...\") super.preRestart(reason, message) } } val system = ActorSystem(\"MyActorSystem\") val actor = system.actorOf(Props[MyActor], \"myactor\") actor ! \"crash\"<\/code><\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1144\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=64&amp;q=75\" alt=\"\u8ecd\u4ead\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li>\u30a2\u30af\u30bf\u306e\u5206\u6563: Scala \u306e\u30a2\u30af\u30bf \u30e2\u30c7\u30eb\u3067\u306f\u3001\u30a2\u30af\u30bf\u306e\u5206\u6563\u30c7\u30d7\u30ed\u30a4\u3068\u901a\u4fe1\u3001\u3064\u307e\u308a\u8907\u6570\u306e\u30a2\u30af\u30bf\u3092\u7570\u306a\u308b\u30de\u30b7\u30f3\u3067\u5b9f\u884c\u3057\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u7d4c\u7531\u3067\u901a\u4fe1\u3067\u304d\u307e\u3059\u3002 \u30a2\u30af\u30bf\u306e\u914d\u5e03\u306b\u3088\u308a\u3001\u30b7\u30b9\u30c6\u30e0\u306e\u9ad8\u53ef\u7528\u6027\u3068\u30b9\u30b1\u30fc\u30e9\u30d3\u30ea\u30c6\u30a3\u304c\u5b9f\u73fe\u3057\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u4e0a\u8a18\u306e javaCopy \u30b3\u30fc\u30c9\u306e\u30b3\u30fc\u30c9\u306f\u3001\u30ea\u30e2\u30fc\u30c8 \u30de\u30b7\u30f3\u4e0a\u306b\u30a2\u30af\u30bf\u3092\u4f5c\u6210\u3057\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u7d4c\u7531\u3067\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u4fe1\u3059\u308b\u65b9\u6cd5\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002 remote.conf \u306f\u30ea\u30e2\u30fc\u30c8 ActorSystem \u7528\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3067\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30a2\u30c9\u30ec\u30b9\u3084\u30dd\u30fc\u30c8\u306a\u3069\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002<code>\/\/ \u5728\u672c\u5730\u521b\u5efaActorSystem val system = ActorSystem(\"MyActorSystem\") \/\/ \u521b\u5efa\u8fdc\u7a0bActorSystem val remoteSystem = ActorSystem(\"MyActorSystem\", ConfigFactory.load(\"remote.conf\")) \/\/ \u5728\u8fdc\u7a0bActorSystem\u4e0a\u521b\u5efaActor val remoteActor = remoteSystem.actorOf(Props[MyActor], \"remoteactor\") \/\/ \u53d1\u9001\u6d88\u606f\u5230\u8fdc\u7a0bActor remoteActor ! \"hello\"<\/code><\/li>\n<\/ol>\n\n\n\n<p>\u8981\u7d04\u3059\u308b\u3068\u3001Scala\u306e\u30a2\u30af\u30bf\u30fc\u30e2\u30c7\u30eb\u540c\u6642\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306f\u3001\u52b9\u7387\u7684\u306a\u540c\u6642\u64cd\u4f5c\u3068\u30b9\u30b1\u30fc\u30e9\u30d3\u30ea\u30c6\u30a3\u3092\u53ef\u80fd\u306b\u3059\u308b\u30e1\u30c3\u30bb\u30fc\u30b8\u30d1\u30c3\u30b7\u30f3\u30b0\u30d9\u30fc\u30b9\u306e\u4e26\u884c\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30e2\u30c7\u30eb\u3067\u3059\u3002 Scala \u306e\u30a2\u30af\u30bf\u30fc\u30e2\u30c7\u30eb\u306f\u3001\u7c21\u6f54\u3067\u67d4\u8edf\u6027\u304c\u3042\u308a\u3001\u4fe1\u983c\u6027\u304c\u9ad8\u304f\u3001\u540c\u6642\u5b9f\u884c\u6027\u306e\u9ad8\u3044\u5206\u6563\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u767a\u3059\u308b\u305f\u3081\u306e\u91cd\u8981\u306a\u30c4\u30fc\u30eb\u3068\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u3002 Scala \u306e\u30a2\u30af\u30bf\u30fc \u30e2\u30c7\u30eb\u3092\u540c\u6642\u5b9f\u884c\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306b\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001\u30a2\u30af\u30bf\u306e\u57fa\u672c\u7684\u306a\u69cb\u6587\u3068\u4f7f\u7528\u6cd5\u3092\u7fd2\u5f97\u3057\u3001\u30a2\u30af\u30bf\u306e\u76e3\u8996\u3001\u914d\u5e03\u3001\u304a\u3088\u3073\u305d\u306e\u4ed6\u306e\u9ad8\u5ea6\u306a\u6a5f\u80fd\u3092\u67d4\u8edf\u306b\u4f7f\u7528\u3057\u3066\u3001\u8907\u96d1\u306a\u540c\u6642\u64cd\u4f5c\u3068\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3 \u30b7\u30ca\u30ea\u30aa\u3092\u5b9f\u88c5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1144\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=64&amp;q=75\" alt=\"\u8ecd\u4ead\"\/><\/figure>\n\n\n\n<p>Scala \u306e\u30a6\u30a7\u30d6\u958b\u767a\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af (Play \u3084 Scalatra \u306a\u3069) \u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p>Scala \u306b\u306f\u591a\u304f\u306e Web \u958b\u767a\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u304c\u3042\u308a\u3001\u305d\u306e\u4e2d\u3067\u3088\u308a\u4eba\u6c17\u306e\u3042\u308b\u306e\u306f Play \u3068 Scalatra \u3067\u3059\u3002 \u3053\u308c\u3089\u306f\u3059\u3079\u3066Scala\u8a00\u8a9e\u306b\u57fa\u3065\u3044\u3066\u304a\u308a\u3001\u95a2\u6570\u578b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30d1\u30e9\u30c0\u30a4\u30e0\u3092\u4f7f\u7528\u3057\u3066\u3001Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u3092\u3088\u308a\u7c21\u5358\u304b\u3064\u52b9\u7387\u7684\u306b\u3059\u308b\u305f\u3081\u306e\u8c4a\u5bcc\u306a\u6a5f\u80fd\u3068\u30c4\u30fc\u30eb\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u3053\u3053\u3067\u306f\u3001Scala \u306e\u30a6\u30a7\u30d6\u958b\u767a\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3042\u308b Play \u3068 Scalatra \u306e\u91cd\u8981\u306a\u6a5f\u80fd\u3092\u3044\u304f\u3064\u304b\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Play \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af: Play Framework \u306f\u8efd\u91cf\u3067\u9ad8\u6027\u80fd\u306a\u30a6\u30a7\u30d6\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3001MVC (Model-View-Controller) \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3092\u4f7f\u7528\u3057\u3001\u975e\u540c\u671f\u304a\u3088\u3073\u30ce\u30f3\u30d6\u30ed\u30c3\u30ad\u30f3\u30b0 I\/O \u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002 Play Framework \u306f Scala \u306e\u6a5f\u80fd\u3092\u4f7f\u3063\u3066\u3001\u95a2\u6570\u578b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3001\u30bf\u30a4\u30d7\u30bb\u30fc\u30d5\u3001\u6697\u9ed9\u7684\u306a\u5909\u63db\u306a\u3069\u306e\u30a6\u30a7\u30d6\u958b\u767a\u3092\u53ef\u80fd\u306b\u3057\u307e\u3059\u3002 Play Framework \u306f\u3001\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3001\u30d5\u30a9\u30fc\u30e0\u3001\u30bb\u30c3\u30b7\u30e7\u30f3\u3001\u8a8d\u8a3c\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30cb\u30fc\u30ba\u3092\u6e80\u305f\u3059\u3053\u3068\u304c\u3067\u304d\u308b\u8c4a\u5bcc\u306a\u6a5f\u80fd\u3068\u30c4\u30fc\u30eb\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>Scalatra \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af: Scalatra \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u3001\u8efd\u91cf\u306e DSL (\u30c9\u30e1\u30a4\u30f3\u56fa\u6709\u8a00\u8a9e) \u69cb\u6587\u3092\u4f7f\u7528\u3057\u3001RESTful API \u3068 Web \u30bd\u30b1\u30c3\u30c8\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u3001\u30b7\u30f3\u30d7\u30eb\u3067\u67d4\u8edf\u306a Web \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u3002 Scalatra\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u3001Scala\u306e\u6a5f\u80fd\u3092\u4f7f\u7528\u3057\u3066\u3001\u95a2\u6570\u578b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3001\u30bf\u30a4\u30d7\u30bb\u30fc\u30d5\u3001\u6697\u9ed9\u7684\u306a\u5909\u63db\u306a\u3069\u306eWeb\u958b\u767a\u3092\u53ef\u80fd\u306b\u3057\u307e\u3059\u3002 Scalatra\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u3001\u3055\u307e\u3056\u307e\u306aWeb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30cb\u30fc\u30ba\u3092\u6e80\u305f\u3059\u305f\u3081\u306b\u3001\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3001\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u89e3\u6790\u3001\u30c7\u30fc\u30bf\u691c\u8a3c\u3001\u30bb\u30c3\u30b7\u30e7\u30f3\u3001\u30d5\u30a3\u30eb\u30bf\u30fc\u306a\u3069\u3001\u8c4a\u5bcc\u306a\u6a5f\u80fd\u3068\u30c4\u30fc\u30eb\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u5171\u901a\u70b9:Play \u3068 Scalatra \u306f\u3069\u3061\u3089\u3082 Scala \u8a00\u8a9e\u306b\u57fa\u3065\u3044\u3066\u304a\u308a\u3001\u95a2\u6570\u578b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u30d1\u30e9\u30c0\u30a4\u30e0\u3092\u4f7f\u7528\u3057\u3066\u304a\u308a\u3001Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u3092\u3088\u308a\u30b7\u30f3\u30d7\u30eb\u304b\u3064\u52b9\u7387\u7684\u306b\u3059\u308b\u305f\u3081\u306e\u8c4a\u5bcc\u306a\u6a5f\u80fd\u3068\u30c4\u30fc\u30eb\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002 \u3053\u308c\u3089\u306f\u3059\u3079\u3066\u3001\u9ad8\u3044\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u30b9\u30b1\u30fc\u30e9\u30d3\u30ea\u30c6\u30a3\u306e\u305f\u3081\u306b\u975e\u540c\u671f\u304a\u3088\u3073\u975e\u30d6\u30ed\u30c3\u30ad\u30f3\u30b0I \/ O\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002 \u305d\u308c\u3089\u306f\u3059\u3079\u3066\u3001\u6280\u8853\u30b5\u30dd\u30fc\u30c8\u3068\u958b\u767a\u30c4\u30fc\u30eb\u3092\u63d0\u4f9b\u3059\u308b\u6d3b\u767a\u306a\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3068\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u8981\u3059\u308b\u306b\u3001Scala\u306eWeb\u958b\u767a\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30afPlay\u3068Scalatra\u306f\u512a\u308c\u305fWeb\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3042\u308a\u3001Scala\u8a00\u8a9e\u306e\u7279\u6027\u3092\u4f7f\u7528\u3057\u3066Web\u958b\u767a\u3092\u5b9f\u88c5\u3057\u3001\u8c4a\u5bcc\u306a\u6a5f\u80fd\u3068\u30c4\u30fc\u30eb\u3092\u63d0\u4f9b\u3057\u3001\u3055\u307e\u3056\u307e\u306aWeb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30cb\u30fc\u30ba\u3092\u6e80\u305f\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 Scala\u306eWeb\u958b\u767a\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u5229\u7528\u3059\u308b\u306b\u306f\u3001\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u57fa\u672c\u7684\u306a\u69cb\u6587\u3068\u4f7f\u3044\u65b9\u3092\u7fd2\u5f97\u3057\u3001\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u6a5f\u80fd\u3084\u30c4\u30fc\u30eb\u3092\u67d4\u8edf\u306b\u6d3b\u7528\u3057\u3066\u9ad8\u54c1\u8cea\u306aWeb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u767a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1144\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=64&amp;q=75\" alt=\"\u8ecd\u4ead\"\/><\/figure>\n\n\n\n<p>Play \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u9069\u7528\u65b9\u6cd5\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Play Framework \u306f Scala \u8a00\u8a9e\u3092\u30d9\u30fc\u30b9\u306b\u3057\u305f\u30a6\u30a7\u30d6\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3001\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u3092\u3088\u308a\u30b7\u30f3\u30d7\u30eb\u306b\u3001\u3088\u308a\u52b9\u7387\u7684\u306b\u3001\u3088\u308a\u4fe1\u983c\u6027\u306e\u9ad8\u3044\u3082\u306e\u306b\u3059\u308b\u305f\u3081\u306e\u8c4a\u5bcc\u306a\u6a5f\u80fd\u3068\u30c4\u30fc\u30eb\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 Play \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u4f7f\u3063\u305f\u30a6\u30a7\u30d6\u958b\u767a\u306e\u57fa\u672c\u7684\u306a\u30b9\u30c6\u30c3\u30d7\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Play \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b: Play \u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u304b\u3089 Play \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u304b\u3001Scala \u306e\u30d3\u30eb\u30c9\u30c4\u30fc\u30eb sbt \u3092\u4f7f\u3063\u3066 Play \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u7ba1\u7406\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3002 \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304c\u5b8c\u4e86\u3057\u305f\u3089\u3001\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u65b0\u3057\u3044 Play \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u3092\u66f8\u304f: Play \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u306f\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u304c\u30ea\u30af\u30a8\u30b9\u30c8\u3068\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u51e6\u7406\u3092\u62c5\u5f53\u3057\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u7570\u306a\u308b\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306b\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306f\u3001\u6ce8\u91c8\u3092\u4ecb\u3057\u3066\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u30eb\u30fc\u30eb\u3092\u5b9a\u7fa9\u3067\u304d\u308bScala\u306e\u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002 \u4f8b: scssCopy \u30b3\u30fc\u30c9 \u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u306f\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u8981\u6c42\u3092\u51e6\u7406\u3057\u3066 HTML \u30da\u30fc\u30b8\u3092\u8fd4\u3059 index \u3068\u3044\u3046\u30e1\u30bd\u30c3\u30c9\u3092\u542b\u3080 HomeController \u3068\u3044\u3046\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002<code>package controllers import play.api._ import play.api.mvc._ class HomeController(cc: ControllerComponents) extends AbstractController(cc) { def index() = Action { implicit request: Request[AnyContent] =&gt; Ok(views.html.index()) } }<\/code><\/li>\n\n\n\n<li>\u30d3\u30e5\u30fc\u306e\u8a18\u8ff0: Play \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u306f\u3001\u30d3\u30e5\u30fc\u306f HTML\u3001CSS\u3001JavaScript \u306a\u3069\u306e\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3092\u62c5\u5f53\u3057\u3001Scala \u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u3092\u4f7f\u3063\u3066\u5b9f\u88c5\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u306f\u3001Scala\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3068HTML\u30b3\u30fc\u30c9\u3092\u6df7\u5728\u3055\u305b\u3066\u3001\u52d5\u7684\u306aWeb\u30da\u30fc\u30b8\u3092\u751f\u6210\u3067\u304d\u307e\u3059\u3002 \u4f8b: phpCopy \u30b3\u30fc\u30c9 \u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u306f\u3001message \u3068\u3044\u3046\u540d\u524d\u306e\u6587\u5b57\u5217\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u53d7\u3051\u53d6\u308a\u3001\u305d\u308c\u3092\u30da\u30fc\u30b8\u306b\u8868\u793a\u3059\u308b index \u3068\u3044\u3046 HTML \u30da\u30fc\u30b8\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002<code>@(message: String) &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;Home Page&lt;\/title&gt; &lt;\/head&gt; &lt;body&gt; &lt;h1&gt;@message&lt;\/h1&gt; &lt;\/body&gt; &lt;\/html&gt;<\/code><\/li>\n\n\n\n<li>\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u306e\u8a2d\u5b9a: Play \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u306f\u3001\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u306f\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u7570\u306a\u308b\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u3084\u30e1\u30bd\u30c3\u30c9\u306b\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3059\u308b\u5f79\u5272\u3092\u62c5\u3044\u307e\u3059\u3002 Scala \u306e\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u3066\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u30eb\u30fc\u30eb\u3092\u5b9a\u7fa9\u3057\u3001\u9069\u5207\u306a\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u3068\u30e1\u30bd\u30c3\u30c9\u306b\u30de\u30c3\u30d4\u30f3\u30b0\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001bashCopy \u30b3\u30fc\u30c9 \u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u306f\u3001\u65e2\u5b9a\u306e\u8981\u6c42\u3092 HomeController \u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 \u30e1\u30bd\u30c3\u30c9\u306b\u30de\u30c3\u30d7\u3059\u308b Home \u3068\u3044\u3046\u540d\u524d\u306e\u30eb\u30fc\u30c8\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002<code># Home page GET \/ controllers.HomeController.index()<\/code><\/li>\n\n\n\n<li>\u30a2\u30d7\u30ea\u3092\u5b9f\u884c\u3059\u308b:\u4e0a\u8a18\u306e\u624b\u9806\u3092\u5b8c\u4e86\u3057\u305f\u3089\u3001\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066Play\u30a2\u30d7\u30ea\u3092\u5b9f\u884c\u3057\u3001\u30d6\u30e9\u30a6\u30b6\u306e\u5bfe\u5fdc\u3059\u308b\u30da\u30fc\u30b8\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002 \u4f8b: arduinoCopy code \u4e0a\u8a18\u306e\u30b3\u30de\u30f3\u30c9\u306f Play \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066\u5b9f\u884c\u3057\u3001\u30ed\u30fc\u30ab\u30eb\u30db\u30b9\u30c8\u306e\u30dd\u30fc\u30c8 9000 \u3067\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u3092\u8d77\u52d5\u3057\u307e\u3059\u3002 \u30d6\u30e9\u30a6\u30b6\u30fc\u3067 http:\/\/localhost:9000 \u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066<a href=\"http:\/\/localhost:9000%E6%9D%A5%E6%9F%A5%E7%9C%8B%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E3%80%82\/\">\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u8868\u793a\u3067\u304d\u307e\u3059\u3002&nbsp;<\/a><code>sbt run<\/code><\/li>\n<\/ol>\n\n\n\n<p>\u8981\u7d04\u3059\u308b\u3068\u3001Play \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u4f7f\u3063\u305f Web \u958b\u767a\u306b\u306f\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u3001\u30d3\u30e5\u30fc\u3001\u30eb\u30fc\u30c8\u3001\u30e2\u30b8\u30e5\u30fc\u30eb\u306a\u3069\u3001Play \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u57fa\u672c\u7684\u306a\u69cb\u6587\u3068\u4f7f\u3044\u65b9\u3092\u30de\u30b9\u30bf\u30fc\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1144\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=64&amp;q=75\" alt=\"\u8ecd\u4ead\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u57fa\u677f\u30a8\u30f3\u30b8\u30f3\u306a\u3069 \u540c\u6642\u306b\u3001\u69d8\u3005\u306a\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30cb\u30fc\u30ba\u3092\u6e80\u305f\u3059\u305f\u3081\u306b\u3001\u30d5\u30a9\u30fc\u30e0\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3001\u8a8d\u8a3c\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306a\u3069\u3001Play \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u4ed6\u306e\u9ad8\u5ea6\u306a\u6a5f\u80fd\u3084\u30c4\u30fc\u30eb\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u3082\u5fc5\u8981\u3067\u3059\u3002 Play \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u91cd\u8981\u306a\u6a5f\u80fd\u3092\u3044\u304f\u3064\u304b\u3054\u7d39\u4ecb\u3057\u307e\u3059:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u975e\u540c\u671f\u304a\u3088\u3073\u30ce\u30f3\u30d6\u30ed\u30c3\u30ad\u30f3\u30b0 I\/O: Play \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u3001\u9ad8\u3044\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u30b9\u30b1\u30fc\u30e9\u30d3\u30ea\u30c6\u30a3\u3092\u5b9f\u73fe\u3059\u308b\u305f\u3081\u306b\u3001\u975e\u540c\u671f\u304a\u3088\u3073\u30ce\u30f3\u30d6\u30ed\u30c3\u30ad\u30f3\u30b0 I\/O \u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30e2\u30c7\u30eb\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 Play \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f Scala \u306e Future \u3084 Promise \u306e\u3088\u3046\u306a\u975e\u540c\u671f\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30c4\u30fc\u30eb\u3092\u4f7f\u3063\u3066\u304a\u308a\u3001\u30b9\u30ec\u30c3\u30c9\u3092\u30d6\u30ed\u30c3\u30af\u3059\u308b\u3053\u3068\u306a\u304f\u591a\u6570\u306e\u540c\u6642\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u51e6\u7406\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>MVC \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3: Play \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u3001\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u3001\u30d3\u30e5\u30fc\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u3092\u5206\u96e2\u3059\u308b MVC (Model-View-Controller) \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 \u30e2\u30c7\u30eb\u306f\u30c7\u30fc\u30bf\u3068\u6c38\u7d9a\u5316\u3092\u51e6\u7406\u3057\u3001\u30d3\u30e5\u30fc\u306f HTML \u3084\u305d\u306e\u4ed6\u306e\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9 \u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3057\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306f\u8981\u6c42\u3068\u5fdc\u7b54\u3092\u51e6\u7406\u3057\u3001\u30e2\u30c7\u30eb\u3068\u30d3\u30e5\u30fc\u9593\u306e\u76f8\u4e92\u4f5c\u7528\u3092\u8abf\u6574\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u8c4a\u5bcc\u306a\u6a5f\u80fd: Play \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u3001\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3001\u30d5\u30a9\u30fc\u30e0\u3001\u30bb\u30c3\u30b7\u30e7\u30f3\u3001\u8a8d\u8a3c\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30cb\u30fc\u30ba\u3092\u6e80\u305f\u3059\u3053\u3068\u304c\u3067\u304d\u308b\u8c4a\u5bcc\u306a\u6a5f\u80fd\u3068\u30c4\u30fc\u30eb\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 \u4f8b\u3048\u3070\u3001Play Framework \u306f\u30ea\u30ec\u30fc\u30b7\u30e7\u30ca\u30eb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3084 NoSQL \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u542b\u3080\u69d8\u3005\u306a\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u304a\u308a\u3001Scala \u306e ORM (Object-Relational Mapping) \u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u64cd\u4f5c\u3092\u6271\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u826f\u597d\u306a\u4e92\u63db\u6027: Play \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f Scala \u8a00\u8a9e\u3068\u3088\u304f\u4e92\u63db\u6027\u304c\u3042\u308a\u3001\u30a6\u30a7\u30d6\u958b\u767a\u306e\u305f\u3081\u306b Scala \u306e\u6a5f\u80fd\u3068\u30c4\u30fc\u30eb\u3092\u67d4\u8edf\u306b\u4f7f\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 Play Framework \u306f\u3001JavaScript\u3001CSS\u3001HTML5\u3001AngularJS \u306a\u3069\u3001\u4ed6\u306e\u30c6\u30af\u30ce\u30ed\u30b8\u30fc\u3084\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3068\u7c21\u5358\u306b\u7d71\u5408\u3067\u304d\u308b\u3055\u307e\u3056\u307e\u306a\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u30c6\u30af\u30ce\u30ed\u30b8\u30fc\u3084\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3082\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u8981\u3059\u308b\u306b\u3001Play Framework \u306f\u3001MVC \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3068 Scala \u8a00\u8a9e\u306e\u6a5f\u80fd\u3092\u4f7f\u7528\u3057\u3066\u30a6\u30a7\u30d6\u958b\u767a\u3092\u5b9f\u88c5\u3057\u3001\u975e\u540c\u671f\u304a\u3088\u3073\u30ce\u30f3\u30d6\u30ed\u30c3\u30ad\u30f3\u30b0 I\/O \u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30e2\u30c7\u30eb\u3092\u4f7f\u7528\u3059\u308b\u512a\u308c\u305f\u30a6\u30a7\u30d6\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u3002 Play \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u5229\u7528\u3059\u308b\u306b\u306f\u3001\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u57fa\u672c\u7684\u306a\u69cb\u6587\u3084\u4f7f\u3044\u65b9\u3092\u30de\u30b9\u30bf\u30fc\u3057\u3001\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u6a5f\u80fd\u3084\u30c4\u30fc\u30eb\u3092\u67d4\u8edf\u306b\u4f7f\u3063\u3066\u9ad8\u54c1\u8cea\u306a\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u767a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1144\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=64&amp;q=75\" alt=\"\u8ecd\u4ead\"\/><\/figure>\n\n\n\n<p>Scalatra\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u9069\u7528\u65b9\u6cd5\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Scalatra\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u3001\u8efd\u91cf\u306eDSL(\u30c9\u30e1\u30a4\u30f3\u56fa\u6709\u8a00\u8a9e)\u69cb\u6587\u3092\u4f7f\u7528\u3057\u3001RESTful API\u3068Web\u30bd\u30b1\u30c3\u30c8\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u3001\u30b7\u30f3\u30d7\u30eb\u3067\u67d4\u8edf\u306aWeb\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u3002 Scalatra\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u4f7f\u7528\u3057\u305fWeb\u958b\u767a\u306e\u57fa\u672c\u7684\u306a\u624b\u9806\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Scalatra \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b: Scalatra \u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u304b\u3089 Scalatra \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u304b\u3001Scala \u30d3\u30eb\u30c9\u30c4\u30fc\u30eb sbt \u3092\u4f7f\u3063\u3066 Scalatra \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u7ba1\u7406\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3002 \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304c\u5b8c\u4e86\u3057\u305f\u3089\u3001\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u65b0\u3057\u3044Scalatra\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306e\u8a18\u8ff0: Scalatra \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u306f\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u304c\u8981\u6c42\u3068\u5fdc\u7b54\u306e\u51e6\u7406\u3092\u62c5\u5f53\u3057\u3001\u8981\u6c42\u3092\u7570\u306a\u308b\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306b\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3067\u304d\u307e\u3059\u3002 \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306f\u3001Scalatra\u306eDSL\u69cb\u6587\u3092\u4f7f\u7528\u3057\u3066\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u30eb\u30fc\u30eb\u3092\u5b9a\u7fa9\u3067\u304d\u308bScala\u306e\u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002 \u4f8b: javascript\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b \u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u306f\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u8981\u6c42\u3092\u51e6\u7406\u3057\u3001\u6587\u5b57\u5217\u3092\u8fd4\u3059 \/ \u3068\u3044\u3046\u540d\u524d\u306e\u30eb\u30fc\u30c8\u3092\u542b\u3080 MyController \u3068\u3044\u3046\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002<code>import org.scalatra._ class MyController extends ScalatraServlet { get(\"\/\") { \"Hello, World!\" } }<\/code><\/li>\n\n\n\n<li>\u30d3\u30e5\u30fc\u306e\u8a18\u8ff0: Scalatra \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u306f\u3001\u30d3\u30e5\u30fc\u306f HTML\u3001CSS\u3001JavaScript \u306a\u3069\u306e\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3092\u62c5\u5f53\u3057\u3001Scala \u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u3092\u4f7f\u7528\u3057\u3066\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002 \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u306f\u3001Scala\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3068HTML\u30b3\u30fc\u30c9\u3092\u6df7\u5728\u3055\u305b\u3066\u3001\u52d5\u7684\u306aWeb\u30da\u30fc\u30b8\u3092\u751f\u6210\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001index \u3068\u3044\u3046 HTML \u30da\u30fc\u30b8\u3092\u5b9a\u7fa9\u3057\u3066\u304a\u308a\u3001message \u3068\u3044\u3046\u540d\u524d\u306e\u6587\u5b57\u5217\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u53d7\u3051\u53d6\u308a\u3001\u30da\u30fc\u30b8\u306b\u8868\u793a\u3057\u307e\u3059\u3002<code>&lt;%@ page contentType=\"text\/html;charset=UTF-8\" %&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;Home Page&lt;\/title&gt; &lt;\/head&gt; &lt;body&gt; &lt;h1&gt;Hello, &lt;%= message %&gt;&lt;\/h1&gt; &lt;\/body&gt; &lt;\/html&gt;<\/code><\/li>\n\n\n\n<li>\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3092\u69cb\u6210\u3059\u308b: Scalatra\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u306f\u3001\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u306f\u3055\u307e\u3056\u307e\u306a\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3068\u30e1\u30bd\u30c3\u30c9\u3078\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3092\u62c5\u5f53\u3057\u307e\u3059\u3002 \u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u30eb\u30fc\u30eb\u306f\u3001Scalatra\u306eDSL\u69cb\u6587\u3092\u4f7f\u7528\u3057\u3066\u5b9a\u7fa9\u3057\u3001\u9069\u5207\u306a\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3068\u30e1\u30bd\u30c3\u30c9\u306b\u30de\u30c3\u30d7\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u4e0a\u8a18\u306e javascriptCopy \u30b3\u30fc\u30c9\u3067\u306f\u3001MyController \u3068\u3044\u3046\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u304a\u308a\u3001\u65e2\u5b9a\u306e\u8981\u6c42\u3092\u51e6\u7406\u3059\u308b\u30eb\u30fc\u30c8\u3068\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u4f7f\u7528\u3057\u3066\u8981\u6c42\u3092\u51e6\u7406\u3059\u308b\u30eb\u30fc\u30c8\u306e 2 \u3064\u306e\u30eb\u30fc\u30c8\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002<code>class MyController extends ScalatraServlet { get(\"\/\") { \"Hello, World!\" } get(\"\/:name\") { s\"Hello, ${params(\"name\")}!\" } }<\/code><\/li>\n\n\n\n<li>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3059\u308b:\u4e0a\u8a18\u306e\u624b\u9806\u3092\u5b8c\u4e86\u3057\u305f\u3089\u3001\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066Scalatra\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3057\u3001\u30d6\u30e9\u30a6\u30b6\u306e\u9069\u5207\u306a\u30da\u30fc\u30b8\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002 \u4f8b: arduino\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b \u4e0a\u8a18\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001Scalatra\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066\u5b9f\u884c\u3057\u3001\u30ed\u30fc\u30ab\u30eb\u30db\u30b9\u30c8\u306e\u30dd\u30fc\u30c88080\u3067Web\u30b5\u30fc\u30d0\u30fc\u3092\u8d77\u52d5\u3057\u307e\u3059\u3002&nbsp;<a href=\"http:\/\/localhost:8080\/\">http:\/\/localhost:8080<\/a>&nbsp;\u30d6\u30e9\u30a6\u30b6\u3067\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059<code>sbt run<\/code><\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1144\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=64&amp;q=75\" alt=\"\u8ecd\u4ead\"\/><\/figure>\n\n\n\n<p>Scala\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30a2\u30af\u30bb\u30b9\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af(Slick\u3084Quill\u306a\u3069)\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p>Scala\u306f\u3001\u8c4a\u5bcc\u306a\u95a2\u6570\u578b\u304a\u3088\u3073\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u6a5f\u80fd\u3092\u5099\u3048\u305f\u5f37\u529b\u306a\u8a00\u8a9e\u3067\u3059\u3002 Scala \u306b\u306f\u3001\u30c7\u30fc\u30bf\u30a2\u30af\u30bb\u30b9\u3068\u6c38\u7d9a\u6027\u3092\u51e6\u7406\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3067\u304d\u308b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30a2\u30af\u30bb\u30b9\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u304c\u591a\u6570\u3042\u308a\u307e\u3059\u3002 \u4ee5\u4e0b\u306f\u3001\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b2\u3064\u306eScala\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30a2\u30af\u30bb\u30b9\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3001Slick\u3068Quill\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u6ed1\u3089\u304b<\/li>\n<\/ol>\n\n\n\n<p>Slick \u306f\u5f37\u529b\u306a Scala \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30a2\u30af\u30bb\u30b9\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3042\u308a\u3001\u958b\u767a\u8005\u306b\u3068\u3063\u3066\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u64cd\u4f5c\u3092\u5bb9\u6613\u306b\u3059\u308b\u3001\u30bf\u30a4\u30d7\u30bb\u30fc\u30d5\u306a\u30b3\u30f3\u30d1\u30a4\u30eb\u6642\u30c1\u30a7\u30c3\u30af API \u306e\u30bb\u30c3\u30c8\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 Slick\u306f\u3001\u30ea\u30ec\u30fc\u30b7\u30e7\u30ca\u30eb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3084NoSQL\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002 Slick\u3092\u4f7f\u7528\u3057\u305f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u64cd\u4f5c\u306e\u57fa\u672c\u7684\u306a\u624b\u9806\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30c7\u30fc\u30bf \u30e2\u30c7\u30eb\u3092\u5b9a\u7fa9\u3059\u308b: Slick \u306e\u30e2\u30c7\u30eb\u5b9a\u7fa9\u8a00\u8a9e DSL \u3092\u4f7f\u7528\u3057\u3066\u3001\u30c7\u30fc\u30bf \u30e2\u30c7\u30eb\u3068\u30c6\u30fc\u30d6\u30eb\u69cb\u9020\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001scssCopy \u30b3\u30fc\u30c9 \u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001id\u3001name\u3001\u304a\u3088\u3073 age \u306e 3 \u3064\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u542b\u3080 User \u3068\u3044\u3046\u30c7\u30fc\u30bf \u30e2\u30c7\u30eb\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002 Slick \u306e Table \u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3057\u3066\u3001\u30ec\u30b3\u30fc\u30c9\u3092\u8868\u3059\u30c6\u30fc\u30d6\u30eb\u69cb\u9020\u3068\u30bf\u30d7\u30eb\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002 \u30c6\u30fc\u30d6\u30eb\u30af\u30a8\u30ea\u3092\u4f7f\u7528\u3057\u3066\u30af\u30a8\u30ea\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002<code>case class User(id: Option[Int], name: String, age: Int) class Users(tag: Tag) extends Table[User](tag, \"users\") { def id = column[Int](\"id\", O.PrimaryKey, O.AutoInc) def name = column[String](\"name\") def age = column[Int](\"age\") def * = (id.?, name, age) &lt;&gt; (User.tupled, User.unapply) } val users = TableQuery[Users]<\/code><\/li>\n\n\n\n<li>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u64cd\u4f5c\u306e\u5b9f\u884c: Slick \u306e API \u3092\u4f7f\u7528\u3057\u3066\u3001\u633f\u5165\u3001\u30af\u30a8\u30ea\u3001\u66f4\u65b0\u3001\u524a\u9664\u306a\u3069\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u64cd\u4f5c\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001scssCopy \u30b3\u30fc\u30c9 \u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u306f\u3001Slick \u306e API \u3092\u4f7f\u7528\u3057\u3066\u3001\u633f\u5165\u3001\u30af\u30a8\u30ea\u3001\u66f4\u65b0\u3001\u524a\u9664\u306a\u3069\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u64cd\u4f5c\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 db.run \u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u975e\u540c\u671f\u64cd\u4f5c\u3092\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002<code>val db = Database.forConfig(\"mydb\") \/\/ \u63d2\u5165\u4e00\u6761\u8bb0\u5f55 val insertQuery = users += User(None, \"John Doe\", 30) db.run(insertQuery) \/\/ \u67e5\u8be2\u8bb0\u5f55 val query = users.filter(_.age &gt; 25).result val result = db.run(query) \/\/ \u66f4\u65b0\u8bb0\u5f55 val updateQuery = users.filter(_.name === \"John Doe\").map(_.age).update(40) db.run(updateQuery) \/\/ \u5220\u9664\u8bb0\u5f55 val deleteQuery = users.filter(_.name === \"John Doe\").delete db.run(deleteQuery)<\/code><\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>\u7fee<\/li>\n<\/ol>\n\n\n\n<p>Quill\u306f\u3001Scala\u306e\u30de\u30af\u30ed\u30b7\u30b9\u30c6\u30e0\u3092\u4f7f\u7528\u3057\u3066\u30bf\u30a4\u30d7\u30bb\u30fc\u30d5\u306aSQL\u30af\u30a8\u30ea\u3068\u30b3\u30de\u30f3\u30c9\u3092\u751f\u6210\u3059\u308b\u30bf\u30a4\u30d7\u30bb\u30fc\u30d5\u306aSQL\u30af\u30a8\u30ea\u304a\u3088\u3073\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u3059\u3002 Quill\u306f\u3001\u30ea\u30ec\u30fc\u30b7\u30e7\u30ca\u30eb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3084NoSQL\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002 Quill\u3092\u4f7f\u7528\u3057\u305f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u64cd\u4f5c\u306e\u57fa\u672c\u7684\u306a\u624b\u9806\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30c7\u30fc\u30bf\u30e2\u30c7\u30eb\u3092\u5b9a\u7fa9\u3059\u308b: Scala \u306e\u30b5\u30f3\u30d7\u30eb\u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3057\u3066\u3001\u30c7\u30fc\u30bf\u30e2\u30c7\u30eb\u3068\u30c6\u30fc\u30d6\u30eb\u69cb\u9020\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u4e0a\u8a18\u306e kotlinCopy \u30b3\u30fc\u30c9\u3067\u306f\u3001ID\u3001\u540d\u524d\u3001\u5e74\u9f62\u306e 3 \u3064\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u542b\u3080 User \u3068\u3044\u3046\u30c7\u30fc\u30bf \u30e2\u30c7\u30eb\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002<code>case class User(id: Int, name: String, age: Int)<\/code><\/li>\n\n\n\n<li>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u64cd\u4f5c\u306e\u5b9f\u884c: Quill\u306eAPI\u3092\u4f7f\u7528\u3057\u3066\u3001\u633f\u5165\u3001\u30af\u30a8\u30ea\u3001\u66f4\u65b0\u3001\u524a\u9664\u306a\u3069\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u64cd\u4f5c\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 \u4f8b\u3048\u3070\uff1a<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1144\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=64&amp;q=75\" alt=\"\u8ecd\u4ead\"\/><\/figure>\n\n\n\n<p>Scala\u306e\u30c7\u30fc\u30bf\u51e6\u7406\u3068\u5206\u6790(Spark\u3084Flink\u306a\u3069)\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p>Scala\u306f\u3001\u5927\u898f\u6a21\u306a\u30c7\u30fc\u30bf\u51e6\u7406\u3068\u5206\u6790\u306b\u9069\u3057\u305f\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u3059\u3002 \u5f37\u529b\u306a\u6a5f\u80fd\u7684\u304a\u3088\u3073\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u6a5f\u80fd\u3092\u5099\u3048\u3066\u304a\u308a\u3001Scala\u30a8\u30b3\u30b7\u30b9\u30c6\u30e0\u306b\u306f\u591a\u304f\u306e\u512a\u308c\u305f\u30c7\u30fc\u30bf\u51e6\u7406\u304a\u3088\u3073\u5206\u6790\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u304c\u3042\u308a\u307e\u3059\u3002 \u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b Scala \u30c7\u30fc\u30bf\u51e6\u7406\u304a\u3088\u3073\u5206\u6790\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u3001Spark \u3068 Flink \u306e 2 \u3064\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u706b\u82b1<\/li>\n<\/ol>\n\n\n\n<p>Spark\u306f\u3001\u30a4\u30f3\u30e1\u30e2\u30ea\u30b3\u30f3\u30d4\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u3068\u5206\u6563\u30c7\u30fc\u30bf\u51e6\u7406\u30c6\u30af\u30ce\u30ed\u30b8\u30fc\u3092\u4f7f\u7528\u3057\u3066\u5927\u898f\u6a21\u306a\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3092\u8fc5\u901f\u306b\u51e6\u7406\u3059\u308b\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30d3\u30c3\u30b0\u30c7\u30fc\u30bf\u51e6\u7406\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u3002 Spark \u306b\u306f\u3001Spark SQL\u3001Spark Streaming\u3001MLlib\u3001GraphX \u306a\u3069\u306e\u8c4a\u5bcc\u306a API \u3068\u30c4\u30fc\u30eb\u304c\u7528\u610f\u3055\u308c\u3066\u304a\u308a\u3001\u3055\u307e\u3056\u307e\u306a\u30c7\u30fc\u30bf\u51e6\u7406\u3068\u5206\u6790\u306e\u30cb\u30fc\u30ba\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002 \u30c7\u30fc\u30bf\u51e6\u7406\u3068\u5206\u6790\u306b Spark \u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u306e\u57fa\u672c\u7684\u306a\u624b\u9806\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Spark \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b: Spark \u306e\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u304b\u3089 Spark \u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u304b\u3001Scala \u306e\u30d3\u30eb\u30c9\u30c4\u30fc\u30eb sbt \u3092\u4f7f\u3063\u3066 Spark \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u7ba1\u7406\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3002 \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304c\u5b8c\u4e86\u3057\u305f\u3089\u3001\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u65b0\u3057\u3044 Spark \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30c7\u30fc\u30bf\u306e\u30ed\u30fc\u30c9: Spark \u3067\u306f\u3001\u30c6\u30ad\u30b9\u30c8 \u30d5\u30a1\u30a4\u30eb\u3001JSON \u30d5\u30a1\u30a4\u30eb\u3001CSV \u30d5\u30a1\u30a4\u30eb\u3001Hadoop \u30d5\u30a1\u30a4\u30eb\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u30c7\u30fc\u30bf \u30bd\u30fc\u30b9\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 Spark \u306e API \u3092\u4f7f\u7528\u3057\u3066\u3001\u30c7\u30fc\u30bf\u306e\u8aad\u307f\u53d6\u308a\u3068\u51e6\u7406\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u4e0a\u8a18\u306e javaCopy \u30b3\u30fc\u30c9\u3067\u306f\u3001\u30c6\u30ad\u30b9\u30c8 \u30d5\u30a1\u30a4\u30eb\u5185\u306e\u30c7\u30fc\u30bf\u306e\u884c\u3092\u8868\u3059 lines \u3068\u547c\u3070\u308c\u308b RDD (\u56de\u5fa9\u529b\u306e\u3042\u308b\u5206\u6563\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8) \u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002<code>import org.apache.spark.{SparkConf, SparkContext} val conf = new SparkConf().setAppName(\"MyApp\") val sc = new SparkContext(conf) val lines = sc.textFile(\"data.txt\")<\/code><\/li>\n\n\n\n<li>\u30c7\u30fc\u30bf\u306e\u5909\u63db\u3068\u51e6\u7406: Spark \u3067\u306f\u3001\u30d5\u30a3\u30eb\u30bf\u30fc\u51e6\u7406\u3001\u30de\u30c3\u30d4\u30f3\u30b0\u3001\u96c6\u8a08\u3001\u4e26\u3079\u66ff\u3048\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u5909\u63db\u64cd\u4f5c\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3067\u304d\u307e\u3059\u3002 \u5909\u63db\u3068\u51e6\u7406\u306b\u306f Spark \u306e API \u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001arduinoCopy \u30b3\u30fc\u30c9 \u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u306f\u3001Spark\u306eAPI\u3092\u4f7f\u7528\u3057\u3066\u3001\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3001\u30de\u30c3\u30d4\u30f3\u30b0\u3001\u96c6\u8a08\u3001\u4e26\u3079\u66ff\u3048\u306a\u3069\u306e\u30c7\u30fc\u30bf\u3092\u5909\u63db\u304a\u3088\u3073\u51e6\u7406\u3057\u307e\u3059\u3002 \u30c7\u30fc\u30bf\u51e6\u7406\u306b\u306f\u3055\u307e\u3056\u307e\u306a API \u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<code>\/\/ \u8fc7\u6ee4\u6570\u636e val filtered = lines.filter(line =&gt; line.contains(\"error\")) \/\/ \u6620\u5c04\u6570\u636e val counts = lines.flatMap(line =&gt; line.split(\" \")).map(word =&gt; (word, 1)).reduceByKey(_ + _) \/\/ \u805a\u5408\u6570\u636e val sums = lines.map(line =&gt; (line.split(\",\")(0), line.split(\",\")(1).toInt)).reduceByKey(_ + _) \/\/ \u6392\u5e8f\u6570\u636e val sorted = counts.sortBy(pair =&gt; pair._2, false)<\/code><\/li>\n\n\n\n<li>\u51fa\u529b\u7d50\u679c: Spark \u3067\u306f\u3001\u30c6\u30ad\u30b9\u30c8 \u30d5\u30a1\u30a4\u30eb\u3001JSON \u30d5\u30a1\u30a4\u30eb\u3001CSV \u30d5\u30a1\u30a4\u30eb\u3001Hadoop \u30d5\u30a1\u30a4\u30eb\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u30c7\u30fc\u30bf \u30bd\u30fc\u30b9\u3092\u4f7f\u7528\u3057\u3066\u7d50\u679c\u3092\u51fa\u529b\u3067\u304d\u307e\u3059\u3002 Spark \u306e API \u3092\u4f7f\u7528\u3057\u3066\u3001\u30c7\u30fc\u30bf\u306e\u66f8\u304d\u8fbc\u307f\u3068\u51fa\u529b\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u4e0a\u8a18\u306e cCopy \u30b3\u30fc\u30c9\u3067\u306f\u3001Spark \u306e API \u3092\u4f7f\u7528\u3057\u3066\u3001\u51e6\u7406\u7d50\u679c\u3092\u3055\u307e\u3056\u307e\u306a\u30c7\u30fc\u30bf \u30bd\u30fc\u30b9\u306b\u51fa\u529b\u3057\u307e\u3059\u3002<code>\/\/ \u8f93\u51fa\u5230\u6587\u672c\u6587\u4ef6 sorted.saveAsTextFile(\"output.txt\") \/\/ \u8f93\u51fa\u5230JSON\u6587\u4ef6 counts.saveAsTextFile(\"output.json\") \/\/ \u8f93\u51fa\u5230CSV\u6587\u4ef6 sums.map(pair =&gt; s\"${pair._1},${pair._2}\").saveAsTextFile(\"output.csv\")<\/code><\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>F<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1144\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=64&amp;q=75\" alt=\"\u8ecd\u4ead\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>\u52c7\u307e\u3057\u3044<\/li>\n<\/ol>\n\n\n\n<p>Flink\u306f\u3001\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u3068\u30d0\u30c3\u30c1\u30b3\u30f3\u30d4\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u306e\u7d44\u307f\u5408\u308f\u305b\u3092\u4f7f\u7528\u3057\u3066\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u30c7\u30fc\u30bf\u30b9\u30c8\u30ea\u30fc\u30e0\u3068\u30d0\u30c3\u30c1\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3059\u308b\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u30c7\u30fc\u30bf\u51e6\u7406\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u3002 Flink \u306f\u3001\u30c7\u30fc\u30bf\u30b9\u30c8\u30ea\u30fc\u30e0 API\u3001\u30c6\u30fc\u30d6\u30eb API\u3001SQL API\u3001\u30b0\u30e9\u30d5\u51e6\u7406 API \u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u30c7\u30fc\u30bf\u51e6\u7406\u3068\u5206\u6790\u306e\u30cb\u30fc\u30ba\u3092\u30b5\u30dd\u30fc\u30c8\u3067\u304d\u308b\u8c4a\u5bcc\u306a API \u3068\u30c4\u30fc\u30eb\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 \u30c7\u30fc\u30bf\u51e6\u7406\u3068\u5206\u6790\u306bFlink\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u306e\u57fa\u672c\u7684\u306a\u624b\u9806\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Flink \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b: Flink \u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u304b\u3089 Flink \u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u304b\u3001Scala \u306e\u30d3\u30eb\u30c9\u30c4\u30fc\u30eb sbt \u3092\u4f7f\u3063\u3066 Flink \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u7ba1\u7406\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3002 \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304c\u5b8c\u4e86\u3057\u305f\u3089\u3001\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u65b0\u3057\u3044Flink\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30c7\u30fc\u30bf\u306e\u30ed\u30fc\u30c9:Flink\u3067\u306f\u3001Kafka\u3001Flume\u3001HDFS\u3001S3\u306a\u3069\u306e\u3055\u307e\u3056\u307e\u306a\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u3092\u30ed\u30fc\u30c9\u3067\u304d\u307e\u3059\u3002 Flink\u306eAPI\u306f\u3001\u30c7\u30fc\u30bf\u306e\u8aad\u307f\u53d6\u308a\u3068\u51e6\u7406\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001javaCopy \u30b3\u30fc\u30c9 \u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u306f\u3001\u30c6\u30ad\u30b9\u30c8 \u30d5\u30a1\u30a4\u30eb\u5185\u306e\u30c7\u30fc\u30bf\u306e\u30b9\u30c8\u30ea\u30fc\u30e0\u3092\u8868\u3059 stream \u3068\u3044\u3046 DataStream \u3092\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002<code>import org.apache.flink.streaming.api.scala._ val env = StreamExecutionEnvironment.getExecutionEnvironment val stream = env.readTextFile(\"data.txt\")<\/code><\/li>\n\n\n\n<li>\u30c7\u30fc\u30bf\u306e\u5909\u63db\u3068\u51e6\u7406:Flink\u3067\u306f\u3001\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3001\u30de\u30c3\u30d4\u30f3\u30b0\u3001\u96c6\u8a08\u3001\u4e26\u3079\u66ff\u3048\u306a\u3069\u306e\u3055\u307e\u3056\u307e\u306a\u5909\u63db\u64cd\u4f5c\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3067\u304d\u307e\u3059\u3002 Flink\u306eAPI\u306f\u3001\u5909\u63db\u3068\u51e6\u7406\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001scssCopy \u30b3\u30fc\u30c9 \u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u306f\u3001Flink\u306eAPI\u3092\u4f7f\u7528\u3057\u3066\u3001\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3001\u30de\u30c3\u30d4\u30f3\u30b0\u3001\u96c6\u8a08\u3001\u4e26\u3079\u66ff\u3048\u306a\u3069\u306e\u30c7\u30fc\u30bf\u3092\u5909\u63db\u304a\u3088\u3073\u51e6\u7406\u3057\u307e\u3059\u3002 \u30c7\u30fc\u30bf\u51e6\u7406\u306b\u306f\u3055\u307e\u3056\u307e\u306a API \u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<code>\/\/ \u8fc7\u6ee4\u6570\u636e val filtered = stream.filter(line =&gt; line.contains(\"error\")) \/\/ \u6620\u5c04\u6570\u636e val counts = stream.flatMap(line =&gt; line.split(\" \")).map(word =&gt; (word, 1)).keyBy(0).sum(1) \/\/ \u805a\u5408\u6570\u636e val sums = stream.map(line =&gt; (line.split(\",\")(0), line.split(\",\")(1).toInt)).keyBy(0).sum(1) \/\/ \u6392\u5e8f\u6570\u636e val sorted = counts.keyBy(1).sortAscending()<\/code><\/li>\n\n\n\n<li>\u51fa\u529b\u7d50\u679c:Flink\u3067\u306f\u3001\u30ab\u30d5\u30ab\u3001\u30d5\u30eb\u30fc\u30e0\u3001HDFS\u3001S3\u306a\u3069\u306e\u3055\u307e\u3056\u307e\u306a\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u4f7f\u7528\u3057\u3066\u7d50\u679c\u3092\u51fa\u529b\u3067\u304d\u307e\u3059\u3002 Flink\u306eAPI\u306f\u3001\u30c7\u30fc\u30bf\u306e\u66f8\u304d\u8fbc\u307f\u3068\u51fa\u529b\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001arduinoCopy \u30b3\u30fc\u30c9 \u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u306f\u3001Flink \u306e API \u3092\u4f7f\u7528\u3057\u3066\u3001\u51e6\u7406\u7d50\u679c\u3092\u3055\u307e\u3056\u307e\u306a\u30c7\u30fc\u30bf \u30bd\u30fc\u30b9\u306b\u51fa\u529b\u3057\u307e\u3059\u3002 \u30c7\u30fc\u30bf\u51fa\u529b\u306b\u306f\u69d8\u3005\u306aAPI\u304c\u5229\u7528\u3067\u304d\u307e\u3059\u3002<code>\/\/ \u8f93\u51fa\u5230Kafka sorted.addSink(new FlinkKafkaProducer[String](\"localhost:9092\", \"topic\", new SimpleStringSchema())) \/\/ \u8f93\u51fa\u5230HDFS sums.map(pair =&gt; s\"${pair._1},${pair._2}\").writeAsText(\"hdfs:\/\/localhost:9000\/output.csv\")<\/code><\/li>\n<\/ul>\n\n\n\n<p>\u5168\u4f53\u3068\u3057\u3066\u3001Scala\u306f\u30c7\u30fc\u30bf\u51e6\u7406\u3068\u5206\u6790\u306b\u9069\u3057\u305f\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u3042\u308a\u3001\u8c4a\u5bcc\u306a\u6a5f\u80fd\u7684\u304a\u3088\u3073\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u6a5f\u80fd\u3092\u5099\u3048\u3066\u304a\u308a\u3001Scala\u30a8\u30b3\u30b7\u30b9\u30c6\u30e0\u306b\u306f\u591a\u304f\u306e\u512a\u308c\u305f\u30c7\u30fc\u30bf\u51e6\u7406\u304a\u3088\u3073\u5206\u6790\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u304c\u3042\u308a\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u958b\u767a\u8005\u306f\u6b21\u306e\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1144\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=64&amp;q=75\" alt=\"\u8ecd\u4ead\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Scala\u8a00\u8a9e\u306f\u3001\u30c7\u30fc\u30bf\u30af\u30ea\u30fc\u30cb\u30f3\u30b0\u3001\u30c7\u30fc\u30bf\u524d\u51e6\u7406\u3001\u30c7\u30fc\u30bf\u30e2\u30c7\u30ea\u30f3\u30b0\u3001\u6a5f\u68b0\u5b66\u7fd2\u3001\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u5206\u6790\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u30c7\u30fc\u30bf\u51e6\u7406\u304a\u3088\u3073\u5206\u6790\u64cd\u4f5c\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002 \u3055\u3089\u306b\u3001Scala\u306f\u4ed6\u306e\u30d3\u30c3\u30b0\u30c7\u30fc\u30bf\u30a8\u30b3\u30b7\u30b9\u30c6\u30e0(Hadoop\u3001Hive\u3001Spark\u3001Flink\u306a\u3069)\u3068\u30b7\u30fc\u30e0\u30ec\u30b9\u306b\u7d71\u5408\u3067\u304d\u308b\u305f\u3081\u3001\u958b\u767a\u8005\u306f\u5927\u898f\u6a21\u306a\u30c7\u30fc\u30bf\u51e6\u7406\u3068\u5206\u6790\u3092\u7c21\u5358\u306b\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30c7\u30fc\u30bf\u51e6\u7406\u3068\u5206\u6790\u306bScala\u3092\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001\u4e00\u5b9a\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u7d4c\u9a13\u3068\u6570\u5b66\u7684\u7d71\u8a08\u77e5\u8b58\u304c\u5fc5\u8981\u3067\u3042\u308a\u3001\u958b\u767a\u8005\u306fScala\u8a00\u8a9e\u3068\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u30c7\u30fc\u30bf\u51e6\u7406\u304a\u3088\u3073\u5206\u6790\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u57fa\u672c\u7684\u306a\u77e5\u8b58\u3092\u7406\u89e3\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \u540c\u6642\u306b\u3001Scala\u8a00\u8a9e\u306f\u30d3\u30c3\u30b0\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3059\u308b\u969b\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u30b9\u30b1\u30fc\u30e9\u30d3\u30ea\u30c6\u30a3\u3082\u8003\u616e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u9069\u5207\u306b\u6700\u9069\u5316\u304a\u3088\u3073\u8abf\u6574\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u5168\u4f53\u3068\u3057\u3066\u3001Scala\u306f\u3001\u8c4a\u5bcc\u306a\u6a5f\u80fd\u578b\u304a\u3088\u3073\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u6a5f\u80fd\u3068\u3001\u5805\u7262\u306a\u30c7\u30fc\u30bf\u51e6\u7406\u304a\u3088\u3073\u5206\u6790\u30a8\u30b3\u30b7\u30b9\u30c6\u30e0\u3092\u5099\u3048\u305f\u3001\u30c7\u30fc\u30bf\u51e6\u7406\u304a\u3088\u3073\u5206\u6790\u306b\u9069\u3057\u305f\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u3059\u3002 \u30c7\u30fc\u30bf\u51e6\u7406\u3068\u5206\u6790\u306bScala\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u958b\u767a\u8005\u306f\u5927\u898f\u6a21\u306a\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3092\u3088\u308a\u52b9\u7387\u7684\u306b\u51e6\u7406\u304a\u3088\u3073\u5206\u6790\u3057\u3001\u30c7\u30fc\u30bf\u5206\u6790\u306e\u7cbe\u5ea6\u3068\u52b9\u7387\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1144\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=64&amp;q=75\" alt=\"\u8ecd\u4ead\"\/><\/figure>\n\n\n\n<p>Scala \u306e Maven \u3068 SBT \u306e\u30d3\u30eb\u30c9\u30c4\u30fc\u30eb\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Scala \u306e Maven \u3068 SBT \u306f\u3069\u3061\u3089\u3082\u3001Scala \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4f9d\u5b58\u95a2\u4fc2\u3001\u30b3\u30f3\u30d1\u30a4\u30eb\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u30f3\u30b0\u3001\u30c6\u30b9\u30c8\u3001\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u306a\u3069\u3092\u7ba1\u7406\u3059\u308b\u305f\u3081\u306b\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b Scala \u30d3\u30eb\u30c9\u30c4\u30fc\u30eb\u3067\u3059\u3002 \u4ee5\u4e0b\u3067\u306f\u3001Scala \u306e Maven \u30d3\u30eb\u30c9\u30c4\u30fc\u30eb\u3068 SBT \u30d3\u30eb\u30c9\u30c4\u30fc\u30eb\u306b\u3064\u3044\u3066\u305d\u308c\u305e\u308c\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30e1\u30a4\u30f4\u30f3<\/li>\n<\/ol>\n\n\n\n<p>Maven\u306f\u4eba\u6c17\u306e\u3042\u308bJava\u30d3\u30eb\u30c9\u30c4\u30fc\u30eb\u3067\u3042\u308a\u3001Scala\u306fMaven\u3067\u7ba1\u7406\u304a\u3088\u3073\u30d3\u30eb\u30c9\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002 Maven\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u958b\u767a\u8005\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4f9d\u5b58\u30e9\u30a4\u30d6\u30e9\u30ea\u3001\u30b3\u30f3\u30d1\u30a4\u30eb\u3001\u30c6\u30b9\u30c8\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u5316\u3001\u30c7\u30d7\u30ed\u30a4\u306a\u3069\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002 Scala \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067 Maven \u3092\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001Maven \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u3001Scala \u30d7\u30e9\u30b0\u30a4\u30f3\u3092\u8ffd\u52a0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001Maven \u3092\u4f7f\u7528\u3057\u3066 Scala \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30d3\u30eb\u30c9\u3059\u308b\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Maven\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb:Maven\u306e\u516c\u5f0fWeb\u30b5\u30a4\u30c8\u304b\u3089Maven\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304c\u5b8c\u4e86\u3057\u305f\u3089\u3001\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u306bmvn -version\u3068\u5165\u529b\u3057\u3066\u3001Maven\u304c\u6b63\u5e38\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>Maven \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3059\u308b: \u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u3067\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5165\u529b\u3057\u3066\u3001Maven \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3059: csharp\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b\u4e0a\u8a18\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001Scala \u30d5\u30a1\u30b9\u30c8\u30b9\u30bf\u30fc\u30c8\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f7f\u7528\u3057\u3066\u3001my-scala-app \u3068\u3044\u3046 Maven \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<code>mvn archetype:generate -DgroupId=com.example -DartifactId=my-scala-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false -DarchetypeCatalog=internal<\/code><\/li>\n\n\n\n<li>Scala \u30d7\u30e9\u30b0\u30a4\u30f3\u3092\u8ffd\u52a0\u3059\u308b: Scala \u30d7\u30e9\u30b0\u30a4\u30f3\u3092 Maven \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u8ffd\u52a0\u3057\u3066\u3001Scala \u30b3\u30fc\u30c9\u3092\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u307e\u3059\u3002 \u6b21\u306e\u30b3\u30fc\u30c9\u3092pom .xml\u30d5\u30a1\u30a4\u30eb\u306b\u8ffd\u52a0\u3067\u304d\u307e\u3059: php\u30b3\u30d4\u30fc\u30b3\u30fc\u30c9\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u306f\u3001Scala Maven\u30d7\u30e9\u30b0\u30a4\u30f3\u3092\u8ffd\u52a0\u3057\u3001\u30b3\u30f3\u30d1\u30a4\u30eb\u3068\u30c6\u30b9\u30c8\u306e\u76ee\u6a19\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002<code>&lt;build&gt; &lt;plugins&gt; &lt;plugin&gt; &lt;groupId&gt;net.alchim31.maven&lt;\/groupId&gt; &lt;artifactId&gt;scala-maven-plugin&lt;\/artifactId&gt; &lt;version&gt;3.4.6&lt;\/version&gt; &lt;executions&gt; &lt;execution&gt; &lt;goals&gt; &lt;goal&gt;compile&lt;\/goal&gt; &lt;goal&gt;testCompile&lt;\/goal&gt; &lt;\/goals&gt; &lt;\/execution&gt; &lt;\/executions&gt; &lt;\/plugin&gt; &lt;\/plugins&gt; &lt;\/build&gt;<\/code><\/li>\n\n\n\n<li>\u4f9d\u5b58\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u8ffd\u52a0\u3059\u308b: \u5fc5\u8981\u306a Scala \u304a\u3088\u3073 Java \u4f9d\u5b58\u95a2\u4fc2\u3092 Maven \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002 \u6b21\u306e\u30b3\u30fc\u30c9\u3092pom .xml\u30d5\u30a1\u30a4\u30eb\u306b\u8ffd\u52a0\u3067\u304d\u307e\u3059: php\u30b3\u30d4\u30fc\u30b3\u30fc\u30c9\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u306f\u3001Scala \u3068 JUnit \u306e\u4f9d\u5b58\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<code>&lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;org.scala-lang&lt;\/groupId&gt; &lt;artifactId&gt;scala-library&lt;\/artifactId&gt; &lt;version&gt;2.12.14&lt;\/version&gt; &lt;\/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;junit&lt;\/groupId&gt; &lt;artifactId&gt;junit&lt;\/artifactId&gt; &lt;version&gt;4.12&lt;\/version&gt; &lt;scope&gt;test&lt;\/scope&gt; &lt;\/dependency&gt; &lt;\/dependencies&gt;<\/code><\/li>\n\n\n\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30d3\u30eb\u30c9\u3057\u3066\u5b9f\u884c\u3059\u308b: \u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u3067\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5165\u529b\u3057\u3066\u3001Scala \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30d3\u30eb\u30c9\u3057\u3066\u5b9f\u884c\u3057\u307e\u3059: pythonCopy code\u4e0a\u8a18\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30af\u30ea\u30a2\u3057\u3066 Scala \u30b3\u30fc\u30c9\u3092\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3001Scala \u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002<code>mvn clean compile mvn exec:java -Dexec.mainClass=\"com.example.App\"<\/code><\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>\u30c6\u30a3\u30c3\u30ab\u30fc<\/li>\n<\/ol>\n\n\n\n<p>SBT\u306fScala\u306e\u4e3b\u8981\u306a\u69cb\u7bc9\u30c4\u30fc\u30eb\u3067\u3042\u308a\u3001Scala\u306eDSL\u69cb\u6587\u3092\u63a1\u7528\u3057\u3066\u304a\u308a\u3001Scala\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4f9d\u5b58\u95a2\u4fc2\u3001\u30b3\u30f3\u30d1\u30a4\u30eb\u3001\u30c6\u30b9\u30c8\u3001\u304a\u3088\u3073\u578b\u4ed8\u3051\u3092\u7c21\u5358\u306b\u7ba1\u7406\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1144\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=64&amp;q=75\" alt=\"\u8ecd\u4ead\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u30d1\u30c3\u30b1\u30fc\u30b8\u3068\u30ea\u30ea\u30fc\u30b9\u306a\u3069 SBT\u306f\u3001Scala\u30b3\u30fc\u30c9\u3092\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u3067\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066\u5b9f\u884c\u3067\u304d\u308b\u30a4\u30f3\u30bf\u30e9\u30af\u30c6\u30a3\u30d6\u306a\u958b\u767a\u3082\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002 SBT \u3092\u4f7f\u7528\u3057\u3066 Scala \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30d3\u30eb\u30c9\u3059\u308b\u305f\u3081\u306e\u57fa\u672c\u7684\u306a\u624b\u9806\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>SBT\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb:SBT\u306e\u516c\u5f0f\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u304b\u3089SBT\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304c\u5b8c\u4e86\u3057\u305f\u3089\u3001\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u3067sbt -version\u3068\u5165\u529b\u3057\u3066\u3001SBT\u304c\u6b63\u5e38\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u305f\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>SBT \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3059\u308b: \u30b3\u30de\u30f3\u30c9 \u30e9\u30a4\u30f3\u3067\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5165\u529b\u3057\u3066\u3001SBT \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002 arduino\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc \u4e0a\u8a18\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001Scala Seed \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f7f\u7528\u3057\u3066\u3001my-scala-app \u3068\u3044\u3046 SBT \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<code>sbt new scala\/scala-seed.g8<\/code><\/li>\n\n\n\n<li>\u4f9d\u5b58\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u8ffd\u52a0\u3059\u308b: \u5fc5\u8981\u306a Scala \u3068 Java \u306e\u4f9d\u5b58\u95a2\u4fc2\u3092 SBT \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002 \u6b21\u306e\u30b3\u30fc\u30c9\u3092 build.sbt \u30d5\u30a1\u30a4\u30eb\u306b\u8ffd\u52a0\u3067\u304d\u307e\u3059: makefile\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u306f\u3001Scala \u3068 JUnit \u306e\u4f9d\u5b58\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<code>libraryDependencies += \"org.scala-lang\" % \"scala-library\" % \"2.12.14\" libraryDependencies += \"junit\" % \"junit\" % \"4.12\" % Test<\/code><\/li>\n\n\n\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30d3\u30eb\u30c9\u3057\u3066\u5b9f\u884c\u3059\u308b: \u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u3067\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5165\u529b\u3057\u3066\u3001Scala \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30d3\u30eb\u30c9\u3057\u3066\u5b9f\u884c\u3057\u307e\u3059: arduino\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b\u4e0a\u8a18\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30af\u30ea\u30a2\u3057\u3066 Scala \u30b3\u30fc\u30c9\u3092\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066\u304b\u3089\u3001Scala \u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002<code>sbt clean compile sbt run<\/code><\/li>\n\n\n\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30d1\u30c3\u30b1\u30fc\u30b8\u5316\u3057\u3066\u767a\u884c\u3059\u308b: \u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u3067\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5165\u529b\u3057\u3066\u3001Scala \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30d1\u30c3\u30b1\u30fc\u30b8\u5316\u3057\u3066\u767a\u884c\u3057\u307e\u3059: goCopy code\u4e0a\u8a18\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30af\u30ea\u30a2\u3057\u3066 Scala \u30b3\u30fc\u30c9\u3092\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3001Scala \u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u30d1\u30c3\u30b1\u30fc\u30b8\u5316\u3057\u3066\u30ed\u30fc\u30ab\u30eb\u307e\u305f\u306f\u30ea\u30e2\u30fc\u30c8\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u767a\u884c\u3057\u307e\u3059\u3002<code>sbt clean compile sbt package sbt publish<\/code><\/li>\n<\/ul>\n\n\n\n<p>\u4e00\u822c\u306b\u3001Scala \u306e Maven \u30d3\u30eb\u30c9\u30c4\u30fc\u30eb\u3068 SBT \u30d3\u30eb\u30c9\u30c4\u30fc\u30eb\u306e\u4e21\u65b9\u3092\u4f7f\u7528\u3057\u3066 Scala \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u7ba1\u7406\u304a\u3088\u3073\u30d3\u30eb\u30c9\u3067\u304d\u307e\u3059\u304c\u3001SBT \u306f Scala \u8a00\u8a9e\u306e\u6a5f\u80fd\u306b\u3088\u308a\u9069\u3057\u3066\u304a\u308a\u3001\u3088\u308a\u9ad8\u901f\u3067\u52b9\u7387\u7684\u306a\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 \u958b\u767a\u8005\u306f\u3001Scala\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u7ba1\u7406\u3068\u30d3\u30eb\u30c9\u3092\u5bb9\u6613\u306b\u3059\u308b\u305f\u3081\u306b\u3001\u30cb\u30fc\u30ba\u306b\u5fdc\u3058\u3066\u9069\u5207\u306a\u30d3\u30eb\u30c9\u30c4\u30fc\u30eb\u3092\u9078\u629e\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1144\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=64&amp;q=75\" alt=\"\u8ecd\u4ead\"\/><\/figure>\n\n\n\n<p>\u30c6\u30b9\u30c8\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af(ScalaTest\u3084Specs2\u306a\u3069)\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p>ScalaTest \u3068 Specs2 \u306f\u3001Scala \u3067\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u30c6\u30b9\u30c8\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3042\u308a\u3001\u5358\u4f53\u30c6\u30b9\u30c8\u3001\u7d71\u5408\u30c6\u30b9\u30c8\u3001\u6a5f\u80fd\u30c6\u30b9\u30c8\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30c6\u30b9\u30c8\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u7a2e\u985e\u306e\u30c6\u30b9\u30c8\u3092\u958b\u767a\u304a\u3088\u3073\u5b9f\u884c\u3059\u308b\u305f\u3081\u306e\u8c4a\u5bcc\u306a\u30c6\u30b9\u30c8\u30c4\u30fc\u30eb\u3068\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u4ee5\u4e0b\u3067\u306f\u3001ScalaTest \u3068 Specs2 \u306e\u57fa\u672c\u7684\u306a\u6a5f\u80fd\u3068\u4f7f\u7528\u6cd5\u3092\u305d\u308c\u305e\u308c\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30b9\u30ab\u30e9\u30c6\u30b9\u30c8<\/li>\n<\/ol>\n\n\n\n<p>ScalaTest \u306f Scala \u3067\u6700\u3082\u4eba\u6c17\u306e\u3042\u308b\u30c6\u30b9\u30c8\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e 1 \u3064\u3067\u3042\u308a\u3001FlatSpec\u3001FunSpec\u3001WordSpec\u3001FreeSpec\u3001PropSpec\u3001FeatureSpec \u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u30c6\u30b9\u30c8\u30cb\u30fc\u30ba\u3092\u30b5\u30dd\u30fc\u30c8\u3067\u304d\u308b\u3055\u307e\u3056\u307e\u306a\u30b9\u30bf\u30a4\u30eb\u306e\u30c6\u30b9\u30c8 API \u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>ScalaTest \u306e\u57fa\u672c\u7684\u306a\u4f7f\u7528\u6cd5\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30c6\u30b9\u30c8\u30af\u30e9\u30b9\u3092\u5b9a\u7fa9\u3059\u308b: ScalaTest \u3067\u306f\u3001\u3055\u307e\u3056\u307e\u306a\u30c6\u30b9\u30c8\u30b9\u30bf\u30a4\u30eb\u3092\u4f7f\u7528\u3057\u3066\u30c6\u30b9\u30c8\u30af\u30e9\u30b9\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u30d5\u30e9\u30c3\u30c8\u30b9\u30da\u30c3\u30af \u30b9\u30bf\u30a4\u30eb\u3092\u4f7f\u7528\u3057\u3066\u30c6\u30b9\u30c8 \u30af\u30e9\u30b9\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002 javaCopy \u30b3\u30fc\u30c9 \u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u306f\u3001\u7a7a\u306e\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u306e\u30b5\u30a4\u30ba\u304c 0 \u3067\u3042\u308b\u304b\u3069\u3046\u304b\u3092\u30c6\u30b9\u30c8\u3059\u308b\u30c6\u30b9\u30c8 \u30e1\u30bd\u30c3\u30c9\u3092\u542b\u3080 MySpec \u3068\u3044\u3046\u30c6\u30b9\u30c8 \u30af\u30e9\u30b9\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002<code>import org.scalatest.FlatSpec class MySpec extends FlatSpec { \"An empty Set\" should \"have size 0\" in { assert(Set.empty.size == 0) } }<\/code><\/li>\n\n\n\n<li>\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3059\u308b: ScalaTest \u3067\u306f\u3001\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u307e\u305f\u306f IDE \u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002 \u4f8b\u3048\u3070\u3001\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u3067 sbt \u3092\u4f7f\u3063\u3066\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u307e\u3059: bashCopy code \u4e0a\u8a18\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001ScalaTest \u30c6\u30b9\u30c8\u30af\u30e9\u30b9\u3092\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066\u5b9f\u884c\u3057\u3001\u30c6\u30b9\u30c8\u7d50\u679c\u3092\u51fa\u529b\u3057\u307e\u3059\u3002<code>sbt test<\/code><\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>\u4ed5\u69d82<\/li>\n<\/ol>\n\n\n\n<p>Specs2 \u306f Scala \u306e\u3082\u3046 &lt;&gt; \u3064\u306e\u4e00\u822c\u7684\u306a\u30c6\u30b9\u30c8\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3001\u3088\u308a\u76f4\u611f\u7684\u3067\u8aad\u307f\u3084\u3059\u3044\u30c6\u30b9\u30c8\u30b3\u30fc\u30c9\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b BDD (\u30d3\u30d8\u30a4\u30d3\u30a2\u99c6\u52d5\u958b\u767a) \u30b9\u30bf\u30a4\u30eb\u306e\u30c6\u30b9\u30c8 API \u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>Specs2 \u306e\u57fa\u672c\u7684\u306a\u4f7f\u7528\u65b9\u6cd5\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30c6\u30b9\u30c8 \u30af\u30e9\u30b9\u3092\u5b9a\u7fa9\u3059\u308b: Specs2 \u3067\u306f\u3001\u3055\u307e\u3056\u307e\u306a BDD \u30b9\u30bf\u30a4\u30eb\u306e API \u3092\u4f7f\u7528\u3057\u3066\u30c6\u30b9\u30c8 \u30af\u30e9\u30b9\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001GivenWhenThen \u30b9\u30bf\u30a4\u30eb\u3092\u4f7f\u7528\u3057\u3066\u30c6\u30b9\u30c8 \u30af\u30e9\u30b9\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002 arduino\u30b3\u30fc\u30c9 \u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u306f\u3001\u7a7a\u306e\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u306e\u30b5\u30a4\u30ba\u304c 0 \u3067\u3042\u308b\u304b\u3069\u3046\u304b\u3092\u30c6\u30b9\u30c8\u3059\u308b\u30c6\u30b9\u30c8 \u30e1\u30bd\u30c3\u30c9\u3092\u542b\u3080 MySpec \u3068\u3044\u3046\u30c6\u30b9\u30c8 \u30af\u30e9\u30b9\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002<code>import org.specs2.mutable.Specification class MySpec extends Specification { \"An empty Set\" should { \"have size 0\" in { Set.empty.size must beEqualTo(0) } } }<\/code><\/li>\n\n\n\n<li>\u30c6\u30b9\u30c8\u306e\u5b9f\u884c: Specs2 \u3067\u306f\u3001\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u307e\u305f\u306f IDE \u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002 \u4f8b\u3048\u3070\u3001sbt \u3092\u4f7f\u3063\u3066\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u3067\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3059\u308b:bashCopy code \u4e0a\u8a18\u306e\u30b3\u30de\u30f3\u30c9\u306f Specs2 \u30c6\u30b9\u30c8\u30af\u30e9\u30b9\u3092\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066\u5b9f\u884c\u3057\u3001\u30c6\u30b9\u30c8\u7d50\u679c\u3092\u51fa\u529b\u3059\u308b\u3002<code>sbt test<\/code><\/li>\n<\/ul>\n\n\n\n<p>\u4e00\u822c\u306b\u3001ScalaTest \u3068 Specs2 \u306f\u3069\u3061\u3089\u3082 Scala \u3067\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u30c6\u30b9\u30c8\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3042\u308a\u3001\u3055\u307e\u3056\u307e\u306a\u7a2e\u985e\u306e\u30c6\u30b9\u30c8\u3092\u958b\u767a\u304a\u3088\u3073\u5b9f\u884c\u3059\u308b\u305f\u3081\u306e\u8c4a\u5bcc\u306a\u30c6\u30b9\u30c8\u30c4\u30fc\u30eb\u3068\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 \u958b\u767a\u8005\u306f\u3001\u30c6\u30b9\u30c8\u3068\u30c7\u30d0\u30c3\u30b0\u3092\u3088\u308a\u4fbf\u5229\u306b\u3059\u308b\u305f\u3081\u306b\u3001\u30cb\u30fc\u30ba\u306b\u5fdc\u3058\u3066\u9069\u5207\u306a\u30c6\u30b9\u30c8\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u9078\u629e\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1144\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=64&amp;q=75\" alt=\"\u8ecd\u4ead\"\/><\/figure>\n\n\n\n<p>Scala \u306e IDE (IntelliJ IDEA \u3084 Eclipse \u306a\u3069) \u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p>Scala\u306f\u4eba\u6c17\u306e\u3042\u308b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u3042\u308a\u3001IntelliJ IDEA\u3001Eclipse\u306a\u3069\u3001\u958b\u767a\u8005\u304c\u5229\u7528\u3067\u304d\u308b\u591a\u304f\u306e\u4eba\u6c17\u306e\u3042\u308bIDE\u304c\u3042\u308a\u307e\u3059\u3002 \u4ee5\u4e0b\u306f\u3001Scala \u306e IntelliJ IDEA \u3068 Eclipse IDE \u306e\u305d\u308c\u305e\u308c\u306b\u3064\u3044\u3066\u7d39\u4ecb\u3059\u308b\u3082\u306e\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30a4\u30f3\u30c6\u30ea\u30b8\u30a4\u30c7\u30a2<\/li>\n<\/ol>\n\n\n\n<p>IntelliJ IDEA\u306f\u3001Scala\u8a00\u8a9e\u958b\u767a\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u4eba\u6c17\u306e\u3042\u308bJava\u958b\u767aIDE\u3067\u3059\u3002 IntelliJ IDEA\u306f\u3001Scala\u30d7\u30e9\u30b0\u30a4\u30f3\u3092\u4ecb\u3057\u3066Scala\u8a00\u8a9e\u306e\u958b\u767a\u3068\u30c7\u30d0\u30c3\u30b0\u306e\u30b5\u30dd\u30fc\u30c8\u3092\u63d0\u4f9b\u3057\u3001Scala\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4f5c\u6210\u3001\u7de8\u96c6\u3001\u304a\u3088\u3073\u5b9f\u884c\u3092\u5bb9\u6613\u306b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>IntelliJ IDEA\u3092\u4f7f\u7528\u3057\u3066Scala\u3092\u958b\u767a\u3059\u308b\u306b\u306f\u3001Scala\u30d7\u30e9\u30b0\u30a4\u30f3\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304c\u5b8c\u4e86\u3057\u305f\u3089\u3001\u958b\u767a\u8005\u306f\u6b21\u306e\u624b\u9806\u306b\u5f93\u3063\u3066 Scala \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>IntelliJ IDEA \u3092\u958b\u304d\u3001[\u30d5\u30a1\u30a4\u30eb] -[&gt; [\u65b0\u898f -&gt; \u30d7\u30ed\u30b8\u30a7\u30af\u30c8] \u3092\u9078\u629e\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>Scala \u3092\u9078\u629e\u3057\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u7a2e\u985e\u3068\u5834\u6240\u3092\u9078\u629e\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u3001\u7d44\u7e54\u540d\u3001\u30d0\u30fc\u30b8\u30e7\u30f3\u756a\u53f7\u306a\u3069\u3092\u542b\u3081\u3066\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u69cb\u6210\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>[\u5b8c\u4e86] \u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<p>Scala\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u305f\u5f8c\u3001\u958b\u767a\u8005\u306f\u3001\u30b3\u30fc\u30c9\u306e\u30aa\u30fc\u30c8\u30b3\u30f3\u30d7\u30ea\u30fc\u30c8\u3001\u69cb\u6587\u30c1\u30a7\u30c3\u30af\u3001\u30b3\u30fc\u30c9\u30ea\u30d5\u30a1\u30af\u30bf\u30ea\u30f3\u30b0\u3001\u30c7\u30d0\u30c3\u30b0\u3001\u30c6\u30b9\u30c8\u306a\u3069\u3001IntelliJ IDEA\u306eScala\u30d7\u30e9\u30b0\u30a4\u30f3\u306b\u3088\u3063\u3066\u63d0\u4f9b\u3055\u308c\u308b\u8c4a\u5bcc\u306a\u6a5f\u80fd\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>\u98df<\/li>\n<\/ol>\n\n\n\n<p>Eclipse \u306f\u4eba\u6c17\u306e\u3042\u308b Java \u958b\u767a IDE \u3067\u3001Scala \u8a00\u8a9e\u958b\u767a\u306b\u3082\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 Eclipse \u306f\u3001Scala IDE \u30d7\u30e9\u30b0\u30a4\u30f3\u3092\u901a\u3058\u3066 Scala \u8a00\u8a9e\u306e\u958b\u767a\u3068\u30c7\u30d0\u30c3\u30b0\u306e\u30b5\u30dd\u30fc\u30c8\u3092\u63d0\u4f9b\u3057\u3001Scala \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4f5c\u6210\u3001\u7de8\u96c6\u3001\u304a\u3088\u3073\u5b9f\u884c\u3092\u5bb9\u6613\u306b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>Eclipse \u3092\u4f7f\u7528\u3057\u305f Scala \u958b\u767a\u306b\u306f\u3001Scala IDE \u30d7\u30e9\u30b0\u30a4\u30f3\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304c\u5fc5\u8981\u3067\u3059\u3002 \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304c\u5b8c\u4e86\u3057\u305f\u3089\u3001\u958b\u767a\u8005\u306f\u6b21\u306e\u624b\u9806\u306b\u5f93\u3063\u3066 Scala \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Eclipse \u3092\u958b\u304d\u3001\u300c\u30d5\u30a1\u30a4\u30eb\u300d -&gt; \u300c\u65b0\u898f -&gt; Scala \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u300d\u3092\u9078\u629e\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u3001\u5834\u6240\u3001Scala\u30d0\u30fc\u30b8\u30e7\u30f3\u306a\u3069\u3092\u542b\u3080\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u69cb\u6210\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>[\u5b8c\u4e86] \u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<p>Scala \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u305f\u5f8c\u3001\u958b\u767a\u8005\u306f\u3001\u30b3\u30fc\u30c9\u306e\u30aa\u30fc\u30c8\u30b3\u30f3\u30d7\u30ea\u30fc\u30c8\u3001\u69cb\u6587\u30c1\u30a7\u30c3\u30af\u3001\u30b3\u30fc\u30c9\u306e\u30ea\u30d5\u30a1\u30af\u30bf\u30ea\u30f3\u30b0\u3001\u30c7\u30d0\u30c3\u30b0\u3001\u30c6\u30b9\u30c8\u306a\u3069\u3001Eclipse \u306e Scala IDE \u30d7\u30e9\u30b0\u30a4\u30f3\u306b\u3088\u3063\u3066\u63d0\u4f9b\u3055\u308c\u308b\u8c4a\u5bcc\u306a\u6a5f\u80fd\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u4e00\u822c\u306b\u3001Scala \u306e IntelliJ IDEA \u3068 Eclipse \u306f\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b Scala \u958b\u767a\u30c4\u30fc\u30eb\u3067\u3042\u308a\u3001\u3069\u3061\u3089\u3082 Scala \u8a00\u8a9e\u306e\u958b\u767a\u3068\u30c7\u30d0\u30c3\u30b0\u306e\u30b5\u30dd\u30fc\u30c8\u3092\u63d0\u4f9b\u3057\u3001Scala \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u7c21\u5358\u306b\u4f5c\u6210\u3001\u7de8\u96c6\u3001\u5b9f\u884c\u3059\u308b\u305f\u3081\u306e\u8c4a\u5bcc\u306a\u6a5f\u80fd\u3068\u30d7\u30e9\u30b0\u30a4\u30f3\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 \u958b\u767a\u8005\u306f\u3001Scala\u958b\u767a\u3092\u3088\u308a\u52b9\u7387\u7684\u304b\u3064\u4fbf\u5229\u306b\u3059\u308b\u305f\u3081\u306b\u3001\u30cb\u30fc\u30ba\u306b\u5fdc\u3058\u3066\u9069\u5207\u306aIDE\u3092\u9078\u629e\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1144\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=64&amp;q=75\" alt=\"\u8ecd\u4ead\"\/><\/figure>\n\n\n\n<p>Scala\u306e\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3068\u30ea\u30bd\u30fc\u30b9\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Scala\u306f\u3001\u958b\u767a\u8005\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3001\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3001\u30d6\u30ed\u30b0\u3001\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3001\u66f8\u7c4d\u3001\u30d3\u30c7\u30aa\u30b3\u30fc\u30b9\u306a\u3069\u3001\u5927\u898f\u6a21\u306a\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3068\u8c4a\u5bcc\u306a\u30ea\u30bd\u30fc\u30b9\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u5099\u3048\u305f\u4eba\u6c17\u306e\u3042\u308b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u3042\u308a\u3001\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308bScala\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3068\u30ea\u30bd\u30fc\u30b9\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Scala \u516c\u5f0f\u30b5\u30a4\u30c8: Scala \u516c\u5f0f\u30b5\u30a4\u30c8\u3067\u306f\u3001Scala \u306e\u5b66\u7fd2\u30fb\u958b\u767a\u306b\u5fc5\u8981\u306a\u30ea\u30bd\u30fc\u30b9\u306e\u4e00\u3064\u3067\u3042\u308b Scala \u8a00\u8a9e\u306e\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3001API \u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3001\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3001\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u306a\u3069\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li>Scala \u4e2d\u56fd\u8a9e\u30b3\u30df\u30e5\u30cb\u30c6\u30a3: Scala \u4e2d\u56fd\u8a9e\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306f\u3001\u4e2d\u56fd\u306e Scala \u306e\u516c\u5f0f\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3067\u3042\u308a\u3001Scala \u8a00\u8a9e\u306e\u4e2d\u56fd\u8a9e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3001\u30d5\u30a9\u30fc\u30e9\u30e0\u3001\u30d6\u30ed\u30b0\u3001\u30bd\u30fc\u30b7\u30e3\u30eb\u30e1\u30c7\u30a3\u30a2\u306a\u3069\u3092\u63d0\u4f9b\u3057\u3001\u4e2d\u56fd\u8a9e\u306e Scala \u958b\u767a\u8005\u306e\u30b3\u30df\u30e5\u30cb\u30b1\u30fc\u30b7\u30e7\u30f3\u3068\u5b66\u7fd2\u306e\u305f\u3081\u306e\u91cd\u8981\u306a\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3067\u3059\u3002<\/li>\n\n\n\n<li>Scala China: Scala China \u306f\u4e2d\u56fd\u6700\u5927\u306e Scala \u6280\u8853\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3067\u3042\u308a\u3001Scala \u8a00\u8a9e\u3067\u8a18\u4e8b\u3001\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3001\u30b3\u30fc\u30c9\u30b5\u30f3\u30d7\u30eb\u3001\u30d3\u30c7\u30aa\u30b3\u30fc\u30b9\u306a\u3069\u3092\u63d0\u4f9b\u3057\u3066\u304a\u308a\u3001Scala \u611b\u597d\u5bb6\u304c\u5b66\u3073\u3001\u30b3\u30df\u30e5\u30cb\u30b1\u30fc\u30b7\u30e7\u30f3\u3059\u308b\u305f\u3081\u306e\u91cd\u8981\u306a\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3067\u3059\u3002<\/li>\n\n\n\n<li>Scala Reddit: Scala Reddit \u306f\u4e16\u754c\u6700\u5927\u306e Scala \u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306e 1 \u3064\u3067\u3042\u308a\u3001\u30cb\u30e5\u30fc\u30b9\u3001\u30c7\u30a3\u30b9\u30ab\u30c3\u30b7\u30e7\u30f3\u3001\u8a18\u4e8b\u3001\u30ea\u30bd\u30fc\u30b9\u306a\u3069\u3092 Scala \u8a00\u8a9e\u3067\u63d0\u4f9b\u3057\u3066\u304a\u308a\u3001Scala \u958b\u767a\u8005\u304c\u30b3\u30df\u30e5\u30cb\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u53d6\u308a\u3001\u5b66\u3076\u305f\u3081\u306e\u91cd\u8981\u306a\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3067\u3059\u3002<\/li>\n\n\n\n<li>Twitter\u306eScala\u30c8\u30d4\u30c3\u30af:Twitter\u306eScala\u30c8\u30d4\u30c3\u30af\u306f\u3001Scala\u958b\u767a\u8005\u304c\u30b3\u30df\u30e5\u30cb\u30b1\u30fc\u30b7\u30e7\u30f3\u3068\u5171\u6709\u3059\u308b\u305f\u3081\u306e\u91cd\u8981\u306a\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3067\u3042\u308a\u3001Scala\u95a2\u9023\u306e\u30c8\u30d4\u30c3\u30af\u3084\u4eba\u3005\u3092\u30d5\u30a9\u30ed\u30fc\u3057\u305f\u308a\u3001Scala\u95a2\u9023\u306e\u30cb\u30e5\u30fc\u30b9\u3001\u8a18\u4e8b\u3001\u30ea\u30bd\u30fc\u30b9\u306a\u3069\u3092\u5165\u624b\u3057\u305f\u308a\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>Scala \u306e\u672c: Scala \u306b\u306f\u3001Scala \u3067\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3001Scala \u30af\u30c3\u30af\u30d6\u30c3\u30af\u3001\u305b\u3063\u304b\u3061\u306a\u4eba\u306e\u305f\u3081\u306e Scala \u306a\u3069\u3001\u958b\u767a\u8005\u304c Scala \u8a00\u8a9e\u3068\u958b\u767a\u624b\u6cd5\u3092\u6df1\u304f\u5b66\u3076\u306e\u306b\u5f79\u7acb\u3064\u591a\u304f\u306e\u512a\u308c\u305f\u672c\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li>Scala\u30d3\u30c7\u30aa\u30b3\u30fc\u30b9:Scala\u306b\u306f\u3001Coursera\u3001Scala\u30b9\u30af\u30fc\u30eb\u3001Twitter\u306eScala\u30b9\u30af\u30fc\u30eb\u306a\u3069\u3001\u958b\u767a\u8005\u304cScala\u8a00\u8a9e\u3068\u958b\u767a\u624b\u6cd5\u306b\u3064\u3044\u3066\u3088\u308a\u6df1\u304f\u5b66\u3076\u306e\u306b\u5f79\u7acb\u3064\u3001Scala\u306e\u95a2\u6570\u578b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u539f\u5247\u306a\u3069\u3001\u591a\u304f\u306e\u512a\u308c\u305f\u30d3\u30c7\u30aa\u30b3\u30fc\u30b9\u3082\u3042\u308a\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u5168\u4f53\u3068\u3057\u3066\u3001Scala\u306b\u306f\u5927\u898f\u6a21\u306a\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3068\u3001\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3001\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u30d5\u30a9\u30fc\u30e9\u30e0\u3001\u30d6\u30ed\u30b0\u3001\u66f8\u7c4d\u3001\u30d3\u30c7\u30aa\u30b3\u30fc\u30b9\u306a\u3069\u306e\u8c4a\u5bcc\u306a\u30ea\u30bd\u30fc\u30b9\u30e9\u30a4\u30d6\u30e9\u30ea\u304c\u3042\u308a\u3001\u958b\u767a\u8005\u304cScala\u8a00\u8a9e\u3068\u958b\u767a\u624b\u6cd5\u3092\u5b66\u3073\u3001\u7fd2\u5f97\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002 \u958b\u767a\u8005\u306f\u3001Scala \u3092\u3088\u308a\u52b9\u7387\u7684\u306b\u958b\u767a\u3059\u308b\u305f\u3081\u306b\u3001\u30cb\u30fc\u30ba\u306b\u5408\u3063\u305f\u9069\u5207\u306a\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3068\u30ea\u30bd\u30fc\u30b9\u3092\u9078\u629e\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1144\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=64&amp;q=75\" alt=\"\u8ecd\u4ead\"\/><\/figure>\n\n\n\n<p>Github\u306e\u512a\u308c\u305fScala\u30d9\u30fc\u30b9\u306e\u30b7\u30b9\u30c6\u30e0\u306f\u4f55\u3067\u3059\u304b<\/p>\n\n\n\n<p>Github\u306b\u306f\u591a\u304f\u306e\u512a\u308c\u305fScala\u30d9\u30fc\u30b9\u306e\u30b7\u30b9\u30c6\u30e0\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u3053\u3053\u306b\u3044\u304f\u3064\u304b\u306e\u4e00\u822c\u7684\u306a\u3082\u306e\u304c\u3042\u308a\u307e\u3059:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Apache Spark: Apache Spark \u306f\u3001\u5927\u898f\u6a21\u306a\u30c7\u30fc\u30bf\u51e6\u7406\u3068\u5206\u6790\u306e\u305f\u3081\u306e\u30e1\u30e2\u30ea\u30d9\u30fc\u30b9\u306e\u5206\u6563\u30b3\u30f3\u30d4\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u3002 Spark \u306f\u3001\u4e3b\u8981\u306a\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3068\u3057\u3066 Scala \u3092\u4f7f\u7528\u3057\u3066\u304a\u308a\u3001\u9ad8\u3044\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3001\u4f7f\u3044\u3084\u3059\u3055\u3001\u30b9\u30b1\u30fc\u30e9\u30d3\u30ea\u30c6\u30a3\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>Akka: Akka\u306f\u3001\u30b9\u30b1\u30fc\u30e9\u30d3\u30ea\u30c6\u30a3\u306e\u9ad8\u3044\u5206\u6563\u578b\u306e\u4e26\u884c\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u69cb\u7bc9\u3059\u308b\u305f\u3081\u306eActor\u30e2\u30c7\u30eb\u306b\u57fa\u3065\u304f\u4e26\u884c\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u3002 Akka\u306f\u3001\u9ad8\u6027\u80fd\u3001\u4f7f\u3044\u3084\u3059\u3055\u3001\u30b9\u30b1\u30fc\u30e9\u30d3\u30ea\u30c6\u30a3\u3092\u63d0\u4f9b\u3059\u308bScala\u3092\u30e1\u30a4\u30f3\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3068\u3057\u3066\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li>Play \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af: Play Framework \u306f\u3001\u9ad8\u6027\u80fd\u3067\u30b9\u30b1\u30fc\u30e9\u30d6\u30eb\u3067\u62e1\u5f35\u53ef\u80fd\u306a Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u69cb\u7bc9\u3059\u308b\u305f\u3081\u306e\u8efd\u91cf\u306a\u30a6\u30a7\u30d6\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u3002 Play Framework \u306f Scala \u3092\u30e1\u30a4\u30f3\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3068\u3057\u3066\u4f7f\u7528\u3057\u3066\u304a\u308a\u3001\u4f7f\u3044\u3084\u3059\u304f\u3001\u958b\u767a\u304c\u8fc5\u901f\u3067\u3001\u9ad8\u6027\u80fd\u3067\u3059\u3002<\/li>\n\n\n\n<li>Slick: Slick \u306f\u3001Scala \u3067\u958b\u767a\u3055\u308c\u305f ORM (\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30ea\u30ec\u30fc\u30b7\u30e7\u30ca\u30eb\u30de\u30c3\u30d4\u30f3\u30b0) \u30c4\u30fc\u30eb\u7528\u306e\u30bf\u30a4\u30d7\u30bb\u30fc\u30d5\u306a\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30a2\u30af\u30bb\u30b9\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u3002 Slick\u306f\u3001\u30bf\u30a4\u30d7\u30bb\u30fc\u30d5\u3067\u69cb\u6210\u53ef\u80fd\u3067\u4f7f\u3044\u3084\u3059\u3044\u4e3b\u8981\u306a\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3068\u3057\u3066Scala\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li>Finagle: Finagle\u306f\u3001\u9ad8\u6027\u80fd\u3067\u30b9\u30b1\u30fc\u30e9\u30d6\u30eb\u3067\u30b9\u30b1\u30fc\u30e9\u30d6\u30eb\u306a\u5206\u6563\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u69cb\u7bc9\u3059\u308b\u305f\u3081\u306e\u9ad8\u6027\u80fdRPC(\u30ea\u30e2\u30fc\u30c8\u30d7\u30ed\u30b7\u30fc\u30b8\u30e3\u547c\u3073\u51fa\u3057)\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u3002 Finagle\u306f\u3001Scala\u3092\u30e1\u30a4\u30f3\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3068\u3057\u3066\u4f7f\u7528\u3057\u3066\u304a\u308a\u3001\u9ad8\u6027\u80fd\u3001\u4f7f\u3044\u3084\u3059\u3055\u3001\u30b9\u30b1\u30fc\u30e9\u30d3\u30ea\u30c6\u30a3\u3068\u3044\u3046\u5229\u70b9\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u4e00\u822c\u306b\u3001Github\u306b\u306f\u591a\u304f\u306e\u512a\u308c\u305fScala\u30d9\u30fc\u30b9\u306e\u30b7\u30b9\u30c6\u30e0\u304c\u3042\u308a\u3001Scala\u3092\u4e3b\u8981\u306a\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3068\u3057\u3066\u4f7f\u7528\u3057\u3001\u9ad8\u6027\u80fd\u3001\u4f7f\u3044\u3084\u3059\u3055\u3001\u30b9\u30b1\u30fc\u30e9\u30d3\u30ea\u30c6\u30a3\u3068\u3044\u3046\u5229\u70b9\u304c\u3042\u308a\u307e\u3059\u3002 \u958b\u767a\u8005\u306f\u3001Scala\u958b\u767a\u3092\u3088\u308a\u52b9\u7387\u7684\u304b\u3064\u4fbf\u5229\u306b\u3059\u308b\u305f\u3081\u306b\u3001\u30cb\u30fc\u30ba\u306b\u5fdc\u3058\u3066\u9069\u5207\u306a\u30b7\u30b9\u30c6\u30e0\u3092\u9078\u629e\u3067\u304d\u307e\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>IT\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u306e\u30d3\u30c7\u30aa\u3092\u3084\u308a\u305f\u3044\u306e\u3067 &hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_mi_skip_tracking":false,"footnotes":""},"categories":[23],"tags":[],"class_list":["post-1147","post","type-post","status-publish","format-standard","hentry","category-material"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=\/wp\/v2\/posts\/1147","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1147"}],"version-history":[{"count":1,"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=\/wp\/v2\/posts\/1147\/revisions"}],"predecessor-version":[{"id":1148,"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=\/wp\/v2\/posts\/1147\/revisions\/1148"}],"wp:attachment":[{"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1147"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1147"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1147"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}