みなさん、こんにちは!
富士通ラーニングメディアのWebアプリケーション開発などのコースを担当している並木です。
さて、みなさんは、開発言語として大きなシェアを誇るJava言語が2014年4月に大幅にアップデートされたことはご存知でしょうか?
今回は、Java言語の開発者の方はもちろん、開発者ではない方でも、これだけは知っていてほしい!という【Java言語の新常識】を3点に絞ってご紹介します。
後輩 松井との会話の中からご紹介していきます。
みなさんも松井と一緒に新常識を身に付けてくださいね。
松井:
矢印...?Javaのコードに矢印なんて想像できないな...
並木:
ソース内では「->」と表現します。
例えばこんな感じ。
この記述法は「ラムダ式」と言われる書き方で、
JavaSE8で新たに導入された技術のひとつなんです。
松井:
なんだかJavaのコードに見えないですね...!
オブジェクト指向に慣れている僕には読みづらく感じるし、
こんな書き方流行らないんじゃないかな...
並木:
この「ラムダ式」は今話題の"関数型プログラミング"の考え方を取り入れていて、利用場面やメリットの多さから非常に注目されているんですよ!
関数型プログラムとは何か、どんな利用場面やメリットがあるかは「新常識2」以降で紹介しますね。
松井:
ほ~ ラムダ式は今後普及していきそうだと感じました。
まずはラムダ式のスタイルに慣れておく必要がありますね。
並木:
「新常識1」で紹介した通り、JavaSE8の新機能「ラムダ式」は
「関数型プログラミング」の考え方を取り入れた記述法になっています。
松井:
関数型プログラミング、最近よく話題になっていますよね。
関数型プログラミングとは何なのでしょうか?
オブジェクト指向プログラミングとは違うものなのでしょうか?
並木:
関数型プログラミングは"関数(※1)"を使用するプログラミング手法であり、宣言型プログラミングの一種と言われています。
それに対してオブジェクト指向は、命令型プログラミングに近いですね。
この特徴は実際のプログラムコードを見ないと
理解しづらい内容にもなるので、詳しくは「新常識3」以降で
確認していきましょう。
(※1)この"関数"は、C言語等で言われる"関数"とは異なる特徴を持ちます。
本コラム内で詳細な説明は割愛しますが、より深く学習されたい方向けに
本コラム「最後に」でお勧めの参考書籍を紹介します。
並木:
プログラム内でループ(繰り返し)処理を行う場面は多いですよね。
例えば・・・
このような処理でも、先ほど紹介したJavaSE8の新機能「ラムダ式」を効果的に利用できるんです。
ここでは更にJavaSE8から追加されたAPI「StreamAPI」も利用します。
松井:
ラムダ式とStreamAPIを使ったコードは簡潔ですね!
でも、簡潔すぎて、何の処理を行っているのか理解しづらい気がします。
並木:
慣れるまでは抵抗があるかもしれませんが、
ラムダ式とStreamAPIを使用したコードの方が
「何がしたいのか」理解しやすくなっているんですよ!
1行ずつ、素直に読めばいいだけです。
松井:
確かに、何がしたいのか理解しやすいですね! ラムダ式とStreamAPIを利用することで直感的なコードが 記述できるんですね!
並木:
「新常識2」で、関数型プログラミングについて下記のように説明しました。
> 関数型プログラミングは"関数(※1)"を使用するプログラミング手法であり、
> 宣言型プログラミングの一種と言われています。
> それに対してオブジェクト指向は、命令型プログラミングに近いですね。
上記のコードを見ると、
従来の処理は"命令的"、ラムダ式を使用した処理は"宣言的"
になっていることが確認できるのではないでしょうか。
従来のコードは「コンピュータがどのような手順で処理を進めるのか」を、
命令するコードとなっています。
一方、ラムダ式を使用したコードでは
「プログラムで何をしたいのか」のみをコードで表現しています。
松井:
プログラムの考え方自体が異なるんですね。
ラムダ式を使用したループ処理は今度利用する機会が多そうなので、
この書き方に慣れていきたいと思います!
今回のブログでは、JavaSE8で導入された技術と従来のJavaとの違いや利用場面・メリットをお話してきましたが、利用場面やメリットはここでは語りきれない点もありますので、最後に今後の学習の助けとなるお勧めの書籍をご紹介します。
その他にも、私がぜひお伝えしたいJava8のメリットや活用場面も 多々ありますので、
直接聴きたいという方は下記講習会のご受講をご検討ください。
☆コラムでご紹介したJava SE 8で新たに登場した関数型プログラミング記法
「ラムダ式」およびStreamAPIについて学ぶコースです。
☆そのほかのWebアプリケーション開発関連コースもご参考にしてください。
みなさまとこれからのJavaについていろいろとお話しできることを
楽しみにしています!
松井正徳(まつい まさのり)
アプリケーション開発担当講師。
当社期待のホープ。好奇心の塊。
黒い肌は、学生時代からのヨットで培った天然モノ。
現在も夏の週末は海に繰り出している。
並木さやか(なみき さやか)
アプリケーション開発担当講師。
松井が新人の頃は教育係を担当。
今でも好奇心旺盛でいろいろなことに挑戦する松井を
心配して見守っている。
(2015/01/22)