{"id":463,"date":"2021-02-19T15:49:26","date_gmt":"2021-02-19T06:49:26","guid":{"rendered":"https:\/\/www.opentone.co.jp\/optonlabos\/?p=463"},"modified":"2025-05-12T10:06:22","modified_gmt":"2025-05-12T01:06:22","slug":"scala%e3%81%a7android%e6%ba%96%e5%82%99%e7%b7%a8","status":"publish","type":"post","link":"https:\/\/www.opentone.co.jp\/ot-lab\/all\/uncategorized\/scala%e3%81%a7android%e6%ba%96%e5%82%99%e7%b7%a8","title":{"rendered":"Scala\u3067Android(\u6e96\u5099\u7de8)"},"content":{"rendered":"\n<p>\u3053\u3093\u306b\u3061\u306f\u3001ohba\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u6700\u8fd1Scala\u306e\u52c9\u5f37\u3057\u59cb\u3081\u307e\u3057\u305f\u3002\u305d\u3093\u306a\u81ea\u5206\u304c\u4e00\u8db3\u98db\u3073\u306bScala\u3067Android\u958b\u767a\u3092\u3057\u3061\u3083\u304a\u3046\u3068\u3044\u3046\u4f01\u753b\u3067\u3059\u3002<br>\u3068\u3044\u3046\u308f\u3051\u3067\u3001Scala\u3067\u7c21\u5358\u306b\uff08\uff01\uff1f\uff09Andoroid\u958b\u767a\u3057\u3061\u3083\u304a\u3046\u6e96\u5099\u7de8\u3067\u3059\u3002<br>\u60f3\u5b9a\u74b0\u5883\u306fUbuntu12.4\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u5fc5\u8981\u306a\u30c4\u30fc\u30eb\u306f\u4ee5\u4e0b\u306e\u3082\u306e\u306b\u306a\u308a\u307e\u3059\u3002<br>(Android\u5074)<br>\u30fbAndroid SDK<\/p>\n\n\n\n<p>(Scala\u5074)<br>\u30fbScala<br>\u30fbsbt<br>\u30fbgiter8<\/p>\n\n\n\n<p>\u305d\u308c\u3067\u306f\u5404\u30c4\u30fc\u30eb\u306e\u7c21\u5358\u306a\u8aac\u660e\u3068\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u65b9\u6cd5\u3092\u7d39\u4ecb\u3057\u3066\u3044\u304d\u307e\u3059\u3002<br><strong>\u25cfAndroid SDK<\/strong><br>\u304a\u99b4\u67d3\u307f\u306eAndroid\u958b\u767a\u30ad\u30c3\u30c8\u3067\u3059\u3002\u3053\u308c\u304c\u306a\u3044\u3068Android\u30a2\u30d7\u30ea\u958b\u767a\u304c\u59cb\u307e\u308a\u307e\u305b\u3093\u3002<br>\u4ee5\u4e0b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u65b9\u6cd5\u3067\u3059\u3002<br>\u2460\u4e0b\u8a18\u30b5\u30a4\u30c8\u304b\u3089Android SDK\u3092\u5165\u624b\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p>http:\/\/developer.android.com\/sdk\/index.html<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"711\" src=\"https:\/\/www.opentone.co.jp\/optonlabos\/wp-content\/uploads\/sites\/11\/2021\/02\/Android_SDK___Android_Developers-1024x711-1.jpg\" alt=\"\" class=\"wp-image-464\" srcset=\"https:\/\/www.opentone.co.jp\/ot-lab\/wp-content\/uploads\/sites\/11\/2021\/02\/Android_SDK___Android_Developers-1024x711-1.jpg 1024w, https:\/\/www.opentone.co.jp\/ot-lab\/wp-content\/uploads\/sites\/11\/2021\/02\/Android_SDK___Android_Developers-1024x711-1-300x208.jpg 300w, https:\/\/www.opentone.co.jp\/ot-lab\/wp-content\/uploads\/sites\/11\/2021\/02\/Android_SDK___Android_Developers-1024x711-1-768x533.jpg 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>\u2461\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u89e3\u51cd\u3057\u307e\u3059\u3002<br>$ tar xvzf android-sdk_r20.0.3-linux.tgz<\/p>\n\n\n\n<p>\u2462\u5c55\u958b\u3057\u305f\u30d5\u30a9\u30eb\u30c0\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u305f\u3044path\u306b\u30b3\u30d4\u30fc\u3057\u307e\u3059\u3002<br>$ sudo cp -rf android-sdk-linux \/usr\/local\/<\/p>\n\n\n\n<p>\u2463\u74b0\u5883\u5909\u6570ANDROID_SDK_HOME\u306e\u8a2d\u5b9a\u3068PATH\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<br>\u4eca\u56de\u306f.bashrc\u306b\u8ffd\u8a18\u3057\u307e\u3057\u305f\u3002PATH\u306f\u300ctools\u300d\u3068\u300cplatform-tool\u300d\u3092\u901a\u3059\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<br>(.bashrc)<br>export ANDROID_SDK_HOME=\/usr\/local\/android-sdk-linux<br>export PATH=$ANDROID_SDK_HOME\/tools:$ANDROID_SDK_HOME\/platform-tools:PATH<\/p>\n\n\n\n<p>\u2464Android SDK\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002<br>$ android<br>Android SDK Manager\u304c\u8d77\u52d5\u3059\u308b\u306e\u3067\u3001\u5fc5\u8981\u306aAPI\u3092\u9078\u629e\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002<br>\u4eca\u56de\u306f\u3001\u307e\u3060\u30e6\u30fc\u30b6\u6570\u306e\u591a\u30442.3\uff08GB\uff09\u306eAPI10\u3068\u3001\u6700\u65b0\u306e4.1\uff08JB\uff09\u306eAPI16\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"300\" height=\"97\" src=\"https:\/\/www.opentone.co.jp\/optonlabos\/wp-content\/uploads\/sites\/11\/2021\/02\/Screenshot_from_2012-09-28-122446-300x97-1.png\" alt=\"\" class=\"wp-image-465\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"300\" height=\"132\" src=\"https:\/\/www.opentone.co.jp\/optonlabos\/wp-content\/uploads\/sites\/11\/2021\/02\/Screenshot_from_2012-09-28-122519-300x132-1.png\" alt=\"\" class=\"wp-image-466\" \/><\/figure>\n\n\n\n<p>\u4ee5\u4e0a\u3067Android SDK\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304c\u5b8c\u4e86\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u30fb\u30fb\u30fb\u30fb\u3042\u308c\uff1f\u7d50\u69cb\u9762\u5012\u81ed\u3044\u305e\uff1f<br>Scala\u3067Android\u306a\u3093\u3066\u3084\u3063\u3066\u3089\u308c\u308b\u304b\u3063\u3066\u601d\u3046\u4eba\u306f\u3001\u3053\u306e\u307e\u307eJava\u3067Android\u958b\u767a\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p><strong>\u25cfScala<\/strong><br>\u4eca\u56de\u306e\u30e1\u30a4\u30f3\u30c7\u30a3\u30c3\u30b7\u30e5\u3067\u3059\u3002Scala\u3068\u306f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u8a00\u8a9e\u3068\u95a2\u6570\u578b\u8a00\u8a9e\u306e\u4e21\u65b9\u3092\u517c\u306d\u5099\u3048\u305f\u8a00\u8a9e\u3067\u3059\u3002<br>\u3055\u3089\u306bJavaVM\u4e0a\u3067\u52d5\u4f5c\u3057\u307e\u3059\u306e\u3067\u3001\u65e2\u5b58\u306eJava\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u6d41\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002<br>\u306a\u306e\u3067\u3001JavaVM\u4e0a\u3067\u52d5\u304fAndroid\u30a2\u30d7\u30ea\u304cScala\u3067\u3082\u958b\u767a\u53ef\u80fd\u3068\u8a00\u3046\u3053\u3068\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u4ee5\u4e0b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u65b9\u6cd5\u30fb\u30fb\u30fb\u3068\u884c\u304d\u305f\u3044\u3068\u3053\u308d\u3067\u3059\u304c\u3001\u3061\u3087\u3063\u3068\u5f85\u3063\u3066\u304f\u3060\u3055\u3044\u3002<br><strong>\u25cfsbt<\/strong><br>Simple Build Tool\u306e\u982d\u6587\u5b57\u3092\u3068\u3063\u3066sbt\u3067\u3059\u3002Java\u3067\u8a00\u3046\u3068\u3053\u308d\u306eant\u3084maven\u306b\u76f8\u5f53\u3057\u307e\u3059\u3002<br>\u306a\u306e\u3067\u9762\u5012\u304f\u3055\u3044\u30d3\u30eb\u30c9\u306f\u3053\u3044\u3064\u306b\u304a\u4efb\u305b\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u4ee5\u4e0b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u65b9\u6cd5\u30fb\u30fb\u30fb\u3068\u884c\u304d\u305f\u3044\u3068\u3053\u308d\u3067\u3059\u304c\u3001\u3082\u3046\u3061\u3087\u3063\u3068\u5f85\u3063\u3066\u304f\u3060\u3055\u3044\u3002<br><strong>\u25cfgiter8<\/strong><br>giter8\u306fgithub\u4e0a\u306b\u516c\u958b\u3055\u308c\u3066\u3044\u308b\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u304b\u3089\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u96db\u5f62\u3092\u4f5c\u3063\u3066\u304f\u308c\u308b\u4fbf\u5229\u30c4\u30fc\u30eb\u3067\u3059\u3002<br>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306b\u306fAndroid\u958b\u767a\u7528\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3082\u3042\u308b\u306e\u3067\u305d\u308c\u3092\u5229\u7528\u3059\u308b\u305f\u3081\u306b\u4f7f\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u4ee5\u4e0b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u65b9\u6cd5\u30fb\u30fb\u30fb\u3068\u884c\u304d\u305f\u3044\u3068\u3053\u308d\u3067\u3059\u304c\u3001\u3042\u3068\u307b\u3093\u306e\u5c11\u3057\u5f85\u3063\u3066\u304f\u3060\u3055\u3044\u3002<br>\u3068\u3044\u3046\u306e\u306f\u3001\u4e0a\u3067\u6319\u3052\u305f3\u3064\u306e\u30a2\u30d7\u30ea\uff08Scala,sbt,giter8\uff09\u306f\u5225\u3005\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3053\u3068\u3082\u51fa\u6765\u307e\u3059\u304c\u3001\u307e\u3068\u3081\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3053\u3068\u3082\u51fa\u6765\u308b\u306e\u3067\u3059\uff01<\/p>\n\n\n\n<p><strong>\u25cfTypesafe stack<\/strong><br>Scala\u306e\u4f5c\u8005Martin Odersky\u6c0f\u3068Akka\u306e\u4f5c\u8005Jonas Boner\u6c0f\u304cTypesafe\u3068\u3044\u3046\u4f1a\u793e\u3092\u7acb\u3061\u4e0a\u3052\u3066\u3001\u305d\u3053\u3067Scala,sbt,giter8\u3092\u7e8f\u3081\u305f\u300cTypesafe stack\u300d\u3092\u516c\u958b\u3057\u3066\u3044\u307e\u3059\u3002XAMPP\u307f\u305f\u3044\u306a\u611f\u3058\u3067\u3059\u306d\u3002<\/p>\n\n\n\n<p>\u3067\u306f\u65e9\u901f\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\uff01<\/p>\n\n\n\n<p>\u2460Ubuntu\u3067\u306fapt-get\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u306btypesafe stack\u3092\u767b\u9332\u3057\u3066\u304b\u3089\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002<br>$ curl -o &#8216;typesafe.deb&#8217; &#8216;http:\/\/apt.typesafe.com\/repo-deb-build-0002.deb&#8217;<br>$ sudo dpkg -i typesafe.deb<br>$ sudo apt-get update<br>$ sudo apt-get install typesafe-stack<\/p>\n\n\n\n<p>\u30cf\u30a4\u3001\u3053\u308c\u3067\u4e00\u6c17\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u5b8c\u4e86\u3067\u3059\uff01<br>\u4eca\u56de\u7d39\u4ecb\u3057\u305f\u30c4\u30fc\u30eb\u306f\u5168\u3066Windows\u3001MacOS\u7248\u3082\u3042\u308a\u307e\u3059\u306e\u3067\u305d\u3061\u3089\u3067\u74b0\u5883\u3092\u69cb\u7bc9\u3057\u3066\u3082\u826f\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<p>\u6b21\u56de\u306f\u3001\u3053\u306e\u74b0\u5883\u3092\u3064\u304b\u3063\u3066Android\u30a2\u30d7\u30ea\u3092\u4f5c\u308a\u307e\u3059\u3002<\/p>\n<div class=\"opent-_2\" style=\"margin-top: 10px;margin-right: 10px;margin-bottom: 10px;margin-left: 10px;\" id=\"opent-3625388513\"><a href=\"https:\/\/www.opentone.co.jp\/backlog\/\" aria-label=\"twitter_backlogskt_new\"><img src=\"https:\/\/www.opentone.co.jp\/ot-lab\/wp-content\/uploads\/sites\/11\/2023\/02\/twitter_backlogskt_new.jpg\" alt=\"\"  srcset=\"https:\/\/www.opentone.co.jp\/ot-lab\/wp-content\/uploads\/sites\/11\/2023\/02\/twitter_backlogskt_new.jpg 1024w, https:\/\/www.opentone.co.jp\/ot-lab\/wp-content\/uploads\/sites\/11\/2023\/02\/twitter_backlogskt_new-300x157.jpg 300w, https:\/\/www.opentone.co.jp\/ot-lab\/wp-content\/uploads\/sites\/11\/2023\/02\/twitter_backlogskt_new-768x401.jpg 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" width=\"384\" height=\"200\"   \/><\/a><\/div>","protected":false},"excerpt":{"rendered":"<p>\u3053\u3093\u306b\u3061\u306f\u3001ohba\u3067\u3059\u3002 \u6700\u8fd1Scala\u306e\u52c9\u5f37\u3057\u59cb\u3081\u307e\u3057\u305f\u3002\u305d\u3093\u306a\u81ea\u5206\u304c\u4e00\u8db3\u98db\u3073\u306bScala\u3067An<\/p>\n","protected":false},"author":1,"featured_media":464,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_uag_custom_page_level_css":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[1],"tags":[8],"class_list":["post-463","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-blog",""],"acf":[],"aioseo_notices":[],"uagb_featured_image_src":{"full":["https:\/\/www.opentone.co.jp\/ot-lab\/wp-content\/uploads\/sites\/11\/2021\/02\/Android_SDK___Android_Developers-1024x711-1.jpg",1024,711,false],"thumbnail":["https:\/\/www.opentone.co.jp\/ot-lab\/wp-content\/uploads\/sites\/11\/2021\/02\/Android_SDK___Android_Developers-1024x711-1-150x150.jpg",150,150,true],"medium":["https:\/\/www.opentone.co.jp\/ot-lab\/wp-content\/uploads\/sites\/11\/2021\/02\/Android_SDK___Android_Developers-1024x711-1-300x208.jpg",300,208,true],"medium_large":["https:\/\/www.opentone.co.jp\/ot-lab\/wp-content\/uploads\/sites\/11\/2021\/02\/Android_SDK___Android_Developers-1024x711-1-768x533.jpg",640,444,true],"large":["https:\/\/www.opentone.co.jp\/ot-lab\/wp-content\/uploads\/sites\/11\/2021\/02\/Android_SDK___Android_Developers-1024x711-1.jpg",640,444,false],"1536x1536":["https:\/\/www.opentone.co.jp\/ot-lab\/wp-content\/uploads\/sites\/11\/2021\/02\/Android_SDK___Android_Developers-1024x711-1.jpg",1024,711,false],"2048x2048":["https:\/\/www.opentone.co.jp\/ot-lab\/wp-content\/uploads\/sites\/11\/2021\/02\/Android_SDK___Android_Developers-1024x711-1.jpg",1024,711,false],"engage-mag-carousel-img":["https:\/\/www.opentone.co.jp\/ot-lab\/wp-content\/uploads\/sites\/11\/2021\/02\/Android_SDK___Android_Developers-1024x711-1-783x450.jpg",783,450,true],"engage-mag-carousel-img-landscape":["https:\/\/www.opentone.co.jp\/ot-lab\/wp-content\/uploads\/sites\/11\/2021\/02\/Android_SDK___Android_Developers-1024x711-1-783x225.jpg",783,225,true],"engage-mag-carousel-large-img":["https:\/\/www.opentone.co.jp\/ot-lab\/wp-content\/uploads\/sites\/11\/2021\/02\/Android_SDK___Android_Developers-1024x711-1-1000x574.jpg",1000,574,true],"engage-mag-carousel-large-img-landscape":["https:\/\/www.opentone.co.jp\/ot-lab\/wp-content\/uploads\/sites\/11\/2021\/02\/Android_SDK___Android_Developers-1024x711-1-1000x287.jpg",1000,287,true],"engage-mag-large-thumb":["https:\/\/www.opentone.co.jp\/ot-lab\/wp-content\/uploads\/sites\/11\/2021\/02\/Android_SDK___Android_Developers-1024x711-1.jpg",1024,711,false],"engage-mag-small-thumb":["https:\/\/www.opentone.co.jp\/ot-lab\/wp-content\/uploads\/sites\/11\/2021\/02\/Android_SDK___Android_Developers-1024x711-1-350x220.jpg",350,220,true]},"uagb_author_info":{"display_name":"ah106rx4o4","author_link":"https:\/\/www.opentone.co.jp\/ot-lab\/author\/ah106rx4o4"},"uagb_comment_info":2,"uagb_excerpt":"\u3053\u3093\u306b\u3061\u306f\u3001ohba\u3067\u3059\u3002 \u6700\u8fd1Scala\u306e\u52c9\u5f37\u3057\u59cb\u3081\u307e\u3057\u305f\u3002\u305d\u3093\u306a\u81ea\u5206\u304c\u4e00\u8db3\u98db\u3073\u306bScala\u3067An","_links":{"self":[{"href":"https:\/\/www.opentone.co.jp\/ot-lab\/wp-json\/wp\/v2\/posts\/463","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.opentone.co.jp\/ot-lab\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.opentone.co.jp\/ot-lab\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.opentone.co.jp\/ot-lab\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.opentone.co.jp\/ot-lab\/wp-json\/wp\/v2\/comments?post=463"}],"version-history":[{"count":1,"href":"https:\/\/www.opentone.co.jp\/ot-lab\/wp-json\/wp\/v2\/posts\/463\/revisions"}],"predecessor-version":[{"id":467,"href":"https:\/\/www.opentone.co.jp\/ot-lab\/wp-json\/wp\/v2\/posts\/463\/revisions\/467"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.opentone.co.jp\/ot-lab\/wp-json\/wp\/v2\/media\/464"}],"wp:attachment":[{"href":"https:\/\/www.opentone.co.jp\/ot-lab\/wp-json\/wp\/v2\/media?parent=463"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.opentone.co.jp\/ot-lab\/wp-json\/wp\/v2\/categories?post=463"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.opentone.co.jp\/ot-lab\/wp-json\/wp\/v2\/tags?post=463"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}