モバイルアプリ開発演習 2019

12月19日 国旗と国名

12月19,20日

日程

  1. 9/26 はじめに
  2. 9/27 開発環境準備
  3. 10/3 円の分割と領域の数 ブログ
    URL の検証
  4. 10/4 BASICのコード: 無限数列
  5. 10/10 ellipse ニュートンとハレー彗星
    Nobel prize in physics awarded to cosmology and exoplanet researchers - Guardian
    Nobel physics prize: 'Ground-breaking' win for planets and Big Bang - BBC News

James Peebles, Michel Mayor and Didier Queloz have received the 2019 Nobel prize in physics Photograph: Niklas Elmehed/Royal Swedish Academy of Sciences

  1. 10/11 アジアのモバイルアプリ事情
  2. 10/24, 25 動くボールのアニメーション
    Don't underestimate the Force -- Darth Vader
    Darth Vader -- Wikipedia
  1. 10/31, 11/1 「グラフィックスの基本から考える

人の心に生起する千差万別の知覚や感覚は所詮1010個にのぼるといわれる脳細胞にあらわれる種々様々なパターンにすぎない ……
人の一生のうち脳空間にあらわれる図式の数はほんのわずかなものであり、他の多くの可能性を秘めたパターンは一度も使われることもなく空しく死んでゆくといわれている。

 田尾鶉三『次元とはなにか』講談社ブルーバックス
  1. 11/7,8 「クラシカル・ゲームで考える」
    1980年代の日本人でパソコン好きな者は、雑誌掲載プログラムを手で入力してプログラムを覚えた。

ボイジャー2号

ボイジャー2号が、太陽圏 ― 英語ではヘリオスフィア heliosphere ― の外へでた二番目の宇宙船となったのは2018年11月5日だった。一番目は、ボイジャー1号でどちらも NASA のものだ。太陽圏とは、太陽系圏ともいわれるように太陽のまわりを囲む粒子のバブルと磁場のことで、それらは太陽によってつくられているものである。太陽のまわりをとりまく保護膜のようなものの中が太陽圏とよばれている。地球から180億キロメートル離れたところでボイジャー2号はインターステラー空間あるいは星間領域へと突入した。
NASAのボイジャーの旅を解説するページには、太陽と太陽をとりまく太陽圏からインターステラーへと出て行くボイジャーの絵がある。

voyager in interstellar space

この絵にある 「ヘリオポーズ heliopause 」とよばれるものが、太陽風とインターステラー風が均衡をたもつ境界面となっている。太陽圏を出て太陽風があたらなくなっても次は星間領域の風にさらされることになるのはなんか広大な宇宙も身近に感じてしまう喩えのようだ。

Heliosphere - Wikipedia にある台所の流し台 シンク を喩えにした絵も蛇口からシンクに流れ落ちた水流が早い領域とその外の遅い領域とに、ある境界線で分かれることを示していてわかりやすい。

ボイジャーがヘリオスフィアの外へでたことで、太陽を包むヘリオスフィアが星間空間を進む宇宙船のようなイメージであることが尚更鮮明になった。

Wikipedia - Heliosphere

  1. 11/14,15 バイブレーションと音楽

  2. 11/21 それぞれ発表
    レポートの書き方 Markdown

  3. 11/28,29 自由落下
    最近の話題のひとつ
    アインシュタインの一般相対性理論 論文 The Foundation of the General Theory of Relativity

  4. 12/5,6 自由落下の解説 と 問題の解答
    絵文字とコード、国別コードと国旗

<まとめ> グループまたは一人でアプリを考える (例) 国旗を見て国名を当てるアプリ、Webから情報を収集するアプリ、チャットアプリなど

例えば、下のサイトにある国旗のデータを使う。

国名と国旗の一覧表

  • Google spredsheet
  • =IMAGE( )
  • =URL

BASIC-256 でコードをつくるときのポイント。

imgloadの書式
例:

imgload 100,120,"C:\Users\ms\Desktop\abc.png"

ここで、
** 100,200 は、絵の中心座標 (100,200) を示す。
** 最後の項目は、パス C:\Users\ms\Desktop\ とファイル名 abc.png
** ファイル形式は、bmp, gif, jpg, png のどれか。
また、imgload は画像の縮尺、回転もできる。

参考リンク
Template:Flag - wiki
Country flag icons - GitHub
flag icon css - A collection of all country flags in SVG
GitHub - country flags
Countrycode.org

  1. Webサーバーとの会話

  1. 12/19,20
    • 自然数の約数
input n
for i=1 to n
if n/i = int(n/i) then print i;" ";
next i

Annotation-2019-12-17-193047

練習問題

約数を求める素朴な 上記のBASICコード を改良し、大きな数についても計算できるようにする。

Chrome をつかい、 Shift + CTRL + I でコンソールを開き、JavaScript で実行すると次のようになる。

Annotation-2019-12-17-193451

このコードは、ロゼッタコードからの引用である。

上に書いた素朴なBASICのコードは、効率が悪く、40,400,4000,40000くらいまではあまり待ち時間がないけど、4百万くらいになると目にみえて速度が低下する。

これに比べれば 関数 factors の引数を大きな数にしても、このJavaScriptコードは計算可能であることを確かめてみよう。

Kotlin

JavaScript の他に、Android の開発でよく使われるようになった言語に Kotlin がある。Windows へのインストールは、複数の方法があるが、 GitHub Kotlin からコンパイラを直接ダウンロードし、インストール先の 「kotlin-native-windows-バージョン\bin」 を PATH に追加する。コンパイルは、次のようにする。

kotlinc  factors.kt  -o factors

例えば、約数を求めるコード factors.kt の例として、

ロゼッタコードから約数を求める Kotlin のコードを参考にして、これをコンパイルして実行してみる。

  • factors.kt
fun printFactors(n: Int) {
    if (n < 1) return
    print("$n => ")
    (1..n / 2)
        .filter { n % it == 0 }
        .forEach { print("$it ") }
    println(n)
}
 
fun main(args: Array<String>) {
    val numbers = intArrayOf(11, 21, 32, 45, 67, 96)
    for (number in numbers) printFactors(number)
}

kotlinc コンパイラ で factors.kt をコンパイルすると、次のような実行ファイルが出来上がる。

dir

511,726 factors.exe
    317 factors.kt

factors を実行すると intArrayOf で指定された整数が約数に分解される。

11 => 1 11
21 => 1 3 7 21
32 => 1 2 4 8 16 32
45 => 1 3 5 9 15 45
67 => 1 67
96 => 1 2 3 4 6 8 12 16 24 32 48 96

しかし、うまく kotlin が動かず、エラーになることもある。

Error occurred during initialization of VM
Could not reserve enough space for 3145728KB object heap

このヒープ領域をつくれないというエラーは、Java が出力しているものである。

原因は、ほとんどの場合、Java の 64bit版を再度インストールすれば解決する。

Kotlin は、run_konan のスクリプトで Java を呼び出しているが、そのオプション

java -Xmx3G ...

での 3ギガバイトのメモリ予約が原因のエラーなので、エラーのときは、Java 64bit版をダウンロードし再インストールする必要がある。

ちなみに下記の環境では、Kotlin コンパイラ は正常に動作している。

java -version
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)

ちなみに、ほんとに 32bit 環境で動作をさせたいときは、 Xmx オプション をはじめ環境設定を32bit用にすることが必要になる。


Sillicon Valley

はじめに

  • 教室内

    • グループ
    • 座席
    • コンピュータ
  • ワードでの文字入力について

次の 3行 をコピペでなく、キーボードから入力することができるか?特にIMEによる変換ではなく、6の字に似た記号、温度記号、マイクロメートル記号などの特殊記号を挿入するやり方。

ユニコードで記号をワード文書に挿入する方法

ʻOumuamua
気温が32°と暑い。
蜘蛛の糸の太さは、3–8 μm である。1μm は、千分の1 ミリメートル。
  • 教室外
    • SNS + Blog

9/26,27

  • 円を描き、円周上に複数点を選び、それらをすべて直線で結ぶ。円は複数の領域に分割されるが、円周上の点の数と領域の数の間には関係があるだろうか?

domain

正解をBASICのコードで以下に示す。\ は、整数の割り算。

for n=2 to 10
print (n*n*n*n-6*n*n*n+23*n*n-18*n+24)\24
next n

参考

ブログ「円の分割と領域」


アプリで、この世界を記述する

自然の法則

  • 地上

海に住むイルカが空気中でしゃべっているのを聴くと、人が単独の母音や連続母音を声にだせるが子音を発音するのに苦労しているように聞こえる。
-- アリストテレス

Potentiality and actuality, Aristotle

  • 太陽系

Solar system

Solar system

Formally designated 1I/2017 U1, it was discovered by Robert Weryk using the Pan-STARRS telescope at Haleakala Observatory, Hawaii, on 19 October 2017, 40 days after it passed its closest point to the Sun on 9 September of the same year. When it was first observed, it was about 21,000,000 mi; 0.22 AU (33,000,000 km) from Earth (about 85 times as far away as the Moon), and already heading away from the Sun. Wikipedia ʻOumuamua

Animation

ʻOumuamua

社会の法則

  • 人口の増減 都会と田舎
  • 経済成長率 わが国の成長率

Annotation-2019-09-23-131130


Blog の作成

モバイルアプリの授業で毎回「アプリについて」を blog (ブログ)に記録する。

いろいろなブログサイトがあるが、メールアドレスを用意すれば簡易につくれる例として

Mozello をとりあげておきます。

Annotation-2019-09-20-123210


アプリとこの世界の関係

アプリを使って、この世界のいろんな現象をシミュレートしてみる。

BASIC256

JavaScript


ネットワークプログラミング

この授業では、ネットワークプログラミングを学習する。

  • 質問

telnet などで、サーバーと会話した経験は?

ex.

  printf "GET /index.html HTTP/1.0\r\nHOST: www.matsuyama-u.ac.jp\r\n\r\n"  | nc www.matsuyama-u.ac.jp 80