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

  関連記事

Charlesを使ってスマホアプリ(iOS)のUAを調べてみた

はじめに ここ最近のスマホアプリには、Webブラウザの機能を実装したものが少なくありません。 (“スマホアプリ内で立ち上がるブラウザ「アプリ内ブラウザ」”の機能は「WebView」というコンポーネントを用いて実装されています。) 昨今のWebサイト、サービス運営に於いて、「通 …

Selenium × PHP でテスト自動化!【環境構築編】

はじめに みなさんこんにちは、プロダクト開発本部の亀梨です。 普段はXmediaOneというメディアプランニング・広告運用管理・トラッキング・マーケティング分析を行う 統合プラットフォームの開発を担当しています。 テスト自動化の背景 わたくしが担当するXmediaOneでは品質担保のために①コードベ …

自社サービスのDocker化(前編)

こんにちは。 インフラ開発部の上田です。 普段は自社開発システムのインフラ担当として、日々頑張って仕事をしています。 今回は、近年話題になっているDockerについて、取り上げてみようと思います! なぜDockerなのか・・・? そもそもDockerとは何か・・・?   当社では様々なサー …

【未経験からのRuby on Rails – 第3回】変数と定数

こんにちは。新卒1年目のmatsuariです。 今回はRubyに限らずプログラミングを学ぶ上で非常に重要となる「変数と定数」について、ご紹介していきます。 変数とは・・・ オブジェクトを一時的に格納しておく箱で、オブジェクトを識別するために利用します。 言葉だけでは理解が難しいかと思いますので、まず …

読み方がわからない技術用語 2015

英語圏での読み方を基本的には参考にしています。英語圏でも複数の読み方をしているケースもあるようなので、あくまでも参考程度。2015と書きながら、古い言葉も混じってますが。 async – えーしんく Alt – おると ASUS – えいすーす bower &#8 …

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

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

D3.jsとその活用事例について

D3.jsとは? D3とは「Data Driven Document」の略で、データに基づいてドキュメントを操作するための JavaScript ライブラリです。 ご存知の方も多いと思いますが、ちょっとだけD3.jsの基本的な使い方、そして弊社プラットフォームでの利用についてご紹介したいと思います。 …

Burpの使い方!

こんにちは、第二ソリューション開発部の谷口です。 受託開発の部署で開発を担当してます。 APIを扱う機会が多く、今回は通信内容を確認するためのローカルプロキシツール「Burp」について書かせて頂きます。 Burpとは Webアプリケーション開発時の検証において、Webサーバとブラウザ間の通信内容を確 …

x-callback-urlを使ってみた

x-callback-urlとは? iOSのアプリ間連携の仕様の一つみたいです。簡単に言うと、ディープリンクを行うためにカスタムURLスキームを利用するが、アプリ毎にバラバラな規則でURLスキームを設定するとアプリ間連携をスムーズに行うことができないため、どのような規則でURLスキームを設定するかを …

クラウド電話API “Twilio”で起こされてみた

どうも、開発部のクラヴマガです。 弊社サービスも最近はAWSの様なクラウド環境でサービスを構築することが多くなりました。 そこで問題になるのが、障害などによる深夜対応・・・。 データセンターに物理サーバをおいていた頃は、データセンターから障害発生時に 電話連絡をもらっていたのですが、クラウド環境では …