プログラミング言語を学ぶ際、必ずと言っていいほど「Java」という名称を目にするのではないでしょうか。
Javaは、30年以上の歴史を持つプログラム言語であり、「一度書けば、どこでも動く」という理念のもと作られています。
金融機関に関連した大企業や官公庁、家電製品の開発で使われているなど、汎用性や堅牢性が高いです。
本記事ではJava初心者に向けてJavaで作れるアプリやJavaの基礎、プログラム言語としての特徴などを紹介します。
実際に神経衰弱ゲームの作成手順も紹介していますので、ぜひ一緒に手を動かしながら読んでみてください。
INDEX
Java初心者でも作れるプログラム3選
Javaは汎用性が高く「なんでも作れる」と言われてはいるものの、イメージがつきにくい人もいるはずです。
そこで、比較的簡単に作れるアプリのプログラムを3つ紹介します。紹介するアプリは次の3つです。
- 計算機アプリ
- チャットアプリ
- 簡単なゲームアプリ
計算機アプリ
四則演算のみを行う計算機アプリのプログラムは、Java初心者でも作りやすく、かつ演算子の使い方やJavaの基本動作を学びやすいプログラムです。
計算機アプリは、プログラム自体がシンプルな作りなため、プログラムを書く際に使用するIDE(統合開発環境)上で動作の確認ができます。
そして、より複雑な演算処理を追加したり、GUI(グラフィカルユーザーインターフェース)を追加したりすることで、より高度なプログラミングを学べるといった拡張性もあります。
Java初心者であれば、まずは計算機アプリ作りを目標とするのもおすすめです。
簡単なトランプゲームアプリ
簡単なトランプゲームは、Java初心者でも比較的作りやすいゲームアプリです。
たとえば、ババ抜きや七並べ、神経衰弱などのトランプゲームは、ルールが簡単で理解しやすくプログラミング学習に向いています。
トランプゲームアプリを作成することで、プログラミングにおける条件分岐やループ制御の考え方を学びやすいです。
トランプゲームアプリが完成したら、実際に友人を誘って遊べるので、楽しくアプリ作りができることでしょう。
メモアプリ
メモアプリは、Java初心者がプログラミング学習をする上で、さまざまな学びを得やすいアプリです。
メモアプリでは、「入力した文字を記録し、次回起動時に再度表示させる」といった動作が必要不可欠です。
これは、記入した文字をデータベースに保存したり、ネットワーク接続を行いデータを読み込んだりする動作を意味し、プログラミングにおけるデータベースやネットワークの扱いを学ぶことにつながります。
しくみさえ理解できてしまえば、応用として自分用のTODOリストを作成して実際に使用することも可能です。
\文字より動画で学びたいあなたへ/
Udemyで講座を探す >Javaで開発されている有名なサービス
ここからは、実際にJavaで作られ、現在も多くの人たちに利用されているサービスを紹介します。
- 【Webサービス】X(旧:Twitter)
- 【PCゲーム】Minecraft
- 【スマートフォンアプリ】LINEマンガ
- 【基幹システム】金融関連の取引
【Webサービス】X(旧:Twitter)
SNSサービスのひとつであるX(旧:Twitter)は、Javaがメインで作られているWebサービスです。
Javaは、Webサービスのバックエンド(ユーザーには直接見えないサーバー側の処理)で利用されることが多いです。例えばX(旧:Twitter)では、ポストした内容が即座に反映される、といった高速かつ効率的な通信処理を行うために、効率よく動作するJavaが選ばれています。
Javaで作られているWebサービスは非常に多く、国内発のECモール「楽天」もJavaで作られています。
このように、Javaは特にWebサービスにおいて、プログラムの裏方としてサービスを支えていることが多いです。
【PCゲーム】Minecraft
PCゲームとして登場したMinecraftは、Javaで作られているゲームとして非常に有名です。
Minecraftは画像部分以外はすべてJavaで作られていて、多くの部分がオープンソース化しているという特徴もあります。そのため、Javaを使用できるのであれば、誰でも改造データ(MOD)を作成し、自分でカスタマイズしたMinecraftの世界を楽しめます。
スマートフォンが普及した現在、スマートフォン用ゲームアプリの開発でJavaが使われていることも多いです。
【スマートフォンアプリ】LINEマンガ
LINEを利用している人なら一度は目にしたことがあるであろうLINEマンガは、Javaを使って開発されています。
Javaでは、データを高速で複数のサーバーに分散させることができるアプリケーションの使用が可能です。並列処理に強いJavaを利用することで、LINEマンガで発生する膨大なデータ処理を一度で大量に処理可能としています。
Javaを使えばスマートフォンアプリの開発も行え、そのジャンルは問いません。
実はGoogle社がJavaをAndroidアプリの開発言語として採用しているため、Androidアプリの多くはJavaで作られています。
【基幹システム】金融関連の取引システム
Javaは汎用性が高いだけでなく、安定性が高いことでも定評があるため、金融機関のシステムといった基幹システムで活用されていることが多いです。
銀行のシステムや官公庁のシステムで使われているように、Javaは安定性やセキュリティ面で高い信頼を得ています。
そのため、Javaの技術を習得できれば、大企業や官公庁でも活躍できる可能性があります。
【JavaのWebアプリ決定版】ゼロから環境構築,ツール,基礎文法,JSP,サーブレット,DB接続,MVCを一気に学ぶ。
PC(Win,Mac)あればOK。動画通りの手順で、ゼロからJava環境構築。添付ソースで動く。基礎文法、Eclipse(開発ツール)、Tomcat(Webシステム)構築、DB接続、MVCモデルを学び、一気にJava初級開発者以上になれる。
\無料でプレビューをチェック!/
講座を見てみるJavaを使って神経衰弱ゲームを作ってみよう
ここからは、実際にJavaを使って「トランプゲームの神経衰弱」を作成します。
解説で使用しているOSはWindowsです。Macユーザーの場合でも、手順に違いはありません。
プログラミングをする際の基本的な手順は、次のとおりです。
- 作るプログラムの仕様を決める
- 開発環境の準備を行う
- プログラミング
- 実行テスト
ジャンルを問わず、プログラミングでは上記のような流れで開発することがよくあります。
今回は作るもの(神経衰弱ゲーム)がすでに決定している状態です。
1.作るプログラムの仕様を決める
まず、非常に大事なのは、どのようなプログラムを作るのか仕様を決めることです。
大枠となる仕様をしっかりと決めておくことで、プログラミング中に作り方で迷う可能性が減り、円滑に開発を進めやすくなります。
今回は、神経衰弱ゲームを作るため、次のような仕様を用意しました。
- 4ペア(8枚)のカードを使用
- 2人のプレイヤーが交互にプレイ
- すべてのペアが見つかるとゲーム終了
- カードは数字(1~4)が2枚ずつ
- ゲーム開始時にカードをシャッフル
- プレイヤーが選ぶカードは2枚
- 選んだ2枚のカードが一致した場合、そのプレイヤーのスコアが増加し、プレイ続行
- 選んだ2枚のカードが一致しなかった場合、対戦相手の番へ
- ゲーム終了時に、獲得したペアの数が多いプレイヤーが勝利
このプログラムは、IDE(統合開発環境)内のターミナルで実行できるため、GUI(グラフィカルユーザーインターフェース)を作らない前提です。
※IDE:開発に必要な各種ソフトをまとめたパッケージのこと
※GUI:ユーザーが画面上で操作しやすいように見た目を整えた操作画面のこと
2.開発環境の準備を行う
プログラム開発を行う際は、プログラミング言語に応じた開発環境を構築しておく必要があります。
ここでは、導入が簡単ですぐにプログラム開発を始められるIDEのひとつである「Eclipse」を活用します。
Eclipse自体は英語で設計されているソフトです。そのため、今回は日本語化が完了しているパッケージ「Pleiades All in One」をダウンロードします。
こちらから「Pleiades All in One」のダウンロードページへ進み、最新版をダウンロードします。
出典:Pleiades
使用する言語「Java」の欄にある「Download」を選択します。
ボタンをクリックすれば、自動でダウンロードが開始されます。1GBを超える容量なので、ダウンロードが完了するまでに少し時間がかかるでしょう。
下の画像ではWindows用のダウンロードボタンを強調しています。Macユーザーの場合は、下のボタンよりダウンロードするよう注意してください。
出典:Pleiades
ダウンロードが完了したら、解凍作業を行います。
フォルダの解凍先は、任意で選択可能です。デフォルトの解凍先は「Cドライブ」です。
解凍が完了したら、フォルダの中にある「eclipse.exe」をクリックして起動します。
以上で日本語化がすでに完了している「eclipse」の準備は完了です。
3.プログラミング
プログラム開発をする際、まずは新規プロジェクトの作成を行います。これは、作業用フォルダを作るのと同じイメージです。
プロジェクト名は、わかりやすい名前にしておきましょう。
プロジェクトを作成したら、実際にコードを書き込むファイルを作成します。
作成の際は、プロジェクトフォルダ(画像上ではMemoryGameフォルダ)内にある「src」フォルダを右クリックして、ファイルを新規作成します。
作成するファイルの名前は、後述するメインプログラムの名前と同じにする必要があるため、アルファベット表記にしましょう。ファイル名の最後には、「.java」(半角記号のドットとアルファベット)と忘れずに書き込んでください。
ファイルを作成すると、コードを実際に書き込むスペースがIDEの画面上に出現します。
今回作成する神経衰弱ゲームのコードは次のとおりです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Scanner; public class MemoryGame { private static final int PAIRS = 4; private static final int TOTAL_CARDS = PAIRS * 2; private List<String> cards; private boolean[] flipped; private int[] scores; private int currentPlayer; public MemoryGame() { cards = new ArrayList<>(); for (int i = 0; i < PAIRS; i++) { cards.add(String.valueOf(i + 1)); cards.add(String.valueOf(i + 1)); } Collections.shuffle(cards); flipped = new boolean[TOTAL_CARDS]; scores = new int[2]; currentPlayer = 0; } public void play() { Scanner scanner = new Scanner(System.in); while (!isGameOver()) { printBoard(); System.out.println("プレイヤー" + (currentPlayer + 1) + "の番です。"); int firstCard = getValidInput(scanner, "1枚目のカードを選んでください (1-" + TOTAL_CARDS + "): "); int secondCard = getValidInput(scanner, "2枚目のカードを選んでください (1-" + TOTAL_CARDS + "): ", firstCard); if (cards.get(firstCard - 1).equals(cards.get(secondCard - 1))) { System.out.println("マッチしました!"); flipped[firstCard - 1] = true; flipped[secondCard - 1] = true; scores[currentPlayer]++; } else { System.out.println("マッチしませんでした。"); currentPlayer = 1 - currentPlayer; } } printResult(); scanner.close(); } private int getValidInput(Scanner scanner, String prompt) { return getValidInput(scanner, prompt, -1); } private int getValidInput(Scanner scanner, String prompt, int excludeCard) { int input; while (true) { System.out.print(prompt); input = scanner.nextInt(); if (input < 1 || input > TOTAL_CARDS) { System.out.println("無効な入力です。1から" + TOTAL_CARDS + "の間の数字を入力してください。"); } else if (flipped[input - 1]) { System.out.println("そのカードは既にめくられています。別のカードを選んでください。"); } else if (input == excludeCard) { System.out.println("1枚目と同じカードは選べません。別のカードを選んでください。"); } else { return input; } } } private void printBoard() { for (int i = 0; i < TOTAL_CARDS; i++) { if (flipped[i]) { System.out.print(cards.get(i) + " "); } else { System.out.print("* "); } if ((i + 1) % PAIRS == 0) { System.out.println(); } } System.out.println(); } private boolean isGameOver() { for (boolean card : flipped) { if (!card) return false; } return true; } private void printResult() { System.out.println("ゲーム終了!"); System.out.println("プレイヤー1のスコア: " + scores[0]); System.out.println("プレイヤー2のスコア: " + scores[1]); if (scores[0] > scores[1]) { System.out.println("プレイヤー1の勝利!"); } else if (scores[1] > scores[0]) { System.out.println("プレイヤー2の勝利!"); } else { System.out.println("引き分け!"); } } public static void main(String[] args) { MemoryGame game = new MemoryGame(); game.play(); } } |
コードの記入が完了したら、画面左上にある保存ボタンをクリックして保存します。
4.実行テスト
コードの記述が完了したら、実行テストを行います。
コードにエラーがあった場合、エラー表示が出現するので、多くの人はここではじめてエラーがあることに気がつくでしょう。
問題なくプログラムが動くまで、トライアンドエラーを繰り返します。
今回作成した神経衰弱ゲームの動きは、下の画像を参考にしてください。
このプログラムでは、めくるカードの場所がわかるように、カードの置き場所に番号が附番されています。
以上で神経衰弱ゲームは完成です。
このゲームは、文字で結果を表示する形のため、正直味気ないでしょう。
今回は作成しませんでしたが、実際にカードをめくる様子を表現したり、ペアができたらエフェクトが出るようなGUIは、メインとなるゲームプログラムが完成してから追加作成していきます。
この見た目をよくしていくためのプログラムも、Javaで作成可能なので、興味を持った方は下で紹介するような方法でぜひJavaの学習を進めてみてください。
Javaを初心者が学ぶ際に注意すべき2つのポイント
ここでは、Javaのみならず、プログラミングを学ぶ初心者が注意すべき2つのポイントを紹介します。
- エラーが出ても焦らない
- 質問できる環境を整えておく
エラーが出ても焦らない
プログラミングにおいては、エラーが必ずと言っていいほど出現します。
エラーが出るたびに不安になったり落ち込んでいると、疲れが溜まるだけでなくモチベーションも下がり、プログラミング学習が続かなくなってしまう可能性も。
プログラミングにおいては、エラーが出て当たり前だという気構えが特に重要です。エラーは、コンピュータがプログラムの品質を上げるために教えてくれるフィードバックだと思えば、気持ちも楽になります。
エラー内容を落ち着いて理解し、一つひとつ丁寧に修正していくように心がけましょう。
質問できる環境を整えておく
自分で調べてもどうしても解決できないとき、ほかの人に質問できる環境があると非常に便利です。
メンターやスクールを活用するのもおすすめですが、これには一定の出費が伴います。そこでおすすめなのが、どなたでも使える掲示板を利用することです。例えば、teratailやQiitaといったIT関連に特化した掲示板が存在していて、そこで疑問を投げかければ多くの有識者からアドバイスをいただけます。
掲示板にはさまざまな人が利用していることもあり、アドバイス内容に良し悪しがあるのも事実です。しかし、手軽に聞けるという大きなメリットがあるので、まずは掲示板の利用を検討してみてはいかがでしょうか。
Javaを初心者が学ぶ3つのメリット
Javaを学習すれば、プログラミング学習においてさまざまなメリットを享受できます。
ここからは、Jayaを初心者が学ぶメリットを3つ紹介します。
- 汎用性が高い
- 情報量が豊富
- プログラミングの基礎知識が向上する
汎用性が高い
Javaはプログラミング言語の中でも、非常に汎用性が高いと言われています。
習得に少し時間はかかりますが、プラットフォームに依存せず扱えるため、企業内の基幹システムからAndroidアプリの開発まで、ジャンルを問わず使用されているのが特徴です。
また、Javaは30年近くの歴史があり、今でも定期的に更新され続けています。これは、長い歴史を持ちながらも、現代の技術に適応し続けている言語と言える強みがあります。
Javaを習得できれば、どの業界でも戦力となることから、就職や転職にも有利に働くことでしょう。
情報量が豊富で学びやすい
Javaの歴史は長く、これまで世界中で多くのユーザーが利用してきた結果、蓄積されている情報量が非常に豊富です。
これまで蓄積されてきた知見の多くは、Web上で公開され、検索すればいつでも探せます。わからないことがあっても、Web上で検索すれば解決できることが多いです。
そのため、Java初心者だけでなく、上級者であっても学習時に挫折しにくいというメリットがあります。
プログラミングの基礎知識が向上する
Javaはプログラミングの基礎知識を学ぶのに適していると言われています。
Javaは、オブジェクト指向と呼ばれる概念を基に設計されているプログラミング言語です。
そして、多くの現代的なプログラミング言語やフレームワークがオブジェクト指向の原則に基づいて設計されているため、今後ほかの言語を学習する際にも、この概念を理解することは非常に重要です。
そのため、Javaを学ぶことは、オブジェクト指向プログラミングの概念と実践を深く理解するための優れた方法となります。
Javaを初心者が学ぶデメリット
Javaはプログラミング学習において多くのメリットがありますが、デメリットも存在しています。
それは、Javaを習得するのに必要な時間が比較的長いことです。Javaは、特に新しいプログラミング言語と比較した場合、ルールが多かったりエラーへの対処が難しかったりするため、難易度が高めのプログラミング言語だと言われています。
YouTube動画や書籍を用いて独学で学習することに不安がある人は、有料学習教材などを活用し、体系的に学習できるような環境を整えておくのがよいでしょう。
Javaを学習する上で大事なのは、挫折せず継続して学習が続けられることです。
まとめ
Javaは長い歴史を持つプログラミング言語で、プログラミングの基礎知識を学ぶのに適しています。
本記事で紹介したサービスのように、Javaはジャンル問わず使われているのが特徴です。そのため、Javaを習得できればさまざまな場で活躍できるでしょう。
ただ、無料教材を利用して独学で学習するのが不安な方もいるはず。ほかの言語と比較すると、どうしても難易度が高めだというイメージは拭えません。
そこでおすすめなのが、段階的な学習プロセスを考慮して作成された教材です。挫折せず継続して学習を続けられるように、自分にあった教材を選ぶようにしましょう。
Udemyでは、買い切り型の講座が20万講座以上もあるオンライン学習プラットフォームです。現場で活躍するプロの講師から動画でわかりやすく学ぶことができます。今話題の体系的にJavaの基礎からWebアプリ構築までを学べる講座を受講し、一気にJava初級開発者以上を目指してみませんか。
下記講座のレビューを一部紹介
評価:★★★★★
JDBCを介してWEBプログラムを作成することができるようになり、大変勉強になりました。基本的な内容でしたが、応用が利くコンテンツでした。
評価:★★★★★
Webシステムの基本の仕組みをザクッと学習できました。過去に得た断片的な知識や忘れてしまった記憶がつながる感じでした。プログラミングやらHTTPやらの予備知識はあるが、Java、Webが分かったような分からないような、もしくは殆ど忘れてしまった、という人に向いていると思います。環境構築から学習出来たのでとても良かったです。JDK以外は2020年5月の最新版で行いましたが、特に問題はありませんでした。
最新情報・キャンペーン情報発信中