やりたいことをやるために〜プログラミング的アプローチ〜

イントロダクション

前回は「プログラミング教育」の話題で「我思う」を記載しました。まとめると「プログラミング教育では『プログラミング的問題回解決力』を教育に取り入れる」と言うことらしいと言うことでした。

そして、その問題解決力を使用して「やりたいことをやる」のが自分のためになると思う次第です。

さらに、そのやりたいことが「世のため人のため」になることならば「世間の注目」を集めるかもしれません。まさに「WinWin」な感じだと思うのですが難敵が潜んでいることが多いようです。

難敵のリストアップ

指名手配中の「難敵」を以下にリストアップします。

  1. 「やる気が起きない」
  2. 「時間がない」
  3. 「一人ではできない」
  4. 「メリットを感じない」

上記に有名どころの「難敵」をリストアップしました。大雑把に言い訳の材料です。

難敵をやっつける武器

多くの人が既に知っているように「生活改善」がその答えのように見えますが。これは完全な答えではありません。プログラミング的に解釈すると「穴だらけの仕様」であり、このような答えでシステムを組んだ日にはそこの現場は大炎上してプロジェクトも破綻するでしょう。

こんな仕様は、はっきり言って「悪」だと思います。なぜかと言うと全ての人が不幸になるからです。つまり、プロジェクトに関わる人全てが大変な思いをする事になります。まぁ、みんな平和のために日々努力してるんですがね(笑)

話を戻して、難敵をやっつけるための武器は「トライアンドエラー」です。
※これも完全な答えではありません。この答えは実行する本人にしか正しい答えは出せません。

「トライアンドエラー」=「勇者の剣」

余談ですが、とある会社さんの開発現場では「厄介なバグ」を発見した人には「勇者の剣」が支給されるそうです。そしてこれで「バグをやっつける」と言うことらしいです。我々の日常でも似たようなことがたくさんあります。「あーしたい」「こーしたい」と思う事が多く、それぞれに対する「こーすればできる」がなかなか見つからない…というケース、などがそうです。

体に悪いことを続ける

例えば、「夜食で沢山食べる」とか「昼夜逆転生活」とか。。。これらのようなことはすぐに習慣化します。なんでかはわかりませんが。。。

他にも「やりたいことがあるのに自分に言い訳をしてやらない」と言うのも同様だと思います。精神衛生上よくないし、ストレスもたまると思います。

このような時に上記であげた「難敵」が出現していることに気がつきます。

駄菓子菓子、悪い習慣が出来上がっていて「やりたいことができない」状態になっているかもしれません。これは自分の力だけで、解決できるものの1つです。

そこで「勇者の剣」

当たり前な話ですが、いきなり悪習を変えるのは無理です。

だから「ちょっとずつ」が大事なのです。以下のような手順になると思います。

  1. 改善する計画を立てる => PLAN
  2. 改善する計画を実行    => DO
  3. 実行した結果を省みる=> CHECK
  4. 再計画する                  => ACTION

上の「1〜4」を繰り返して、トライアンドエラーでちょっとずつ改善していきます。ちょっと無理やりですがこのサイクルを作れる様になると、人生が変わった様な感覚になります(笑)

自分がお勧めするのは1日続けて反省して、次は2日。。。のように少しずつ期間を伸ばしていくのが良いと思います。そこで以下のようなツールを使います。

日記(メモやノートで良い)

そして、やったこと、思ったこと、改善策や今後のやりたいことなどの計画を日付とともに1つのノートに記載して後で見直すことができるようにしておく。

具体例

「毎日の生活の中で15分走る」を目標にした場合。以下のような状態の人間をサンプルとして記載いたします。

  • 帰宅は22時半
  • 出勤は9時に現場
  • 土日の休みも危うい

自分の場合ですが、サンプルとして記載いたします。

まぁ「帰宅した後にご飯食べて寝るだけ」の生活ですが、ここに「運動する習慣」を加えてやりたいと思いました。そして改善策としては以下の手順でやりました。

  1. 自分の1日の生活パターンをフロー図にして可視化する
  2. フローの中で「やりたいことをやるスキ」を探す
  3. このスキに「やりたいことをする」習慣をつけるようにする

<自分の生活パターン>

  • 起床
  • 朝食
  • 出勤
  • 仕事(午前)
  • 昼休み
  • 仕事(午後)
  • 帰宅
  • 風呂
  • 夕食
  • 就寝

このようなリズムでした。そして「スキ」は上に赤い字で記載しました。

出勤と帰宅の途中を通勤経路を変更して2, 3キロ走って移動するように変更しました。これで15分程度のランニングができるようになり、帰宅後の夕食も現場で済ませるように変更してやると生活の中にだいぶ余裕ができました。

これには周りの人間の協力もありすぐに切り替えることができました。

やって、反省して、再挑戦

早い話が「トライアンドエラー」でやれば大体のことはなんとかなると言うことです。そのために以下のようなことがキーポイントになります。

  1. 現状の見直し
  2. 問題点の抽出(リストアップ)
  3. 「ここをこーすれば。。。」と言うアイディア
  4. 改善して続けるモチベーションを保つ

とりあえずはやってみないと始まらないですがね、やって反省して再計画。。。

目標達成プロジェクトと称して上手くやる方法を模索中です。

この流れをゲームにできたら人生がもっと楽しくなるかもしれません(笑)。

余談ですが、いろんなノートを使ってみるのも1つのアイディアではないでしょうか?

 

プログラミングのススメ〜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〜画像の平均値をだす〜


健康 アイコス 〜健康のためにタバコをやめよう〜

下のように感じたことはありますか?

  1. 疲れやすい
  2. 肺が痛い
  3. イライラしやすい

健康のためにタバコをやめる、しかし、タバコを止める第一歩としてアイコスに変える…という人は多いと思います。「百害あって一利なし」というのは喫煙者みんなが分かっていることですが、様々な理由で「やめようかな?」というふうに思う人が増えています。そこで

アイコス(IQOS)調査

加熱式タバコ優雅う物質9割減は本当か?」(東洋経済)

1. 第三者機関による調査はほとんどない
2. 一部の有害物質の削減率に関してはPMIの研究と大きな差があった
3. 加熱式タバコのみで健康影響を判断するのは難しい

「アイコス」に肝臓の機能を損なう危険性?(Yahooニュース)

どっちも害がある?

とりあえずわかるのは、『「受動喫煙」を減らすことはできそう』という事です。煙がほぼ出無いですもんね(笑)


「周りに迷惑をかけない」は常識なのかもしれませんが「最低限のマナー」さえ守るようにすれば、問題ないように思うのが自分の意見です。それでもタバコはやっぱり『気晴らし(ストレス解消など)』に過ぎないので「やめたら?」と言われることは多いと思います。

タバコのやめ方

ここのサイトを参考にしてみます。

  1. 禁煙の準備
  2. 禁煙宣言
  3. ニコチン離脱症状への対応

要は「誘惑に克つ」ということのようです。下のような方法を使っている人もいるようです。※参考サイトより

禁煙通知はがきの例
画像:禁煙通知はがきの例

禁煙アイテムを駆使

「いつものタバコにつけるだけ」

お守りを使う(開運のお守り)

「完全禁煙まであと一歩」

日記をつけてみる

あとはやるだけですね。

プログラム 習得 順序 手を動かして理解

イントロダクション

前回、プログラムには、動かすためのルールがあり(記述ルールがあり)それはどんなものがあるのか眺めてみました。

今回は、文法を理解する為の手順(文法を使いたくなるところまで辿り着く手順)を記載します。

これは、自分が「プログラムでメシが炊けるか?バカ言ってんぢゃねーよ(笑)」なんて思っていた頃にやった方法です。決して要領の良い方法では無いけど「手を動かして理解する」の典型になると思います。

因みにプログラムでご飯は炊けます。マイコンジャーの「マイコン」はプログラムです。マイコン→極小OSの事

ハローワールド

このプログラムは動かせたと思いますので、こいつをカスタムして文法へたどり着くまでやります。

基盤となるコードをカスタムしていきます。丁度問題を解いていくような形です。

コードのサンプルは下のURLにあります。

http://zenryokuservice.com/wp/2018/12/03/プログラム-習得-順序3-文法java/

<問題>

  1. ハローワールド表示
  2. プログラム引数表示
  3. プログラム引数を2つ表示
  4. 1+1の結果を表示
  5. 1-1の結果を表示
  6. 1×1の結果を表示
  7. 1÷1の結果を表示
  8. プログラム引数を渡した分表示
  9. プログラム引数が"Bye"だったら「お疲れ様です!」を表示してプログラムの処理を中止する
  10. プログラム引数が数字だったら加算して合計値を表示
  11. プログラム引数に数字と「+」「-」「×」「÷」を渡し各計算をして結果を表示
  12. プログラム引数に1〜10までの数字を渡してその合計値を表示
  13. プログラム引数に1〜10までの数字を渡して奇数のみ、偶数のみの合計値を表示(奇数であれば、1,3,5.7,9の合計)
  14. プログラム引数に1〜10までの数字を渡して順番に表示(1,2,3...)
  15. プログラム引数に1〜10までの数字を渡して逆順に表示(10,9,8,7...)

とここまでやれば、文法は理解できると思います。自分は理解できました。

この問題をクリアしていくのに、どんな手段を用いても構いません。

ただし、犯罪や、非人道的ことはやめましょう、

プログラム 習得 順序3 文法(Java)

イントロダクション

前回は、ハローワールドの実行手順について記載しました。

  1. コンソールに文字を出力
  2. プログラム引数を使う

なんて事をやりました。

文法について

ベースにするコードはハローワールドの時に作成したものです。おそらく初めのプログラムは下のようなコードになっていると思います。

<ハローワールド>

Class クラス名 {
   public static void main(String[] args) {
     System.out.println("Hello World");
   }
}

初めのプログラムを作成した時に、自分の書いたものを見てやった方は「プログラム引数」に関して理解していると思いますので「プログラム引数」に関しては飛ばします。

上のようにクラスを作成し、ハローワールドを作成したら今度はこのコードをいじって遊んで見ます。先ほどの「プログラム引数」を表示するようにプログラムを変更してみます。

<ハローワールド2>

Class HelloWorld2 {
   public static void main(String[] args) {
     System.out.println(args[0]);
   }
}

プログラム引数に文字列「タイガーマスク」を渡した時、コンソールには左の文字が表示されます。

次は、プログラム引数を2つ渡して表示します。

<ハローワールド3>

Class HelloWorld3 {
   public static void main(String[] args) {
     System.out.println(args[0]);
     System.out.println(args[1]); 
   }
}

プログラム引数を1つしか渡していない時は「ArrayIndexOutOfBoundsException」が表示されプログラムが途中で止まります。

次はプログラム引数は飽きたので、足し算などの計算をしてみます。

<ハローワールド4>

Class HelloWorld4 {
   public static void main(String[] args) {
     System.out.println("1 + 1 = " + (1 + 1));
   }
}

これで計算結果の「2」が表示されます。

これに、プログラム引数を計算するようにプログラムを変更します。

<ハローワールド5>

Class HelloWorld5 {
   public static void main(String[] args) {
     System.out.println("引数1 + 引数2 = " + (args[0] + args[1]));
   }
}

これで、計算結果が表示されるはず?実は表示されません。これは少し考えてみてください。

文法をやる

上記のようにプログラムを「あーしたら?こーしたら?」を繰り返していくといろんな処理ができるようになっていきます。

でもここでちょっと手抜きをします。「手抜き」の正体は「文法を理解する」ことです。

プログラムを書く時にはちょっとしたルールがあります。そのことを「文法」と呼びます。日本語と一緒です。そのルールは以下のようなものです。

  1. プログラムは上から下に流れる
  2. 変数を使って、データの処理を行うことが出来る
  3. ループ、条件分岐を行いプログラムの処理をコントロールする

このブログでは、JavaをメインにしているのでJavaでこの文法の話を進めます。

余談ですが、Javaを理解してしまえば、他の言語も使えるようになってしまいます。その理由に関しては「余談」の部分に記載いたします。

そんなわけで、文法を理解するのには簡単な四則計算などをプログラムで実行できるようになると早いと思うので以下の記事を参考にやって見てください。きっと文法に関しては理解できるようになっていると思います。※ちょっと量があるので1つずつやることをススメます。

<文法学習メニュー>

  1. Java Basic Level2 Arithmetic Calculate 四則計算をやる
  2. Java Basic Level3 About String class 文字列クラスについて
  3. Java Basic Level 4Boolean 真偽値の使い方
  4. Java Basic Level 5If Statement If文の使い方
  5. Java Basic Summary from Level1 to 5 レベル15のまとめ
  6. Java Basic Level 6 Traning of If statement If文の練習
  7. Java Basic Level8 How to use for statement ループ文の使い方

余談

自分は、Java屋で今までやってきたのですが、Java屋をやっていると、エクセルでデータの確認、ドキュメントの作成〜DBのデータ操作までやることになってしまいます。Javaでみんなアクセス & コントロールできるのと仕事で情報整理や開発ツール、サーバー管理のためにエクセル〜DBまで触ることになるからです。そして気がつくとエクセルVBA〜DBのプロシージャまで使えるようになってしまう…という結果になってしまいます。


早い話が

「プログラムが理解できれば言語は関係ない」

ということです。

プログラム 習得 順序2 hello world(Java)

イントロダクション

前回は、大雑把な流れを示したつもりです。今回は具体的に「どーやるの?」について記載しようと思います。

動機付けなどは自分で考えるしかないので「ハローワールド」から始めます。

とりあえず、プログラムが使えるようになると以下のスキルが身につきます。

  1. 問題を解決するためのフロー(流れ、手順)を自分で導き出す
  2. 物事、自分の思いを理論的に説明できるようになる(レベル高め)
  3. 世界にない「新しい何か」を発明することができる(大変だけど)

とまぁこんな感じです、別にプログラムをガリガリ書いてプログラマになって。。。とか、そんなことを言いたいのではなく、上にあげたように「理論的な考え方」と「やればできる!」と言うことを知って頂きたいのです。(ついでに「こんなのを作ったら、面白いのでは?」なんて会話ができる人が増えてくれるといいなぁ)

そして「プログラムしかできません」なんて言う人は「プログラムができない人」です。プログラムが組めると言うことは、いろんなことを噛み砕き、理解して「仕組み」を作れると言うことです。自分自身も学習の途中です。

さて、本題に戻ります。初めのプログラムを組みます。

ハローワールド(Java)

結論から言うとクラスを作ってメインメソッド作って…コンソール表示して終わりです。

大した事はありません。手順は以下に示します。

  1. IDE(開発ツール)を自分のパソコンにインストールする
  2. プロジェクトを作成し、HelloWorldクラスを作成
  3. 下のコードを書いて、プログラムを動かす
public static void main(String[] args) {
   System.out.println("Hello World!");
}

細かいことは以下のページに記載しています。

<開発ツールのインストール>

Java Install Eclipse〜開発ツールのインストール〜

<Hello World>

Java Hello World はじめのプログラム 〜 Step1-1〜

駄菓子菓子!

だがしかし、たかが「ハローワールド」とはいえ侮るなかれ!「遊び」の基本にもなります。初めは表示して終わりですが、これに「入力」を加えます。プログラム引数を使用して、渡した引数を表示するなどやってみると面白いです。

そのほかに、「標準入力」プログラムを起動してからの入力を行うプログラムを追加、画面を更新する、「入力→画面の更新→入力」を繰り返して1つの流れを作ることができたら…それは、既に「ゲーム」です。

Java Game作成 〜ゲームの処理フロー〜

横道に逸れましたが、一歩ずつ確実に進みましょう(理想です)これがいちばんの近道です。

古典的にやる(IDEがない時代はこうでした)

これは、ひとつの例ですが、メインメソッドを起動するだけならコマンドプロンプトからも行けます。コマンドから実行する場合はプログラム引数を直接渡すので、プログラム引数については理解できます。

// 下のコマンドでJavaファイルをコンパイルします。
>javac HelloWorld.java
// 次のこまんどでJava(クラスファイル)を起動します。
>java HelloWorld

プログラム引数を渡す場合

>java HelloWorld プログラム引数1 プロ恨む引数2 スペースで区切る

上のように、コマンドの後にスペースを入れて文字を入力するとJavaを起動した時に「プログラム引数」として値が渡されます。main(String[] args)の「args」に以下のような形で入っています。

args[0]="プログラム引数1"
args[1]="プログラム引数2"
args[2]="スペースで区切る"

これに文法を理解してやると簡単なアプリがつくれるかも?

それは、アイデア次第です。

でわでわ。。。

プログラム 習得 順序1 概要

イントロダクション

プログラミングのススメと自分の経験からこの学習順序(学習フロー)が良いであろうと言う学習順序を記載します。

<初めに>

今現在、学生の方は将来に向けて「あーしたい、こーしたい」と言う気持ちを大切にして欲しいと思います。

そして、成人して社会人の方、特に若い方は目標、夢などを具体的にイメージ出来るようにイメージを具体的に持ってください。少しずつ、ゆっくり具体的にしていく感じです。

「火事場のクソ力」と言う言葉があります。本当は「馬鹿力」らしいですが…、早い話が「人間やる気になれば何でも出来る」と言うことを言いたかったのです。なので、次の「動機」について自問自答してみてください。

1.動機について

元々自分はイベント屋とか音響屋さんになろうと思っていました。が「これはいつまでたっても生活が出来ない!」(まともな収入が得られない)と気が付き「IT業界へ行くべきだな!」と意を決して異種業界へ行く事にしました。

丁度良く「未経験者歓迎」と言う求人があったので、そこに食いつきました。

自分の動機としては「まともに収入を得て働きたい」と「手に職をつけて将来的に独立したい」と言うのがありました。

2.学習開始!

会社で学習しながら、アルバイトして生活する感じでした。パソコンやプログラムとは無縁の仕事をしていたので「プログラムとはなんぞや?」から入りました。パソコンは学生の頃にバンドの音を録音するのに使った程度。ワードやエクセルの存在も知りませんでした。

とりあえず会社からのミッションは「指定の課題をクリアする」でした。

課題をクリアしたら正社員として働けるので、収入も入ります。

ガテン系の人間なので「とりあえず手を動かす」事で「わからない」を「そーゆーこと?」に変えて行きました。

3.課題をこなす

課題と言うのは、プログラミングの教本にあるような問題を解いて、プログラムを実行して起動確認するものでした。やっぱり「ハローワールド」に始まり、文法→アプリ作成とやって行きました。

ハローワールドは、頭ごなしに覚えました。メインメソッドの書き方は常に決まっているからです。

足し算〜四則計算をするプログラムを作りコンソールに表示したりしました。

この時に、変数の型について理解が深まったと思います。ビルドエラーが出るので「なんでエラーになる?」を解決していく事で「データ型」に対する理解が深まったのです。ドキュメントには「この型は〜」と書いてあるけど実際にはいじってみないとわかりませんでした。

4.作ったもの

  1. コンソールアプリ(配列の並べ替え)
  2. ユーザ登録削除(ユーザ管理アプリ)

ここまでが自分が研修としてやった事です。

初めのコンソールアプリはC言語で作りました。構造体とか配列とか初めは訳がわからんになっていましたが、作り終える頃には、なんとか理解したかな?って位になってました。

A.振り返り

実際にやってみて、かなり時が経っているけど、今思い返してみて、思うのは以下の点です。

<やると良い事>

  1. 実際に手を動かして、プログラムを書いて理解する事
  2. 学習(プログラムを組む)の後に理論的に理解する事
  3. 作ったプログラムをいじって思い通りにカスタムする事→ちゃんと理解していれば難しくないし、ちょっと面白い(笑)

<やると悪いこと>

  1. コードも書かないで理論(頭)だけで理解する
  2. 「説明が出来た」=「理解した」と解釈する
  3. 理解が出来ないのに人に相談しない
  4. 理解(実装)した事を起動確認しない

まとめ

次のような手順で学習するのが一般的な手順になります。

  1. ハローワールドをやる
  2. そのプログラムの文法を理解する
  3. とりあえず、何か作る

ここまでは良いのですが、やった後に「理解」する様に各ステージをクリアしていくと効率的かつ実戦的だと思います。理想としては、簡単な操作の出来るアプリを作るのが良いのですがいっぺんには出来ません。

なのでプログラムを書き、起動して、各処理が何をしているのか?を理解しながら学習、そしてアプリではどんな風に使うか?をイメージ出来ると素晴らしいと思います。

ポイント

ゆっくりでもいいので確実に一歩ずつ進む事です。

これが一番の近道だからです。

あと「こんなものを作りたい。」という感じで夢を膨らますとより「やる気」になります。

自分は「何を作ろうか?」から入ったので少し出遅れた感じです。インターネットもよく知らない状態だったので…

ゲームをやる~Play the “Logic Summoner”~

Introduction

Today I woud like to play some game. so I picked  up "Logic summoner"  created by "Paiza" that is Japanese campany named "GINO".

株式会社ギノさんが提供しているゲーム「ロジックサマナー」をやってみようと思います、

Getting started

Access this page. and rest user to paiza. then you can play this game.

Now Play!(やってみました)

why tihis code is wrong?(なんでふせいかいなのか?)

mission is out  "4 2 1 3 5\n"(左のように出力するのが問題)

import java.util.*;


public class Main {
 public static void main(String[] args) {
 // 自分の得意な言語で
 // Let's チャレンジ!!

  Scanner sc = new Scanner(System.in);
  String line = sc.nextLine();
  int num = Integer.parseInt(line);
  LinkedList<Integer> list = new LinkedList<>();
  char[] arr = sc.nextLine().toCharArray();
  int count = 1;
  for (int i = 0; i < arr.length; i++) {
    char c = arr[i];
    if ('L' == c) {
      list.offerFirst(count);
    } else if ('R' == c) {
      list.offerLast(count);
    } else {
    }
     count++;
  }
  int c1 = 0;
  for (Integer o : list) {
   if (c1 == list.size() -1) {
     System.out.println(String.valueOf(o));
   } else {
     System.out.print(String.valueOf(o) + " ");
   }
  }
 }
}

Result(結論)

It is good Question but Answer is ???

プログラムの問題自体は面白かったけど答えがイマイチ・・・