Takunojiのプログラミング・プレイグラウンド(遊び場)

プログラミングのススメとか記載します、今までにやったのは、環境構築、実装方法の説明など、Java, UnrealEngine, Unity, BlenderPython, Discord, OpenCV, TensorFlow(Python), ラズパイ(RPi)などやりました。まだ中途半端ですが。。。

Project 目標達成 〜じゃんけんゲーム(アプリ)をリリースするための計画と問題解決〜

イントロダクション

前回まで「じゃんけんゲーム」のリリースを目標にして色々とやってきました。

そして以下のような問題が出てきました。

<問題>

  1. GLUONのフリーライセンスが必要(体験版になってしまうため)
  2. フリーライセンスの取得にはプロジェクトサイトが必要
  3. プロジェクト「じゃんけんゲーム」では次がない。。。

なので、これらの問題を解決するために色々と考えたり今までのアイディをまとめたりしました。

結論

「プロジェクトじゃんけんゲーム」をもともと考えていた「プロジェクト目標達成」の下に持ってくる。

どーゆーことか?

元々のやろうとしていたことは「目標達成AP」を作成することです。しかし、これを作成するためには「機械学習を理解する」「クロスプラットホーム開発の手段」など複数の問題がありこれらの解決ができるまで企画(プロジェクト)の作業はストップしていた状態なのです。

「じゃんけんゲーム」の問題を解決するために「目標AP」をプロジェクト化して目標達成の手順(ロジック)を実行(テスト)してみようとなったわけです。

具体的に。。。

Githubを使用して、下のようなドキュメントを作成しました。まだ作成中です。

f:id:Takunoji:20190414171214p:plain

目標達成手順の概要

 上記のリンクからアクセスしてみないとよくわからない状態ですが、まとめると以下のようなものです。

  1. 目標を決める→「じゃんけんゲームをリリースする」
  2. 目標達成のために必要なもの(成果物)をリストアップする
    A.「じゃんけんゲームアプリ」
    B.「プロジェクト・サイト」
    C.「GLUONのフリーライセンスコード」
  3. 上記のA〜Cの各項目に対してそれぞれに実行するべきタスクを洗い出す。

そして「洗い出した項目をツリー状にわかりやすく表示、実行した進捗を表示する」

 というのが「目標達成AP」のアイディアです。これをアプリケーション上で実現するために今自分が考え出したロジック(手順)が正しいもの(使えるもの)なのかテストする必要があります。

そのテストとして「じゃんけんゲームをリリースする」という小さな「プロジェクト」として実行してみようということです。

記載していませんでしたが、Gitの使い方に関しても調査しました。その部分に関しては下のページを参照してただきたく思います。

今後の計画

兎にも角にも「プロジェクトサイト」の作成が必須なのでこれを作成しようと思っています。まとめると以下のようになります。

  1. 「プロジェクト目標達成」のページを作る。これには目標達成のロジック(手順)を記載して、目標を立てるための手順のドキュメントを作成する。
  2. 「1.」のものを作成するのに、じゃんけんゲームのリリースをサンプルにして実行計画と進捗を目標達成ロジックに当てはめた時のイメージを作成する。

ここから、「何を行うのか?」という部分を作成するのですが、これの表示方法をただいま考え中です。

でわでわ。。。

 

プロジェクト目標達成

イントロダクション

前回、じゃんけんゲームのリリースの為に必要な事などを記載しました。

次はGoogleプレイストアにリリースしたい

と思っているのでGluonのフリーライセンス取得する必要があり、
その為にプロジェクトサイトの作成に着手しました。

問題に気がつく

このまま、じゃんけんゲームプロジェクトだと、じゃんけんゲームで終わってしまうので元々の目標達成アプリの作成→目標達成プロジェクトとしてじゃんけんゲームを作成することにしました。

目標達成フローのテスト

目標達成プロジェクトでじゃんけんゲーム?と疑問に思うと思うので、記載します。
目標達成のフローにのっとりじゃんけんゲームを作成しよう!と言うわけです(笑)

本題

結構前から考えていた、目標達成アプリですが、
大雑把に以下の様なロジックで目的達成の為のやるべき事(=タスク)を洗い出し、実行する順序と進捗を表示します。

  1. 目標を決める
  2. 目標に必要な事を3つあげる
  3. 2を繰り返して具体的なやる事をリスト化する
  4. 各やる事に対してタスクを洗い出しロードマップ化する
  5. あとはタスクを消化して行く

というようなフローで目標が達成出来るかどうか?を「じゃんけんゲームのリリース」という目標を設定して実行しよう!
という試みです。 現状としては、じゃんけんゲームを作成した状態ですが、これにプロジェクトサイトを作成し、進捗などをウェブ上に通知する仕組みを作る必要があります。→Gluonのフリーライセンスを取得する為です。

実際に作成しているものは「Github」でのプロジェクトサイトです。しかし、今気がついたのですが、これはREADME.mdが表示されている。。。
いずれにしろ、工事中です。。。
とりあえずはこんな感じでGitを使用してプロジェクトサイトが作成できるというわけです。

兎にも角にも

プロジェクトサイトを作成するのに、Gitの使い方を理解する必要があるので勉強中です。 今のところは、下のような感じで学習履歴を作成しております。でわでわ。。。

gluonhq.com

プロジェクト・サイト

プロジェクトの進捗や今後のリリースについて、リポジトリへのコミット(登録)通知など世間に通知するためのウェブサイトが必要なのでそれの作成に着手しようというわけです。たかが「じゃんけんゲーム」、されど。。。って感じですね(笑)

]

www.youtube.com

じゃんけんゲーム

余談ですが、じゃんけんゲームは今後ゲームを開発していくのにとても基本的な部分を網羅していると思います。

  1. ボタン押下による画面(キャラクタ、グー、チョキ、パーなど)の操作
  2. 短いアニメーション
  3. 判定処理
  4. (今回は実装できていないが)無限ループでユーザー入力でゲームを進行する

上のような感じです。

ウェブサイト構築方法

今現在(2019/03/29)この部分で悩んでいます。現状はWordPressを使用したブログ用のWebサーバを使用しています。(ミニムサーバー)

ここからドキュメント・ルート部分(現在はデフォルトのHTMLが置いてあります)にプロジェクトの内容を表示するものを作成しようと思っております。内容は以下のようなものです。

  • プロジェクトの目的と成果物について
  • ロードマップ(これは自分の考えです)
  • コミットやソースなどの更新情報をSNSで発信する仕組み
  • プロジェクトに参加するための知識(技術)などの学習(修得)のサポート

以上のようなものを表示するように考えております。

しかし、本当にプロジェクト・サイトは必要なのだろうか?もうちょっと調べて見る必要がありそうだが。。。

どこから手をつけようか悩みどころです。。。

方向1:とりあえず、アプリをスマホにデプロイして動かす。

方向2:プロジェクト・サイトの作成を始める。

 

でわでわ。。。

 

じゃんけんゲームVer1.0完成

# イントロダクション

今日(2019/03/27)、じゃんけんゲームをVer1.0という形で完成することにしました。

手こずっているのもあり「アイコ」の時にストップしないで「アイコでしょ」をやるためには「マルチスレッド処理」が必要なためVer1.0で完成とすることにしました。

次はVer1.Xという形で作成していこうと思っています。

youtu.be

# 次の段階

とりあえずではありますが「完成」なのでリリースに向けて作業を進めていこうと思います。今回使用しているのはGLUONなのでここのルール(仕様)を確かめます。

取得したいのはフリーライセンス(OSS)です。じゃんけんゲームを含めて自分の考えているものは、オープンソース・プロジェクトなのでちょうど良いわけです。

gluonhq.com

ここのページに細かいところが書いてありました。大雑把に以下のような内容がキーポイントらしいです。

  1. オープンソースプロジェクトであることと3ヶ月以上、継続している事
  2. 営利目的でない事(有償サポートなどはOK)
  3. このライセンスは、年次更新するライセンスである事
  4. SNSにリンクする、ウェブサイトがある事
  5. リリースしたものは複数回ビルド(自分の解釈ではテストして修正したビルド)である事

このようになりました。詳細は上記のリンクを参照ください。

# SNSにリンクするウェブサイト

この部分に関しては、作成する必要があるので今使用しているレンタルサーバーで「SNSにリンクするウェブサイト」を作成し、運用するようにしようと思います。実際にGitで作成したページでも良いと思うのですが、色々と考えた結果、この方向でいこうと思います。

# ウェブサイトの役割

単純に「プロジェクト」を公開してみんながアクセス、プロジェクトに参加できるような準備を行なっていることを証明するため→現実的には自分のプロジェクトのため

「ウェブサイト」が必要で、多くの人に参加してもらい大きなプロジェクトとして世界に名が知れればひと財産できそうです。

いづれにしろ「世のため人のため」になるし「お金」にもなるのであれば「言うことなし」だと思います。

# そんなわけで。。。

プロジェクト用のウェブサイト作成に進もうと思います。ちなみに自分がこの「プロジェクト」を考えてから2ヶ月くらいが経とうとしています。早いうちにウェブサイトになるものを作りたいと思っています。

 

Eclipse Gluon〜じゃんけんゲーム、とりあえずここまではできた〜

イントロダクション

JavaFXでGluonのEclipseプラグイン(無料)を使用してスマホアプリの作成を行なっております。

主な目的としては、ゲームアプリケーションのテンプレートにしようと思っております。

つまり、このアプリをカスタムしてやればスマホアプリが作成できるということです。とりあえずはAndroidアプリの作成(リリース)を行おうと思っているのですが、たかが「じゃんけんゲーム」、されど「じゃんけんゲーム」というわけで苦戦してます。

苦戦している内容

JavaFXでのアニメーション処理の実装方法は以下のようにチュートリアルを追いかけて学習したので、まぁなんとかなるかな?という感じですが、じゃんけんの勝敗判定を行うときに、「じゃんけんぽん」でタイミングを合わせるためのロジックがうまく思い浮かばない状況です。

ちなみに実装はGitにアップロードしてあります。

www.youtube.com

とりあえずは動くのですが、じゃんけんぽんの「POM」の部分で勝敗を決したい。。。

仕様を整理します。

  1. 「じゃん、けん、ポン」で勝敗を判定する
  2. 「早出し」「遅だし」はユーザーの負け
  3. 「あいこ」の時はもう一度

こんな感じでの実装を考えているのですが、いまいちうまいコーディングが思いつかない状況です。。。

む〜インスピレーションの領域だな(笑)

友人のバンドの観戦でもしに行くかな?

 

JavaFX アニメーション〜まとめ〜

イントロダクション

ここ数日間やってきた、アニメーション作成のまとめです。今までのアニメーションを使用して「じゃんけんゲーム」の完成(リリースすることが目的)させる方向へ進みたいと思います。

初めに、木琴を作る

ここで3DモデルをJavaFXで作成していたので、アニメーションの作成準備として木琴を作成しました。これは、Oracleチュートリアルページにサンプルソースがありそれをダウンロードして、実行したものです。

www.youtube.com

Eclipse Android〜Gluonでアプリを作る6: アニメーションを作る準備〜 – PGボックス

そして、木琴ソースの解析

www.youtube.com

Eclipse Android〜Gluonでアプリを作る7: 木琴アプリの解析〜 – PGボックス

アニメーションに着手(フェード遷移)

www.youtube.com

Eclipse Android〜Gluonでアプリを作る8:アニメーションの基本(遷移)〜 – PGボックス

単純に色をフェードアウト・インさせるアニメーションです。タイトルのスペルミスがあります。。。

パス遷移

www.youtube.com

Eclipse Android〜Gluonでアプリを作る9:アニメーションの基本(パス遷移)〜 – PGボックス

ここでのアニメーションは、パス(線)の上を移動するアニメーションです。

パラレル遷移

www.youtube.com

Eclipse Android〜Gluonでアプリを作る10:アニメーションの基本(パラレル遷移)〜 – PGボックス

ここは上記のアニメーションを複合させるアニメーションを作成しました。この方法でじゃんけんゲームの「じゃんけん」部分のアニメーションを作成しようと考えています。

そんなわけで。。。

ここまでで、大雑把にアニメーションの基本を理解したように思います。

やはり、やってみるのが一番早いな(笑)

そして、やって見ました。とりあえずはここまでできました。

www.youtube.com

でわでわ。。。

 

 

JavaFX アニメーションを理解する

イントロダクション

前回まではGluon+Eclipseでのアプリケーション作成とJavaFXでのUI作成の基本を学習してきました。

 そして、やっぱり基本を行います。ただし、アニメーションの基本をやります。

こんな感じで、アニメーションの基本を理解していきます。

<フェード遷移>

www.youtube.com

Eclipse Android〜Gluonでアプリを作る8:アニメーションの基本(遷移)〜

<パス遷移>

www.youtube.com

Eclipse Android〜Gluonでアプリを作る9:アニメーションの基本(パス遷移)〜

 

基本的には、アニメーションさせるオブジェクトを作成してアニメーションオブジェクトに登録、アニメーション開始(.play())という形で実行しています。

ここら辺を応用できるようになれば、Gluonでのアニメーション→スマホアプリでのアニメーション作成も夢ではないということになりますな(笑)

 

関連ページ一覧

JavaFX チュートリアル〜今度こそ、初めてでも大丈夫:Label〜

JavaFX チュートリアル〜今度こそ、初めてでも大丈夫2:Label〜

JavaFX チュートリアル〜今度こそ、初めてでも大丈夫3:Button〜

JavaFX チュートリアル〜今度こそ、初めてでも大丈夫4:RadioButton〜

JavaFX チュートリアル〜今度こそ、初めてでも大丈夫5:ToggleButton〜

JavaFX チュートリアル〜今度こそ、初めてでも大丈夫6:CheckBox〜

Eclipse Android〜Gluonでアプリを作る6: アニメーションを作る準備〜

Eclipse Android〜Gluonでアプリを作る7: 木琴アプリの解析〜

 

 

 

短期集中!無料トライアル!〜その後は、通常のアプリ作成になります〜

イントロダクション

前回は、とりあえず動くところまで作りました。概要は以下の通りです。

  1. ゲームのタイトル表示
  2. ゲームの開始画面表示
  3. 「じゃんけん」の開始ボタン押下後の処理

「3」の部分で開始ボタンを押下後にイメージを表示して終了している状態で前回の作業を終わりました。

 

www.youtube.com

 

動画ではボタンを1回のみしか押下していませんが、これは何回も押下するとイメージが無限に増えていきます。。。

今までの作業

Gluon + Eclipseでアプリ作成を行なっていますが、アプリケーションとしてはJavaFX」アプリなのでJavaFXでの実装を行います。そして、JavaFXの基本的な部品などを理解していなかったのでチュートリアルをやりました。

Gluon + JavaFXでの作業

  1. Eclipse Android〜Gluonでアプリを作る〜
  2. Eclipse Android〜Gluonでアプリを作る2〜
  3. Eclipse Android〜Gluonでアプリを作る3: 3Dモデル〜
  4. JavaFX 3Dグラフィックス〜チュートリアル1:バージョンが古かった〜
  5. Eclipse Android〜Gluonでアプリを作る4: 普通に作る〜
  6. Eclipse Android〜Gluonでアプリを作る5: ゲーム部分を作る〜

JavaFXチュートリアル

  1. JavaFX チュートリアル〜今度こそ、初めてでも大丈夫:Label〜
  2. JavaFX チュートリアル〜今度こそ、初めてでも大丈夫2:Label〜
  3. JavaFX チュートリアル〜今度こそ、初めてでも大丈夫3:Button〜
  4. JavaFX チュートリアル〜今度こそ、初めてでも大丈夫4:RadioButton〜
  5. JavaFX チュートリアル〜今度こそ、初めてでも大丈夫6:CheckBox〜

 JavaFXの基本を学習するのに「実装→実行→確認→理解」のフローを繰り返すことになるので、初心者にも(実行すれば)理解できるようなやり方でチュートリアルをやりました。※コードが動けば初心者向けとか関係ないのですが(笑)

そして、JavaFXチュートリアルの続きは必要に応じて追加していくことにしました。

以下のURLにある「category=XXXXX」のXXX部分に値を入れることでカテゴリを選択するように実装してある画面にて記事の一覧を取得することができます。

<JavaFXチュートリアル>

   「https://zenryokuservice.com/roadMap.php?category=tutorial-javafx

<Gluonアプリ作成>

    「https://zenryokuservice.com/roadMap.php?category=gluonapp

 

次のステップ

作成した画面上にある「ゲーム開始ボタン」を押下した後に以下の順序で処理を実行しようと思っています。

  1. 「じゃん」「けん」「ポン!」と文字列をアニメーションさせて表示
  2. ユーザーの手とCPUの手を比較・判定
  3. あいこの場合は「あい」「こで」「しょ!」をアニメーション
  4. 同様に判定を行いあいこの場合はループ
  5. 勝敗判定を行う、勝者と敗者を決める

こんな感じのゲームを作成するのですが、実装上でちょいと難しいのが「アニメーション」こいつをちゃんと理解する必要があるのでJavaFXのアニメーションの学習を行います。

参考サイトはこちら

docs.oracle.com

 

でわでわ。。。

技術ポータルサイトを作りたい〜アイデアの具現化〜

イントロダクション

「アイデアがあって、それを実現する」というのはとても大変そうなイメージがあります。大きいものだと「夢を叶える」という事になるでしょうか。 駄菓子菓子「千里の道も一歩から」と言うように小さなレベルでアイデアを実現させる事は可能なはず。これを積み重ねてやれば、大きな事も実現可能であろう。という希望を持っていけば、モチベーションもキープ出来るであろう。モチベーション下がってきたら対策を練る…などその時々で対策する必要がありますが、人の計画なんてそんなものでしょう(笑)

大切なのは続ける事

早い話が「諦めなけれはいつかはたどり着く」という事です。

本題

今回は「技術ポータルサイトを作りたい」です。現時点では「思い付き」です。 では、「思い付き」をどーやって「実現」するのか?はっきり言ってものによります。 ですが、基本的な実行手順は大差なさそうです。

  1. 思い付きを具体的なイメージ(絵、写真など)にする
  2. 実現するために必要なものを洗い出す
  3. 必要なものを、実現可能なレベルに分解、分類、プレークダウンする
  4. プレークダウンしたものを実行する順序に並べる
  5. 1つずつ実行する
  6. 1日、3日、1週間…のスパンで実行した結果を見直し改善、改良したスケジュール(計画)を立て再度行う
  7. 目標を達成するまで繰り返す

関連ページ

Java Basic

  1. Java Basic Level 1 Hello Java
  2. Java Basic Level2 Arithmetic Calculate
  3. Java Basic Level3 About String class
  4. Java Basic Level 4Boolean
  5. Java Basic Level 5If Statement
  6. Java Basic Summary from Level1 to 5
  7. Java Basic Level 6 Traning of If statement
  8. Java Basic Level8 How to use for statement
  9. Java Basic Level 8.5 Array
  10. Java Basic Level 9Training of for statement
  11. Java Basic Level 10 While statement
  12. Java Basic Swing〜オブジェクト指向〜
  13. Java Basic Swing Level 2〜オブジェクト指向2
  14. サンプル実装〜コンソールゲーム〜
  15. Java Basic インターフェース・抽象クラスの作り方
  16. Java Basic クラスとは〜Step2_1
  17. Java Basic JUnit 〜テストスイートの作り方〜

はじめてのJava〜見直し、Lv1〜

イントロダクション

プログラミングをやったことのない友人に自分の作成したプログをレビューしてもらいました。「これなら大丈夫!」と思っていたけど、抜けが結構あり「わからん!」となる部分が沢山ありました。 せっかくレビューしてもらったので、プログラミングの基本プログ「Java Basic」シリーズを見直す事にしました。

Java Basic

はじめにやる事は、「ハローワールド」というプログラムを作り起動してコンソールに文字列を表示することです。 ここでは、クラスの書き方〜変数、メソッドの書き方を紹介しています。そして実際にハローワールドのプログラムを作り起動した動画もあります。 とりあえずは、プログラムを組んで「動いた!」という感動を味わっていただきたく思ってます。

次のステップ

クラスを作りメソッド、変数の書き方がわかったはずなので、基本的な計算をプログラムにやらせてみます。 足し算、引き算、掛け算、割り算について記載しました。ポイントとしては、計算をする時には以下の処理が必要になると言う所です。 1. 変数の宣言 2. 変数の初期化 この部分が理解できたら「何か作れそう」と思うかもしれません。 やってみるのが、ベストな選択だと思います。

わからない〜なるほど

ある程度の基本がわかると何かを作ってみたいのが人情…これも重要な事です。 上記の基本だけでは、足りない事が沢山あります。それを補うために新しい技術や知識が必要になる事は今後沢山あります。ではその「わからん」にどのようにアプローチして「なるほど」へたどり着けば良いのでしょうか?

ズバリ根性でしょう

藪から棒に突き進んでも道に迷います。かと言ってうだうだ悩んでも何も進みません。だから

一歩ずつ確実に理解

はっきり言って「100%の理解をして次へ進む」という意味ではありません。逆に1つの物事を100%理解するのには膨大な時間が必要です。 ここで言うのは1%でも良いので確実にという事です。自分の経験上では、これが最速の理解方法です。

関連ページ

Java Basic

  1. Java Basic Level 1 Hello Java
  2. Java Basic Level2 Arithmetic Calculate
  3. Java Basic Level3 About String class
  4. Java Basic Level 4Boolean
  5. Java Basic Level 5If Statement
  6. Java Basic Summary from Level1 to 5
  7. Java Basic Level 6 Traning of If statement
  8. Java Basic Level8 How to use for statement
  9. Java Basic Level 8.5 Array
  10. Java Basic Level 9Training of for statement
  11. Java Basic Level 10 While statement
  12. Java Basic Swing〜オブジェクト指向〜
  13. Java Basic Swing Level 2〜オブジェクト指向2
  14. サンプル実装〜コンソールゲーム〜
  15. Java Basic インターフェース・抽象クラスの作り方
  16. Java Basic クラスとは〜Step2_1
  17. Java Basic JUnit 〜テストスイートの作り方〜