|
本連載では,次世代のエンタープライズ・プラットフォームを支える言語として,このところ最も注目を集めている言語「Scala」の魅力をお伝えしていきたいと思います。Scalaは,技術的にもかなり刺激的で,楽しい言語に仕上がっています。最初の一歩から刺激的な技術解説まで,幅広くScalaのおもしろさ,楽しさをお伝えしたいと思います。
Scalarはじめの一歩
Scalaは,純粋なオブジェクト指向言語であり,かつ本格的な関数型言語の性質を持ったハイブリッド言語です。しかし,最近人気のRubyやPythonを始めとするLL(Lightweight Language)系の動的言語と異なり,静的型付けの言語です。したがって,コンパイルした時点で型や文法に関する問題点はすべて抽出されます。
一般的に,静的型付け言語は生産性や柔軟性があまりよくないのですが,Scalaに限っては,簡潔に考慮された文法とimplicit conversionや型推論の仕組みを用いて,動的言語のRubyほどではないにしろ,それに近い柔軟性と生産性を可能にしています。
さらに,ScalaはJavaVM上で動作し,Javaとほぼ同等の実行速度を誇ります。この実行速度は,たいていのスクリプト言語より一桁早いぐらいの差があります。
現在Rubyを始めとして生産性が高く,開発が楽しい言語がメジャーになりつつあります。しかし,それらは動的型ということもあり,ある程度の人数で開発するような大きめのプロジェクトには向いていません。
そのようなプロジェクトでは,現在JavaやC#ぐらいしか選択肢がないのですが,Scalaがメジャーになれば,この領域のアプリケーション開発プラットフォームの最右翼になる可能性があります。
Scalaの魅力はまだあります。近年のソフトウエアの開発技術の多くは,Ajaxやマッシュアップなどように,従来からある技術がより使いやすくなるといった方向性で進んできました。そのため,技術者としてはやや刺激が足りない面があったのではないでしょうか?
Scalaは違います。とりあえずオブジェクト指向に慣れていれば使えることは使えます。でも,Scala的にクールなコードを書くためには,関数型言語の感覚を理解して,自分の中である意味パラダイム・シフトを起こす必要があります。
もう一つ,Scalaは,生みの親であるMartin Odersky教授がJava Genericsの開発貢献者だったこともあり,大変強力な型システムを備えています。これがまた刺激的です。加えて,implicit conversionなどの新しい考え方やモナド,パーシャル・ファンクションなど非常に「悪魔的」な特徴を持っています。
このようにScalaは,将来的な実益と知的好奇心の刺激の両方を兼ね備えた楽しい言語なのです。ぜひ,この連載で私と一緒にScalaの魅力に触れていきましょう。
今回は初回なので,Scalaのプログラムの作り方と実行方法について説明したいと思います。
インストールと実行
最初に,Scalaをインストールしてみましょう。
なお,前述の通り,ScalaはJavaVMで動作します。JDK 1.4以上の環境が事前にインストールされている必要があるので,ご注意ください。
では,Scalaのダウンロード・ページから,お使いのOSに合わせて,適切なリリースをダウンロードしてください。
Windowsの例で説明すると「ZIP Archive(Windows)」をダウンロードして展開(解凍)します。展開した後,binディレクトリにパスを通せばセットアップは完了です。
例えば,筆者の環境では,執筆時点でのScalaのバージョンが2.7.1なので,アーカイブを展開したディレクトリは,c:\app\scala-2.7.1.finalとなっています。この場合,c:\app\scala-2.7.1.final\binディレクトリにパスを通せばOKです。
パスを通したらコマンドプロンプトを起動して,動作確認をしてください。
C:\>scala -version
Scala code runner version 2.7.1.final -- (c) 2002-2008 LAMP/EPFL
コマンド実行後,上記のような表示が出れば,セットアップは正しくできています。
Scalaのプログラムを実行する方法は,下記の三つのやり方があります。
- 対話形式で実行
- プログラムをスクリプトとして実行(インタプリタ)
- プログラムをコンパイルして実行
順に説明していきましょう。
◆対話形式で実行
コマンドプロンプトで,単純にscalaとタイプしてください。それだけで,scalaのプログラミングを対話形式で体験することができます。
C:\>scala -version
Scala code runner version 2.7.1.final -- (c) 2002-2008 LAMP/EPFL
C:\>scala
Welcome to Scala version 2.7.1.final (Java HotSpot(TM) Client VM, Java 1.5.0_14)
.
Type in expressions to have them evaluated.
Type :help for more information.
scala> 1 + 1
res0: Int = 2
終了するためにはexitコマンドで終了します。
scala> exit
C:\>
◆スクリプトとして実行
スクリプトの場合,ファイル名は慣習として,スクリプトに含まれるクラス名の先頭が小文字になるラクダ式のネーミングになるようです(Scalaの書籍などに明記されているわけではありませんが,多くのサンプル・プログラムがそうなっています)。拡張子は.scalaにします。
よくありがちな「hello world」を表示するスクリプトを作成してみましょう。ここではまだクラスを使っていないので,プログラム内容からhelloWorld.scalaという名前で作成します。コードは,以下の1行です。
println("hello, world!")
インタプリタとして実行させる方法は,下記の通り。
C:\>scala helloWorld.scala
hello, world!
うまく実行できましたね。
あなたにお薦め
今日のピックアップ
-
ずさんな安全管理が露呈したLINEヤフー、総務省が注視するNAVERとの「支配関係」
-
AIが社長に? 分身が欲しい中小企業社長の切実な願いを実現するサービス
-
フェイク排除にプラットフォームの対策が必要、リテラシーだけでは防ぎきれない
-
GUIプログラミングやバイトコード、一歩進んだPythonの使い方を知ろう
-
好きなジャンルの曲をボーカル入りで作成、話題の作曲生成AI「Suno」がすごかった
-
6万円台で勝負に出るZTE、安価な「折り畳みスマホ」は日本で普及するか
-
PCやスマホが激遅なのには理由がある、余計な処理を止める方法
-
個人情報保護委員会がLINEヤフーに行政指導、個人データ52万件流出受け
-
日本IBMが金融向けに生成AIを「拡張」、MicrosoftやAWSのサービスも選択可能
-
医療機関に4つの生成AI、業務負荷を軽減し研究用データベースの充実へ
-
関係者多数の改革プロジェクトでもめる、食い違う意見を擦り合わせる対処法は
-
SNSなど多様な公開情報を解析、セキュリティー対策に生かす「OSINT」とは
注目記事
おすすめのセミナー
-
「仮説立案」実践講座
例えば「必要な人材育成ができていない」といった課題に、あなたならどう取り組みますか? このセミナ...
-
CIO養成講座 【第35期】
業種を問わず活用できる内容、また、幅広い年代・様々なキャリアを持つ男女ビジネスパーソンが参加し、...
-
改革リーダーのコミュニケーション術
プロジェクトを成功に導くために改革リーダーが持つべき3つのコミュニケーションスキル—「伝える」「...
-
パワポ資料が見違える「ビジネス図解」4つのセオリー
インフォグラフィックスとは、形のない情報やデータなど伝えたいことを分かりやすい形で表現する技法で...
-
オンライン版「なぜなぜ分析」演習付きセミナー実践編
このセミナーでは「抜け・漏れ」と「論理的飛躍」の無い再発防止策を推進できる現場に必須の人材を育成...
-
問題解決のためのデータ分析活用入門
例えば「必要な人材育成ができていない」といった課題に、あなたならどう取り組みますか? このセミナ...
-
業務改革プロジェクトリーダー養成講座【第16期】
3日間の集中講義とワークショップで、事務改善と業務改革に必要な知識と手法が実践で即使えるノウハウ...
-
ITリーダー養成180日実践塾 【第14期】
8回のセミナーでリーダーに求められる“コアスキル”を身につけ、180日間に渡り、講師のサポートの...
注目のイベント
-
若手の離職防止につながる、マネジメント・チームづくりのポイント
2024 年 4 月 10 日(水) 10:00~12:30
-
ITモダナイゼーションSummit2024
2024年4月10日(水)、11日(木)12:45~17:50
-
【4月11日】最新HCIの特徴やメリットを学ぶ、参加者にはもれなくプレゼント進呈
2024年4月11日(木)
-
「ニッポンの未来図」――テクノロジーアップデート2024
2024年4月16日(火)14:00~15:00
-
【4月17日】AI活用につなげるIT基盤・組織・運用とは? 鍵は「Edge to Cloud」
2024年4月17日 (水)
-
【4月19日】データの活用と保護を両立、「段階的なDX」を実現するIT基盤とは?
2024年 4月 19日 14:00
-
【4月25日】ハイパーバイザーの基本を学ぶ、参加者にはもれなくプレゼント進呈
2024年4月25日(木)
-
日経クロステックNEXT 関西 2024
2024年5月16日(木)~5月17日(金)
-
人手不足を乗り越える 日本の産業界成長のシナリオ
2024年5月30日(木)開催予定
-
キャリア・オーナーシップが社会を変える
2024年6月3日(月)~6月5日(水)
おすすめの書籍
-
ソフトバンク もう一つの顔 成長をけん引する課題解決のプロ集団
ソフトバンクにはモバイルキャリア事業以外のもう一つの顔が存在する。本書ではキーパーソンへのインタ...
-
対立・抵抗を解消し合意に導く 改革リーダーのコミュニケーション術
本書は、改革リーダーに必須のコミュニケーション術を3つのスキルの観点からまとめ上げたものです。今...
-
もっと絞れる AWSコスト超削減術
本書ではコスト課題を解決するため、AWSコストを最適化し、テクニックによって削減する具体策を紹介...
-
優秀な人材が求める3つのこと 退職を前提とした組織運営と人材マネジメント
「学生に人気のコンサルであっても、大手企業であっても、せっかく獲得した人材が数年で辞めてしまう...
-
Web3の未解決問題
ブロックチェーン技術を主軸とするWeb3の技術について、現在の社会制度との摩擦と、その先にある新...
-
ロボット未来予測2033
ロボットの用途・市場はどう拡大していくのか。AI実装でロボットはどこまで進化するのか。技術の進展...
日経BOOKプラスの新着記事
日経クロステック Special
What's New
経営
- ジェイテクトエレクトロニクスのDX事例
- NTTドコモ支援の実践型教育プログラム
- DXを成功に導くITインフラとは?
- NTTデータに優秀なデジタル人財が集まる理由
- 地域創生で重要になる「事業化」の視点とは
- ERPプロジェクト≫IT人財の必須条件は
- 先進都市対談>生成AIは行政DXの切札?
- 多様化する地域の課題解決に向けて議論
- 地域×テクノロジーでミライを共創する
- 脱レガシー案件≫SIerに必要な人財像は
- 役所文化の変革!奈良市のデジタル市役所
- イノベーションの起爆剤
- 3段階で考える、DXで企業力を高める方法
- 石戸氏に聞く。生成AIを教育で使うには
- 東芝が描くDXの道筋とその先の未来とは
- 次世代技術をもっとリアルに体感したいなら
- 大規模プロジェクトでPMが注意すべき点は
- ファンケルの躍進を支えたMAの徹底活用術
- 経営戦略と連動したシステムのあるべき姿
- 大阪・名古屋エリアのDXが注目される理由
- 力点は「未来予測」へ:データ利活用の勘所
- 生成AI活用でSAP BTPの価値が進化
- ServiceNowでDXを加速≫方法は