嘉巳TweetScala言語とは本連載も、今回で最終回となります。前回まではJavaを使用したオブジェクト指向について解説してきましたが、今回はJavaの後継言語と言われる「Scala」について解説します。Scalaはオブジェクト指向と関数型プログラミングの両方を統合した言語と言われています。関数型プログラミングとは、関数の組み合わせによってプログラムを構築する手法です。関数は入力値に対して出力値を計算して返却する数学に出てくる関数に近い考えです。ScalaはJavaプラットフォームで動作するため、ScalaからJavaのライブラリを利用できます。それでは、早速Scalaの基本構文を見ていきましょう。変数Scalaの基本構文、最初は変数です。変数は代入が何度でも可能な「var」と代入不可の「val」があります。varはJavaの変数と同様の使われ方をします。対してvalはJavaの定数と同一です。変数の宣言は以下のようになります。0ちなみに、変数はJavaのように型を指定できます。0明示的に型を指定しなくてもコンパイラが自動的に型を決定してくれます(型推論と呼ばれます)。変数を初期化するには、初期値にアンダースコア「_」を書くと該当する型のデフォルト値が設定されます。0と同一)基本型(データ型)Scalaの基本型(データ型)は、基本的にJavaのデータ型と同一です。以下に、ScalaとJavaのデータ型の比較表を示します。StringJavaと大文字・小文字の違いくらいなので、迷うことなく使用できると思います。データ型をリテラル(ソースに値を直接書く書き方)として記述する方法は、以下のようになります。1.5f※Floatリテラルは末尾に「F」または「f」を付ける必要がある。付けない場合はDoubleリテラルとなる(Doubleの場合は明示的に「D」または「d」を付けることもできる)。‘sym※シンボルリテラルはシングルクォート「'」を先頭に付ける必要がある。シンボルリテラルはSymbolクラスのインスタンスで、上記例の場合はSymbol("sym")と同じ意味コレクション(Array、Seq、Map)Scalaのコレクションについて解説します。Arrayは順序を保持し、異なる型の値を保持できるJavaでいうところの配列です。3)SeqはArrayとほぼ同じようなコレクションですが、値を変更できません(Arrayは変更可)。3)Mapはキーと値のセットからなるコレクションです。JavaのMapと対応します。3)この他にもScalaにはSetやVectorなど様々なコレクションが用意されていますが、いずれもJavaと同じような使い方をするので、扱いやすいと思います。用意しています(Scalaでは数値(IntやLongなど)もクラス(オブジェクト)のため、数値の演算はクラスのメソッドとして定義されています。否定メソッドメソッドはJavaのメソッドに当たるものです。以下のような形式で定義します。b}制御構文(繰り返し構文)ScalaにはJavaと同様にfor、while、foreachなどの繰り返し構文が用意されています。}クラスScalaのクラス定義はJavaのクラス定義とほとんど変わりません。{}インスタンス化もJavaと同様にnew演算子で行います。SampleここまでScalaの基本構文を見てきましたが、Java同様に継承があったり抽象クラスがあったりとまだまだ紹介しきれない機能がたくさんあります。Javaをマスターした方であれば基本的な文法は同じなので、すぐに習得できると思います。GatlingでScalaを学ぼうScalaの基本構文を覚えると、コードがScalaで作られている「Gatling」という負荷テストツールのコードが書けるようになります。最終回の締めくくりとして、GatlingでScalaのコードを書いてみましょう。Gatlingを実行するために、まずはGatlingの公式サイトよりGatlingをダウンロードしてインストールします。インストール方法はこちらのWebサイトなどを参照してください。インストール」などで検索すると、たくさんの解説サイトがヒットします。インストールができたらGatlingを起動し、Gatlingで実行するシナリオ(プログラム)をScalaで作成します。以下はそのサンプルですが、簡単に説明します。2}コードの1の箇所がアクセス先のURLです(サンプルでは“http://localhost/”としていますが、テストを行いたいURLに変えてください)。2の箇所でシナリオ(プログラム)を実行しています。回アクセスせよ」という意味です。seconds)とすれば60秒間で1から50までユーザ増やしてのアクセスになります。作成したサンプルファイルは(上記例の場合はSample.scalaがファイル名となる)Gatlingインストールディレクトリのuser-files配下に配置します。配置後、binディレクトリ配下にgatling.shがあるので実行します。シナリオ選択画面が表示されたら、作成したシナリオを選択します。シナリオの実行後、グラフが表示されます。ここで紹介したサンプルはアクセスを実行する最もシンプルなコードなので、Scalaの機能を使って色々と修正して試してみてください。Gatlingのドキュメントはこちらに記載されています(英語)。Gatlingを利用しながら実践的にScalaを覚えるのも良いのではないでしょうか。おわりに本連載ではオブジェクト指向、クラス設計やデザインパターンをメインに解説してきました。これらの技術を覚える必要があると感じている新人や若手エンジニアの方に分かりやすく学んでもらうことを目的としてきましたが、いかがでしたか。デザインパターンやオブジェクト指向設計原則など、まだまだ紹介しきれないたくさんのパターンや原則などがあります。これらの学習方法としては、書籍を読んだりサンプルを眺めるだけではなく、どんどん自分でも実際にサンプルを作って試すほうが近道かと思います。最後になりますが、本連載がこれからオブジェクト指向を勉強しようと考えているエンジニアの方々の少しでもお役に立てれば幸いです。サンクJavaを使ったシステム開発に従事し、オブジェクト指向での設計から開発を得意としている。以前はデザインパターンを取り入れたクラス設計やリファクタリングでのコードの体質改善という作業も行っていた。自分の力がまだまだと自覚しており、JavaやUMLの資格も積極的に取得している。仕事の傍らスキー1級やスノボ、テニス、また、野菜ソムリエ取得やフランス料理学校に通うなど、仕事よりも趣味の方に重きを置いているのが玉に瑕。ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。IT会員サービスの概要とメリットをチェック他にもこの記事が読まれています開発ツールイベントGitHub、エンタープライズ向けのイベントを国内で開催。2019でプロダクトデザイナーに訊いた、易しさと高機能をバランスさせるチャレンジ2020/2/10システム開発イベント普段の仕事では得られない、新しい知見や発見がある。キャリアアップにもつながる。VeloCloudが選ばれる理由SD-WANとはなにか。Linuxエンジニア育成への思いF5とNGINXの組み合わせで、サービス公開をよりセキュアに。ITがお届けするポッドキャストです。