これだけは知っていてほしい「Java言語の新常識」!?~Webアプリ担当講師が語るJava8の新技術とその活用場面・メリットとは~

  • テクノロジー

みなさん、こんにちは!
富士通ラーニングメディアのWebアプリケーション開発などのコースを担当している並木です。

さて、みなさんは、開発言語として大きなシェアを誇るJava言語が2014年4月に大幅にアップデートされたことはご存知でしょうか?

今回は、Java言語の開発者の方はもちろん、開発者ではない方でも、これだけは知っていてほしい!という【Java言語の新常識】を3点に絞ってご紹介します。

後輩 松井との会話の中からご紹介していきます。
みなさんも松井と一緒に新常識を身に付けてくださいね。

Java言語の新常識とは

20150122_1.png

新常識1:
コードスタイルが変わります!Javaのソースコードに【矢印】が登場します!

松井:
矢印...?Javaのコードに矢印なんて想像できないな...

並木:
ソース内では「->」と表現します。

例えばこんな感じ。

20150122_2.png

この記述法は「ラムダ式」と言われる書き方で、
JavaSE8で新たに導入された技術のひとつなんです。

松井:
なんだかJavaのコードに見えないですね...!
オブジェクト指向に慣れている僕には読みづらく感じるし、
こんな書き方流行らないんじゃないかな...

並木:
この「ラムダ式」は今話題の"関数型プログラミング"の考え方を取り入れていて、利用場面やメリットの多さから非常に注目されているんですよ!

関数型プログラムとは何か、どんな利用場面やメリットがあるかは「新常識2」以降で紹介しますね。

松井:
ほ~ ラムダ式は今後普及していきそうだと感じました。
まずはラムダ式のスタイルに慣れておく必要がありますね。

新常識2:
"関数型プログラミング"の考え方を取り入れています!

並木:
「新常識1」で紹介した通り、JavaSE8の新機能「ラムダ式」は
「関数型プログラミング」の考え方を取り入れた記述法になっています。

松井:
関数型プログラミング、最近よく話題になっていますよね。
関数型プログラミングとは何なのでしょうか?
オブジェクト指向プログラミングとは違うものなのでしょうか?

並木:
関数型プログラミングは"関数(※1)"を使用するプログラミング手法であり、宣言型プログラミングの一種と言われています。
それに対してオブジェクト指向は、命令型プログラミングに近いですね。

この特徴は実際のプログラムコードを見ないと
理解しづらい内容にもなるので、詳しくは「新常識3」以降で
確認していきましょう。

(※1)この"関数"は、C言語等で言われる"関数"とは異なる特徴を持ちます。
本コラム内で詳細な説明は割愛しますが、より深く学習されたい方向けに
本コラム「最後に」でお勧めの参考書籍を紹介します。

新常識3:
for文を使用せず、より直感的にループ処理を記述できます!

並木:
プログラム内でループ(繰り返し)処理を行う場面は多いですよね。

例えば・・・

  • 従業員リストのデータ全件から、営業部の従業員だけを抽出したい
  • 営業部の従業員を全てソートして出力したい

このような処理でも、先ほど紹介したJavaSE8の新機能「ラムダ式」を効果的に利用できるんです。
ここでは更にJavaSE8から追加されたAPI「StreamAPI」も利用します。

20150122_3.png

松井:
ラムダ式とStreamAPIを使ったコードは簡潔ですね!
でも、簡潔すぎて、何の処理を行っているのか理解しづらい気がします。

並木:
慣れるまでは抵抗があるかもしれませんが、
ラムダ式とStreamAPIを使用したコードの方が
「何がしたいのか」理解しやすくなっているんですよ!

1行ずつ、素直に読めばいいだけです。

20150122_4.png

松井:
確かに、何がしたいのか理解しやすいですね! ラムダ式とStreamAPIを利用することで直感的なコードが 記述できるんですね!

並木:
「新常識2」で、関数型プログラミングについて下記のように説明しました。

> 関数型プログラミングは"関数(※1)"を使用するプログラミング手法であり、
> 宣言型プログラミングの一種と言われています。
> それに対してオブジェクト指向は、命令型プログラミングに近いですね。

上記のコードを見ると、
従来の処理は"命令的"、ラムダ式を使用した処理は"宣言的"
になっていることが確認できるのではないでしょうか。

従来のコードは「コンピュータがどのような手順で処理を進めるのか」を、
命令するコードとなっています。
一方、ラムダ式を使用したコードでは
「プログラムで何をしたいのか」のみをコードで表現しています。

松井:
プログラムの考え方自体が異なるんですね。
ラムダ式を使用したループ処理は今度利用する機会が多そうなので、
この書き方に慣れていきたいと思います!

20150122_taiwa.jpg

最後に

今回のブログでは、JavaSE8で導入された技術と従来のJavaとの違いや利用場面・メリットをお話してきましたが、利用場面やメリットはここでは語りきれない点もありますので、最後に今後の学習の助けとなるお勧めの書籍をご紹介します。

  • Javaによる関数型プログラミング――Java 8ラムダ式とStream
    出版社: オライリージャパン
    Venkat Subramaniam (著)、株式会社プログラミングシステム社 (翻訳)
    ISBN-10: 4873117046
    ISBN-13: 978-4873117041
  • Java8ではじめる「ラムダ式」
    出版社: 工学社 (2014/07)
    清水 美樹 (編集)
    ISBN-10: 4777518418
    ISBN-13: 978-4777518418
  • Javaプログラマーなら習得しておきたい Java SE 8 実践プログラミング
    出版社: インプレス (2014/9/22)
    Cay S. Horstmann (著)、柴田 芳樹 (翻訳)
    言語: 日本語
    ISBN-10: 4844336673
    ISBN-13: 978-4844336679

その他にも、私がぜひお伝えしたいJava8のメリットや活用場面も 多々ありますので、
直接聴きたいという方は下記講習会のご受講をご検討ください。

コース紹介

☆コラムでご紹介したJava SE 8で新たに登場した関数型プログラミング記法
「ラムダ式」およびStreamAPIについて学ぶコースです。

【e講義動画】JavaSE8新機能~関数型プログラミングとStreamAPI~ (UHD28D)

☆そのほかのWebアプリケーション開発関連コースもご参考にしてください。

「Jav)」関連コースマップ

みなさまとこれからのJavaについていろいろとお話しできることを
楽しみにしています!

人物紹介

松井正徳(まつい まさのり)

アプリケーション開発担当講師。
当社期待のホープ。好奇心の塊。
黒い肌は、学生時代からのヨットで培った天然モノ。
現在も夏の週末は海に繰り出している。

並木さやか(なみき さやか)

アプリケーション開発担当講師。
松井が新人の頃は教育係を担当。
今でも好奇心旺盛でいろいろなことに挑戦する松井を
心配して見守っている。

(2015/01/22)