Javaプログラミング入門(1) プログラミングの基礎を知る 研修コースに参加してみた

SEカレッジ2018春夏シーズンより、実際にコースがどんなものだったのか、研修に参加してレポートすることになりました。これからどうぞよろしくお願いします!
今回レポートするのは ↓ のコースです。
プログラミング (1) プログラミングの基礎を知る
実際、参加してみた感想は、プログラムを動かしてみる、という原始的な喜びとおもしろさを感じることができました!
また、“改造して、自分の思い通りに動かす” というプログラミング学習のコツを学べました。
これからプログラミングに取り組もうかなぁ、と思っている方や新人若手の方にはとってもオススメの内容です。
では、どんな内容だったのか、詳細をレポートします!
受講する方の想定
まず、この研修コースの受講前提を整理しておきます。
- パソコンの基本操作ができること
受講目標
続いて、このコースを受講すると、どんなことが身につくのか、目標を見てみましょう。
- プログラミングの手順を知る
- 処理の区切りを考えてプログラムを作れる
- 処理の流れを考えてプログラムを作れる
- 処理をメソッドに分けてプログラムを作れる
では、実際、どのような研修プログラムだったのか、教えてもらったことや心に残ったものを中心にレポートします!
講師紹介
講師は矢沢久雄さんです。
とてもユニークなキャラクターと、わかりやすく解説されるので、SEカレッジでも人気の講師です。
まずはアイスブレイクということで、「親父ギャグを言うので、笑ってね。笑わないともう1回言ってしまうので、ニコッとしてもらえるとうれしいです。」クスリとスタートです。
その中で、矢沢さんが栃木県在住ということで、みつをさんにちなんで、今日のコースをまとめて下さいました。
プログラミング言語ってのは人間の考えを表現するための言語なんだよなあ
ひさを
プログラムはコンピュータに伝わるように書く文章、という意図でした。わかりやすいですね。
皆さんの自己紹介
続いて、受講者の皆さんがどの程度、知識をお持ちなのか確認です。
今回参加された方は、ほとんどプログラムを作ったことが無いという方がほとんどでした。
実際に受講者に手を挙げて頂きながら、「Excelをやっていると、プログラムに近い感覚が得られますよ~」「変数はセルのこと、関数が処理ですよ」というプログラミングの敷居を下げるような話もされていました。
講座内容の紹介
今日のアジェンダとそこで何をするか説明です
目的としては、Javaを使って、 プログラマ脳になろう というものでした。
- プログラミング入門
ここで書くサンプルプログラムはあくまで理解を促すためで、世の中に意味のないものという補足がありました。
そうしないと、これは何が面白いのと思ってしまう、とのことです。たしかに、ハローワールドしてもなんだろうと思ってしまいますね。 - 入力、演算、出力
肥満指数BMIを求めるプログラムを題材に、入力演算出力をセットに考える “プログラマ脳” に段々近付いていきます。 - 順次、分岐、繰り返し
じゃんけんゲームを題材に、今度はプログラムの流れを考えられるようになります。 - 処理をメソッドに分ける
じゃんけんゲームを引き続き題材として、大きなプログラムで、どう部品化していくのか、考えてみます。
補足して、今回使うJavaがどのような言語なのか、人気ランキングが紹介され、TIOBE index for April 2018というサイトで、Javaはダントツ1位でした。
プログラミング入門
ここからはプログラミングです。
SEカレッジの環境は、ほとんどMicrosoft Azureというクラウドにある仮想マシンで構築された開発環境を使います。
なお、今回はシンプルに JDK のみがインストールされています。
プログラミングの手順
さぁ、いよいよプログラミング、の前に、プログラムが動くまでの手順を解説します。
このパートは普段プログラムを使う側だと、まったく想像がつかない部分でした。
- ソースコードを記述する
ソースコードとはコンピュータに伝える “人間にもわかる” 文章のことで、専用の編集ソフト、エディタを使って書きます。 - コンパイル
ソースコードはコンピュータには読めないので、コンピュータでも分かる文章にする、それがコンパイルというものです。 - 動かす
普通のWindowsプログラムは何もしなくても動くけど、JavaプログラムはJava仮想マシンで動くので、起動の仕方が違います。今日はコマンドプロンプトでプログラムを動かしてみます
コマンドの紹介
またコマンドプロンプトでコマンドを打って、ファイルを呼び出したり、プログラムを動かすので、今日使うところだけ紹介です。
md
= `make directory`cd
= `change directory`dir
= `directory`cls
= `clear screen`
なお、このようにコマンドや構文は略されているので、そのままだと覚えにくく、略さないで用語を覚えると定着します、という解説があり、確かに略を覚えると、タイプミスはありませんでした。
Hello! World
さぁ、いよいよプログラミングです!
実際にコマンドプロンプト上に Hello! World
を表示するプログラムを、サンプルを見ながら書きます。
続いて、作成したソースコードを保存してみます。
ただ、いつものようなファイル保存は出来ず、.java
という拡張子にして、ファイル名も好きなように作れないので注意です。(マジか!と思ったポイントでした)
たとえば、Hello
というクラスを作れば、 Hello.java
にしないとダメです。
書き方の注意
そのプログラミング中に書き方に注意することを紹介してもらいました。
- 「パブリック・スペース・クラス・スペース・スタティック・~」と読みながらやるとタイプミスが少なくなる
- やたらカッコを作るので、開きカッコと閉じカッコを最初に書くこと
- エディタがやってくれるけど慣れるまではやろう
- 横に書き連ねてしまうと、とっても長いので、改行する
- {} の中身の書き方
- 先頭を下げて書いた方が読みやすくなる
- タブキーではなくスペースで4つにしたりするが、今だとスペース2つが多い (好みの問題)
- まずは意味がわからなくてよいので書く
- セミコロンで終わる
たしかに音読すると、どこまで打っているのかわかりやすく、ちょっと恥ずかしく感じる部分ではありますが、とても良いやり方でした。
プログラムを動かす
実際書いたプログラムをコンパイルして、動かしてみます。ドキドキ。
コンパイルは、1文字間違えてもエラーが起こり、100点満点じゃないとダメなので、祈る気分でやるようになるとのことでした。
慣れないうちはだいたいエラーが出るので、それだけで通ったときに喜び、それが楽しさに繋がり、やってみようという気になるとのことでした。
ちなみに、私は println
を printIn
とタイプミスしていて、コンパイルが通らず。。
それだけに動いたときにヤターと感じられました!
一通り、コンパイルできたところで、受講されている方に 「コンパイルが通ってうれしいですか?」と講師から質問されたのですが、ほとんどの人が手を挙げてらっしゃいました!
また、この楽しさがわかれば、このサンプルプログラムをマネしたあと改造してみると、さらに面白くなり、上達するということでした。
例えば、今回の Hello World プログラムであれば、
Hello,world
を日本語にしてみるHello,world
を2回出してみる
このマネして改造する、ということを本1冊やってみると、まったく変わります、ということでした。
プログラマ脳になる
プログラムがコンピュータでどう動くのか
コンピュータの中は 入力(Input)->演算(Process)->出力(Output) と装置が分かれて実行されているので、プログラマにも同じ考え方が必要になります。
なので、例えば、お昼を食べるときにも、どんなIPOがあるか考えられるようになっていくとのことでした。
BMIを求めるプログラム
いよいよ、ちょっとした実用的なプログラムを考えます。
ここではBMI(肥満度の指数)を求める仕様をもとに、まずはどんなプログラムを書くのか、考えてみます。
ポイントは、先程の 入力 -> 演算 -> 出力 がどんなものになるのか、というところです。
- BMIの仕様
- BMI = 体重kg ÷ 身長mの2乗
- 25以上なら肥満
ソースコードを解説
実際に入力・演算・出力を考えたところで、ゼロから書くのではなく、用意されたプログラムをもとに、ソースコードを解説してもらいました。
Javaの特徴
ソースコードの解説の前に、Javaの特徴について少しだけ紹介されました。
- // でコメントを書く。// のあとはスペース入れたほうがキレイに見える。ただ好みの問題がある
- クラスライブラリというのを使う
- Javaは全部イチ作るのではなく再利用するという文化
- クラスという単位で用意されていて、それを再利用する
- 再利用可能なクラスが図書館のように膨大にあり、クラスライブラリと呼ばれる
- どんな人でも全部は知らないので、Javaで分からなかったら、ググることが必要
ソースコードの読み方
Javaの特徴をおさえたところで、実際にソースコードを読んでいきます。
プログラムは以下の順番で書かれているので、それが分かれば読めるようになります。
- 変数
- 例えば、体重という変数を扱うのであれば、
weight
を定義する
- 例えば、体重という変数を扱うのであれば、
- 入力
- 演算
- 出力
import java.util.*;
public class Bmi {
public static void main(String[] args) {
// 変数を用意する
double weight; // 体重(kg)
double height; // 身長(m)
double bmi; // BMI
// 体重と身長を入力する
Scanner scn = new Scanner(System.in);
System.out.print("体重(kg)= ");
weight = scn.nextDouble();
System.out.print("身長(m)= ");
height = scn.nextDouble();
// BMIを演算する
bmi = weight / (height * height);
// BMIを出力する
System.out.println("BMI = " + bmi);
}
}
BMIプログラムを改造してみよう
サンプルプログラムが読めるようになったところで、改造のアイデアを紹介してもらいました。
どのように改造すればよいのか、スグには思いつかないので、とても役立ちました!
- 身長を cm にしたい
- 小数点が10ケタ以上あるので、それを2ケタなど指定した値にする // これはライブラリを検索してみると良いとのこと
- 実際に改造してみる
プログラムの処理を考える
順次・分岐・繰り返し
プログラムの処理を組み立てるには、以下の3つしかなく、この3つを使って処理を考えるとのことでした。
- 順次
- 分岐
- 繰り返し
じゃんけんゲームを作ってみる
ここで、順次 / 分岐 / 繰り返し を考えられるよう、じゃんけんゲームが題材となりました。
じゃんけんゲームの仕様が説明され、
- 入力はどれかな~
- 演算はどうするかな~
- 出力はどうかな~
- 処理の流れはどうするかな~、順次かな~、繰り返しかな~
ということを想像しながら考えました。
プログラムを見てみよう
処理を考えたところで、ここでもサンプルプログラムが用意されていましたので、ソースコードを解説します。
注意点
- コンピュータの手を決める乱数は演算でしています
&&
~でかつ、というのを指し、==
は一致していることを指す||
は ~または~ を指す{
}
の位置に気をつけるように //{ }
はブロックとも言う
ということで、プログラムはこれだけです、という説明でした。
あれ? 本当に?? と思ってしまいましたが、これだけの仕組みで複雑な業務システムを作るので、難しく、長くなってくるんですとのこと。確かに。。
改造アイデア
あわせて、ここでも改造するアイデアが紹介されました!
- 出力を顔文字にしてみる
- バグが出るので直す
- 実は入力にいろいろなものが入る可能性がある
- 実はEnterや名前を入れるとクラッシュする
バグが出る、というのは確かにやってみると、そうでした。
プログラミングでは、いろいろ考えることが必要だと改めて気付かされました!
このようにバグ修正をしたり、メソッドを追加していくと長くなり、何を書いているかわからなくなります。(そのことをスパゲッティ状態というそうです)
これを解決するためにJavaでは2つやり方があるとのことでした。
- 部品化
- 部品のメソッドを使う
メソッドを使ってみよう
ここではサンプルプログラムの簡単な紹介でしたが、実際に部品化して、メソッドを分けておくと、とても短く書けて、わかりやすいことが紹介されました。
不思議なもので、確かに読みやすいものでした。ここがとっても難しいハードルのように見えます。
最後にこのプログラムについても改造するアイデアを紹介してもらって、講座は終了しました!
まとめ
実際にプログラムを書いたり、動かすことだけでも、プログラムを使っていた側から大きな違いがあることに気づけて、とても楽しめる内容でした。
また、本に書いてあるサンプルプログラムをまずマネて、その上で、改造する、ということをやっていくと、確かに学ぶことが多く、とてもよいプログラミングの学習方法を体験できました。
最初は Hello World
を表示するだけで何が面白いのかな、と思っていましたが、やってみると全く違いました!
これからプログラミングを学ぼうとする方には、とてもオススメです!
SEカレッジが気になった方はこちらからお気軽にお問合わせください!!
SEカレッジの詳細をご覧になりたい方はこちら!!

SEプラスにしかないコンテンツや、研修サービスの運営情報を発信しています。