Java 子供向け 〜AndroidアプリでJavaをすヽめる

Androidアプリの作成準備を始めました。
Android Studioのインストール〜ハローワールドの実行までやりました。

Javaをすヽめる

Androidをやるのには下心があります。それは近所の子供たちにJavaをやらせようというものです。
実際に自分はボランティアで近所の子供たちにプログラミングに関してアドバイスなんぞしていますが、まぁ一言で言うなら「子供たちは天才ばかり」と思い知らされています。実際にある中学生はSSLの通信ロジック(暗号処理の一部分)の内容を見事に説明してくれました。
他にも、企画を立て、仲間を集めコンテストに出場とか、コンテストに優勝とか。。。

そーなると、自分は、大人として黙ってはいられない気持ちになるわけです。

Javaワールドへ引き込みたい。。。

このような気持ちがふつふつと湧いて来ます。

しかし子供!

やはり「面白い」がないとやる気になってくれません。キーワードとしては「ゲーム」、「難問」など、キモになる穂は「達成感を得る」と言う部分です。ちなみに中学生くらいの子供たちを対象にしようと思っています。

昔ながらの方法で

早い話が「やってみせる」と言うところに行き着くわけです。具体的には。。。

座学をやっても意味がない

理論的に理解すると言うことは大事ですが、それよりも「結果」を重視する方法でないと「やる気」が出ないし、?がいっぱいになり興味も示してくれない状況です。
早い話が、ものを作って「これ面白いだろ?」とやってみせるのが一番の方法だと思うわけです。

Androidアプリ

これを作成し、動かしてみせる。何かしらのアクション(光る、鳴る、動く)を実装して見せてやれば人気者間違いなし!(作ったものです)なのでそれを作るためのアイディアを練るのがとても大変です。

要件

  1. 直感的に動かせるもの(アプリ)
  2. 動かして遊ぶとプログラミングの理解につながる
  3. Javaに興味を持ってもらう

上記のような要件を満たすようにサンプルアプリを作成したいと考えております。
パズルゲームなんぞはどうだろうか?

もちろん、一人で製造可能で、業後の時間帯で。。。となると大人向けプロジェクト共有(Gitリポジトリ)を作成、チーム開発を行うのがベストな方法なのかもしれない。。。
しかし主要になる技術がみんな違うんだなぁ。。。

なんか愚痴っぽくなったけど、これから作成しようと思うアプリの「要件」をまとめてみました。

でわでわ。。。

関連ページ

  1. [Androidアプリ開発 〜1.インストール〜]()
  2. [Android ライフサイクル 〜フレームワークって何?〜]()

サイトマップ



Android ライフサイクル 〜フレームワークって何?〜

Androidアプリを作成する時に処理をする順番など、どのメソッドで何やれば良い?という疑問が出ると思います。自分はでました(笑)

フレームワークとは?

フレームワークというのは、いろんなものがあって「???」となることが多いです。とりあえずは大まかに下のようなものです。

  1. フレームワークは大まかな部分が実装してある
  2. 作成するアプリによって機能とか画面の作成をする

一言で言えば「必要なところだけ作成すればフレームワークがやってくれる」というものです。
これを使用すると実装する量が格段に減ります。
有名なところだと下のようなものがあります。

  1. Springframework
  2. Gluon Mobile(JavaFX)
  3. JSF(JavaEE)
  4. Play Frame Work
  5. ND4J

とまぁ挙げればきりがないのですが、ここらへんで勘弁していただき。。。

本題へ。。。

Androidでのフレームワーク

フレームワークという概念でAndroidアプリの構成を見て見ると。。。早い話が、下のような処理です。

画面を作成するためのファイル

activity_main.xml

このファイルが下のようなイメージのものを表しています。

Javaの実装

ここに作成したいボタンなどを追加します。
そして、実装するのは下のメソッドです。

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

このアプリは「ハローワールド」を表示するだけなので他のものは実装していません。
なので「フレームワーク」という感じがしないのですが、基本になります。
キーワードになるのは「ライフサイクル」です。

ライフサイクル

Androidアプリのライフサイクルは下のようなイメージになります。

ぱっと見は「は?」となりますが、よくよく見ると「onCreate」というのが初めにあります。このメソッドでアクティビティ(画面)に表示するもの(ボタンなど)を表示したら他の部分を実装していないので飛ばされてしまいます。

つまり、下のような順番で処理が走ります。

  1. onCreate(): 画面作成
  2. onStart() : 画面(アクティビティ)が前(フォアグラウンド)に出てくる時
  3. onResume(): 画面が差異化する時、一度実行してから画面を再度開いた時
  4. onPause(): アクティビティから離れた時に起動する
  5. onStop(): ホームボタンなどで画面(アクティビティ)を閉じた時
    6, onDestroy(): アプリを終了した時

これらの処理を実装することで、アプリの以下のようなところを作成します、言葉を変えると「1〜6までの部分を実装すればアプリとして機能する」ということです。

補足

※画面=アクティビティ

  1. 画面を作成する時に、onCreate()
  2. 画面を起動(前に表示)する時にonStart()
  3. 何かしらの操作をする(クリック)などは自分で実装する必要あり
  4. ホームボタンなどで画面を閉じ、再表示する時onResume()
  5. アプリを停止する時にonDestroy()

こんな順序で処理が走ります。つまりスマホアプリの大まかな操作に対応したところを、自分の作りたいものに実装してやるという感じです。

まとめ

このような形で、フレームワークを使用すると自分の「やりたい」を実現するのに労力を最小限?にしてアプリの作成を行うことができるというわけです。

でわでわ。。。



Androidアプリ開発 〜1.インストールと使いかた〜

Androidアプリの開発を始めようと思います。
理由は色々あるのですが、1つ挙げるとウェアラブル端末でのアプリケーションに興味がありそちらにも手をつけたいと思った次第です。

Android Studioインストール

AndroidのサイトからIDE(Android Studio)をインストールします。

「Android Studio の最新バージョンをダウンロード」のリンクをクリックするとWindowsとかMacとかをプログラム側で判断して適当なインストーラーをダウンロードできるようです。※Windowsでインストールしました。
ちなみに、インストールするときに、指定のフォルダにインストールできました。

自分はMacなのでdmgファイルをダブルクリックでインストールできました。

そして、インストールするときにバーチャルデバイスもインストールできるので、実機のない状態でも起動確認ができます。

起動する

下のような見た目です。

そして参考にするのはチュートリアルです。やはりやることはHelloWorldです。

大まかな概要に関してはこちらのリンクから見れます。
そして、詳細なチュートリアルのトピックがあるので慣れた人などはそちらのリンクを見てみると良いでしょう。

初めてなので

はじめての〜」を参照します。
Android Studioでプロジェクトを作成するところから初めて行きます。

上記のリンク先にインストーラーをダウンロードできるリンクがあります。左のリンクも同様です。
そして、手順に従い進めていくと下のようなプログクトが作成できました。多少名前など変えてあります。

コードを見る

「はじめての〜」なので全てのコードが自動生成されます。なのであとは動かすだけです。
動かす方法は、以下の2種類あります。
1. エミュレータを使用して起動する方法

  1. 実機にアプリをインストールして起動する方法

そして、今回はエミュレータを使用します。Android Studioを起動すると下のような画面がみれます。

このままでは、エミュレータが動きません。。。

ちょっと見づらいですが、このアイコンをクリックします。
すでにエミュレータをダウンロードしたので下のような見た目になっていますが、こちらのリンクから起動する方法が記載してあるのでそれを見れば大丈夫です。

そして、エミュレータを起動します。

上の再生ボタンをクリックします。

エミュレータを作成する

下のようにエミュレータの一覧からをクリックしてやると下のような画面が見れます。

「[Verify Configuration] ページ」です。
このページでは(自分の場合)とりあえずでFinishを押下しました。
すると下のようなダイアログが見れるのでちょいと待ちます。

うごかない。。。

参考のサイトを見ながらエミュレータを起動しようと試みたのですが、動きません。。。
原因はアプリケーションの起動設定をしていないから。。。しかしやり方がわからない

わからないなら調べる

参考にするのはこちらのページです。

アプリを起動しようと「Run」を探して見ると上部にあり、そこからRunを謳歌すると下のような設定画面が出ました。

「Application」を開いて見ると下のような設定になっていました。

しかし、この部分もあまり関係ないようでした。。。

Moduleがない

操作していると「no-module」がという選択肢しかないことに気がつきました。
なのでFile > New > New Moduleと選択してモジュールを作成てやりました。下のような画面で作成しました。

すると上のようにビルドが始まりました。

しかし、設定する以下の値が間違っていたのでそれを修正してやりました。

ビルドが完了すると下のように起動ボタンが押せるようになりました。

いざ実行

そして実行結果

ライブラリの追加方法

参考にするページはGoogleのドキュメントです。

  1. Google の Maven リポジトリをプロジェクトの build.gradle ファイルに含めます。

    
    allprojects {
        repositories {
            google()
    
            // If you're using a version of Gradle lower than 4.1, you must
            // instead use:
            //
            // maven {
            //     url 'https://maven.google.com'
            // }
        }
    }

2. サポート ライブラリを使用するモジュールごとに、ライブラリをモジュールの build.gradle ファイルの dependencies ブロックに追加します。たとえば、v4 core-utils ライブラリを追加するには、以下の行を追加します。
dependencies {
    ...
    implementation "com.android.support:support-core-utils:28.0.0"
}

## Tensseractを追加する
[ここの記述](https://github.com/alanv/tesseract-android-tools/tree/master/tesseract-android-tools)にあるように、下のコマンドを実行する方が良いみたいです。。。

> NOTE: You must download and extract source files for the Tesseract and
Leptonica libraries prior to building this library.
To download the latest versions of these libraries and build this project, run
the following commands in the terminal:

cd <project-directory>
curl -O https://tesseract-ocr.googlecode.com/files/tesseract-ocr-3.02.02.tar.gz
curl -O http://leptonica.googlecode.com/files/leptonica-1.69.tar.gz
tar -zxvf tesseract-ocr-3.02.02.tar.gz
tar -zxvf leptonica-1.69.tar.gz
rm -f tesseract-ocr-3.02.02.tar.gz
rm -f leptonica-1.69.tar.gz
mv tesseract-3.02.02 jni/com_googlecode_tesseract_android/src
mv leptonica-1.69 jni/com_googlecode_leptonica_android/src
ndk-build -j8
android update project --path .
ant debug

To download the English language files for Tesseract and copy them to your
device's external storage, run the following commands in the terminal:

cd <project-directory>
curl -O http://tesseract-ocr.googlecode.com/files/tesseract-ocr-3.02.eng.tar.gz
tar -zxvf tesseract-ocr-3.02.eng.tar.gz
rm -f tesseract-ocr-3.02.eng.tar.gz
mkdir data
mv tesseract-ocr data/tesseract
adb push data/ /sdcard/
adb shell sync



でわでわ。。。
<[次回](http://zenryokuservice.com/wp/2020/02/21/java-android-%e3%80%9c%e3%82%b9%e3%83%9e%e3%83%9b%e3%82%a2%e3%83%97%e3%83%aa%e3%81%a7%e3%81%af%e3%81%98%e3%82%81%e3%82%8bjava%e3%80%9c/)>