投稿

Inkscape 0.92.5

Inkscape (0.92.5) の macOS 版は MacPorts 版を使うべし。 MacPorts 版の Inkscape をインストールするには、もちろん、, MacPorts 自体 をインストールして使えるように準備しておく必要がある。.pkg のインストーラーが使えるので、難しくはないはず。 そして、MacPorts によってインストールするのは、Inkscape だけでなく、X.Org Server も必要になる。 sudo port install inkscape sudo port install xorg-server これで一旦再起動する。X.Org を先に立ち上げてから、ターミナルで inkscape コマンドを実行すれば Inkscape が立ち上がる。 起動時の警告 起動時に、ターミナル画面に警告メッセージが表示されるが: Dynamic session lookup supported but failed: launchd did not provide a socket path, verify that org.freedesktop.dbus-session.plist is loaded! Failed to get connection dbus とやらのセットアップに関するもののようなので、sudo port load dbus による指摘に従えば解消できる: port notes dbus dbus has the following notes: Startup items (named 'dbus-system, dbus-session') have been generated that will aid in starting dbus with launchd. They are disabled by default. Execute the following command to start them, and to cause them to launch at startup: sudo port load dbus つまりこの場合 sudo port load dbus を実行して一度セットアップしてしまえば、以後

Mac の初期化時、初期化後のセットアップ作業

イメージ
Mac を初期化して別の Mac から乗り換えた。同じ Mac で macOS を一旦初期化して再構築する場合でも同じ。今後もこういう機会はあるはずなので、初期化時と初期化後の一通りのセットアップ手順をまとめて記しておく。 Macintosh HD の初期化等 Mac を売却、譲渡、下取りに出す前にやっておくべきこと Apple シリコン搭載の Mac を消去する方法(M1) : フォーマットは APFS で、大文字小文字を区別する・しないについては、ユーザーによって使い分ける。一般ユーザーは「区別しない」で、アプリ開発者である自分は「区別する」で。暗号化はこの(フォーマット)時点では行わない方が良い。macOS のインストール・セットアップ後の設定時に後から FileVault を有効化するのが無難。 「この Mac を探す」を元々有効にしていると、アクチベーション・ロックがかけられた状態になっているので、macOS のインストール時に、元の AppleID のパスワードの入力が求められるようだ。先に、AppleID にログインして、デバイスを AppleID の登録から削除しておけば、回避できるものと思われる(未確認)。 AquaSKK SKK に慣れてしまうと、他の入力方法が不快でたまらなくなってしまう。セットアップ作業においても文字入力の必要性が発生するので、できるだけ初期化後の早い段階でインストール・セットアップを済ませておきたい。 Mousecape AquaSKK ほどの切迫性はないが、普段から左利きマウスカーソルに慣れていると、右利きカーソルに戻っただけで、結構違和感がある。早めに解消しておくのが吉。 Mousecape 1813 をダウンロードし、インストールは Application フォルダに置くだけ。Preferences で I am left handed にして、import した .cape を apply する。起動時に自動的に適用されるようにするために、(Mousecape の中から)Helper Tool をインストールする。 ちなみに、Big Sur では Dump Cursors したデータをそのまま使うと、com.apple.coregraphics.Wait のみ、正常に表示

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

イメージ
旧 Mac(MacBook 12inch Early 2015)から新 Mac(MacBook Air M1)へメールアカウントを移行した。IMAP なので、データをエクスポート&インポートするような必要はなく、新 Mac 側でメールアカウントをセットアップするだけである。それもメールアカウントの設定自体、iCloud で管理しているので、新 Mac 側で iCloud へサインインした段階で復旧される。 メールの動作に不具合が発生 ところが、メールの動作に不具合が発生した。削除したはずのメールが何度も何度も受信ボックスに戻ってくる。 仕方ないので、一旦メールアカウントを iCloud に保存された設定も含めて削除して、改めて手動で設定し直した。すると問題は解消された。 IMAP アカウントの設定 Gmail などのテンプレートにあるアカウントの場合は問題ないと思うが、その他の一般の IMAP アカウントを設定する場合、デフォルトでは、メールボックスの設定がうまくいっていなかった。メールサーバーに元からある受信・送信済・ゴミ箱・迷惑メールが使われず、新たなメールボックスがそれぞれ作られてしまうので、手動で設定し直して、重複するものを削除する手間が必要だった。 @sakura.ne.jp(独自ドメインメール): IMAP を使っているのでポート番号などのサーバ設定等は細かく設定し直す必要があり、単に iCloud からの復旧されたデフォルト設定のままでは上手く機能しない。旧マシン(macOS)の各設定画面を記録しておいてそれを参考にすると復旧しやすい。 @gmail.com: メールボックスなどの反映に少々のタイムラグがある。そのままでも大丈夫だと思うが、メールボックスの割り当ては再設定し直した方がより確実かもしれない。 署名の設定 署名もデータ自体は残っているものの、アカウントとの紐付けが復元されなかったので、改めて手動で設定し直す必要があった。すべての署名からアカウント毎にドラッグして移動した上、「署名を選択」で該当署名を選択しておくことで、メール作成時に自動で署名が入るようになる。

タリーズ 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.4) 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 の入替:「設定 > キーボード > キーボード」の右下の「修飾キー」において設定 入力ソースの切り替えショートカットキー:デフォルト(Control + Space)(設定 > キーボード > ショートカット) 文頭を自動的に大文字にする:OFF(設定 > キーボード > ユーザ辞書)

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