May 19, 2020

iOS FIle System の 調査

iOSアプリにMP3ファイル(複数)を含めたら、200MBを超えてしまった。Appleの推奨は、200MB以下。 対策案は、「 MP3は、アプリがURLからダウンロードしてきて、データとして保持し、それを webView から使う」できるか、調査・実験が必要になった。

From About the iOS File System by Apple

まとめ

iOS app は、 Sandbox と呼ばれるディレクトリの下のみアクセスできる。

 Sandbox の 下は、 Bundle Container(AppName.app), Data Container(Documents/), iCloud Container の三つに分かれる。

Bundle Container には、アプリケーション本体とリソースファイルが入り、 read のみ許可される

Data Container には、アプリケーションが作成(ダウンロード)したデータを保存する。

Bundle Container と Data Container は、単純な隣のディレクトリではない、ディレクトリパスは、階層が深く途中に暗号コードが這っていて、共通部が全くない。

Appleの推奨は、動画や音楽は、Data Container にダウンロードし、iCloudのバックアップ対象から外すべきであること( You can exclude files from the backup by calling -[NSURL setResourceValue:forKey:error:] using the NSURLIsExcludedFromBackupKey key. HowTo)

Data Container の ひとつのhtml ファイル を webView に swiftから指定して表示できる、方法はここ load html file to UIWebview from documents directory on ios with swift ()

Mp3のダウンロード例 Xcode: Download mp3 file [closed]
Mp3のダウンロード例 How to play mp3 audio from URL in ios swift

Swift memo GuidedTour
let : an immutable constant 定数定義, 
var : a a mutable variable 変数定義,   
  var 名称 = 値
  var 名称 : 型 = 値
  var 名称 = [ ,,, ]   //配列(自動拡張)
  var 名称 = [ "インデックス":"値",,, ]   //文字インデックス配列(自動拡張)

暗黙の型変換はなし

""" で、複数行テキスト定数の定義開始と終了
"... \(変数名称)..."  文字列での変数引用

  var 名称 : 型? = 値   // ? は、 optionals を意味し、 nil または型の値を持つ
  // ?? は、デフォルトバリューオペレーター

関数を呼ぶときは、ラベル名: を付ける
greet(person: "Bob", day: "Tuesday")

API memo
NSURL : An object representing the location of a resource that bridges to URL;
NSURLSessionDownloadTask : A URL session task that stores downloaded data to a file
NSURLSessionTask : A task, like downloading a specific resource, performed in a URL session
NSURLSession An object that coordinates a group of related, network data-transfer tasks.
 downloadTaskWithURL:completionHandler:
NSAllowsArbitraryLoads : A Boolean value indicating whether App Transport Security restrictions are disabled for all network connections. (Remember to add this in your info.plist)

結論 webView は、Bundle ContainerとData Containerの両方を同時に扱えない

swiftから、Bundle Container(またはData Container)の下のhtmlファイル(またし外部WEBサイトURL) を指定してwebView を起動すると、webViewは、それらを表示できる。

[href=/action=/src="file://..." 指定が禁止] webViewにロードされた Bundle Container(またはData Container)の下のhtml /javascriptが、"src=" 指定で、自分と別ディレクトリのData Container(またはBundle Container)の下のimg/audioファイルを"src=" 指定するには、"file:///" とならざるを得ないため、セキュリティ違反となるから、呼び出せない。

[href=/action=/src="https://..." 指定が可能] webViewにロードされた Bundle Container(またはData Container)の下のhtml /javascriptが、img/audioタグの "src=" 指定で、https://指定で インターネットのファイル を指定して動作できる。

[href=/action=/src="onlyFileName.ext" 指定が可能] webViewにロードされた Bundle Container(またはData Container)の下のhtml /javascriptが、img/audioタグの "src=" 指定で、自分と同じディレクトリ(またはサブディレクトリ)のファイル を指定して動作できる("file:///"を指定しないで済むため)。

[ローカルファイルからXMLHttpRequest禁止 ] webViewにロードされた Bundle Container(またはData Container)の下のhtml /javascriptが、XMLHttpRequest 関係を呼び出しても、 呼ばれたサーバ側は、呼び出し側をローカルと判断して、セキュリティ違反となるため、エラー応答されてしまう。

webViewのjavascript は、swift にメッセージを送り関数を起動することができるが、リターン値は無しとなる。

swiftのライブラリは、 外部サイトのURLを指定して、 htmlなどのファイルをダウンロードできる。

swiftは、起動したwebViewのjavascriptの関数を好きなタイミングで呼び出せる。リターン値は無しとなる。

"iOS Simulator could not hardlink copy |Apple Developer Forums"

「src="data:image/png;base64,」形式  ( RFC2397  The "data" URL scheme )で、swiftから javascriptに ファイルの中身を渡せると思われるが未検証。

以上




May 12, 2020

Apple IOS 開発 テスト協力者の設定方法

Apple の iPhone の IOS アプリ開発(弊社なら "やる勉")で、テストに協力してくれる人(社外も含めて)を App Store Connect (=Apple Developer Programのアプリの管理機能)に設定する方法について

アプリ開発元がすること

(1) テスト協力者の"APPLE ID"(=mail-address)を入手

(2) App Store Connect / Users and Access で、"Developer"を追加

    テスト協力者の"APPLE ID"(=mail-address)を "Developer"として追加(+)
招待メールがAppleから送信される

(3) App Store Connect / My Apps "やる勉" / TestFlightで、"Build"を追加

    test する APP の Build(=Version) を 指定する。

(4) App Store Connect / My Apps "やる勉" / TestFlightで、"tester"を追加

    "App Store Connected Users" で、先に追加した"Developer"を追加
招待メールが送信される


テスト協力者がすること

(1) "APPLE ID"(=mail-address) を アプリ開発元に連絡する。

(2) "Developer"として招待メールが来るので、承諾する。

(3) "APP Store" から testFlight アプリをインストールしておく

(4) "tester"として招待メールが来るので、承諾する。

(5) testFlight アプリが起動して、testするアプリがインストールされて、テストできる。


Apr 22, 2020

ZenFone Max Pro (M1) を Androidアプリの開発で、テスト機体にする方法

ZenFone Max Pro (M1) を Androidアプリの開発で、テスト機体にする方法

1. Windows と ZenFone を USBケーブルでつなぐ

 これだけでは、ダメ。 ADB(ndroid Debug Bridge)Driver を Windows に インストールする必要あり。
 USBケーブルでつないだままにしておく。

 Android Stidio で、 メニューバーから  Run/Run... (または、メニューバーの AVDボタンクリックで出るメニュー)で、
 Trouble Shoot Device Connection を選ぶと 画面分割して右に ヘルプガイドが出て来る。
 ヘルプガイドで、USB接続はしたままなので 端末 ZenFone zb602kl ASUS_X00TD があるが、
 Androidデバック端末と認識していないことが分かる。

2. ADB Driver を、ダウンロード

 latest_usb_driver_windows.zip を ダウンロード した。

 たとえば、ここから

 https://droidusb.com/download-lana-download/adb/

 ここにもあるらしいが試していない。
 https://www.getdroidtips.com/asus-zenfone-max-pro-m1-usb-drivers/

3. ADB Driver を、インストール

 latest_usb_driver_windows.zip を  解凍後、

 Windows 10 の Computer Management を起動。

  左画面で、 Device Manager を選択。
  右画面のデバイストリーを探すと ZenFone zb602kl ASUS_X00TD が、出ている
 
  メニューバーから  Action/"Add Legacy Hard Ware" を選択、
  Wizard-Dialog を進める中で "Automatically" ではなく、 "manually select from a list"で続ける。
  "H/W types" は、"Show All Devices"のまま、"Have Disk" で、解凍した、 android_winusb を選択して
  GOOGLEの署名があることを確認してからインストール。
 
  "Android Devide"/ "Android ADB Interfalse" ができる。

4. Android Stidio で、 Trouble Shoot Device Connection (ヘルプガイド)の指示に従う。

  ZenFone の設定画面で、システム/端末情報/ビルド番号を表示、ここを7回タップすると、開発用デバイスとなる。
 
  設定画面/システム/詳細 をタップすると、「開発者向けオプション」が出て来るから、選択。
  スクロールして、USBデバッグを探してONにする。

  このあと、 Trouble Shoot Device Connection (ヘルプガイド) で、
  "Android Devide"/ "Android ADB Interfalse"(USBデバイス再検索) のボタンをクリック
  これで、ZenFone asus ASUS_X00TD が認識され、 RUN すると、試作アプリがインストールされる。
 

 参考

 https://developer.android.com/studio/run/device
 https://developer.android.com/studio/run/oem-usb.html
 https://developer.android.com/studio/run/oem-usb
 https://developer.android.com/training/basics/firstapp/running-app
 https://droidusb.com/download-asus-zenfone-max-pro-m1-zb601kl-drivers/
 https://www.asus.com/zentalk/thread-253395-1-1.html

 

Apr 20, 2020

コロナから自分のことは自分で守るしかない(Ver2)

私たち国民は、新型コロナウイルス感染を防ぐには、自分で自分を守るしかありません。

4月20日の時点で日本政府がした事は、自粛の依頼(公立学校の休みと緊急事態宣言)と補償支援の検討だけです。政府と自治体は、頼りになりません。

感染症の研究者、専門家たちがどきどき語る本音、「検査は治療ではない」、「検査の精度は悪いし手間と時間がかかるしお金が一番(30万円)かかる」、「検査の設備も人員も足りていない」、「病院はコロナ患者で手一杯ベッドがもうない」、「病院に防護服もマスクもない」、「ワクチンができるのは一年以上先の未来、できるとは断言できない」、「ウイルスを退治する薬はなく、熱さまし・鎮痛剤と咳止めしかない、後はその患者の免疫力次第」、「誰でも、一度はかかって免疫(抗体)をつけるしかない」、「鎖国(ロックダウン)しても開国(解除)するとまた元の木阿弥となる」、「最後はウイルスと人間は共存するしかない」。

現在日本の累計感染者数は、10,751人(4月20日時点)、約9日で倍増しています。この倍増が続くという最悪ケースを仮定すると、単純計算で、あと約130日(2020年8月末)で国民全員が感染するという机上の計算です。あなたも私も多分1年以内に一度感染するだろうと覚悟を決めなければいけません。

累計感染者数 15,231人、現在患者数11,968人(5月5日時点)です、増加ペースが4月前半より明らかに減少(半減)しました。現在患者数が、1万人から2万人であれば、重症化率(=入院率)20%で、2,000から4,000の隔離ベッドでなんとか、日本の医療は耐えて行けると想像しています。

4月21日「慶應義塾大学病院は4月21日に公表した「新型コロナウイルス感染症に関する当院の状況について」で、4月13日から19日までに実施した術前および入院前PCR検査において、新型コロナウイルス感染症(COVID-19)以外の治療を目的とした無症状患者のうち、5.97%(67人中4人)で陽性者が確認されたと公表した。」があります。また、5月3日の発表で「新型コロナウイルス感染症について、神戸市立医療センター中央市民病院(同市中央区)の研究チームが2日、外来患者千人の血液検査(4月上旬)で、3・3%が抗体を持っていたと明らかにした。4月上旬までに、市民約4万1千人に感染歴があった計算になる。」があります。すでに感染しても発病しなかった人が大量にいます。「約9日で倍増」を当てはめれば、単純計算で約40日で全国民が感染し、ほぼ発病せずとなってしまいます。

政府の緊急事態宣言による自粛がひと月続けば、倒産企業が増えて、生活そのものができないという社会不安が出て来るので、感染状況にかかわらず5月中には解除もしくはそれに準じた状況になると思います。

それに準じた状況とは、「健康な人だけで経済を回し、高齢者・病気持ちの人はひっそりと家にこもる」ということです。

私たち国民が、3月と4月で学んだことは「症状があればコロナだと思って、速攻で二週間休む義務」です。去年までの「風邪薬(解熱剤)を飲んで出社、俺って根性あるでしょ」は、道徳的にも感染症法的にも金銭的にも禁止される行為になったという事です。

5月4日現在、安倍総理から5月末まで緊急事態宣言延長と中旬での見直しが発表されました。世論では、感染死より金欠死を訴える人が多くなりつつあります。「健康な人だけで経済を回し、高齢者・病気持ちの人はひっそりと家にこもる」にシフトしましょう。

自分を守る行動とは、

(1) 感染しないように行動する

人混みに行かない、
人と2mの距離を取る。
面と向かって話さない。
マスクをする。石鹸で手を洗う。うがいをする。
電車ではマスクをして息をひそめ目を細くするなるべくどこにも触らず。
家と衣服を清潔に保つ。
食べ物は加熱調理・レンジでチンする。

マスクは、洗濯ネットに入れて洗濯できます。
マスクにアイロンをかければウィルスを殺せ(不活性化)ます。

アルコール消毒がなくとも石鹸手洗いでかまいません。
流水でじっくり60秒ゴシゴシ洗うのもいいです。
手荒れにはクリームやワセリンをつけてください。
うがいは水道水でかまいません。

(2)感染してもウィルスをはねのける免疫力

身体を優しく動かし血流を促し体温を一定に保つ。
充分な睡眠時間を確保する。
栄養がありバランスのいい食品を食べる
総合ビタミン錠剤を補充する

不健康な生活をしない。
禁煙。深酒は禁物。のどの使い過ぎは禁物。
激しいスポーツは免疫力が低下するから禁止。
糖尿病、高血圧、動脈硬化、癌などにかからないように生活を見直す。

(3)万が一に備える

二週間分の食品、ビタミン剤、解熱剤、咳止めを確保する。

(4)少しでも調子が悪いなら、ためらわず、二週間休む

熱が出た、悪寒がした、咳が出たら、
コロナだと思って、速攻で二週間休む。
免疫力があり早めであれはばあるほど、必ず良くなります。

自分がいないと会社と家庭が回らないというのは、チームプレーができない阿呆の考えることです。自分がいなくてもチームが回るよう仕事の組み直しをしてください。
風邪薬(解熱剤)を飲んで出社すると、症状が進行し急に重症肺炎になる、他人にうつす、会社は業務停止、あなたは当然解雇、最悪会社から損害賠償されます。速攻で二週間休むがベストです。

(5)政府がくれるという金は貰いましょう

これは「速攻で二週間休むための支援」です。国民の権利行使です。貰っておきましょう。


(6)他人のことを、あれこれ批判も指図もしない。(2020年5月5日追加)

他人の発言(例えばいつも挑発的なホリエモンさん)行動(例えば、パチンコに行く人)に一々噛みつくのは、自分自身がウイルスの恐怖におびえていることを隠すためです。人は人、自分は自分、各自の考え・発言・行動は自由で結果は自己責任です。自分は、他人のことを、実は何も知らないのだから、あれこれ批判も指図もしないことが大切です。他人に不満をぶつけても何も解決しません。恐怖・不満・怒りの連鎖が続くだけです。ストレスを溜めず楽に生き残る方法は、相手の立場を思い巡らせ批判も指図もしないでありのままの相手を認めることです。現状の医学では、遅かれ早かれ、全員が一度新型コロナウイルスに感染して免疫を持たない限り、この騒ぎは収まりません。もし免疫力に自信があれは早いうちに感染した方がよく、一方で免疫力に自信がない人は、未来のワクチンに一縷の望みをかけて自宅に閉じこもるだけです。どちらの立場でも「人事を尽くして天命を待つ」です。他人から自分に直接ウイルスの入った飛沫を浴びせられなければ、それで十分に良しです。

以上です。

結局、自分を守る行動が、利己的に見えるかもしれませんが、実は利他的です。自分を守る行動は、他人にウイルスをうつさない、会社に迷惑をかけない、病院に余計な負荷をかけない、他人をイラつかせないためにすることと同じですから。

Apr 17, 2020

新型コロナウィルスのパンデミックに対応できる休暇制度

新型コロナウィルスのパンデミックに対応できる労働者のための休暇制度が求められる。

新型コロナウィルスのパンデミックは、100年前のスペイン風邪や60年前の香港インフルエンザを調べれば、3年以上の長期にわたる可能性がある。

従来の1年単位の休暇制度では、会社と労働者の双方に不利益がかかる。

環境条件

新型コロナウィルスのクラスター(集団感染)が社内で発生すると、会社は14日から30日の休業になってしまう。倒産の危機につながる。

新型コロナウィルス感染症の素早い確定診断は、技術的、設備的、金銭的、政治的諸事情から日本ではできない。

「少しでも発熱・咳の症状があれば、新型コロナウィルス感染症の疑いあり」が、最も合理的判断。

新型コロナウィルス感染症では、現役労働者の80%以上は重症化しないので、症状が疑われる早期に自宅療養することが、最も合理的判断。

症状が軽くとも、他人に感染(飛沫感染、接触感染)させてしまうので、完全隔離(自宅待機含む)が、最も合理的判断。

自宅療養にしても、療養期間は、発症から最低14日必要。できれば、20日必要。


パンデミックに対応できる休暇制度(案)

  • 最短14日から最大30日の「新型コロナウィルス感染症疑い休暇」を付与する。
  • 少しでも発熱・咳の症状があれば、自宅待機または隔離入院を義務つける。
  • 新型コロナウィルス感染症疑い休暇は、5年に一度、取得する権利がある。
  • 5年以内に2度3度と取得するときは、通常の有給休暇を5年分の日数から前借することができる。
  • 休暇中の賃金は、暫定50%とするが、他の社員の出社状況と業績影響で、公的第三者の判定の元、調整する。
  • 有給休暇を前借りしたまま退職する場合は、退職金を調整する。
  • これは、2020年4月1日から遡って適用する。




Mar 24, 2020

Android Studio の インストール に手こずり 解決できた件

Android アプリを作ろうと思った。

Android Studio (android-studio-ide-192.6241897-windows) を インストールしたが、 Virtual Devie を起動できない。

2:29 PM Emulator: PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT

とか

2:30 PM Emulator: PANIC: Cannot find

2:30 PM Emulator: AVD system path. Please define ANDROID_SDK_ROOT

とか、ANDROID_SDK_ROOT を設定しても

   2:35 PM Emulator: PANIC: Broken AVD system path. Check your ANDROID_SDK_ROOT value [C:\Android\Sdk]!


に、なる。

原因 

Windows の ユーザー名が、漢字名になっており、Userのディレクトリーファイルが  "C:\Users\漢字" だから。
インストール時に、漢字名のディレクトリーの配下では、"Android SDK"をインストールできず、やむを得ず  "C:\Android\Sdk"にインストールしたため。

対策

1. 新 Windows Userを Alpahbet で 作り直す。 (いまさら、できないことである)


   具体的手順

 (1) Android Studio を 終了
 (2) ディレクトリ C:\Android\SdkHome  を作成
 (3) コントロールパネル/Advanced System Settings で環境変数を追加 
    ANDROID_SDK_HOME = C:\Android\SdkHome
 (4) Android Studio を 再起動
 (5) Android Studio/tools/AVD manager で、 "Create Virtual Device"をやり直す。
 (6) Virtual Device が起動できる。
 (7)  C:\Android\SdkHome の下には、 .android が できている。

その他

Android Studio を 動かすには、 8GB以上のRAMが必要。
4GBでは、動かなかった。 
4GBから16GBにしたら快適になりました。これであと数年もたせるつもり。

Feb 24, 2020

What is Japan's countermeasures against coronavirus?

Q2. What is Japan's countermeasures against coronavirus?

There are government countermeasure, hospital countermeasure, and the general public countermeasure.

The government's countermeasure is to monopolize coronavirus testing laboratories and not carry out the tests. The aim is to not increase the official number of patients with infectious disease.
The Japanese government, using government scholars, had advertised that the coronavirus was not transmitted from person to person and had a low fatality rate. However, it became clear that the disease was transmitted from person to person, and it was known that there was no treatment that directly affected the virus, with a 20% worsening rate and a 2% fatality rate more than 20 times that of influenza.

The hospital's countermeasure is to refuse to see the coronavirus patient. If a coronavirus patient is found, nosocomial infection will occur and the hospital will be shut down by the local government for more than a week.

The public's countermeasures are to avoid infection and to speak to the government. To avoid infection, keep away from the crowd, protect with a mask and goggles, use alcohol disinfection, wash your hands and face with soap, gargle, eat nutritious food, sleep well Thing. However, both masks and alcohol are sold out in Japan.