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

  関連記事

TypeScriptについてまとめてみた

はじめに JavaScript がとりあえずそのまま動くので、雰囲気で使ってしまいがちな TypeScript。初心者向けに基本的なことをまとめてみました。 TypeScript って何? TypeScript はマイクロソフトが開発したプログラミング言語で、オープンソースでメンテナンスされています …

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

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

no image
Polymer on Rails

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

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

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

(社内新卒・PHPビギナー向け)MacでPHP7開発環境を構築しよう!

はじめに みなさんこんにちは、プロダクト開発本部の亀梨です。 普段はXmediaOneというメディアプランニング・広告運用管理・トラッキング・マーケティング分析を行う 統合プラットフォームの開発を担当しています。 えっ!?新卒のプログラミング研修はPHPで行われるって?!俺の得意言語やないか!! は …

no image
【小ネタ】Javascriptのconsoleオブジェクトをもっと便利に使う方法

すごく便利なconsoleオブジェクトですが、ブラウザによってサポートされているメソッドが なかったり、そもそもconsoleオブジェクトが使えなかったりと、たまに不便だったりします。 そんなときによく使う便利なコード。 [code language=”javascript” …

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

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

fastavroとjqでAVRO形式のファイルからデータを取得しよう

AVRO形式のファイルを取り扱いたい AVROとはApacheプロジェクトのひとつとして開発されているデータ交換形式です。 コンパクトなバイナリで高速なシリアライズ・デシリアライズが行えるため、サーバーログなどに利用されています。 弊社内での一部システムのログデータにも利用されているのですが、専用の …

最強のSQLクライアント(GUIツール)「TeamSQL」を使ってみた!

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

ゼロからAngularでSPAを作ってみた(2) デプロイ・公開編

前回のおさらいと今回やること 前回(はじめてのアプリ編)では、Angular で簡単なチャットアプリを作るところまでやりました。ディレクトリ構成については説明できていなかったのですが、次のようになっています。(主なディレクトリとファイルのみ抜粋) + dist (ビルド・コンパイル後のファイルのディ …