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

  1. はじめに 9/23
  2. Windows OS 9/28
  3. テキストエディタのインストール 9/30
  4. Android Emulator 9-30
  5. Windows ホスト、サービスファイルとHTTP 10/12
  6. Android Studio10/14
  7. Import Samples from GitHub10/21
  8. Ubuntu(Linux) on Windows 1011/2,4
  9. Small Basic11/2,4
  10. Tic tac toe11/9,11
  11. 仮想デスクトップ Windows 10
  12. Java言語の要点
  13. Java ゲーム テトリス
  14. Java 3目並べ
  15. JavaScript入門11/23
  16. Life ゲーム
  17. パーセプトロン
  18. Small Basic基本学習
  19. Windows 10 環境変数の設定 11/30
  20. VPN: Virtual Private Network
  21. Unix コマンドをPowerShellで利用

はじめに 9月28日

シラバス

アルゴリズム、プログラムによる社会変革の仕組み

授業の内容

      第1回目 アプリ開発についてのイントロダクション
      第2回目 Windows OS 開発環境の整備      
      第3回目 テキストエディタ Sublime, NotePad++ のインストールとカスタマ
      イズ
      第4回目 Sublime, NotePad++ でソースコード編集
      第5回目 Windows 統合開発環境(Android SDK)のインストールとカ
      スタマイズ
      第6回目 Android OS の基本構成
      第7回目 Telnet, PuTTy のインストールとカスタマイズ
      第8回目 Mosh の特長と利用法
      第9回目 TCP/IP ネットワークの原理
      第10回目 Windows OS 上の TCP/IP ネットワーク構築方法
      第11回目 TCP/IP ネットワークの通信パケット解析ツール
      第12回目 Android OS 上の TCP/IP ネットワーク構築方法
      第13回目 Android OS で 通信パケット解析ツール
      第14回目 ユーザインタフェースのデザインとグラフィックスの基本
      第15回目 GPS による位置情報の利用
      第16回目 アプリ制作のテーマを決定する
      第17回目 アプリ制作のための JavaScript 言語入門
      第18回目 Node.js のインストール
      第19回目 JavaScript実行環境としてブラウザとNode.jsを比較する
      第20回目 でアプリのフレームワーク構築でアプリのフレームワーク
      構築
      第21回目 ウェブサーバ を自分のコンピュータ上に構築
      第22回目 クラス内でのウェブサーバの相互利用
      第23回目 スマートフォンからクラス内のウェブサーバを利用する
      第24回目 ウェブサーバ ApacheとNginx を比較するを比較すると
      第25回目 JavaScript で音声合成エンジンを利用する
      第26回目 音声認識アプリについて
      第27回目 JavaScript によるグラフィックス
      第28回目 JavaScript によるペイントプログラム
      第29回目 電子生命プログラムの作成
      第30回目 制作したアプリの総合評価
    

リンク


Windows OS について 9月28日

Google グループへの参加。


PowerShell 入門

Windows ユーザにはなじみがあるPowerShellがオープンソースとなり、他のOS にもインストールすれば使える。どこまで需要があるのかは不明。

コマンドプロンプトを使うには、cmd コマンドを起動すればよい。

GithubのPowerShell開発サイトにBashユーザ向けに Bash コマンドと PowerShellコマンドの対照表があるので、これが比較的わかりやすい。


  Bash            PowerSell             説明
  ls              dir, Get-ChildItem    ファイルとフォルダ表示
  tree            dir -Recurse          すべてのファイルとフォルダ表示
  cd              cd, Set-Location      ディレクトリ移動
  pwd             pwd, Get-Location     作業中ディレクトの表示
  clear           cls, clear            画面クリア
  mkdir           New-Item -ItemType Directory
  touch t.txt     New-Item -Path t.txt  空ファイル作成
  cp src dst      Copy-Item src dst
  cp -r ./src ./dst  Copy-Item ./src ./dst -Recurse
  mv src dst      Move-Item src dst
  rm t.txt        Remove-Item t.txt
  rm -r フォルダ名  Remove-Item フォルダ名 -Recurse
  find -name build* Get-ChildItem build* -Recurse
      
    

PowerShellの文字コード

日本語版のWindowsに付属するPowerShellは、シフトジス(shift_jis)の文字コードで表示する。そのためUnicodeのテキストなどは文字化けしてしまう。

そこでPowerShellの文字コードをUTF-8に変更するには、次のコマンドをPowerShellで実行する。

      chcp 65001
    

Shift_jisに戻すには、次のコマンドを実行する。

      chcp 932
    

PowerShellのビープ音を消す方法

PowerShellは、消すべきテキストがないときにバックスペースを押すと、version 5.1からビープ音が出るように変更された。これが喧しく止めたいときは次のようにすればよい。

  1. PSで自分のプロファイルを確認する。PS D:\> $profile
  2. 自分のDocumentsディレクトリに移動する。cd ~Documents
  3. ~Documents のなかに、WindowsPowerShellディレクトリをつくる。mkdir WindowsPowerShell
  4. WindowsPowerShellディレクトリに移動する。cd WindowsPowerShell
  5. プロファイルを作成・編集する。PS D:\> notepad Microsoft.PowerShell_profile.ps1
  6. 次の1行を追加する。
    	  Set-PSReadlineOption -BellStyle None 
          
  7. Microsoft.PowerShell_profile.ps1 を保存する。notepadを閉じる。
  8. PowerShellを再起動する。

Windows 10 - God mode 神のフォルダ

一般にショートカットフォルダは、<FOlderDispayName>.{<GUID>}の形式で名前をつける。<GUID>は、WindowsレジストリーでSystemApplicationNameのCLSIDである。

次の名前でファイルを適当なフォルダにつくって、そのフォルダを開いてみよう。

    GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}

  

インターネットオプション

システムの詳細設定やシステム環境変数

Ubuntu(Linux) を Windows 10で使用するやり方

開発者向けの設定

Windows 10の「設定」メニューから「開発者向け」を選ぶ。開発者向け機能を使うの中から「開発者モード」をオンにする。

コントロールパネルを起動する。

コントロールパネルの中の「プログラム」をクリックする。

「プログラムと機能」の中の「Windowsの機能の有効化または無効化」をクリックする。

「Windows Subsystem for Linux (Beta)」にチェックを入れる。

Windows Subsystem for Linux(Beta)

チェックを入れると、すぐ、コンピュータを再起動するかどうか?聞かれる。再起動後、Windows 10はWindows subsystem for Linux(Beta)機能をインストールする。

コンピュータが再起動されたあと、スタートボタンを押し、「何でも聞いてください」の窓に「bash」とタイプしエンターキーを押す。

Bashの初回起動時には、Ubuntu on Windows のライセンスへの許諾を求められる。

Ubuntu on Windows 10

同意するには、「y」を入力する。

Ubuntu on Windowsのインストールには、しばらく数分間かかる。

Ubuntu on Windowsのユーザ名とパスワードの登録をする。

ユーザ登録を完了しUbuntuを使う

Ubuntu on Windows 10

apt-get

apt-get コマンドを活用すると、便利なコマンドやアプリケーションをインストールしたり、削除したりする。パッケージ毎に管理することができる。

まず、インストールされているパッケージをupdateしよう。

例えば、Cコンパイラをインストールするには次のようにする。

      sudo apt-get install gcc
    
講義情報を Ubuntu on Windows 10 で入手してみよう
      curl mobile.matsuyama-u.jp

      sudo apt-get install nkf

      curl mobile.matsuyama-u.jp | nkf -w
    

lynx でmobile.matsuyama-u.jp の文字情報だけを見る。

lynx パッケージをインストールする。

      sudo apt-get install lynx-cur
    

lynx で講義情報のページを見ると、どうなるか?原因は?

フォントの追加など

Ubuntu Monoは、プログラムなどは見易いが漢字など日本語を表示することができない。


テキストエディタのインストール 9月30日

インターネットの古くからの言い伝えによれば、ネットの中のことは ネットに聞け!とある。今風に言えば、ネットのことはソーシャルネット で聞けということになる。

いまアプリを開発するには、Windows のほかに、Mac OSや Linuxのことを知る必要があ る。

Sublime

Sublimeのホームページ

Notepad++

Notepad++のホームペー ジ

Telnet

Windows で telnet プログラムを実行する。

nmap

      nmap -A -T4 scanme.nmap.org

      Nmap scan report for scanme.nmap.org (45.33.32.156)
      Host is up (0.14s latency).
      Other addresses for scanme.nmap.org (not scanned):
      2600:3c01::f03c:91ff:fe18:bb2f
      Not shown: 990 closed ports
      PORT      STATE    SERVICE        VERSION
      22/tcp    open     ssh            OpenSSH 6.6.1p1 Ubuntu
      2ubuntu2.7 (Ubuntu Linux; protocol 2.0)
      | ssh-hostkey:
      |   1024 ac:00:a0:1a:82:ff:cc:55:99:dc:67:2b:34:97:6b:75 (DSA)
      |   2048 20:3d:2d:44:62:2a:b0:5a:9d:b5:b3:05:14:c2:a6:b2 (RSA)
      |_  256 96:02:bb:5e:57:54:1c:4e:45:2f:56:4c:4a:24:b2:57 (ECDSA)
      80/tcp    open     http           Apache httpd 2.4.7 ((Ubuntu))
      |_http-server-header: Apache/2.4.7 (Ubuntu)
      |_http-title: Go ahead and ScanMe!
      135/tcp   filtered msrpc
      139/tcp   filtered netbios-ssn
      445/tcp   filtered microsoft-ds
      593/tcp   filtered http-rpc-epmap
      4444/tcp  filtered krb524
      5060/tcp  filtered sip
      9929/tcp  open     nping-echo     Nping echo
      31337/tcp open     tcpwrapped
      Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

      Service detection performed. Please report any incorrect results
      at https://nmap.org/submit/ .
      Nmap done: 1 IP address (1 host up) scanned in 20.85 seconds
      
    

インターネットの考え方について

ホスト

サービス

ポート番号

TCP/IP

ネットキャット netcat または nc

Windows版のネッ トキャット

ネットキャットを使う

ネットキャット、Netcat はWindowsのコマンドでncとして使える。

コマンドncを -l オプションをつけて起動すると指定したポートをリ スニングしつづけるサーバモードになる。ポート番号2389をリスニングす るには次のようにしてncを起動する。

$ のつぎの nc がコマンド -l が、そのオプションでポート番号を適 当に選んで指定する。ここでは2389にしてある。

      $ nc -l 2389
    

つぎにncをクライアントモードで起動する。ローカルホスト(自分)の 2389ポートに接続するのがつぎのコマンドだ。

      $ nc localhost 2389
    

それではコマンド窓を二つ開き、一方で「こんにちは!」のメッセージ を送ると、もう一方のサーバモードの窓にメッセージが転送されるはず。

      $ nc localhost 2389
      こんにちは!
    
      $ nc -l 2389
      こんにちは!
    

練習:教室内のコンピュータ同士で相手のIPアドレスを指定しポート 番号もあわせて、御互いにメッセージを交信してみる。

Windows OSでは、windows版のncを使ってみるとわかるが、さきほどの サーバ、クライアントの会話がうまくいかないことがある。原因はどこに あるのだろうか。

練習:ncを使ってWebサーバからhtmlファイルを引きだす。

	nc  www.example.com 80
	GET / HTTP/1.0

      

    
    
    

参考: http://www.thegeekstuff.com/2012/04/nc-command-examples/?utm_source=feedburner

文字コード変換

nkf、ネットワーク漢字フィルタという古くから有名な変換プログラムがあ る。

ベクターにWindows版がある。

Windowsでは、以前からシフトJISコードが文字コードとして使われて いたが、現在はユニコードのUTF-8が多くなっている。特にウェブ。

文字コード ISO-2022-JP 「JISコード」

電子メールで日本語文字を送受信するときに使用される。ISO-2022 のエスケー プシーケンスをもちいて7ビットでありながら、漢字など多種類の文字集 合を切り替えるのが特徴である。

WikipediaのISO-2022-JP解説

文字コード Shift_JIS Windows-31J(MS932)

このサイ ト「 Shift_JIS と Windows-31J (MS932) の違いを整理してみよう」を参 考にする。


Androidの断片化問題

Android の断片化問題とは、各社が自由にAndroid端末を開発できるが故に、ディ スプレイサイズや……


Android エミュレータ 9月30日

8 best Android emulators for PC

Leapdroid

AMIDuOS

Andy

Bluestacks

droid4x


10月7日金曜

ここまでに、完了させておくこと。

  1. telnet
  2. nc クライアント、サーバ
  3. nkf 文字コード変換
  4. Android emulator on Windows

10月12日水曜

H4L教室

Windows システムの詳細設定

Windows - 設定 - システム情報 - システムの詳細設定

Windowsの環境変数については、Environment variable を参照。

Windows のhostsとservices ファイル位置

%SystemRoot%の値は、PowerShellで次のコマンドを実行すれば表示される。

      write-output $env:systemroot
    

Windows 10 の例:hosts, servicesファイル


      PS C:\Windows\system32\drivers\etc> more hosts
      # Copyright (c) 1993-2009 Microsoft Corp.
      #
      # This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
      #
      # This file contains the mappings of IP addresses to host names. Each
      # entry should be kept on an individual line. The IP address should
      # be placed in the first column followed by the corresponding host name.
      # The IP address and the host name should be separated by at least one
      # space.
      #
      # Additionally, comments (such as these) may be inserted on individual
      # lines or following the machine name denoted by a '#' symbol.
      #
      # For example:
      #
      #      102.54.94.97     rhino.acme.com          # source server
      #       38.25.63.10     x.acme.com              # x client host

      # localhost name resolution is handled within DNS itself.
      #       127.0.0.1       localhost
      #       ::1             localhost
    
      PS C:\Windows\system32\drivers\etc> more .\services
      # Copyright (c) 1993-2004 Microsoft Corp.
      #
      # This file contains port numbers for well-known services defined by IANA
      #
      # Format:
      #
      # service name  port number/protocol  [aliases...] [#comment]
	      #

	      echo                7/tcp
	      echo                7/udp
	      discard             9/tcp    sink null
	      discard             9/udp    sink null
	      systat             11/tcp    users #Active users
	      systat             11/udp    users #Active users
	      daytime            13/tcp
	      daytime            13/udp
	      qotd               17/tcp    quote #Quote of the day
	      qotd               17/udp    quote #Quote of the day
	      chargen            19/tcp    ttytst source #Character generator
	      chargen            19/udp    ttytst source #Character generator
	      ftp-data           20/tcp #FTP, data
	      ftp                21/tcp #FTP. control
	      ssh                22/tcp #SSH Remote Login Protocol
	      telnet             23/tcp
	      smtp               25/tcp    mail #Simple Mail Transfer Protocol
	      time               37/tcp    timserver
	      time               37/udp    timserver
	      rlp                39/udp    resource #Resource Location Protocol
	      nameserver         42/tcp    name #Host Name Server
	      nameserver         42/udp    name #Host Name Server
              nicname            43/tcp    whois
              domain             53/tcp     #Domain Name Server
	      domain             53/udp     #Domain Name Server
	      bootps             67/udp    dhcps #Bootstrap Protocol Server
	      bootpc             68/udp    dhcpc #Bootstrap Protocol Client
              tftp               69/udp    #Trivial File Transfer
	      gopher             70/tcp
	      finger             79/tcp
	      http               80/tcp    www www-http #World Wide Web
	      hosts2-ns          81/tcp #HOSTS2 Name Server
	      hosts2-ns          81/udp #HOSTS2 Name Server
	      kerberos           88/tcp    krb5 kerberos-sec #Kerberos
	      kerberos           88/udp    krb5 kerberos-sec #Kerberos
	      hostname          101/tcp    hostnames  #NIC Host Name Server
	      iso-tsap          102/tcp #ISO-TSAP Class 0
	      rtelnet           107/tcp #Remote Telnet Service
	      pop2              109/tcp postoffice #Post Office Protocol - Version 2
	      pop3              110/tcp #Post Office Protocol - Version 3
	      sunrpc            111/tcp    rpcbind portmap        #SUN Remote Procedure Call
	      sunrpc            111/udp    rpcbind portmap        #SUN Remote Procedure Call
	      auth              113/tcp    ident tap #Identification Protocol
	      uucp-path         117/tcp
	      sqlserv           118/tcp                           #SQL Services
	      nntp              119/tcp    usenet #Network News Transfer Protocol
              ntp               123/udp #Network Time Protocol
	      epmap             135/tcp    loc-srv                #DCE endpoint resolution
	      epmap             135/udp    loc-srv                #DCE endpoint resolution
	      netbios-ns        137/tcp    nbname #NETBIOS Name Service
	      netbios-ns        137/udp    nbname #NETBIOS Name Service
	      netbios-dgm       138/udp    nbdatagram #NETBIOS Datagram Service
	      netbios-ssn       139/tcp    nbsession #NETBIOS Session Service
	      imap              143/tcp    imap4 #Internet Message Access Protocol
	      sql-net           150/tcp
	      sqlsrv            156/tcp
	      pcmail-srv        158/tcp #PCMail Server
	      snmp              161/udp #SNMP
	      snmptrap          162/udp    snmp-trap #SNMP trap
	      print-srv         170/tcp #Network PostScript
	      bgp               179/tcp #Border Gateway Protocol
	      irc               194/tcp #Internet Relay Chat Protocol
	      ipx               213/udp                           #IPX over IP
	      rtsps             322/tcp
	      rtsps             322/udp
	      mftp              349/tcp
	      mftp              349/udp
	      ldap              389/tcp #Lightweight Directory Access Protocol
	      https             443/tcp    MCom #HTTP over TLS/SSL
	      https             443/udp    MCom #HTTP over TLS/SSL
	      microsoft-ds      445/tcp
	      microsoft-ds      445/udp
	      kpasswd           464/tcp                           # Kerberos (v5)
	      kpasswd           464/udp                           # Kerberos (v5)

	      (省略)

    

ハイパーテキスト・トランスファー・プロトコルによるサーバとの会話

index.htmlファイル中の文字列検索

松山大学のWebサーバからkeieiの文字列を検索する。nc コマンドによ りindex.htmlファイルをGETし、findstrコマンドで文字列keieiを含む行 を画面に表示させる。

      PS C:\manabu> nc www.matsuyama-u.ac.jp 80 | findstr keiei
      GET / HTTP/1.0

      ...
      
    

練習問題:それぞれの学部のウェブサーバの名前とIPアドレス を見つける

ヒントと解答の一部:たとえば、keizai.matsuyama-u.ac.jp からnslookupコマン ドでIPアドレスが引き出すことができる。全学部のウェブサーバの名前と IPアドレスの関係を調べる。

nmap インストール

nmap をhttps://nmap.org/book/inst-windows.html からインストールする。

2016年10月10日現在では、最新版nmap-7.30-setup.exe をダウンロー ドディレクトリーのなかで見つけてダウンロードする。

Scoop インストール

Scoop とは?
Scoop.sh に1行で書いてあるように Windows用のコマンド行によるインストーラである。

さっそく Scoop をインストールしてみる。PowerShell を起動し、下記の手順で実行する。

      PS D:\> set-executionpolicy unrestricted -s cu

      実行ポリシーの変更
      実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
      のヘルプ トピック (http://go.microsoft.com/fwlink/?LinkID=135170)
      で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
      [Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"): Y
      PS D:\> iex (new-object net.webclient).downloadstring('https://get.scoop.sh')
      initializing...
      downloading...
      extracting...
      creating shim...
      adding ~\AppData\Local\scoop\shims to your path
      scoop was installed successfully!
      type 'scoop help' for instructions
      PS D:\> scoop help
      usage: scoop  []

	  Some useful commands are:

	  alias      Manage scoop aliases
	  bucket     Manage Scoop buckets
	  cache      Show or clear the download cache
	  config     Get or set configuration values
	  create     Create a custom app manifest
	  depends    List dependencies for an app
	  export     Exports (an importable) list of installed apps
	  help       Show help for a command
	  home       Opens the app homepage
	  install    Install apps
	  list       List installed apps
	  reset      Reset an app to resolve conflicts
	  search     Search available apps
	  status     Show status and check for new app versions
	  uninstall  Uninstall an app
	  update     Update apps, or Scoop itself
	  which      Locate a program path


	  type 'scoop help ' to get help for a specific command
	    PS D:\>
    

scoop install curl

さっそく、Scoopで cURL をインストールしてみる。cURLは、see URLの意味。

PS D:\> scoop install curl

PowerShellでそのままcurlと打つと、PowerShell標準のcurlが起動する。scoop でインストールしたcurlを動かすにはパスをフル指定する。

PS C:\> ~\AppData\Local\scoop\apps\curl\7.50.3\curl -help
cURL とInvoke-WebRequestの混在について

WindowsPowershellには、curlにエイリアスをリンクしたInvoke-WebRequestがある。このエイリアスをはずしておかないと curlを動かしたつもりで Invoke-WebRequestを起動してしまう。ということでscoop でcurlをインストールしたあとは忘れないようInvoke-WebRequestからcurlへのリンクをはずしておく。

      Remove-Item alias:curl
    

では、curlを使って、ためにし大学のURLを指定してみる。

PS C:\> curl http://www.matsuyama-u.ac.jp
問題:次の使用例では何がcurlから返ってくるだろうか。htmlファイルを取ってくるにはどうすればよいだろうか
PS C:\> curl http://www.ehime-u.ac.jp

Scoop インストール補完

      PS D:\> scoop
      usage: scoop  []

	  Some useful commands are:

	  alias      Manage scoop aliases
	  bucket     Manage Scoop buckets
	  cache      Show or clear the download cache
	  config     Get or set configuration values
	  create     Create a custom app manifest
	  depends    List dependencies for an app
	  export     Exports (an importable) list of installed apps
	  help       Show help for a command
	  home       Opens the app homepage
	  install    Install apps
	  list       List installed apps
	  reset      Reset an app to resolve conflicts
	  search     Search available apps
	  status     Show status and check for new app versions
	  uninstall  Uninstall an app
	  update     Update apps, or Scoop itself
	  which      Locate a program path
	  
      type 'scoop help ' to get help for a specific command
    
      PS D:\> scoop status
      scoop is out of date. run scoop update to get the latest changes.
      everything is ok!
    
      PS D:\> scoop update
      scoop uses git to update itself. run 'scoop install git'.
      PS D:\> scoop install git
      installing 7zip (16.04)
      downloading http://7-zip.org/a/7z1604-x64.msi...(1.6 MB) done
      checking hash...ok
      extracting...done
      creating shim for 7z
      7zip (16.04) was installed successfully!
      installing git (2.10.1.windows.1)
      downloading https://github.com/git-for-windows/git/releases/download/v2.10.1.windows.1/PortableGit-2.10
      /dl.7z...(29.6 MB) done
      checking hash...ok
      extracting...done
      creating shim for git
      creating shim for gitk
      creating shim for git-gui
      running post-install script...
      git (2.10.1.windows.1) was installed successfully!
      Notes
      -----
      To get Git to recognise OpenSSH, you will need to run

      scoop install openssh
      [environment]::setenvironmentvariable('GIT_SSH', (resolve-path (scoop which ssh)), 'USER')

      and then restart powershell.
    
      PS D:\> scoop install openssh
      installing openssh (5.4p1-1)
      downloading http://ufpr.dl.sourceforge.net/project/mingw/MSYS/Extension/openssh/openssh-5.4p
      .13-bin.tar.lzma...(274.7 KB) done
      checking hash...ok
      extracting...done
      downloading http://ufpr.dl.sourceforge.net/project/mingw/MSYS/Extension/openssh/openssh-5.4p
      .13-lic.tar.lzma...(4.8 KB) done
      checking hash...ok
      extracting...done
      downloading http://ufpr.dl.sourceforge.net/project/mingw/MSYS/Base/msys-core/msys-1.0.13-2/m
      -bin.tar.lzma...(610.1 KB) done
      checking hash...ok
      extracting...done
      downloading http://ufpr.dl.sourceforge.net/project/mingw/MSYS/Extension/zlib/zlib-1.2.3-2/zl
      ar.lzma...(36.7 KB) done
      checking hash...ok
      extracting...done
      downloading http://ufpr.dl.sourceforge.net/project/mingw/MSYS/Extension/minires/minires-1.02
      s-1.0.13-dll.tar.lzma...(11.4 KB) done
      checking hash...ok
      extracting...done
      downloading http://ufpr.dl.sourceforge.net/project/mingw/MSYS/Extension/openssl/openssl-1.0.
      1.0.13-dll-100.tar.lzma...(654.9 KB) done
      checking hash...ok
      extracting...done
      creating shim for scp
      creating shim for sftp
      creating shim for slogin
      creating shim for ssh-add
      creating shim for ssh-agent
      creating shim for ssh-keygen
      creating shim for ssh-keyscan
      creating shim for ssh
      openssh (5.4p1-1) was installed successfully!
    
      PS D:\> scoop update
      updating scoop...
      scoop was updated successfully!
      PS D:\> scoop status
      scoop is up-to-date.
      everything is ok!
    

ここまでで、ほぼScoopの環境はできあがって、最新の状態になった。次に、ScoopでLinuxのコマンドで利用できるような便利なツールをインストールするための準備を行なう。

それは、extras bucketの追加で次のやり方で完成する。

      PS D:\> scoop bucket add extras https://github.com/lukesampson/scoop-extras.git
      checking repo...ok
      Cloning into 'C:\Users\sumio\AppData\Local\scoop\buckets\extras'...
      remote: Counting objects: 1630, done.
      remote: Compressing objects: 100% (5/5), done.
      remote: Total 1630 (delta 2), reused 0 (delta 0), pack-reused 1625 eceiving objects:
      00 KiB/s
      Receiving objects: 100% (1630/1630), 362.63 KiB | 223.00 KiB/s, done.
      Resolving deltas: 100% (853/853), done.
      extras bucket was added successfully
    

では、emacsをインストールしてみよう。

      PS D:\> scoop install emacs
      installing emacs (25.1)
      downloading https://ftp.gnu.org/gnu/emacs/windows/emacs-25.1-x86_64-w64-mingw32.zip...(48.8 MB) done
      checking hash...ok
      extracting...done
      downloading ftp://ftp.gnutls.org/gcrypt/gnutls/w32/gnutls-3.4.9-w64.zip...(-1 B) done756200%
      checking hash...ok
      extracting...done
      creating shim for runemacs
      creating shim for emacs
      creating shim for emacsclientw
      creating shim for etags
      creating shim for ctags
      emacs (25.1) was installed successfully!
    

これでemacsがインストールされた。


Android Studio

Android Developers

      https://developer.android.com
    

サイトからのクッキーを認める、OKをクリックする。

インストール

Android Studio のインストール用ページ

      https://developer.android.com/studio/install.html
    

ページ右上にOS別のインストール方法

ページ下半分にインストールの進行ビデオ

Help > Check for Update

Android Studioの仮想デバイス

仮想デバイス設定の流れ

      Tools --- Android --- SDK Manager
    

マイアプリの実行

マイアプリ プロジェクトを選んで、ツールバーからRun。

Select Development Target で、さっきの仮想デバイスを選択。

仮想デバイスでマイアプリのHello World!が動けば準備はほぼできあがり。

地図アプリのテスト

地図アプリを起動する。

松山小学校を地図アプリで検索した結果。

プロジェクトその1

休講情報のアプリ化

http://mobile.matsuyama-u.jp/mbl/hpg010201.htm

curl http://mobile.matsuyama-u.jp | nkf -w

matsuyama-u.ac.jp ではなく、matsuyama-u.jp。文字コードは、シフトJIS。これらに気をつけて cURL でファイルを調べる。


      charset=shift_jis
      
      休講 mbl/hpg020101.htm?PSS= ... &SETI=1   大学

      補講 mbl/hpg020201.htm?PSS= ... &SETI=1   大学

      教室変更 mbl/hpg020301.htm?PSS= ... &SETI=1 大学

    

hpgファイル名の数字6けたの下から3けためは、休講(1)、補講(2)、教室変更(3)。それぞれにパラメータをわたすとき SETI=1は、大学。

curl http://mobile.matsuyama-u.jp/mbl/

lynx http://mobile.matsuyama-u.jp

lynx で休講情報サイトをチェックすると、クッキーを使っていることがわかる。

環境によっては、シフトJISなので、lynx が警告をだすこともある。


ユーザインタフェースの設計をはじめる

Android アーキテクチャ

Android コンセプト

Android SDK プラットフォーム

      Name                    API Level
      Android 7.0 Nougat       24
      Android 6.0 Marshmallow  23
      Android 5.1 Lollipop     22
      Android 5.0 Lollipop     21
      Android 4.4W KitKat Wear 20
      Android 4.4 KitKat       19
      Android 4.3 Jelly Bean   18
      Android 4.2 Jelly Bean   17
      Android 4.1 Jelly Bean   16
      Android 4.0.3 IceCreamSandwich 15
      Android 4.0 IceCreamSandwich 14
      Android 3.2 Honeycomb    13
      Android 3.1 Honeycomb    12
      Android 3.0 Honeycomb    11
      Android 2.3.3 Gingerbread 10
      Android 2.3 Gingerbread   9
      Android 2.2 Froyo         8
      Android 2.1 Eclair        7
      
    

Android SDK の部品

アクティビティ

アクティビティは、ユーザと対話することができる。映画『2001年宇宙の旅』でコンピュータHALがボーマン船長との対話でみせるユーザインタフェースの画面効果はすばらしい。ぜひ映画を観てインタフェースとアクティビティを考えてほしい。

アクティビティのライフサイクル

  1. Starting an Activity
    スタート
  2. Pausing and Resuming an Activity
    一時停止と再開
  3. Stopping and Restarting an Activity
    ストップと再スタート
  4. Recreating an Activity
    再生

インテント

インテントは、「写真を選ぶ」、「家に電話する」などアクションを記述する。インテントの例として、2001年宇宙の旅から「Open the Pod bay doors, HAL. (HAL ポッドの入口を開けろ)」などが引用されることがある。

サービス

Unixのデーモンのようにユーザに隠れて働く。

コンテンツプロバイダ

リソースの使い方

アクセス保護とセキュリティ

Android NDK (Native Development Kit)

C とC++

Linear Layout

activity_main.xmlという名前のXMLファイルを探す

      app --- res --- layout --- activity_main.xml
    

デザインエディタをテキストエディタにきりかえる

画面の下にあるDesign, Text タブの切り替え。

LinearLayout: まるごと消して、下のXMLをいれる

      <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout
	 xmlns:android="http://schemas.android.com/apk/res/android"
	 xmlns:tools="http://schemas.android.com/tools"
	 android:layout_width="match_parent"
	 android:layout_height="match_parent"
	 android:orientation="horizontal">
	</LinearLayout>
    </pre>
    

LinearLayoutは、ViewGroupのサブクラスで、垂直あるいは水平方向にビューを配置する。

テキストフィールド

      <EditText android:id="@+id/edit_message"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		        android:hint="@string/edit_message" />
    

<EditText ... >を追加すると、レンダリングエラーがでる。このエラーは、あとで消すことができるのでこのまま進む。

文字列リソース

自分のアプリを仮想デバイスに


Import Samples from GitHub 10/21 Friday

https://developer.android.com/samples/index.html

GitHub からサンプルコードを選んでインポートし、実行する。

Google Samples
      https://github.com/googlesamples/
    

コンポーネントの不足エラーがでるときは、ガイド画面にしたがって必要なコンポーネントをダウンロードする。

またUPDATEの要求が頻繁にでるが、これにも素直にしたがう。

この画面がでたときは、Project Viewを選ぶ。


Small Basic

Microsoft Small Basic

Small Basic は、ともかくエディタ、実行のサイクルが単純でわかりやすいのが特長だ。

次の例は、インポートでマイクロソフトのSmall BasicサンプルプログラムをID (PMT149) を指定して読み込んだところ。

Haloween - sample program

GDD325-14 をインポートしてみよう。

数の計算

テキスト窓とRead、Write
      TextWindow.WriteLine(" ... ")
      TextWindow.Write(" ... ")

      TextWindow.Read()
    
ループ
      For i = 1 to 200

      ...

      EndFor
    

Forループで、1から2n-1までの奇数の和をもとめるプログラムを書いてみる。

Small Basicを起動し、エディタに下記のプログラムを書きこみ実行してみる。


      TextWindow.WriteLine("1から 2n-1までの奇数の和をもとめる")
      n = TextWindow.Read()
      s = 0
      For i = 1 To n
        s = s + 2*i - 1
        TextWindow.Write(i + " ")
        TextWindow.Write(s + " ")
      EndFor

    

テキストウィンドウ(TextWindow)への出力結果。

練習問題: 上のプログラムの出力結果から2の平方根を求めることができるだろうか。できるとすれば、どのようにすればよいだろうか。
      ヒント

      N      Nの2乗
      141    19881
      100√2  20000
      142    20164


      (142 -141) : (100√2 -141) = (20164-19881) : (20000-19881)

      の比例式を解く。
    

この比例式をつかって、√2 を小数点以下まで計算した結果はいくらになるか?何けたまで正しい値がえられただろうか?

同じようにして√3を求めてみよう。何けたまで正しい値がえられるだろうか?

グラフィックス

これまではSmall BasicのTextWindowを利用するプログラムでおもに数値計算をやってきた。実用的なアプリケーションでは、図形や画像の処理が必要になる。Small Basicは、TextWindowのようにグラッフィクス窓 GraphicsWindow に出力することができる。Graphicsとsが付く。

グラフィックスウィンドウの初期化

エディタを新規で開いて、次の1行だけを入力して実行する。

      GraphicsWindow.Show()
    
直線をグラフィックスウィンドウに描く。

XY平面座標の点(0,0)から点(200,100)まで直線を引く。

      GraphicsWindows.DrawLine(0, 0, 200,100)
    
奇数の和をもとめるプログラムをもとにして、グラフィックスで和を横向きの直線であらわすプログラムを書く
      GraphicsWindow.Show()
      s = 0
      For i = 1 To 200
        s = s + 2*i - 1
        GraphicsWindow.DrawLine(0, i, s, i)
      EndFor
    

このプログラムだと、グラフが窓わくをはみだしてしまう。2次関数のグラフとしてうまく見せる工夫をしてみよう。

グラフィックスウィンドウの設定

GraphicsWindow.Show()でグラフィックスの窓を開くと、背景は白のある決められた大きさの窓が開く。この窓の背景色、大きさなどを変えるには次のようにする。

      GraphicsWindow.BackgroundColor = "色"
      GraphicsWindow.Title = "ウィンドウの表題"
      GraphicsWindow.Width = 横幅(ドット数)
      GraphicsWindow.Height = 高さ
      GraphicsWindow.Show()
  


  
  
練習問題: Small Basicをインストールすると入門書も同時にインストールされる。この入門書のグラフィックス(第6章)の例題を実行する。
日本語版 Small Basic 入門書は、ここからダウンロードできる。

Tic tac toe

Small Basicによる3目並べ(Tic tac toe)プログラムの1つに LBW762-3がある。

Small BasicのDownloadをクリックし、ダウンロードしインストールする。

インストール後、Small Basicを起動しメニュー「インポート」をクリックしてプログラムID「LBW762-3」を入れ実行する。

この3目並べは、人間に対してコンピュータはAI型プログラムで対戦する。

ソーシャルネットワーク プログラミング - Microsoft Developer Network

マイクロソフト社のソーシャルネットワーク プログラミングの「Small Basic フォーラム」を利用する。

Small Basic Program Gallery

平面を埋め尽くす曲線

Alexander Bogomolny, Plane Filling Curves from Interactive Mathematics Miscellany and Puzzles
http://www.cut-the-knot.org/do_you_know/hilbert.shtml, Accessed 09 November 2016

でこぼこ、ふわふわ、もこもこの幾何学 - Benoit Mandelbrot: Fractals and the art of roughness

Mandelbrot set

Mandelbrot set マンデルブロー曲線を描いたSmall Basic プログラムの例は、ここにある。

カリフラワー、ブロッコリのような3次元をつくることはできるだろうか。

Mandelbulb 3D - THe Depths of Europa

bugman123.com

Mandelbulb


仮想デスクトップ WIndows 10

「何でも聞いてください (マイク)」の横にある「タスクビュー」のアイコンをクリックする。

デスクトップ1、デスクトップ2と仮想デスクトップを広げてゆくことができるようになった。Windows 10の新しい機能でデスクトップ右下の「+」をクリックすると仮想デスクトップを増やす。


Ubuntu日本語環境

日本語 Remix をココからダウンロードできます。

Ubuntu 日本語フォント

Ubuntuにインストールされている日本語フォントは、Ubuntuのコマンド fc-list で一覧できる。こちらのubuntu Japanese Team Wiki - InstallFont でフォントを目で確認できる。


Java言語の要点

「Hello World」プログラムの例

もうハローワールド!には食傷気味、またかという人も。はじめての人も、これをコンパイル(javac)して実行(java)することができれば、新しい世界、プログラミングの世界を開いたことになるでしょう。

    public class HelloWorld {
       public static void main(String[] args) {
          System.out.println("Hello World!");
       }
    }
  

Windows PowerShellを起動する。これから自分でつくったプログラムを保存するフォルダ を作成する。

    cd C:\Users\ユーザ名
    mkdir src
    cd src
  

自分のなじみのエデイタで、このプログラムを、この通りに打ち込む。

文字列「Hello World!」出力は、System.out.println("Hello World!")

ファイル名をhelloworld.java にして、自分のソースコード用フォルダに保存する。

Windows PowerShellでソースコード用フォルダに移動し、コンパイルする。

Java のソースプログラムをコンパイルするためには、Java 開発キットが必要なので、Oracleの開発者用キットを提供しているサイトからダウンロードする。Java SE Development Kit のWindows x64版をダウンロードするためには、「Accept License Agreement」にチェックをし、目的の jdk-xxxxx-windows-x64.exe をクリックしダウンロードとインストールを実行する。

開発キット JDK をインストールすると、Java開発環境ができあがる。この中でこれから使うのは、javac とjavaである。

コンパイルするJavaソースの名前を確認しておく。

    cd C:\Users\ユーザ名\src
    dir
  

javac と java が動作することを確かめておく。

    javac

    java

  

次のようにjavacコンパイラに、ソースhalloworld.javaをあたえてコンパイルする。

    javac helloworld.java

  

実行は、どうするか。

    java HelloWorld
  

ここで、ちょっとJava世界のルールが見えてくる。

なぜ、helloworldでなくてHelloWorldなのか。

C言語と対比させてその理由考えてみよう。

C言語との違いでJava言語を理解するためのポイント

プログラムの構造

Java言語で記述されたプログラムは、ひとつ以上の class(クラス) 定義から構成されている。それぞれのクラスは、それぞれの .class ファイルへとコンパイルされる。コンパイルされたクラスファイルは、Java 仮想マシンで実行されるオブジェクトファイルになる。


    helloworld.java -->  コンパイラ(javac) --> HelloWorld.class --> Java VM --> コンピュータが実行

  
    helloworld.java --> HelloWorld.class
  

異なるオペレーティングシステムで同じHelloWorld.classが実行可能になる。

    Windows JVM
    Linux JVM
    MacOS JVM
    Android JVM
    iOS JVM
  

Javaプログラムが動くためには 手続(メソッド)として一つmain() がなければならない。プログラムの出発点は、main()である。

Javaプログラムをコンピュータで動かすには、Javaインタプリタを起動しインタプリタにJavaクラスファイルを食べさせる。もちろんこのクラスファイルの中には、main()メソッドが一つなければならない。JavaインタプリタにJavaクラスファイルをあたえるときは、.classを省略する。次のように。

    java HelloWorld
  
参考: Oracle による"Hello World!" をマイクロソフト Windowsでコンパイル、実行する流れの解説

次にテキサス大学のコンピュータ科学科のコースで公開されているサンプルプログラムを実行してみる。内容は、以下順に解説する。


Java コーディングサンプル

Hello World!

    /* HelloWorld.java
    */

    public class HelloWorld
    {

    ublic static void main(String[] args) {

    System.out.println("Hello World!");

    }

  

メソッド(手続)の呼び出し

    /* CallingMethodsInSameClass.java
    *
    * illustrates how to call static methods a class
    * from a method in the same class
    */

    public class CallingMethodsInSameClass
    {
         public static void main(String[] args) {
              printOne();
              printOne();
              printTwo();
    }

         public static void printOne() {
              System.out.println("Hello World");
    }

         public static void printTwo() {
              printOne();
              printOne();
    }
    }
  

For ループ

For ループで階乗を計算する。

public class Factorial
{

    public static void main(String[] args)
    {   final int NUM_FACTS = 100;
        for(int i = 0; i < NUM_FACTS; i++)
           system.out.println( i + "! is " + factorial(i));
    }
    
    public static int factorial(int n)
    {   int result = 1;
        for(int i = 2; i <= n; i++)
	   result *= i;
	return result;
    }
}
  

EnhancedFor ループ

For ループには、大きくわけ2つの種類がある。

Oracle の「The Java Tutorials - The for Statement」に2つのデモプログラムがある。

ForDemo
    class ForDemo {
       public static void main(String[] args){
          for(int i=1; i<11; i++){
              System.out.println("Count is: " + i);
          }
       }
    }
  
EnhancedForDemo
    class EnhancedForDemo {
       public static void main(String[] args){
          int[] numbers =
             {1,2,3,4,5,6,7,8,9,10};
          for (int item : numbers) {
             System.out.println("Count is: " + item);
          }
       }
    }

  

Enhanced for ループは、for loop の反復記述を単純化することができる。ただし、配列をはじめからおわりまで順に処理する場合に限られる。

enum で定義されたシンボルを配列に格納して、それを順にプリントする。

    import static java.lang.System.out;
    class ListSymbols {
       enum Symbol {
       Sui, Kin, Chi, Ka, Moku, Do, Ten, Kai
       }
     public static void main(String args[]) {
       for (Symbol Wakusei : Symbol.values()) {
          out.println(leftReel);
       }
     }
    }
  

enum の使い方は、次のOracle The Java Tutorials - Enum Types にわかりやすい曜日の例がある。

enum タイプのDayを次のようにする。

    public enum Day {
      SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
      THURSDAY, FRIDAY, SATURDAY
    }
  

Day タイプの変数 day を使って、EnumTest クラスをつくる。

    public class EnumTest {
       Day day;

    public EnumTest(Day day) {
       this.day = day;
    }
  

    public void tellItLikeItIs() {
      switch (day) {
        case MONDAY:
          System.out.println("Mondays are bad.");
          break;

        case FRIDAY:
          System.out.println("Fridays are better.");
          break;

        case SATURDAY: case SUNDAY:
          System.out.println("Weekends are best.");
          break;

        default:
          System.out.println("Midweek days are so-so.");
          break;
      }
    }

    public static void main(String[] args) {
      EnumTest firstDay = new EnumTest(Day.MONDAY);
      firstDay.tellItLikeItIs();
      EnumTest thirdDay = new EnumTest(Day.WEDNESDAY);
      thirdDay.tellItLikeItIs();
      EnumTest fifthDay = new EnumTest(Day.FRIDAY);
      fifthDay.tellItLikeItIs();
      EnumTest sixthDay = new EnumTest(Day.SATURDAY);
      sixthDay.tellItLikeItIs();
      EnumTest seventhDay = new EnumTest(Day.SUNDAY);
      seventhDay.tellItLikeItIs();
      }
    }
  
太陽系のそれぞれの惑星で体重を測る。
    for (Planet p : Planet.values()) {
       System.out.printf("Your weight on %s is %f%n",
               p, p.surfaceWeight(mass));
    }
  

Oracle の docs.oracle.com/javase/java/ ... のページからサンプルプログラムをコピーして実行する。

課題:下図の?を求めるプログラムを書きその値を求めよ。
3つの星の関係図

A星からAYUMI星までの距離が7光年以上となるのは、角度が何度以下になったときだろうか。その角度を小数点以下6けたまで計算するプログラムを書け。さらに、この絵をアニメーションとして動くプログラムを書け。

ヒント: law of cosines

課題:シーザ暗号
  /* Caesar Cipher
  */

  public class Cipher {
  public static void main(String[] args) {

  String str = "The quick brown fox Jumped over the lazy Dog";

  System.out.println( Cipher.encode( str, 12 ));
  System.out.println( Cipher.decode( Cipher.encode( str, 12), 12 ));
  }

  public static String decode(String enc, int offset) {
  return encode(enc, 26-offset);
  }

  public static String encode(String enc, int offset) {
  offset = offset % 26 + 26;
  StringBuilder encoded = new StringBuilder();
  for (char i : enc.toCharArray()) {
  if (Character.isLetter(i)) {
  if (Character.isUpperCase(i)) {
  encoded.append((char) ('A' + (i - 'A' + offset) % 26 ));
  } else {
  encoded.append((char) ('a' + (i - 'a' + offset) % 26 ));
  }
  } else {
  encoded.append(i);
  }
  }
  return encoded.toString();
  }
  }
  
データの型

Java ゲーム テトリス

zcode.comにあるJava ゲーム・チュートリアルからテトリスのソースコードを参考にしてテトリス ゲームをつくる。

準備

    cd src
    mkdir tetris
  

チュートリアルにある3つのソースコードをそれぞれtetrisディレクトリに次のファイル名で保存する。

    Shape.java
    Board.java
    Tetris.java
  

javacを使って、3つのソースをコンパイルする。


    javac tetris\Shape.java
    javac tetris\Board.java
    javac tetris\Tetris.java
  

javaコマンドで、tetris.Tetrisを実行する。


    java tetris.Tetris

  

Packages, classes(パッケージ、クラス) とファイルのディレクトリ(フォルダ)

パッケージ名

パッケージは、アプリのことだ。パッケージの名前をコードのどこに書くかはきまっている。

ソースの一番先頭行で、「package 名」を記述しておく。先頭でなければならない。

パッケージ 書式

3つのファイルのそれぞれの先頭行にパッケージ名を次のように書く。セミコロンを忘れないように。

package tetris;

インポート 書式

Board.java を上から読むと、package書式につづいて、import書式が続いている。この「java.awt.Color」のようにドット(.)でつながれた文字列は「パッケージ名」であり、Javaシステムにはたくさんのパッケージがあらかじめ用意されている。

    package tetris;

    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.event.ActionEvent;
  

これらのインポート命令によって、それぞれ java.awt.Color, java.awt.Dimensionなどのパッケージがインポート(組込む)されることになる。

Javaシステムのパッケージ名は非常に種類が多い。全部おぼえるのは大変で、綴をまちがえないようにすることに神経を磨り減らすことになる。そこで、統合開発環境を使うと楽になるのだが、ここでは、あくまでシェルにこだわることにする。

jshell コマンドは、途中までタイプしたパッケージやクラスを補完してくれる。タブ機能がある。

    $ jshell
    |  Welcome to JShell -- Version 9-internal
    |  For an introduction type: /help intro


    -> import java
    java    javax

    -> import java.awt.Co
    Color                                Component
    ComponentOrientation                 Composite
    CompositeContext                     Container
    ContainerOrderFocusTraversalPolicy

    -> import java.awt.Color
    
  

java.awtは、「グラフィック、テキスト、ウィンドウ等用のクラス」を含むパッケージである。

次の「tetris.Shape.Tetrominoes」は、パッケージ tetrisのなかのShapeクラスで定義されている。

    import tetris.Shape.Tetrominoes;
  

これらの、パッケージとクラスを実際にファイルとして保存するときは、パッケージとクラスの関係をディレクトリの構造として反映させる。

ディレクトリ(フォルダ)構造

tetrisディレクトリの下に3つのShape.java, Board.java, Tetris.javaを作成する。

    tetris ----- Shape.java
               | Board.java
               + Tetris.java
  

ゲーム テトリスの実行

    tetris.Tetris  
  

Tetris.java, Board.java, Shape.java は、 Windows 10上の テスト環境としてjdk (buil 9-ea+148) でコンパイルし実行することができた。

ただし、Ubuntu ではopenjdk version "9-internal", Open JDK Runtime Environment (build 9-internal+0-2016-04-14-195246.buildd.src), Open JDK 64-Bit Server VM (build 9-internal+0-2016-04-14-195246.buildd.src, mixed mode) の環境でコンパイルは正常だったが、実行でシステムエラーになってしまった。

Windows 10 のJava 上で tetris 実行とgame over の画面。


3目並べ(Tic-Tac-Toe)

次のロゼッタコードのサイトからTicTacToeのコードをダウンロードする。

Srcディレクトリーのなかに保存し、javacでコンパイルし、javaで実行する。

    javac TicTacToe.java

    java TicTacToe
  

JavaScript入門

W3Schools JavaScript

JavaScript Quiz Test

PowerShellでWindowsの隠されたファイルを見る
    Get-ChildItem -force
  

Get-ChileItem が長すぎるコマンドと感じたら、

    dir -force
  

でもよい。

Bash on Ubuntu on Windows はどこにあるのか

実体は、

    GetChildItem C:\Users\ユーザ名\AppData\Local\lxss
  

にある。


Android Studio - プロジェクトをつくった後

  1. New Project
    • Application Name: 名前をつける
    • Company Domain: 会社のドメイン
  2. Next
  3. Target Android Devices
    • API level
  4. Add an Activity to Mobile
    • Empty Activity
  5. Customize the Activity
    • Finish