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エンジニア採用情報

  関連記事

ナイーブベイズで羽生さんと羽生くんを分類してみた

はじめに こんにちは。システム開発部の中村です。 機械学習についての理解を促進するため、 データから分類モデルを自動で構築する古典的な方法である、 ナイーブベイズ分類器を実装してみました。 最近はCloudVisionAPIなど専ら画像解析が流行っていますが、 自分のような初学者には敷居が高そうだっ …

ゼロからAngularでSPAを作ってみた(1) はじめてのアプリ編

はじめに Single Page Application (SPA)って知っていますか? Webサイトでコンテンツのリンクをクリックした時に妙に表示が早いな〜というとき、実はページを移動するのではなくてページの一部のみを書き換えていたりします。 こういったサイトの作り方を Single Page A …

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

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

初心者がRailsで開発 – deviseでユーザー認証設定 –

こんにちは、2年目のYukaです。 開発部所属でありながら実は、、 実際に自分で手を動かして開発する機会がなかなかありませんでした。。 しかしついに、、、 開発初心者がRailsでWebアプリの開発に挑戦します!! 今回のゴールは社内でも使用しているGoogleアカウントで簡単にログインができるよう …

Railsたった14行でアドサーバーAPIができた話

こんにちは。駆け出しエンジニアの近江です。 最近Railsにハマっているので、私が2年間担当しているアドサーバの、簡易版をRailsで作ってみました。 広告やキャンペーンを登録する管理画面はある前提で、ここからたった14行追加するだけでアドサーバーのHTTP APIを作りたいと思います。ついでに配信 …

Qiita Team API と Google Spread Sheet でチーム日報を生成する

チーム日報を活用する MarketOne 開発チームでは複数拠点に分かれての開発を行っています。リモート開発が中心となると口頭でのコミュニケーションに限界があるため、テキストベースのコミュニケーションの比重が高い状態にあります。 チケットシステムやソースコード管理ツール上の議論はもちろんおこなってい …

PyStanによるはじめてのマルコフ連鎖モンテカルロ法

はじめに こんにちは。システム開発部の中村です。 社内で行っている『データ解析のための統計モデリング入門』(所謂緑本)の輪読会に参加した所、 大変わかりやすい本だったものの、Macユーザには悲しい事に実装サンプルがWinBUGSだったため、 9章の一般化線形モデルのベイズ推定によるアプローチをPyt …

modern.IEを使ってMac上でWindows10を動かす

Microsoftが提供している modern.IE というプロジェクトがある。そこで提供されている仮想環境を使って、MacにWindows10をインストールしてみる。ちなみに、このプロジェクトの本来の目的はInternet Explorerの表示確認やデバッグの支援。 VirtualBoxの準備 …

Scala番外編「Boxに保存したファイルをBox APIを使ってダウンロードしよう!」

はじめに みなさんこんにちは、プロダクト開発本部の亀梨です。 普段はXmediaOneというメディアプランニング・広告運用管理・トラッキング・マーケティング分析を行う 統合プラットフォームの開発を担当しています。 Box APIを使う背景・目的 DACはメディアレップです メディアレップとは、インタ …

Bootstrapのモーダル機能で多重表示する際に解決しなければならない2つの問題

はじめに みなさんこんにちは、プロダクト開発本部の亀梨です。 普段はXmediaOneというメディアプランニング・広告運用管理・トラッキング・マーケティング分析を行う 統合プラットフォームの開発・保守を担当しています。 エンジニアの皆さん、デザインってどうしてます? わたくしはプライベートでとあるW …