ちょっとKotlin

なんか音的に良いな、などと思ったり。

いや、どーせ私は必要な部分機能をググっては貼り付けるだけのコピペグラマだから正直なところ言語なんか何でも良いのだけれど(ただし情報が多くないとググれないから困るし”C”みたいに一文字だと検索しにくいから勘弁してほしいが)

Javaで書いてるとついうっかりと「」を忘れたりしがちで、はじめっから入れなくて良い方がなんとなく書きやすいという単純な思考で好んでいたりします。

しかしじっくりと仕様をきめて何かを作る、というところに今はまだ時間を割けないこともあり(そんな暇があるなら過去に公開したアプリをどうにか改修しろという声もいただいたり)、ちょっとだけ練習程度に触れるにとどまっております。ああもどかしい。

■とりあえず何か動くもの作ろう

というわけで、別段だれにも求められていないであろうし使い古されたネタだろうとは感じながらもちょうど居室で使い古され放置されているタブレット(android 5.x時代のもの)にもうちょっとだけ役立ってもらおうとオリジナルのカレンダーを作って動かしてみたわけです。

いや、本音はと言うとそれくらいの大きさの日付が大きくでる時計をイオン店頭でみかけて、買おうとしたら想定外に高くて諦めたのが悔しくて模倣した、というところがスタートラインではあるのですが。

さくさくさくっと日付だけ画面いっぱいに出してみたら、なんとなく昔ながらの日めくりみたいだなと思ったわけで、それならば六曜やら二十四節気やら月齢やら併記しようかと。

そうなると和暦も書いてみたり・・・案外和暦って覚えてないんですよね。漢字で書いても恥ずかしながらさっと読めなかったり(漢検準二級なのですが)、なので自分のために読み仮名までこっそりローマ字で併記してデザインに取り込んでます。

こっそり「令和」をタッチすれば「平成」「昭和」「大正」「明治」と遡れたり。

だんだんだんだん欲が出てきて、日めくりならめくれるようにしないとな、とか、祝日には国旗がプリントされていたよな、とか、紙がそもそもトレーシングペーパーみたいに薄いから祝日前には透けて見えてたよなとか、そんな細かなところまで作り込んでいったり。

この時点ですでにkotlinよりレイアウトxmlの方に割いている時間の方が多くなってました。

サムネイルではこの微妙な透け感は伝わらぬか・・・

■重くなったじゃないか

そんなこんなで抱えるデータが多くなり、ただのカレンダーなのにターゲットとしていたAndroid5.xあたりの非力なタブレットでは初回起動時にはSQLiteへの展開が1〜2分かかってしまうはめに

真面目に仕様を考えるなら、リソースとして組み込むのは最低限1年分くらいの小さなデータにとどめておいて、あとは適宜API経由なりなんなりでダウンロードさせるってのがまともな作り方になるでしょうが。。。それだとインターネットアクセスの権限を取得しないといけないし、そもそもが古いAndroidにネットアクセスできる状態にさせるのもセキュリティ的に気持ちが悪いから全部ローカルリソースにべたっと。

で、動作テストのたびに待つのも面倒なので、一旦実機で展開したSQLiteのDBファイルをごっそりリソースとして取り込んで、初回インストールの機体にはそのリソースからローカルへファイルをべたっと貼り付けるなんて横暴を試してみたら案外すんなり動いたり・・・、でもこれが逆にほかのいろんな機体にインストールしたときに微妙なトラブルの元になったし、将来的にぜったい動かない機体も出てくるだろうと誰しもが思うところなので泣く泣く切り捨てて素直に初回だけ行儀良く待っていただくという方針で。

しまったなと思ったのは、その待ち時間を処理に専念させるためにプログレスバーすら表示させなかったこと。いずれなんとかしますが、結局は1分程度の話なので。

■どのみち誰もわざわざ使わん

だろうと思っていたらわりと数十人ほどはご利用いただいているらしくダウンロード数が少し上がってた。なんか今になって申し訳ない気分

なにせ居室に飾りつけた時点でもう気持ちは別のところに向かっていたりするので改修がいつになるやら。でもやり残している感覚もそこそこ。

たとえば100円ショップで買ってきた額縁にタブレットごと埋め込んで外観までそれらしくしようとか(すでに買ってきてます)、機能面ももうちょっと追加しときたいよね、とか。

というわけで気が向いた時に追加実装できるようソースコード内にコメントばかり増えてますが、例えば「めくったあと1分ほどで現在日付にもどす」とか、ちょっと前にM5 Stackに実装したような「江戸時間表示にする」ってあたりは割と早く組み込みそうなものの、優先順位としてはそろそろ決算月が迫っているので我慢我慢

日めくり風カレンダー GooglePlay


消えちゃった動画や写真データの復元は
安心安全な『株式会社パソコントラブル救助隊』へ。
https://hqsecure.net/

スマホからSDカードへの安全なコピー方法

最近ではすっかりAndroidスマホやiPhone内蔵カメラの性能が向上し、見た目は非常に美しくなってきたなと感心させられるようになりました。

撮影した写真や動画をみるとやはり見た目の美しさというのは単純に撮像素子の画素数で決まるのではなくその後の画像処理も重要な要素なのだなあと思い知らされます。

個人的には、アマチュアカメラマンとしてはスマホの手軽さを存分に味わいつつも気に入ったレンズでさんざん撮影に没頭し、そのあともRAW現像にこだわりの技術を磨いていく楽しみがあるのだけれどなあなどと思ったりもします。

■バックアップ方法のおはなし

さて、本題。

スマホでさんざん撮りためた写真や動画データの保管は皆さんどうしてますか?

よくお客様からご相談もいただくのですが「どうやったら簡単になおかつ安全に長期保存できますか?」という内容です。

ご存じの通り、スマホやiPhoneの内蔵メモリ(内部ストレージ:記憶領域)というのは本体購入時に決められてしまっていて後から付け足すということができません

一般的にはiPhoneで128GB~512GBAndroidスマホでも64GB~256GBが標準的な仕様になります(もちろんハイエンド機種だと1TBなどの超大容量を搭載しているものもあります)

一昔まえならこんなにも容量があれば無限に撮れるのではないかと考えてしまうような大容量だったのですが、撮影画質向上というのはつまりデータ容量もそのぶん大きく膨れ上がってしまうためにいまや充分とは言い切れない容量になりつつあります。
※しかも内部ストレージというのはアプリでも消費するので、流行りもののゲームなどを何本も入れているとあっという間に余裕がなくなりますね。

■クラウドはバックアップと言えるか?

AndroidならばGoogleクラウドiPhoneやiPadならiCloudが標準的なクラウドストレージとしてOSとの親和性も高く利用しやすいように工夫されています。

ただ、どちらもAppleもGoogleも慈善事業でクラウドを運営しているわけではないため、エントリーレベルの容量(5GBまたは15GB)を超えて使用するにはサブスクリプション契約(月額課金の契約)が必須になってきますし、いまや15GBなどの容量ではあっという間に消費してしまうので課金しないと事実上使い物にならないと言っても過言ではないでしょう。

実際のところ、月額課金しておけばiCloudとiPhoneやiPadとの連携の秀逸さは目を見張るものがありますのでバックアップとして考えなくても課金して損はしないと個人的には思っていますが。

また最近ではAmazonプライム会員が使用できる「プライムフォト(写真のみ無制限、動画は無料の対象外)」といったサービスもあるため、アプリを別途インストールすることに抵抗感を感じないならば良い選択肢の1つとも思います。

Amazonの側もサブスク契約することで動画保管に対応するなどさらにサービスが拡充されるようです。

ただし、クラウドストレージに保管しているデータについては内容の検閲が入りまれにアカウントロックされてアクセスできなくなったというお話があることや、そうでなくともパスワード管理などが甘いと世界中からのぞき見されたりいたずらされるといった恐れが常に隣り合わせであることは意識しておく必要があるでしょう。

そのほかに考慮しておく必要があるとすれば、突然サービスが終了してしまったり、課金額が急に値上がりになってしまったりといった場合に大量に保存したデータをどうやって他に異動させるかという課題もあります(ダウンロードにかかる帯域や時間と、保存先の容量を確保しておかなければならない)

■USBメモリやSDカードは使えない?

以前はAndroidスマホと言えばmicroSDカードが内蔵できるというのが1つのウリ文句だったのですが、いまや時代の流れとともにmicroSDスロットは廃止されてゆき、基本的にはSDカードを内蔵できないものが主流になっています

iPhoneに関しては発売当初からmicroSDカードスロットが採用されていなかったので、見方によってはAndroidがiPhoneに寄せてきたという形にもなりますね。

内部設計から考えてもこれは合理的で、余計なスロットを搭載しないぶんだけ設計がシンプルになり不良発生率も下げることができて、なおかつ低速なカードアクセスのためにシステム全体の足が引っ張られなくて済むという理由が大きいかと考えますので、今後もカードスロットがスマホに搭載されるような時代に戻ることは無いと個人的には考えます。

内蔵が無いなら外付けしてしまえば良いだけの話しですし、そもそもバックアップ用途ということであれば普段は物理的に切り離しておいたほうが故障や紛失のリスクが低下する分だけ安全でもあります。

■USB接続の場合

Androidスマホ(およびUSB typeC搭載のiPadシリーズと、今後発売されるであろうiPhone15以降)については選択肢が広いですね。

パソコンでも搭載率が高まって一般化しているUSB Type-Cコネクタを搭載したUSBメモリやカードリーダーが選び放題です。

特に私が個人的にもおすすめするのはSanDisk製のデュアルコネクタUSBメモリで、これはType-AとType-Cの両方のコネクタが搭載されているため、デスクトップパソコンとスマホやiPadとのデータのやり取りにもとても手軽に活用できます。

Type-Aコネクタを出しているとき
Type-Cコネクタを出しているとき

ちなみにmicroBコネクタとType-Aコネクタを搭載したUSBメモリもありますので、使っているスマホがmicroBコネクタ搭載機の場合には以下のようなものを選ぶという手もあります。

mciroBコネクタとType-Aコネクタを搭載したUSBメモリ

さらに、USB接続のカードリーダーを接続すればSDカードやmicroSDカードなどより選べる幅が広がります。(下の写真の例はType-C/A変換コネクタを経由して接続したSDカードリーダーをAndroidスマホに接続しています)

AndroidスマホにUSBメモリを接続した場合、自動的に認識してダイアログを表示してくれる機種もあれば、まったく反応が無いように思える機種もあります。

ちなみに私のGalaxyS21 5Gだとカードリーダーを接続した時点で画面上部にUSBデバイスが接続されたことを認識するアイコンが表示されるようになり、ここからファイルアプリを開くこともできます。(アプリ一覧から「マイファイル」アプリを開いても同じです)

使用している機種やUIによっては接続したとたんにダイアログ表示が出たり、あるいはUSB接続モード(充電のみか、データ通信も行うか)の選択を促されることもあります。

このようにプリインストールされている「ファイル(マイファイルなど)」アプリを開くことでUSBメモリに記録されているファイルやフォルダを閲覧することができますし、スマホ本体ストレージにあるファイルをUSBメモリやSDカードへとコピーすることも自由にできます。
※アプリストアなどで後からインストールしたファイラーアプリは動作権限の制約が厳しいため常用するのが難しい場合があります。

パソコン操作に慣れたかたには常識かもしれませんが、本体内部ストレージからUSBメモリなどにファイルをバックアップする際には「移動」ではなく「コピー(複製)」を積極的に使うようにしてください。

これは「移動」と言う操作はコピーと削除という2つのアクションを1回の操作で命令してしまうことになるため、トラブルなく動いている間は操作が楽なのですが、いざ何かトラブルが生じるとコピーに失敗したあげく元のファイルが消されてしまうというリスクを回避するためです。

iPhoneやiPadの場合も標準の「ファイル」アプリを開くことでUSBメモリの中身を閲覧することができますし、USBメモリやSDカードからカメラロールにコピーしたり、逆にカメラロールなどからUSBメモリにコピーすることも簡単にできます。

下の写真はUSBメモリを接続した際に「ファイルアプリ」上に追加表示される部分を赤丸で示しています。

写真や動画をUSBメモリ等からカメラロールにコピーするには、おなじみの「共有」アイコン(四角形から上向き矢印が飛び出しているようなアイコン)をタップして表示されるメニューから「画像を保存」を選ぶことでカメラロールへとコピーされます。

逆にカメラロールからUSBメモリやSDカードにコピーするには、ふたたび「共有」アイコン(四角形から上向き矢印が飛び出しているようなアイコン)をタップして表示されるメニューから「ファイルに保存」を選ぶことでコピーできます。

■Lightning接続の場合

iPhone(および無印iPad9世代以前)にはApple純正のLightning – USB3アダプタが最も安定していておすすめの手段です。

ただ、これだけではLightningコネクタからUSB Type-Aコネクタに変換しただけにすぎないため、ここから先にUSBメモリ(Type-Aの一般的なもの)かカードリーダーを接続する必要がありますがその選択肢はとても広くなります。

USB3 カメラアダプタ

なおLightning – USB3カメラアダプタでカードリーダーなどを接続する場合には電力不足にならないように電源を入れてあげる必要があります。

以下はUSBメモリを接続した際に電力不足の警告が出ている様子です。

このような表示が出た場合には、カメラアダプタの小さい側の穴に普段から充電用に使っているLightningコネクタを指してあげると改善します。

物理的に接続が完了したらあとは標準でインストール済の「ファイル」アプリを開くことで簡単にアクセスできます。操作手順は前段で記載したUSB接続のものと全く同じです。

ちなみに手持ちのUSB外付けSSDを接続してもちゃんと認識してくれましたが、外付けHDDの場合には電力供給が追いつかないようにまったく反応してくれませんでした。

外付けHDDは製品によって実際に消費する電力に差があるので、場合によっては認識することもあるかもしれませんが、電力供給がタイトな状態ではどんなトラブルが発生するかわからないため無理に使用することは避けたほうが良いと考えます。

■フォーマット形式には注意が必要

AndroidでもiPhone/iPadでもいまのところ共通の課題ですが、USBメモリやSDカードなどのフォーマット形式には少し注意が必要です。

具体的には、Windowsで広く使われているNTFS形式については使用できません(正確に言うとAndroidもiPhone/iPadもNTFS形式の読取りはできるが書込みができません)し、旧来のFAT32形式だと1ファイルで4GBを超えるようなファイルを扱えません

そのため、WindowsでもMacOSでもAndroidでもiPhone/iPadでも共通に使用できるexFAT形式を積極的に使用することを心がけておく必要があります。

SDカードの場合には、64GB以上のカードは基本的にexFATが採用されていると考えてもらっても構いませんが32GB以下のカードはFAT32が初期状態です。

また、USBメモリや外付けSSD/HDDの場合にはFAT32かNTFS形式で出荷されているものが多いため、使用開始前にexFAT形式へと変更しておいたほうが無難です。

■iPhone/iPad/MacOSで閲覧したあとは

iPhoneやiPad、MacOSなどでUSBメモリやSDカードの内容を閲覧したあとで再びWindowsパソコンで閲覧しようとした場合にファイルが増えていることに気づく場合があります。

通常は非表示設定になっているので気づく人は少ないはずなのですが、たまに非表示のファイルを表示する設定でWindowsを使われている方が、先頭に「.」がついた同じファイル名のファイルがたくさんできてしまっているが開くこともできないし壊れているのだろうか?という相談をなげかけてこられる場合があります。

この「.」で始まるファイルはあくまでもOS側が管理するための情報なので、実際に画像や動画などが格納されているわけではありません

そのため、気になるようであればWindows上で削除してしまってもまったく影響ないのですが、削除してもまたiPhoneなどに接続したら自動的に作成されますので気にせずに放置しておいたほうが良いと個人的には思います(非表示ファイルを表示しない設定に戻しておくのが無難でしょう)

■バックアップはローカルにもこまめに

さいごになりますがバックアップの要点は「こまめに」行うことにあります。

大量のデータを一気にバックアップ(コピー)しようとすれば、当然ながら処理時間もかかりますし操作の手間もかかりますし、途中でエラーなどが生じる可能性も高まります

そんな手間暇かかる作業を経験してしまうとこまめに実施するのが嫌だなと思うのが普通ですし、気が付けば1年以上なにもしていなかった!などという事もざらに起こります。

ところがアクシデントというものはそういった隙間を狙ってくるもので、せっかくバックアップの体制を整えていてもいざ実施しなければごっそりとデータを失ってしまいかねません。(まんま私の事ですね)

ぜひそのような事にならないよう、1ヶ月に1度とか、1週間に1度とか、あるいは撮影するたびにその夜のうちにといった自分ルールを作って実践されることを強くおすすめいたします。


消えちゃった動画や写真データの復元は
安心安全な『株式会社パソコントラブル救助隊』へ。
https://hqsecure.net/