初めてJavaを試す方向けの「Javaハンズオンセミナー」北九州高等専門学校にて実施!

Javaに興味のある方、これからJavaを初めてみたいという方は、このようなことを考えていませんか?

「Javaはどういう特徴の言語なのかな?」
「Javaってどうなんだろう?」

Javaはどんな開発環境(OSやハードウェア)でも動作し、オブジェクト指向言語であり、また豊富なライブラリがあるため、世界中のシステム開発言語として、小規模開発から大規模開発で利用されており、Javaを学ぶことは、エンジニアを目指す方にとっては良い経験となります。

本日の記事では弊社、株式会社インターファクトリー(ebisumart)が、2019年7月1日に北九州高等専門学校のコンピューター部員の学生に行った「Javaハンズオンセミナー」の様子を交えながら、初めてJavaを使ってみる方に向け、演習問題を交えてJavaを解説いたします。

Javaと他言語を比較する!Javaは「コンパイル言語」

◆Javaを解説するインターファクトリーのエンジニアの高山

まず、プログラム言語には、下記の二つのタイプに分けられます。

①コンパイル言語
②スクリプト言語

※あくまで分類すると主にどのグループに属するかを表しただけです。例えばJavaにも関数型要素はありますし、Scalaにもオブジェクト指向な要素はあります。

①「コンパイル言語」の特徴は、コンパイルする手間が増えるが処理速度が早いこと

Javaは「コンパイル言語」です。コンパイルとは、コンピューターがプログラムを読み取れるように翻訳することを指し、Javaで書いたコードを実行するためには、先にコンパイルをしないと実行することができません。

そのため、スクリプト言語と比較するとコンパイルする手間が増えますが、その反面あらかじめ翻訳してあるので、処理が高速であるメリットがあります。

※プログラムの実装によってはコンパイル言語であっても処理速度が遅くなる場合があります。

②「スクリプト言語」の特徴は、コンパイル不要ですが処理速度が遅い

それに対しRubyやJavaScriptなどの「スクリプト言語」は、コンパイルする必要がありません。そのためプログラムをそのまま実行することができ、カンタンに素早く開発できるというメリットがあります。

ただし、スクリプト言語であってもコンピューターが読み取れるように、実際にはコンパイル(機械語への置き換え処理が)発生しており、プログラム実行と同時に逐次機械語に置き換える処理が発生するため、コンパイル言語に比べると処理が遅くなるデメリットがあります。

プログラミング言語としての「Java」の3つの特徴

 

プログラミング言語として、Javaには3つの大きな特徴があります。

特徴①「クロスプラットフォーム」だから異なる環境でも同じように動く!

Javaの特徴の一つに「クロスプラットフォーム」というのがあります。クロスプラットフォームとは、例えばJavaを動かす環境の代表的なOSには以下のものがあります。

◆Javaを動かす代表的なOSの例
①Windows
②MacOS
③LinuxやUnix

クロスプラットフォームでは、Javaのプログラムで書かれたアプリケーションでは、OSやハードウェアなどの環境を選ばずに同じ仕様で動かすことができます。

これには大きなメリットがあり、例えば、ハードウェアやOSを別な環境に変更(移行)したとしても、異なる環境でJavaのアプリケーションは、プログラムが同じ動きをすることができるので、環境を変えたからといって、アプリケーションまでゼロから作り変える必要がないのです。

このようにクロスプラットフォームには大きなメリットがあるのです。

特徴②Javaは「オブジェクト指向」だから再利用性しやすく、メンテナンス性が高い

Javaの特徴の2番目は「オブジェクト指向」であることです。例えばアクションゲームで「Aボタンを押すとキャラクターがジャンプする」という機能があったとして、100個の同じような別のゲームを作る場合、同じ処理がある場合は、このプログラミングコードを100個コピーして使うことになります。

ただし途中で「Bボタンおしたら、キャラクターがしゃがむを追加しよう!」となったときに、100個のプログラムを全て変更するのは大変です。しかし、それを最初から「キャラクター」と定義しておけば、キャラクターのプログラムだけを変更すれば良いのです。

これがオブジェクト指向です。この例からわかるとおりメンテナンス性が極めて高く、プログラムの再利用性が高いため、大人数での開発に向いているのです。さらにオブジェクト指向について詳しく知りたい方は、下記の記事が非常によくまとまっていますので、ご一読ください。

参考記事:初心者向けに徹底解説!オブジェクト指向とは?

特徴③Javaは「豊富なライブラリ」を利用できるからゼロから作る必要がない

Javaは1995年から公開された歴史があり、多くの技術者や団体が公開しているライブラリがありますので、ライブラリを利用することで、ゼロからプログラムを書く手間を省いて、効率的にシステム開発をすることができます

Javaを動かしてみよう!PCにJavaをインストールする!

 

Javaを知るには、Javaを動かしてみるのが一番です。まずはJavaを動かせる準備をしてみましょう。まずはJavaをPCにインストールしてみます。下記のサイトからインストールを行います。

Java(OpenJDK)のインストール

WindowsとMacで、ダウンロードファイルが異なりますので気をつけましょう。

 

JavaのインストールとPCでの動作確認については、下記のPDFファイルに「Windows」「Mac」の方向けにまとめておりますので、こちらをご覧ください。

Javaのインストールと動作確認のやり方(PDFファイル)

Javaの演習問題「Javaで好きな国の天気予報を表示する」

◆Javaでコードを書くコンピューター研究部の学生達の様子

 

では、Javaを動かしてみるための演習として、天気予報を表示するプログラムを組んでみましょう。天気予報の情報は、下記より、世界中の天気予報のWebAPI(OpenWeatherMap)が無料で取得できる下記のサービスがあります。

天気予報のWebAPIサービス:OpenWeatherMap

ここで提供されている天気予報のWebAPIを取得して、Javaのプログラムから自分の好きな国の天気予報を表示させてみましょう。

Javaでプログラミングする前の豆知識!WebAPIとは?

プログラムをする前に「WebAPI」を理解しましょう!下記の図をご覧ください。

◆WebAPIの仕組み

 

皆さんがPCやスマートフォンで、WEBサイトを見る時にブラウザーからリクエストを送り、HTMLや画像などのコンテンツを取得する形で、WEBブラウジングを行っております。

WebAPIも基本的に同じですが、ブラウザーではなくプログラムから、リクエストを送り、そのプログラミングが必要とするデータ(JSON,XML形式で)を取得することができます。

そして、皆さんが使っているスマホアプリのほとんどはWebAPIの仕組みを利用しており、例えばスマホアプリで有名な「Yahoo!ニュース」も、WebAPIの仕組みを利用して、ニュースデータを取得して、スマホ画面にニュースを表示させているのです。

◆Yahoo!ニュースアプリの仕組み

 

OpenWeatherMapを使って天気予報を表示する

 

OpenWeatherMapのWebAPIを使って好きな都市の3時間ごとの天気予報を出力してみましょう。 時間ごとの天気予報を出力してください。

演習前の事前準備「教材のダウンロード」

手順①下記より「java-lecture」の教材をダウンロードしてください。

Javaのプログラムコードから天気予報を表示するための教材

ダウンロードできた方は、下記画面を参考にしてご自身のPCの好きなディレクトリにダウンロードファイルを設置してください。

 

下記画面を参考にしてコマンドプロンプトで、設置したフォルダーを指定し、javaファイルを実行ファイルであるclassファイルにコンパイルし、最後にプログラムを実行します。

下記は「上の画面がWindows」で「下の画面がMac/Linux」になります。

 

実行後、「Hello World」と表示されれば事前準備は完了です。

Javaを使った4つの課題

それでは、WebAPIを利用して、Javaのプログラムで下記の課題をやってみましょう。

 

この課題1の解き方については下記のPDFファイルをご覧ください。

課題1の解き方

演習問題に取り組む学生たちの様子

この日は北九州高等専門学生の1年生から3年生まで参加しました。

さすがはコンピューター研究部の部員だけあって、多くの学生は演習を問題無くクリアしていますが、下級生の中には、上手く演習問題をクリアできない学生がいましたが、上級生が、下級生をサポートしながら演習問題に取り組んでいます。

 

Javaで天気予報の表示が上手くいかなかった原因の多くは下記の2つでした。

原因①スペルミス。例えば小文字で書くべきところが大文字になっている
原因②ディレクトリのパス指定が間違えている

本日は、練習のためにJavaのファイルをコンパイルして、そしてJavaを実行する形をとりましたが、通常のJavaの開発ではIDE(統合開発環境)と呼ばれる開発環境を使うことが一般的であり、IDEを使えばコンパイルをしてくれたり、コードの記述の補完をしてくれるため、このようなコードのスペルミスは起きにくく、効率的に開発が行えます。

Javaハンズオンセミナーのまとめ

◆セミナーを終えた講師の高山とセミナーサポートを行った松本

 

WebAPIを使って、取得したデータを出力するということをJavaで行いましたが、Yahooニュースのようなスマホアプリや、弊社のECサイトの開発でも、WebAPIを呼び出して開発することは比較的頻度の高い開発になります。

WEBエンジニア、アプリエンジニアを目指す方がいれば、今日行った天気のAPIを呼び出す演習の延長線上にありますから、
今日の取り組みをもって、Javaに興味を少しでも持ってくれればうれしいです。