3時間で学ぶ 非エンジニア向け プログラミング 入門 研修コースに参加してみた
今回参加した研修コースは 3時間で学ぶ 非エンジニア向けプログラミング入門 です。
世の中プログラミングブームですが、SEカレッジでも数年前からプログラマではない方向けプログラミング入門コースを開催しています。いずれも満員で、いずれも満足度が高い人気コースです。今日も満員でした!
プログラミングブーム関連の記事では、よく “プログラミング的思考” という捉えどころがない言葉が出てきます。このコースに参加すると、それは「コンピュータが出来ることをわかる」「コンピュータを自分の思い通りに動かす考え方」ということなのかも知れない、とプログラミングを体験しながら感じました!
プログラミング的思考を身につけたいと思う方にはオススメのコースです !!
では、どのような内容だったのか、レポートします!
もくじ
コース情報
想定している受講者 | パソコンの基本操作ができること |
---|---|
受講目標 |
|
講師紹介
プログラミングの入門書籍、コースではおなじみの 矢沢 久雄さん です。最近は子どもや10代に向けたプログラミング入門書も手掛けてらっしゃいます。
講師紹介とともに、いつものように受講者にアンケートされてスタートしました。
- Windows PC をお持ちですか
- ほとんど持ってる -> 今日のプログラムは持ち帰っても出来ます
- Excel を使ったことがありますか?
- 使ったことがある -> セルに数式や関数を入れるとか、それもプログラムです
- Web ページを作ったことがありますか?
- ほとんど作ったことがない -> 今日は VBScript というスグに動くものを使います
- ちょっと見た目はキレイではありません
- プログラムを作ったことがありますか?
- ほぼ半分が初めて
入力/演算/出力
まずはプログラムで出来ること、入力 -> 演算 -> 出力 を解説します。
- 現時点でコンピュータは自ら情報を作ることは出来ない
- 何かしら情報を与えないと動かない
- プログラムとは?
- プログラムの語源
- プロ ・・・予め
- グラム ・・・書かれたもの
- コンピュータのプログラム
- コンピュータにこれからやってもらうことを書いたもの
- とはいえ自由に書いて良いものではない
- コンピュータは融通が効かないので、プログラミング言語を使って記述する
- ファイルを読み込んで実行する
- 何を使って書いても良い -> テキストエディタを使う
- メモ帳を使っても良い
- プログラムの語源
コンピュータにわかるように自分のやりたいことを書く、それがプログラムということですね。
プログラムに記述すること
- コンピュータに出来ることしか書けない
- 入力せよ
- 演算せよ
- 出力せよ
- (記憶せよ) // 自動的にやっている
- プログラミングをマスターするには?
- 自分で考えたことを表現できるようにならないといけない
- マスターするステップ
- サンプルプログラムを書いて、その動作を確認する
- サンプルプログラムを自分の考えで改造する
- 出力するメッセージを関西弁にするのでもよい
- こうなるはずだ、と思って改造する
入力/演算/出力と言われても、ちょっとイメージつかなかったのですが、下のサンプルプログラムを見ると、とてもわかりやすいものでした。
サンプルプログラム
- 入力と演算と出力が何になるのか考えてみる
- 変数とは?
- この例では体重や身長など
- 他の例: 三角形の面積 = 底辺 * 高さ * 0.5
- 変数: 三角形の面積, 底辺, 高さ
- 定数: 0.5
乗換案内であれば、入力が出発駅と到着駅、出力が経路情報、演算が経路計算、ECサイトであれば、入力が商品選択やクレカ情報など、出力が納品伝票、演算は… ちょっと一杯ありすぎて想像がつきませんが、プログラムで考えるコツがつかめてきました。
プログラミングしてみましょう
- 言語なので音読するとわかりよいでしょう
- 始まりと終わりを忘れないようにしましょう -> ( ) など
H = InputBox("あなたの身長 (m) を入力してください。") // H (Height) という変数を入力できるボックスを表示
W = InputBox("あなたの体重 (kg) を入力してください。") // W (Weight) という変数を入力できるボックスを表示
BMI = W / H / H // BMIの値を求める演算 体重 ÷ 身長 ÷ 身長 を書く
MsgBox "あなたお肥満指数は、" & BMI & "です。" // BMIの演算結果をメッセージに出力
特に難しい表現もないので、とっても読みやすく理解しやすいですね。
プログラムの解説
サンプルプログラムをもとにプログラミング用語を解説です
動詞
目的語
- H や W や BMI などが変数
- InputBox が関数、MsgBox がステートメント
では、いよいよ実行してみましょう!!
動きましたー!
実行結果をみて
- BMI の小数点が出すぎてません?
- 身長を m ではなく cm でやりたくなりません?
- 標準体重も知りたくなりません?
改造しましょう!
改造したくなったら
- ググりましょう!
- 先程の改造のヒント
- ググらなくてもいけるやつ
- 身長を cm 単位で入力できるようにする
- 身長に対する標準体重を表示する
- 標準体重 = 22 × 身長 × 身長
- ググってできる改造
- BMI の小数点以下を 1 桁にする // “VBScript 小数点以下” でググってみましょう
- ググらなくてもいけるやつ
ということで、各自で改造してみます。私もイソイソ取り組んでみました。
H = InputBox("あなたの身長 (cm) を入力してください。")
W = InputBox("あなたの体重 (kg) を入力してください。")
BMI = W / (H / 100) / (H / 100) // cm を m にする
SW = 22 * (H / 100) * (H / 100) // 22 × 身長 × 身長
BMI = Round(BMI, 1) // 小数点を丸める処理とその結果を入れる変数
MsgBox "あなたお肥満指数は、" & BMI & "です。" & "あなたの標準体重は、" & SW & "です。"
動きましたー!
加えて、矢沢さんから「短く書けるともってよいです」というアドバイスがあったので改造します。
H = H / 100
BMI = Round(W / H / H, 1)
さらに「処理を分けると、もっと見やすくなります」というアドバイスをもらって、さらに改造します。
'身長と体重を入力
H = InputBox("あなたの身長 (cm) を入力してください。")
W = InputBox("あなたの体重 (kg) を入力してください。")
'cm を m に変更
H = H / 100
'BMI を計算し、結果を表示
BMI = Round(W / H / H, 1)
MsgBox "あなたお肥満指数は、" & BMI & "です。"
'SW (Standard Weight) を計算し、結果を表示
SW = Round(22 * H * H, 1)
MsgBox "あなたお肥満指数は、" & SW & "です。"
動きましたー!!
アルゴリズム
入力/演算/出力 を経験したところで、自分のやりたいことを手順にするやり方、アルゴリズムを紹介されました。
ちなみに、アルゴリズムの語源は数学者の名前だそうです。へー。
処理の流れ
- 上から下に流れる // 順次とも言われます
- H を入力
- W を入力
- BMI を演算して出力
- 分岐
- if (条件) then else (もしも [条件] なら、そうでないなら) という表現を使う
- 繰り返し
- Do While ~ Loop (~である限り繰り返せ) という表現を使う
この 3 つで手順を書くのは、なかなか訓練が必要そうです。
日常生活そのものより、料理、歯磨きなど行動単位や稟議、注文書発行などのワークフローで手順を考えてみると良いかも知れませんね。
分岐のサンプルプログラム
実際に先程の分岐のサンプルプログラムを書いてみます。
Age = InputBox("あなたの年齢を入力してください")
If Age >= 20 Then // >= は ≧ のこと
MsgBox "成人です!"
else
MsgBox "未成年です!"
End If
BMI が 25 以上なら肥満です! 25 未満なら肥満ではありません! という改造をやってみましょう
// 身長と体重を入力
H = InputBox("あなたの身長 (cm) を入力してください。")
W = InputBox("あなたの体重 (kg) を入力してください。")
// cm を m に変更
H = H / 100
// BMI を計算
BMI = Round(W / H / H, 1)
// BMI を出力し、肥満かどうかを判定
If BMI >= 25 then
MsgBox "あなたお肥満指数は、" & BMI & "です。肥満です!" // 出だしをズラすと読みやすくなります
else
MsgBox "あなたお肥満指数は、" & BMI & "です。肥満ではありません!"
End If
分岐を書くと、今度は本当にこれが 25 で分岐するのかどうか、確かめる必要があります。なので、テストが必要になるのです。
ちなみにテストは網羅率で、カバー出来ている範囲を示します。聞いたことがありますね!
また、書いてみると、今度は痩せすぎ判定もしたくなりませんか? 肥満判定されれば、あと何Kg減量すればよいか出したくなりませんか?
色々と改造アイデアが出てきて、これを進めていくと、プログラムに慣れてくる感覚があります。
ちなみに、分岐を複数作りたい場合は else
を else if
にすると分岐を増やせます。
繰り返し
ここからはサンプルプログラムを書くのではなく、サンプルプログラムを読みながら解説してもらいました。
Balance = 10000
Do While Balance > 0
Price = InputBox("買い物した金額を入力してください。")
Balance = Balance - Price
Loop
これも改造したくなりますね。
- 残金が出て欲しい
- 1万円を超えると「超えています」というメッセージが出て欲しい
ここまでのまとめ
プログラムは処理が 3 つ、処理の仕方が 3 つです。
- 入力
- 演算
- 順次
- 分岐
- 繰り返し
- 出力
これがプログラマ脳です。
モジュール化
ここからはプログラムの世界をいくつか紹介していきます。まずはモジュール化です。
- プロセス指向
- エクセルで言うと SUM や AVG のような処理のこと
- 処理を関数と言う
- オブジェクト指向
- 現在のWebなどのシステムは大規模になったので、プロセスよりもっと大きなまとまりでモジュール化
- 大きなまとまりをクラスという
関数
モジュール化のテクニック、関数について説明してもらいました。
y = f(x)
x のことを引数 ( argument ) 、y のことを戻り値 ( return ) といいます
自分で関数を作ることも出来ます。
' 円の面積を求める関数
Function GetCircleArea(R)
GetCircleArea = R * R * 3.1415
End Function
' 円の面積を求める関数を使うプログラム
R = InputBox("円の半径を入力してください。")
Area = GetCircleArea(R)
MsgBox "円の面積は、" & Area & "です。"
ふむふむ、聞けば聞くほど、エクセルな感じに見えます。(関数を作ったり、複数の関数を組み合わせてマクロを書いたり)
オブジェクト指向
とてもむずかしいと紹介されたオブジェクト指向を見てみます。
// 円を表すクラス
Class Circle
// 半径のデータ
Private Radius
// 半径を設定するメソッド
Public Sub SetRadius(R)
Radius = R
End Sub
// 自分の面積を返すメソッド
Public Function GetArea()
GetArea = Radius * Radius * 3.1415
End Function
End Class
// 円を表すクラスを使うプログラム
Set C = New Circle
R = InputBox("円の半径を入力してください。")
C.SetRadius(R)
Area = C.GetArea()
MsgBox "円の面積は、" & Area & "です。"
先程の関数では処理を繋げるような書き方だったのが、「円」に出来ることを書いて、呼び出している感じでしょうか。「円、面積教えて!」のような雰囲気?
なんだか人間的ですね。ロボットやチャットボットにやって欲しいことを伝えている感じに見えます。
エラーとバグ
さっきの BMI プログラムを例に入力に数値でないものを入れてみます。
- 入力値: あいうけお かきくけこ
こういった異常が発生したことをエラーといい、このエラーを発生させたプログラムの発生源をバグといいます。そして入力する値は無限に作れるので、テストでカバーできるのにも限りがあるのがわかりますね。
そう考えると、バグが存在しないことを証明する、というのは無理と言えそうです。
異常の値を検知してエラーを出す
では、先程のエラーを直すやり方を解説してもらいます。
- こういうときもググってみましょう
- if else を使います
H = InputBox("あなたの身長 (cm) を入力してください。")
W = InputBox("あなたの体重 (kg) を入力してください。")
If IsNumric(H) And IsNumeric(W) then
BMi = W / H / H
MsgBox "あなたの肥満指数は、" & BMI & "です。"
Else
MsgBox "身長と体重に、数値を入力してください!"
End If
なるほど、数値が入っている、入っていない、で分岐させると出来るんですね。分岐や繰り返しを使うやり方は他にも一杯ありそうです!
最後にプログラミング言語の人気ランキングを紹介して、このコースは修了しました。
まとめ
このコースではエンジニア職に無い方向けが「コンピュータが出来ること」を知り、実際に「コンピュータを自分のやりたいことを書く」「実行してみる」を繰り返し、プログラミングをマスターするコツを掴んでもらいました。
このレポートをご覧になった方で、エクセルをやってこられた方には、関数やマクロがある種プログラミングだということがわかり、恐らく取りかかれそうな雰囲気を感じてもらえたかと思います。
私も Google Action Script で、なんちゃってプログラムに取り組み中です。
プログラムで業務を効率化したいと思う方には、取っ掛かりが掴めて、とてもオススメです!
label SE カレッジの無料見学、資料請求などお問い合わせはこちらから!!
label SEカレッジを詳しく知りたいという方はこちらから !!
IT専門の定額制研修 月額28,000円 ~/ 1社 で IT研修 制度を導入できます。
年間 670 講座をほぼ毎日開催中!!
SEプラスにしかないコンテンツや、研修サービスの運営情報を発信しています。