プログラミングのススメ〜Javaでのプログラミングで学べること〜

イントロダクション

今までのブログ記事は、主に技術ブログを書いていました。今回はちょっと趣向を変えて「技術」を離れてみようと思います。

プログラミング教育に関して

2020年から「プログラミング教育」が始まると言うことですが、内容に関しては理解していないので、ちょいと調べてみたところ「プログラミング技術」を学ばせるようなことはしないようです。

じゃあ一体何をするのか?調べた結果、自分の理解するところでは

「どうやれば物事が解決できるか?の答えを自ら出せるような教育を行う」

と言うことらしいです。当たり前な話ですが、我々大人は、仕事などで以下のような手順で物事を進めることが多々あります。

  • 何かをするための筋道(計画)を立てる
  • 立てた筋道の実行準備をする
  • 実行する。
  • 反省(打ち上げ)をする。

大雑把にこんな感じで「祭り」「自治体」「バンド活動」など、複数人で協力して行います。

なんでか?

大人(自営・就業している人)は仕事があるので自由時間は限られています。そして「祭り」「バンド」は一人で行うことができません。何かのイベントや大きな夢にしたって同様です。※夢はまだ叶えていないのではっきりとは言えませんが。。。

とりあえず、ある程度、大きなことをやろうとするならば誰かの力を借りないとできません。そこで「計画」です。

計画とは?

みなさん知っての通りです、これがあればみんなでスケジュールを合わせて「協力」して物事を進めることができます。それに「モチベーションを保つ」と言う部分に関して一人でやるより数段楽です。

やっぱり、人間は一人では生きていけないと思いました。

実行する

計画を立てたら今度は行動に移します。「計画を立てたけど続かない。。。」と言う話はよく聞きます。この「続かない」や「うまくいかない」などに対する対応策や手段を自ら考え出せると良いと思います。

プログラミング教育とは?

計画から実行までのプロセスにおいて「問題を解決する力」を育てて行こうと言う趣旨で学校での学習時に「問題を解決する力」を育てる要素を組み込むと言うことがそれのようです。

本題「プログラミングのススメ」

初めに「プログラミング教育」の話題を出したのは「計画」と「問題を解決する力」に関して記載したかったからです。大雑把にこの力に必要な要素として以下のようなものが挙げられると思います。

1. 物事を順序立てて考える
2. 実行するために必要なものリストアップする
3. 想定外の事態に直面した時、現状の整理や把握を行う
4. 結果、作成物に対し客観的に「良し」「悪し」を判断する

これがそのまま、プログラムを作成して運用していくときに必要な事です。

プログラムを扱うならば、もちろん、専門知識(技術)が必要ですし学習コストと言う「時間」も必要です。ただ、1つ言えるのは「プログラミング」はお金かけないでプログラムの作成〜運用までいけます。※自分のPC代金と電気代は除く

まぁ一人でやるのは大変だけど、仲間を集めたり、協力者を求めたりやり方はたくさんあると思います。学生のうちにやり始めると楽だと思います。

じゃ大人はどうする?

自分自身もそうですが、やはりコミニティを開く、コミニティに参加するなどの方法でチームを作るとモチベーションを保つのにとても効果的です。

自分もCoderDojoと言うところに参加して、子供達にプログラミングの考え方を話したり、「こんな事やりたいけどどうすれば良い?」と言う疑問に対して「どうやったら良いか?」を一緒に考えたりしています。

最近のホットな話題としては以下のような仕様を実装する事です。

  1. 「OKガンダム」と言うとガンダムの眼が光る
  2. 「うんちングスタイル」と言うとガンダムが「うんちングスタイル」をする
  3. 続けてガンダムが右斜め45度に顔を向け目を光らせる

しかし、この仕様は音声入力もさることながら、ジャイロセンサーで機体のバランスを取らなければいけないのでちょいと大掛かりになるのでこれの一歩手前

「OKガンタンク」で行こうと言うことになっています。

終わりに

「OKガンタンク」は眼が光るのもそうですが、動いたりキャノンを発車したりする機能もつけたいので画像識別による「敵」判定を行う必要があります。実はそれで「TensorFlow」に手を出し始めたしだしです。そのほか「OpenCV」でも画像認証や識別ができます。共通して言えるのは「機械学習」が必要だと言うことです。

同時にガンダムに話をさせるのはどうだろうか?と言う意見もあり言葉を喋るアプリケーションも検討中です。冗談から始まったのですがなかなか面白そうな企画だと思いませんか?

TensorFLowを学ぶ

  1. Tensorflow Keras 〜初めてのKeras
  2. Tensorflow Keras Errors”python is not installed as a framework.”
  3. Python Tensorflow 〜初めての人工知能(TensorFlowインストール)
  4. Tensorflow Keras〜初めのトレーニング_1
  5. Tensorflow Keras〜初めのトレーニング_2:前処理〜
  6. TensorFlow Keras〜テキストの分類〜
    1. TensorFlow Keras 実行結果〜テキストの分類〜
  7. Python TensorFlow tutorial〜チュートリアルを進めるコツ、ワンポイント〜
  8. TensorFlow Keras〜回帰、準備から予測まで〜
  9. TensorFlow Java 環境構築〜JavaでもTensorFlow〜

OpenCv

  1. Java OpenCV 環境セットアップ(on Mac)
  2. Java OpenCv Lv1 〜入門写真の表示〜
  3. Java OpenCV Lv2 〜画像を表示する〜
  4. Java OpenCV Lv3 〜画像の平滑化(smooth())
  5. Java OpenCV Lv3 〜画像にガウシアンフィルタ(GaussianBlur())
  6. Java OpenCV Lv3 〜画像に中央値フィルタ(medianBlur())
  7. Java OpenCV Lv4 〜画像の中身をみてみる〜
  8. Java OpenCV Lv5 Matクラスで描画処理〜
  9. Java OpenCV Lv6 Matクラスで背景から作成してみる〜
  10. Java OpenCV Lv7 MatクラスでEllipseしてみる〜
  11. Java OpenCV Lv9 〜画像編集「足し算」(cvAdd)
  12. Java OpenCV Lv9 〜画像編集「引き算」(cvSubtract)
  13. Java OpenCV Lv9 〜画像の掛け算〜
  14. Java OpenCV Lv10 〜行列演算Mat#submat()
  15. Java OpenCv Lv10〜画像の平均値をだす〜