Scala入門 準備編「開発環境構築」 – PHP使いからScala使いへ転身!


 

はじめに

みなさんこんにちは、今月入社しましたプロダクト開発本部の亀梨です。
普段はXmediaOneというメディアプランニング・広告運用管理・トラッキング・マーケティング分析を行う
統合プラットフォームの開発を担当しています。

XmediaOneの開発で採用しているプログラム言語はScalaなのですが、
わたくしはDACに入社するまではサーバーサイドの言語はPHPしか経験がなく、
かつコンパイル型の言語に触れたことが無かったため、
入社前に今の配属先の開発環境を聞いた時に、たいそう怯えてしまったことを覚えていますw

というわけで、わたくしが業務内外で学んだScalaという言語について、
これから週一回ペースでシリーズで紹介していきたいと思います。
(はいコミットしちゃいました。週一ペース守れなかったらごめんなさいw)

今日は第一弾として、まずは準備編ということで開発環境の構築方法をご紹介したいと思います。
ちなみに前提としてわたくしの使用マシンがMacということで、Macユーザー向けの内容となります。

Scalaとは

はじめにScalaという言語がどのようなものなのかをご紹介したいと思います。

まずは読み方ですが、Scala = スカラ です。はいココ重要!w 読み方って以外とググっても出てこないんですよね。
そして名前の由来ですが、「スケーラブル(Scalable:拡張性のある)な言語」から来ています。

特徴としては、上の名前の由来が表している通り、ユーザーの求めに応じて成長していけるように設計されているため、
小規模なスクリプトを書くことから大規模システムを開発することまで広範囲のニーズに応えられる言語となっています。

特徴としては、

  1. Java互換
  2. オブジェクト指向関数型プログラミングの融合
  3. 高度な静的型付け
  4. 簡潔で読みやすいプログラムを書ける etc

です。

まず1ですが、ScalaはJVMの上で動作する、つまり、Javaとバイトコードレベルで互換性があるため、
Javaプログラマーは既にあるJavaコードやJavaプログラミングのスキルは完全に再利用できます。

次に2ですが、…これは各々の説明で一冊の分厚い本が出版されているくらいなので、各自調べてください^^;

そして3ですが、ここはわたくしのような動的型付け言語のPHP経験者には馴染みが無いところですかね。
変数や関数の返り値、クラスのメンバーに予めこの値はなんの型かということを設定しておくということですね。
予め型を設定しておけば、仮に間違った型の値がセットされそうになってもエラーになるため安全です。

最後に4ですが、これは実際にJavaで書いたコードとScalaで書いたコードを見比べてみると分かりやすいですかね。

と、あくまでも一例ですが、簡単にスッキリ書くことができます。

以上、Scalaについて紹介させていただきました。
では前置きはこれくらいで、本題に参りましょう。

開発環境の構築

ご紹介するのは以下4点となります。

  1. JDK(Java Development Kit)のインストール
  2. Scalaのインストール
  3. sbtのインストール
  4. IDE「Intellij」のインストールと設定

ちなみに今回試したわたくしの環境としては、

  • Macbook Pro(13-inch, 2016, Four Thunderbolt 3 Ports
  • MacOS Sierra 10.12.6
  • Homebrew 1.3.8

となっています。

JDK8のインストール

まずここで注意点ですが、現時点でJavaの最新バージョンは9ですが、
ここはあえて8をダウンロードしてください!w 理由としては、後述のsbtのインストールができなくなるからです。

JDKのインストールは以下より。
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

リンクをクリックすればダウンロードされ、あとはそのdmgファイルを実行すればインストールされます。

Scalaのインストール

ScalaのインストールはターミナルからHomebrew経由でインストールします。

はい、とっても簡単です。では試しにコマンドラインからscalaで文字を出力してみましょう。

はい、こんな感じです。終了させたい時は「:q」をタイプしてください。

sbtのインストール

次はscalaの標準ビルドツールであるsbtのインストールです。
http://www.scala-sbt.org/1.x/docs/index.html

sbtは、コンパイルはもちろん、プロジェクトに必要なパッケージやライブラリの管理を行ってくれる大変便利なやつです。
Scalaで直接コンパイルするより、sbtの方が軽い(らしい)です。

sbtもHomebrew経由でインストールします。

はい、こちらもとっても簡単です。ではsbtでもコマンドラインから文字を出力してみましょう。

はい、Scalaと全く同じですね。ということで残すはあと一つ!

Intellijのインストール

Scalaはテキストエディタでもコーディングできますが、IDE(統合開発環境)を使うと開発が非常に楽になります。
ダウンロードはこちらより

無料版のCommunityをダウンロード、インストールしたら起動してください。IDEAのScalaプラグインをインストールする必要があります。
詳細は、他社さんのコンテンツですみませんがドワンゴさんの研修資料にとても詳しく載っていますので参考にしてみてください。

今日は以上です

ということで駆け足ではありましたが、開発環境の構築方法を紹介させていただきました。
次回はScalaの言語についての基本(データ型、構文等)についてまとめたものを紹介したいと思います。

それではまた来週ー☆


DACエンジニア採用情報

  関連記事

no image
Polymer core-ajax の使い方

Polymerのcore-ajaxの使い方。 まずは、index.html [code language=”html” title=”index.html”] <!doctype html> <html> <head&gt …

GoogleスプレッドシートからTreasureDataへデータを取り込む

AudienceOneの開発を担当しています。skryoです。 またまたTreasureDataネタですが、今回はGoogleスプレッドシートからGoogleAppsScriptを使ってTreasureDataへデータを取り込む手順を紹介したいと思います。 なぜ? Googleスプレッドシート上でマ …

【小ネタ】JSで要素の組み合わせを列挙する

下記のような、キーの数や要素数が可変のデータの組み合わせを、列挙するjavascriptコードです。 pythonにはitertoolなどの順列・組み合わせ計算を行う定番ライブラリがあるようです。 やっている事ですが、イメージとしては組み合わせを数列に置き換えています。 1桁目が2進数、3桁目が3進 …

no image
Polymer on Rails

Web Componentsをご存知だろうか。これが普及すればWebの開発は画期的に変わるだろう。 説明すると長くなるので、LIGさんのにその辺はお任せして。(この記事読んでください。) 簡単に言えば、下記にあるような新たに提案されたブラウザ向けAPIの総称。 Custom Elements, 説明 …

no image
AWSにRailsアプリをデプロイする(公開編)

次にデプロイするため“aws rails デプロイ”でググってみるとunicorn、nginxというキーワードがでてくるので とりあえずこれを設定していきます。   アプリのsecret_key_baseの設定 [crayon-5a62edba293f2560944 …

【未経験からのRuby on Rails – 第4回】Railsアプリケーション開発をしよう! 〜開発の準備編〜

こんにちは。新卒のmatsuariです。 Rubyについてまだまだ知るべきことはたくさんありますが、とにかく早くアプリを作りたい! ということで、今回はアプリ開発の準備に取り掛かっていきます。 Rubyはアプリを作成しながら、同時に学んでいきたいと思います。 Railsアプリケーション開発の準備《 …

Tableauを利用してMySQLとRedshiftのクロスDBジョインを実現する

はじめに RedshiftやTreasureDataなどのデータマート用のDBにはID単位の解析結果が格納され、ローカルのMySQLにはIDに紐づいた名称マスタが管理されている構成の場合、データマートのクロス集計結果に対してIDに紐づいた名称を付与したいことがあります。 データマート用に用意したDB …

【小ネタ】タスク管理ツール移行: Trello から Asana

  プロジェクトチームのタスク管理ツールを Trello から Asana に変えることになり、 タスクの移行が意外と簡単にできた、というお話です。 Trello と Asana もともと使っていたのは Trello(トレロ)です。 プロジェクト > タスクグループ > タスク …

【未経験からのRuby on Rails – 第2回】Rubyのプログラムを書いてみる(Mac)

こんにちは。新卒1年目のmatsuariです。 前回はRubyとは何か、簡単にご紹介をしましたが、 今回は実際にRubyファイルを作成して、プログラムを書いてみるところまでご紹介していけたらと思います。 Mac環境のプログラミング初心者向けです。 はじめに、Rubyのプログラムを書くためのファイルを …

no image
Angular.jsのvalueとfactoryの違いを考える

次のようなHTMLがあったとする。 [code language=”html”] <!doctype html> <html lang="jp" ng-app="App"> <head> <me …