投稿

Mac → Mac のメールアカウントの移行

イメージ
旧 Mac(MacBook 12inch Early 2015)から新 Mac(MacBook Air M1)へメールアカウントを移行した。IMAP なので、データをエクスポート&インポートするような必要はなく、新 Mac 側でメールアカウントをセットアップするだけである。それもメールアカウントの設定自体、iCloud で管理しているので、新 Mac 側で iCloud へサインインした段階で復旧される。 メールの動作に不具合が発生 ところが、メールの動作に不具合が発生した。削除したはずのメールが何度も何度も受信ボックスに戻ってくる。 仕方ないので、一旦メールアカウントを iCloud に保存された設定も含めて削除して、改めて手動で設定し直した。すると問題は解消された。

タリーズ Wi-Fi で Mac をインターネットリカバリー

イメージ
新しい Mac(MacBook Air M1)を入手して移行作業が終了したので、これまで使っていた MacBook 12inch(Early 2015)の方は初期化することにした。ディスクユーティリティで Macintosh HD を一旦消去してから、Big Sur を再インストールしようとしたが、その時はネットワークが遅かったせいか中々進まなかったので後でやり直そうと思い、電源を切った。そして改めて再インストール作業をしようと立ち上げたところ、Macintosh HD 自体を消去してしまっているため、macOS 復旧プログラム自体が起動しない状態になってしまっていた。まあ、ある意味当然と言えば当然である。 初めてこのような経験をした時は青くなったものだが、今は特に致命的ではないことを知っているので冷静に インターネットリカバリーモードで起動 する。ただし、この場合は macOS 復旧プログラム自体をネットワークからメモリーに読み込んで起動して行うことになるので、途中で作業が失敗して中断してやり直したりする場合は、最初の macOS 復旧プログラムをネットワークから読み込む段階からの再開となる点に留意したい。致命的ではないものの、それなりの手間(時間)のかかる作業となるのである。 リカバリーモード には次の 3 種があるわけだが: Command + R(Macintosh HD からのブート) Option + Command + R(最新 OS のインターネットブート) Option + Shift + Command + R(購入時 OS のインターネットブート) (1) は Macintosh HD を初期化してしまっているので当然使えない。使えるのは (2) か (3) だが、(3) だと購入当時の旧い macOS 復旧プログラム(Yosemite)のものが使われ、APFS にすら対応していないので、やはり論外。(2) だと Big Sur 用の復旧プログラムが使われるので、これを選ぶ。 ※ この macOS 復旧プログラムのネットワークブートは、回線の繋がりがあまりにも悪いと、-2006F エラー等でブート途中で失敗してしまうことがある。回線の繋がり方にも、モバイル回線のせいや、Apple のサーバーのせいなど、様々な要因が

f.lux の Movie mode

イメージ
Linux 時代から使っていた f.lux だが、macOS で Night Shift が導入されてから、使わなくなっていた。 しかし、Night Shift を使い続けてきて、結局、「日の出と日の入りのタイミングの切り替えしかできない」という点が不満になってきた。それで久し振りに f.lux を使ってみたら、「Movie mode」という、夜の時間帯でも一発で通常の色表示に戻せる機能が実装されているのに気付いた。まさしくこれまで動画を観るたびに、Night Shift を手動で Off していたので、求めていた機能である。当然、f.lux に戻ることにした。

M1 Mac と GIMP / Inkscape

イメージ
MacBook 12inch (2015) では、OS を Big Sur にアップデートして、GIMP や Inkscape のインストールに苦労していた(通常のパッケージでは重かったりして正常に動作しないので、MacPorts 版を使ったりした)が、MacBook Air M1 では、今試してみたところ、通常のインストールパッケージを入れて普通に動作している。 ただし、ちょっと使ってみただけなので、細かい使い方をすると、不具合はあるかもしれない。

AquaSKK

イメージ
Mac で SKK と言えば、 AquaSKK (4.7.3) OS 側の完璧な設定方法は次の通り: 設定 > キーボード > 入力ソース 入力ソースの設定 1. 英語は [@] ASCII を追加 2. 日本語は [ア] カタカナ、[あ] ひらかな、[英] 全角英数、[カナ] 半角カナ、[あ] 日本語(※1)を追加(※2) 3. ABC を削除 本当は削除したいのだが、以前の macOS ではできたが、Big Sur ではできないようだ。 4. [あ] 日本語 を削除 macOS 標準の旧ことえり系はローマ字入力もかな入力もすべて削除可能。 5. 以上で(英語を除いて)SKK のみの入力モード間での切り替えとなる。 ※1 [A] ABC は macOS デフォルトの英語用キーボード ※2 AquaSKK 統合は選択しない その他 メニューバーに入力メニューを表示:ON caps lock ⇄ control の入替:「設定 > キーボード」の右下の「修飾キー」において設定 入力ソースの切り替えショートカットキー:(shift+)command+space

macOS リカバリー Big Sur APFS + case-sensitive 化でハマった

イメージ
遅ればせながら、MacBook Air M1 (16GB / 512GB / US-KBD) を入手(4/2 発注、4/7 受注、4/13 着便)し、新品なのに早速 HD を初期化して、APFS を case-sensitive 化!──しようとして、ハマった……。 これは恐らく M1 Mac かどうかは関係がなく、macOS Big Sur の問題だと思う。 Big Sur の再インストールができなくなる! リカバリーモード(起動オプション)の中のディスクユーティリティーで、元々の Macintosh HD を消去し、改めて APFS + case-sensitive + 暗号化でフォーマットする。すると、Big Sur の再インストールが、「暗号化されているせいで、できません」となる。 焦って、再度 Macintosh HD を APFS + case-sensitive(非暗号化)でフォーマットし直す。すると、Big Sur の再インストールが、「認証するユーザがいません」となる。アクティベーション・ロックがかかって、Macintosh HD に対する再インストール操作ができないような状態になる。 お手上げ状態。情報を検索すると、Apple の サポートフォーラムの記事 を見つけた。 コンテナ disk を消去せよ デフォルト状態では Macintosh HD などの論理ディスクしか表示されておらず、これだけをいくらフォーマットし直しても、暗号化や「認証するユーザー」を管理している部分は初期化されていないので、本当の意味の初期化にはなっていないのである。このあたりのことは、Apple の 公式 KB では全く触れておらず、単に「左側のリストでディスクを選択し、「消去」ボタンをクリックします。」としか書いていない。コンテナディスクと論理ディスクの違いや、デフォルトで表示されているのが論理ディスクである件には触れていないので、これは Apple の公式 KB の欠陥である。 デフォルトでは論理ディスクしか表示されていないので、まずは「すべてのデバイスを表示」させてから、コンテナディスクを選択する必要がある。 また暗号がどうのと言われると嫌なので、暗号化は後回しにして、APFS + case-sensitive でコンテナ

AdMob アダプティブ バナー

イメージ
一時期 スマートバナー を推奨していたかと思えば、結局は廃止して、 アダプティブバナー が登場した AdMob 。これまで何とな〜くで、アダプティブバナーを使っていたのだが、より最適化した使い方をするために、一度本格的に突っ込んで調べてみることにした。 公式の説明らしい説明は、 https://developers.google.com/admob/android/banner/adaptive だけで、あとは API リファレンスが投げ出されているのみ。AdMob に限らず、Google さんのいつものことで、正解(最終結論)だけ示して、途中過程が何もない数学の解答みたいな感じというか。 加えて、日本語訳はさらに実際の API の開発に絡んでいない、日本の Google スタッフが翻訳している感じなので、余計に謎が深まるわけで。 アダプティブバナーのサンプルコード その公式解説に掲げてある サンプルコード だが、よくわからないので、これまではほとんどそのままのスタイルで書き写して使っていた。特に謎なのが、 AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize を使っているあたり。Android の API と違って、AdMob の API はソースコードが公開されているわけではないので、中で何をやっているのかがわからない。 それで、テスト用のアプリ ID とデバイス ID を使って色々テストしてみたが、結局、この AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize はあくまでもオマケ機能であって、アダプティブバナー的には必須の部分ではないのだということがわかった。 Google が教えてくれないアダプティブバナーの本質的な使い方 要するに、 アダプティブなわけだから、任意の好きなサイズの AdView を用意するだけで良い 。 つまり、「アダプティブ」というネーミングをした段階でそこは既に解説済。何ひとつ語る必要なし。小学生じゃあるまいし、語らずともわかるよね〜?──というのが、Google の開発チームの原語版の解説を執筆した人たちの感覚なわけだろう。 で、さっさとプラスアルファの機能を盛り込んだサンプルコ

Android の OpenGL ES と SurfaceView / GLSurfaceView

イメージ
今さらながら Android の OpenGL ES に初めて手を付けてみた。これまでは ImageView の onDraw のカスタムか、ゲーム的なものでも、2D で SurfaceView の画面を丸ごと FrameBuffer として更新するような使い方しかしてこなかった。ところが今回、ちょっと凝った 2D のマップアプリのようなものを作ることになり、先述の通り従来は ImageView の onDraw カスタムで対処してきたのだが、できれば、SurfaceView か、さらには OpenGL ES 化して、Google Map のようなヌルヌルしたものにできないかと思い、3D 用だと思って敬遠してきた OpenGL ES の領域にまで足を踏み入れてみることにした。 SurfaceView 以前、使ったことがあると言っても、ちょっとした 2D ゲームのサンプルで使った程度であり、非ゲームのアプリに利用するというような場合も含めて SurfaceView 自体を研究したことはなかったので、まずは SurfaceView をいじってみることにした。 レンダリング用スレッドを使用する Activity 側で SurfaceHolder.Callback を implement するなりして、レンダリング用スッドの生成や終了処理を行う。レンダリング用スレッド中では、Canvas を通じて FrameBuffer の描画を行なう。 Canvas canvas = mSurfaceHolder.lockCanvas(); canvas.drawBitmap(mFrameBuffer, 0, 0, mPaintObject); mSurfaceHolder.unlockCanvasAndPost(canvas); レンダリング用スレッドを使わないで、そのまま Main UI スレッドで同様のことを行うこともできるが、圧倒的に処理が重い。SurfaceView を使う意味がなくなる。 カスタム Handler を用意する Google のサンプル( Grafika )では、レンダリング用スレッドにカスタムメッセージを渡せるようにするために、カスタム Handler を用意して、カスタムメッセージを定義している。 Choreograph

e-Tax: このアプリは作成コーナーの画面内でご利用いただくものです。直接クリックして起動することはできません

イメージ
e-Tax(with マイナンバーカード + IC カードリーダー )を macOS Big Sur で使おうとして、最後の最後の段階の、データを国税庁に送信する段階になって「このアプリは作成コーナーの画面内でご利用いただくものです。直接クリックして起動することはできません」というエラーに陥った。 macOS で、それも Big Sur に早々と更新するような勢で、さらにマイナンバーカードを IC カードリーダーを使って確定申告しようというような酔狂者は少ないのか、検索してもあまり事例を見付けることができない。辛うじて Twitter には このような国税庁の Mac 対応不足を指摘するものを発見したのみ。 上記ツイートにより、このエラーが自分だけではないことがわかったのはいいのだが、実は、この「Mac 対応不足 → Windows なら ok」という認識は誤っていて、むしろ余計に皆が Windows に逃げようとする流れを是認・助長してしまっている。実際のところ、全然、Mac でも ok(後述)。決して e-Tax ヘルプデスクに「ゴルァ電」して、混雑に拍車をかけないように。 旧バージョンの e-Tax をアンインストールしろ! この重要なポイントが、なぜか、e-Tax のホームページで見つけられず(つまりググっても辿り着けない)、インストール時の jizenMac.dmg(仮想ディスクイメージ)の中の「インストールマニュアル.pdf」の説明の一部として「旧バージョンの e-Tax をアンインストールしろ」と書かれている。 これをやらないと、e-Tax の開始時では「正常にセットアップされています」と認識されているのに、最後の最後の国税庁にデータを送信する段階で「直接クリックして起動することはできません」エラーに陥いる。 ほとんど罠のような話。これでは「Mac 対応不足 → Windows なら ok」という認識を皆が抱いても仕方がないのかもしれない……。 ともかく、macOS Big Sur とマイナンバーカードと IC カードリーダー( ACR1251DI-NTTCom )で今年も e-Tax はできている。Mac ユーザーの皆様には、めげずに貫き通して欲しい。

Python プログラムの .exe 化

Python で組んだ自前のプログラムを人に使わせる必要が生じたので、Python をわざわざインストールさせずに済むように、.exe ファイル化してみた。 pyinstaller Windows 限定の話だが、pyinstaller を使う(pip でインストールするなりする)。 pyinstaller myprogram.py --onefile おまけ:エスケープシーケンスを有効化 .exe 化はできたのだが、Windows のコマンドプロンプトはデフォルトではエスケープシーケンスにすら対応していない(WSL だ何だと言っても、所詮はポーズなのか?)。.exe 化したプログラムは出力にエスケープシーケンスを利用しているので、どうせならそこもちゃんと表示できるようにしたい。調べてみると、簡単にできることがわかった。 レジストリー( HKEY_CURRENT_USER\Console )に VirtualTerminalLevel = 1 を追加するだけ。 次の内容のテキストファイルを VirtualTerminalLevel.reg として保存したものを使って、レジストリーエディターから統合してもいい: Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Console] "VirtualTerminalLevel"=dword:00000001