icon
icon

ループ処理を行う!Scalaでfor文を使う方法【初心者向け】

初心者向けにScalaでfor文を使う方法について解説しています。同じ処理を一定繰り返す処理をScalaで書き方を書いています。実際にループ処理をプログラムを書きながら説明しているので、写経してみましょう。書き方を覚えられるはずです。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

今回は、Scalaでfor文を使う方法について解説します。

ループ処理を行うfor文はプログラムを実行する上で頻出なので、実際に書きながら理解していきましょう。

 

 

田島悠介

今回はScalaでのfor文の使い方について勉強していこう。

大石ゆかり

田島メンター!for文はどういったときに使ったらいいんでしょうか〜?

田島悠介

for文はループ処理、繰り返し処理を行う際に使用するよ。まずは基本の形を見てみよう。

大石ゆかり

はい!

Scalaのfor文とは

for文とは、ループ処理(繰り返し処理)のことを意味します。

ループ処理(繰り返し処理)とは、同じ処理を一定回数反復して処理することです。実際の現場でもループ処理は日々実装されています。

例えば、「こんにちは!」という表示を1,000回表示するとします。

方法としては「こんにちは!」という表示する命令文を1,000行書くことで実装可能です。

しかし、その方法の場合、タイプミスやそもそもの命令文に不具合があった場合1,000行修正する必要があるという問題が残ります。

そこで、for文を使用して少ないコードで保守性の高い繰り返し処理を実装していきます。

 

for文の種類

foreach

Scalaのfor文には単純に処理したい場合の、yield値を指定しないforeach展開を行います。

 

map

値を型変換等行いたい場合には、yield値を指定し、flatMap/map展開を行います。

 

[PR] 無料で現役エンジニアから学べる

Scalaのfor文の書き方

単純処理のfor文

文法

for(変数 <- コレクション) {
  処理内容
}

 

解説

今回は、単純処理としてのfor文の解説を行います。

変数とは値を入れる箱のようなものです。1つの変数に1つの数字や文字を代入するようなイメージです。

コレクションとは配列全般を意味します。

配列とは、1つの配列変数に、複数の値を入れることができます。

変数 <- コレクションのまとまりをジェネレーターと呼びます。ここでは、繰り返し用の値を生成(ジェネレート)するという意味です。

ジェネレーターで値が生成されている間は、処理内容の処理が繰り返し実行され続けます。

 

田島悠介

これがfor文の基本形になるね。

大石ゆかり

ジェネレータの状態に応じて、繰り返し処理が行われるといった感じでしょうか。

田島悠介

次は実際の例で確認してみよう。今回は3の倍数を出力していくシンプルなループ処理を実行するよ。

Scalaのfor文を実際に書いてみよう

3の倍数の計算を行ってみよう

ソースコード

object Main extends App {
  var i = 3
  for {j <- 1 to 10}
    println(i * j)
  }
}

表示結果

3
6
9
12
15
18
21
24
27
30

解説

1行目のobject Main extends App {では、ScalaのAppという機能をextend(継承し再利用)してMainという名前のObject(オブジェクト)を宣言しています。

2行目のvar i = 3では、変数iに数字の3を代入しています。

3行目のfor { j <- 1 to 10}では、for文の条件を指定しています。

j <- 1 to 10の部分がジェネレーターです。ここでは、jに対して指定する配列を生成している間はずっと、処理を繰り返すという条件を設定しています。

1 to 10では、具体的に生成する数字を指定しています。ここでは、1から10の数字を順番に生成します。

4行目のprintln(i * j)では、変数iの初期値である3と、3行目で生成された1から10までの数字の1つが掛け算された結果を表示しています。

5行目の}では、3行目のfor文を終了しています。

6行目の}では、1行目の宣言を終了しています。

表示結果は3×1から、3×10までの結果が表示されました。

https://ideone.com/sQwV6v

 

以上、Scalaでfor文の書き方を解説しました。

関数型プログラミングとは何か詳しく解説した記事も合わせてご覧ください。

 

田島悠介

ここでは、jの値が1から10になるまでの処理を繰り返しで行っているんだ。

大石ゆかり

そのjの値と3を掛けた結果を、その都度出力したということですね。

田島悠介

そうだね。コレクションやジェネレータ、それぞれの役割についても一度見直しておこう。

大石ゆかり

分かりました。ありがとうございます!

この記事を監修してくれた方

中本賢吾(なかもとけんご)
アジマッチ有限会社 代表取締役社長

開発実績:PHPフレームワークを利用した会員制SNS・ネットショップ構築、AWSや専用サーバー下でLinuxを使用したセキュアな環境構築、人工知能を利用したシステム開発、店舗検索スマホアプリ開発など。

その他にも地域の職業プログラマー育成活動を行い、2018年には小学生がUnityで開発したオリジナルAndroidアプリをGooglePlayでリリース。ゲームで遊ぶより作ろうぜ!を合言葉に、小学生でも起業できる技術力を育成可能で有ることを証明し続けている。

初心者・未経験でもできる。まずはテックアカデミーに相談しよう

プログラミングを独学で学習していて、このように感じた経験はないでしょうか?

  • ・調べてもほしい情報が見つからない
  • ・独学のスキルが実際の業務で通用するのか不安
  • ・目標への学習プランがわからず、迷子になりそう

テックアカデミーでは、このような 学習に不安を抱えている方へ、マンツーマンで相談できる機会を無料で提供 しています。
30分間、オンラインでどんなことでも質問し放題です。

「受けてよかった」と感じていただけるよう カウンセラーやエンジニア・デザイナー があなたの相談に真摯に向き合います。

「自分に合っているか診断してほしい」
「漠然としているが話を聞いてみたい」

こんなささいな悩みでも大丈夫です。

無理な勧誘は一切ありません ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)

今なら参加者限定の割引特典付き! 無料相談を予約する