モバイルアプリ開発演習

アンドロイド(Android)用アプリケーションの開発

スマートフォンやタブレット端末などための「アプリ」開発を目的とする。スマートデバイスの登場とその急速な普及は地域にあたらしい産業への期待を生みはじめた。地元企業や自治体と連携して、特定目的向けのモバイルアプリ開発を目指す。世界の新しいアプリ開発手法として、ソーシャルプログラミングがはじまっている。受講生は、具体的なソーシャルプログラミングのサイトへ登録してその開発技法を理解する。

①Android SDKなどの開発ツールを理解する。

②JavaScript と XML の関連を理解する。

③端末ハードウェアとアプリのインタフェースを理解する。


第1回目 アプリ開発についてのイントロダクション

授業スタートにあたりWindows とアプリの理解度テストを実施します。

授業用環境の準備 - レポート提出用

ブログで課題を提出する。

大学 gmailについて

Gmail に**大学のアカウント(学籍番号@g.matsuyama-u.ac.jp)**を使ってログインする。

件名には、授業科目名を必ず書き、
本文中に、学籍番号と氏名を書くこと。


第2回目 Windows OS 開発環境の整備

Windows Settings

Windows 10 Network status

Windows 設定の全部


第3回目 テキストエディタ Sublime, NotePad++ のインストールとカスタマイズ

Sublime


第4回目 Sublime, NotePad++ でソースコード編集

カオスゲームのソースコードを入力する。

ロゼッタコードにあるカオスゲーム html と javascript

フラクタル幾何学

シェルピンスキー3角形

第5回目 Windows 統合開発環境(Android SDK)のインストールとカスタマイズ

第6回目 Android アプリ
人工知能テンソルフロー応用の例

画像認識アプリ TF Classify を使ってみる。TF Classify はカメラを動かし、画面の中の物を識別して確率で表示する。

TF Classify


第7回目 Windows Subsystem for Linux(WSL) をインストールし Telnet, SSH を使う

Windows Subsystem for Linux (WSL) インストール手順

  • 開発者モード
    • 設定
    • 更新とセキュリティ
    • 開発者向け
    • 開発者モードをオン
  • WSL スイッチを入れる
    • Windows 機能の有効化または無効化
    • Windows Subsystem for Linux を有効化する
  • Linux用アカウント作成
    • Windows アカウントとは別に用意する

Windows Subsystem for Linux 機能を動かす

MicrosoftによるWindows subsystem for Linuxの解説記事

Windows Insider Program

インサイダープログラムに参加する。

Setting - Insider Program

Control Panel - Programs

Windows Subsystem for Linux 機能にチェックし、この機能を作動させる。スタートメニューにUbuntuが登場する。

Ubuntu インストール時に、root password を設定しなければならない。

Ubuntu をインストールしたあと確認すること
  • Windows 10 のデスクトップ左下、「ここに入力して検索」からスタート

  • コマンドプロンプト(cmd)を起動する

cmd

  • コマンドプロンプトからbashを起動する

コマンドプロンプトで bash と入力しEnterキーを押す。

C:\Users\ユーザ名> bash

するとUbuntuのbashシェルが起動し、次のようなプロンプトが出力される。

ユーザ名@マシン名:/mnt/c/Users/ユーザ名$

ユーザ名はそれぞれLinuxとWindowsでのユーザ名。マシン名は、Linuxでのマシン名になる。

とりあえず Linuxの動作に慣れる

pwd, whoami, uname コマンドでLinuxのシェルを使ってみる。

Bash シェル になじむ

Windows のコマンドプロンプトの源は、このUnixのシェルである。ということで、コマンドプロンプト(Windows)からBashシェル(Unix)を起動することは、先祖返りと言えるかもしれない。

Bashに慣れるため、次の3つのコマンドを入力してみる。これらのコマンド(pwd,
whoami, uname)は、それぞれ、自分のディレクトリー、自分のユーザ名、システムの名前が確認するためのコマンドである。

pwd

ログイン名@マシン名:/mnt/c/Users/ウィンドウズユーザ名

pwd の意味は、ユーザが作業(work)するドライブ(外部記憶装置)の位置(ディレクトリ、directory)を表示する(print)ことである。したがって、英語での命令は、 print working directory となる。

whoami

Linuxのユーザ名

uname

OS などのシステム情報を表示

uname -o
uname -m
uname -a
fortune | cowsay テストとアプリのインストール方法

fortune は、一種の無駄だのようだけど役立つときもあるかもしれないアプリの一つ。cowsay もちょっと微笑ましさを演出するための文字表示アプリ。

Ubuntu on Windows

フォントをMSゴシックから英文用に変更すればバックスラッシュがきちんと表示される。fortune や cowsay が動かないときは、次のようにしてインストールする。

sudo apt install fortune

sudo apt install cowsay

Ubuntu on Windows

コマンドプロンプト(cmd)でフォントをMSゴシック体から英文用フォントに変更するには、cmd ウィンドウの左上メニューの中から英文フォントを選択すればよい。

Networking

ip l

ip コマンドは自分のコンピュータが接続されたネットワークについて様々な情報を調べることができる便利なコマンドだ。

ip l は、コンピュータのネットワークに関して物理的装置、インタフェースを出力する。ip lは、短縮形でもとのコマンドはip linkで、リンクすなわち物理層を表示する。例をあげれば、1番にループバック(自分自身)、2番にはWiFiの装置名がでるような表示をする。

ip a

これは、ip addressの短縮形である。

ip ne

これは、ip neighborの短縮形である。同じネットワークのセグメントで近くにある端末のIPアドレスを表示するコマンドである。

ip

これは、ipコマンドの使用法の簡略版を表示する。いろいろな使い方を試して、その出力を眺めてみよう。

ping IPアドレス

さきのipコマンドで発見した近くにあるIPアドレスに向けて、ping IPアドレスを実行してみよう。

whois matsuyama-u.ac.jp

whoisコマンドは、ドメイン名やIPアドレスの所有者を調べることができる。

sudo ngrep

sudo ngrep コマンドを実行するには、ngrepをインストールする必要がある。

sudo apt install ngrep
BSD Games

次にLinuxのもととなったUnixのテキストゲームをインストールして、遊んでみる。

sudo apt install bsdgames

bsdgames は、 /usr/games/ のディレクトリにインストールされる。

ls /usr/games

bsdgames

例えば、この中にある hangman は英単語を推測して当てるゲームだ。下の画面では、eとtの英字2文字までを当てた。さて、外れるとどうなるだろうか。

hangman


Telehack.com

Telnetの利用

1985-1990年のARPANET(インターネットの前身)を再現した telehack.com に接続してみる。下の例は、ログインしないで、w コマンドを実行した。どこからアクセスしたかわかるように住所が表示される。その中にMatsuyama, Japan の表示がある。

Telehack.com

アカウントをtelehack.comにつくらなくても、画面下に出てくる .(ドット) がプロンプトになってログインしなくても一部のコマンドが利用できる。例えば、使い方のヘルプは、helpと打てばよい。

telehack.com

starwars

starwars と打てば、アスキー絵でスターウォーズのストーリーが描かれる。

newuser または login

newuser またはloginでtelehack.comに新しくアカウントを作成することができる。アカウント作成時にはnewuserとタイプする前にユーザ名とそのパスワードを決めておかなければいけない。 アカウント作成後は、loginする。

geoip

.geoip

IP アドレス、asn, isp, zip, city, state, country が表示される。自分のコンピュータで実行して、その結果を確認してみる。

IP アドレスからispすなわち、インターネットサービスプロバイダ及びシティ名が判明する。州と国名もだ。州は日本国内では番号で表示されるかもしれない。

Webブラウザを使って、次のURLをアクセスすることでもこれらの情報を得ることもできる。

https://geoiptool.com/

さらに地図上の位置を調べるサイトもある。ただし、このサイトは安全とは言えないかもしれない。

http://geoiplookup.net/

このサイトではISPの地理座標が表示される。これを松山市の座標と比較してみよう。

Wikipedia 松山市

さらにグーグル地図(Google Map)でも座標を入力して比較してみよう。グーグル地図では、座標を33°50’30.12″N 133°45’57.96″Eのように緯度、経度の順に入力する。


練習問題

北緯33°50’30.12″ は、10進数に換算すると北緯33.8417°になる。東経133°45’57.96″は、いくらになるだろうか。

グーグル地図で、地図上の点をマウスで指して、緯度経度を表示するにはどうすればよいだろうか。試してみよう。

Ubuntuコマンドシェルがインストールされていれば、次のコマンドでISPなどの情報を調べることもできる。実際にやってみよう。

whois  IPアドレス

ISPの地理情報

ISPに関する地理情報データベースをダウンロードする。

このCSVファイルの行は、 geoname_id の昇順に並んでいる。

ISP geoname_id

Imgur

このISP CSVファイルから日本を抜き出し、四国のISP地図を作成してみる。

例えば、Geonameid 11611221 のISP周辺地図は、次のようにすれば表示できる。

Imgur

Imgur

telehack.txt

telehack.com の利用方法

You have new mail. のように新しいメールが届いていますと表示されたときどうするか。

@プロンプトに続けてmailとタイプする。1番のメールを読んで(1)終了(q)する。

  • @mail
  • &1Enter
  • &qEnter

メールの送信(自分に送信する)

  • @mail
  • &send 自分のユーザ名
  • Subjct? 件名
  • Enter message below. (下にメッセージを入力しなさい)
  • Type contrl-D on a line by itself to send or control-C to abort. (送信するときはコントロールキーを押しながらDを押す。キャンセルするときはコントロールキーを押しながらCを押す。)

mailコマンドで自分の送ったメールを読んでみる。

  • &listEnter
  • &1Enter
  • &qEnter

sendコマンド例

send manabus hello

?
ヘルプ

練習問題

fingerコマンドの使い方を覚えよう。


Mosh の特長と利用法

Mosh を入手する

Windowsの場合は、Mosh for Chrome をインストールし、Chrome ブラウザから利用する。


Linuxの配布パッケージの一つであるUbuntuを使って、リモートデスクトップを利用する。

vino server

UbuntuではUnity dashから 設定ツールを起動する。

Remmina remote desktop client

これもUnity dash から起動する。


9月26日の米国CNBCのニュースでマイクロソフト社創業のビルゲイツ氏がAndroidスマートフォンに替えたとニュースが流れた。


第9回目 JavaScriptの書き方

HTML と Script タグで動かす原始的なやり方で HTML と JavaScript を書いて、動かしてみよう。Windows で動かすには、エディタとブラウザがあればよい。titleタグは空欄にしてあるから、スクリプトにあわせて自分で適当に埋める。ただ空欄のままでも問題はない。

<html>
<head>
  <title></title>
</head>
<body>
 
<script>
console.log("JavaScript 動いてる!");
</script>
</body>
</html>

次にScript(コード)とHTMLを分けて書くやり方。

<script>
console.log("JavaScript 動いてる!");
</script>
<script src="script.js"></script>
W3schools

あとは、w3schoolsにある例題を動かしてみよう。これを一通り動かせば、JavaScriptの雰囲気はつかめるはずだ。

あとは、AndroidのアプリPyでプログラミングを自習する。このPyは、iOS用のプログラミング学習もできる。

Android apps
  • アプリ Py このJavaScript 学習用アプリをインストールする。内容は次のように「はじめに」からスタートして順にドリルを解いていくとJavaScriptの書き方と意味が理解できる。

  • はじめに(Introduction)

    コンソールログ命令で1+2計算 console.log(1+2)

    画面に15をだすためには?をいくつに console.log(5+?)

  • データ型と変数

  • ......

Chrome

次のコードを、Chromeのアドレスバー(URL)に入力する。

javascript:[console.log("できた!")]

すると、どうなるだろうか。

次のような窓が開けば成功だ。

できた!


第10回目 Node.js のインストール

第11回目 TCP/IP ネットワークの通信パケット解析ツール

第12回目 Android OS 上の TCP/IP ネットワーク構築方法

第13回目 Android OS で 通信パケット解析ツール

第14回目 ユーザインタフェースのデザインとグラフィックスの基本

第15回目 GPS による位置情報の利用

第16回目 アプリ制作のテーマを決定する

第17回目 アプリ制作のための JavaScript 言語入門

第18回目

第19回目 JavaScript実行環境としてブラウザとNode.jsを比較する

第20回目 Android SDK でアプリのフレームワーク構築

第21回目 ウェブサーバ を自分のコンピュータ上に構築

第22回目 クラス内でのウェブサーバの相互利用

第23回目 スマートフォンからクラス内のウェブサーバを利用する

第24回目 ウェブサーバ Apache と Nginx を比較する

第25回目 JavaScript で音声合成エンジンを利用する

第26回目 音声認識アプリについて

第27回目 JavaScript によるグラフィックス

第28回目 JavaScript によるペイントプログラム


第29回目 電子生命プログラムの作成

私達は自分が機械ではないことを機械に示さねばならない時代に生きている

私達の時代はいま……

CAPTCHA

ReCAPTCHA

道路標識のポールは道路標識か?

人型ロボット「ソフィア」は人間のようになりたい?ースプートニク記事

Intelのプロセッサチップに根本的な設計上の欠陥が発覚、各OSにアップデートの必要性 - Gigazine

Reddit - 'Kernel memory leaking' Intel processor design flaw forces Linux, Windows redesign

Bugs in modern computers leak passwords and sensitive data. - spectre paper

spectre papaer pdf

Intel Responds to Security Research Findings

Gaming disorder

この世界は仮想現実?

THE WORLD IS SIMULATED, PROOF OF A VIRTUAL REALITY EXISTENCE? 2017

We Are Living In A Simulation - New Evidence!


第30回目 制作したアプリの総合評価