anchor
ことえり風のキールールに変更するTipsはEl Capitanでは使えない…ていうか使えるが危険でお勧めしないが一応方法を書いとく〜Rootlessについて…カンブリア紀の終わりは近づき…
このエントリを書くのがものすごくしんどい。
というかもうMacサイトもMacユーザもやめるかもしれない。
別に嫌気がさしているからじゃない。
動機がなくなってきたから…ということかな。
詳しく書く気力が湧かないので、できるだけ簡潔に書く。
以前にBBSでさくらさんに情報をもらって、その方法を改良してYosemiteの日本語入力を「ことえり風のキーマッピング」に変更するTipsを書いた。
詳しくはこちら。
Yosemiteの日本語入力のキーマッピングをことえり風に戻してみる〜注意は必要だができることが判明した
漢字Talk以来馴染んだことえり風のキー、例えばラ行の入力は
ラ リ ル レ ロ
LA LI LU LE LO
とタイプする。
今ではWindowsでもMacでもLキーは小文字の入力に割り当てられていて、JIS配列、Windows風キー配列もみんなそうなっているから世間的にはそれに慣れた方が汎用性は高い。
どこでキーボード触ることになるかわからないから。
でも慣れてしまったものは仕方がない。
これが使えると使えないとでは、文章の入力のスピードが1.1倍くらい違う。
たった1.1倍と侮るなかれ。1割能率が違うというのはでかい。
それでYosemiteになってからも廃止されたことえり風のキーで入力を続けていた。
ところがEl Capitanになって、この
/System/Library/Input Methods/JapaneseIM.app
のパッケージの中のファイルの書き換えができなくなってしまった。
rootになってGUIやTerminalからもやってみたが
「この操作は許可されていない」
という表示が出て拒否されている。
sudoやsuの権限も拒否されてしまうなんて!
UNIXのsuの権限は神の権限だと教わったはずだ。
その神の権限もついにEl Capitanからは制限されることになってしまった。
rootが唯一絶対神からやおよろずの神に降格してしまった瞬間だった。
それでこのシステム領域の中身の書き換えを禁止している機能はSystem Integrity Protection、通称SIPと呼ばれるセキュリティ機能で
/bin、/sbin、/System、/Applications/Utilities
が制限区域になっている。
これはrubyなどのコード開発者やMacPortなどを使用するユーザ・開発者には大迷惑な機能で、これのために一部のそうした人々が阿鼻叫喚地獄になって
「若者よ、El Capitanにだけはアップデートしてはならん!このことしかと心得よ!絶対にEl Capitanには触れてはいかん!」
などという会話が交わされているかどうかは知らないが、私にとっても大迷惑な機能になっている。
/bin、/sbinが制限されているということはそこにコマンドをインストールすることも当然できない。
だけでなく/usr/localは対象外になっているといっても、プリインストール版ではこの領域は存在しないため制限解除して新規で作成するとか、アップデートのたびに制限解除の手続きを踏まないといけないとか、いろいろ面倒なことになっている。
UNIX開発者なら
「もうMacめんどいから削除してBSD入れる」
ということになってしまうと思う。
/Applications/Utilitiesもユーティリティーアプリを大量にインストールしている私としては、El Capitanにアップデートする前にそれらのアプリをその外に退避させないといけない。
でないと、もう一生アンインストールやアップデートができなくなる。
一部のアプリはパスが変わると機能しなくなって再インストールが必要になるかもしれない。
このバイナリ認証で煮え湯を飲まされたTrimEnablerは代替アプリのDisk SenseiがEl Capitanに対応したようなので問題なさそうだが、冒頭に触れた日本語入力はアップデート時に/System/Library/Input Methods/JapaneseIM.appも上書きされてしまうので、ことえり配列は使えないことになる。
このSIPはrootlessというYosemiteでも一部の領域の制限で使用されてきた、神の権限を上回る超神の権限で守られているらしい。
これを無効化するコマンドは以前から知られていて以下の通り。
sudo nvram boot-args=“rootless=0”
これはnvramというOS起動以前に読み込むファームウエアレベルの設定を、かつてPRAMと呼ばれた領域に書き込むコマンドでrootlessを無効にするというもの。
TrimEnablerはこのrootless無効化で非認証のカーネルエクステンションをシステムフォルダにインストールしてYosemiteに対応していた。
これを元に戻すコマンドは
sudo nvram boot-args=“”
これはnvram(PRAM)に書き込まれたパラメーターをデフォルトに戻すという意味。
PRAMクリア(コマンド+Shift+P+Rキーを押しながら起動、現在の正しい名前はnvramリセットというらしい)と同じ効果がある。
ということはPRAMクリアを何かのはずみでやってしまうと、インストールされたカーネルエクステンションは無効になってしまう。
TrimEnablerはシステムの起動に関わるカーネルをインストールするので、これが無効になってしまうとMac自体が起動できなくなってしまう。
このNVRAMリセットがPRAMクリアの時だけでなく、セーフブートなどの時にも起こることを知らなかったために、ある日突然Macが起動しなくなるという久々の恐怖を味わった体験の詳細はこちら。
MacBook Proが突然「進入禁止」マークを出して起動できなくなった〜YosemiteでSSDを使用してTrim Enablerを使っている場合、セーフブートも危険〜その復旧法
この問題は認証を回避しないでカーネルを更新するDisk Senseiのおかげで解決した。
YosemiteでSSDのTrimを有効にしていると通行止めマークが出て二度と起動できなくなる恐怖の体験を克服〜Disk Senseiがこの問題を解決してくれる
しかしTrimの問題はDisk Senseiのおかげで解決したが、日本語入力を「ことえり風」のキーにする場合、日本語入力のルールファイルを書き換えるためにこの
sudo nvram boot-args=“rootless=0”
を使うと問題が起きる。
「さくら」さんはこのコマンドは動かなかったとのことだが、Webにはこれで回避できるというTipsも書いてある。
このコマンドを使用した場合、TrimEnablerのケースと同じで何かのはずみでPRAMがリセットされてしまうと、日本語入力ができなくなってしまう可能性がある。
ていうか多分できなくなる。
もし何かのログインIDなどに日本語名をつかっていたら、そのログオンは不可能になってしまう。
PRAMなんて何のはずみでリセットされてしまうかわからないあてにならないものだから、これはかなり危険だ。
SIPを根本的に無効化するコマンドもある。
リカバリーモード(コマンド+Rキーを押しながら起動)で以下のコマンドをTerminalで実行。
csrutil disable
元に戻すのは
csrutil enable
これもOS Xのアップデートのたびにおそらく上書きされてしまうのでSIP無効化は解除され、日本語入力はできなくなると思われる。
そうなると解消する方法は再度無効化するか、システムの再インストールしかない。
nvram追記もcsrutilコマンドも、いずれの方法もあまりお勧めできる方法ではない。
このリスクを知った上で、それでもやりたいという人限定のTipsということになる。
なお私は常用している重要なアプリがEl Capitanで動かないとか、先ほどのユーティリティーフォルダの件などの理由により、手持ちのMacはどれもアップデートしていないし今のところする予定もない。
とりあえずVMWare Fusionの中にインストールして評価試験だけはしているが、仮想環境だと上記のコマンドが使えないので効果は確認していない。
「さくら」さんによるとcsrutilの方だけは有効だったとのことだ。
Yosemiteで成功した日本語入力でことえり風のキーを使うTipsが
El Capitanでは使えないとの情報を受け仮想環境上のEl Capitanで試してみた
日本語入力のルールテキストをことえりルールに書き換えて上書きしようとしたところ
以前なら「認証が必要だ」という表示になっていたが「保存できませんでした」と
いわれるだけでパスワードすら要求されなくなってしまった
最初このファイルにまたACLか何かがかかっているのかと思ったがACLは関係なかった
アクセス権はシステムのみ書き込み可能になっているが変更可能じゃないかと試してみた
しかしここからはどうやっても変更できない
そもそもアクセス権変更のアクセス権がないというニワトリタマゴ状態
ACLの時はBatChmodで回避できたので今回も試してみたが
BatChmodを使っても読み書き権限は変更できず
ACL消去などのオプションも効果なしだった
余談だがアクセス権の修復を試してみようとDisk Utilityを起動したところ
El CapitanからDisk Utilityにアクセス権の修復という項目がなくなってしまった
Disk Utilityの見た目が大きく変わったのもEl Capitanの評価に響いているところで
強制マウントボタンがないとかいろいろあれな感じ
First Aidを実行したところカタログデータ、パーティションマップの診断だけをやっているようで
どうやらEl Capitanからはアクセス権修復はシステムがバックグラウンドで自動的にやるので
ユーザは触らなくてもいい…というより触らせないという仕様に変わったようだ
頭にきたのでTerminalを起動してrootになってことえりルールテキストを
日本語ルールテキストに上書きコピーするコマンドを実行した
神の権限発動である…まいったかモータマラン (;´Д`) ハァハァ…と思いきやOperation not permittedという答え
神の権限をも退ける神を超越する何かに守られているということか!ガ━━(゚Д゚;)━━━ン!!
神の権限を超越する超神の権限の正体がこれ、rootless
これで制限された領域はsuでrootになろうが触ることができない
唯一絶対神ゼウスがやおよろずの神ぬらりひょんやだいだらぼっちに変わってしまった瞬間である…
これを無効化するsudo nvram boot-args=“rootless=0”というコマンドを実行してみた
が、仮想環境にはもともとNVRAMという概念がないのでこのコマンドは効果がなかった
セーフブートをしようとするとスクリーン真っ黒のままいつまでたっても起動しない
root権限でGUIにログインするが同じく超越神の権限により
絶対領域のファイル改変は悉く拒否されてしまった
実機ならNVRAMの書き換えがうまくいくのではないかと
「さくら」さんに試してもらったがうまくいかなかったそうだ
結局新セキュリティシステムのSIPそのものを
無効化するcsrutil disableコマンドが有効だったとのこと
リカバリーモードがない仮想環境では打つ手がないということだ
何れにしてもこの方法は何かのはずみでシステムが動かなくなるリスクがあるので
そのリスクを許容できる人だけにしか勧められない手段だ
と、ここまでが長い前置きで、実はここからが本文だ。
ここでAppleはボケだのジョブズが死んでからやることなすことトンチンカンだの批判するのは、実はピントがずれている。
Appleはジョブズが生きていた頃から決められた既定路線上で仕様を変更し続けているにすぎない気がする。
Appleはサードパーティーに続いてユーザもシステム領域からどんどん排除する方針で進んできている。
ユーザが何も考えないで使える環境。
iPhoneのようにただタップしてLINEや動画を楽しむだけのメディア。
Appleが最終的に目指すのはMacという洗練されたUIをまとったUNIX汎用マシンではないと思っている。
OS Xを最終的にiPhoneやiPadのOSのiOSと統合するという道程表があるようだ。
しかもその内容はMacとiOSの良いとこ取りというような生易しいものではなく、OS XのiOS化、MacのiPhone化が最終的に行き着くところらしい。
実際今度の新型MacBookがまさにその目標を体現しているのだが、MacBookはバッテリーはもちろんメモリもドライブも一切あとから変更できないオンボードタイプで、バックヤードのハイスペック機を画面共有で操って重い作業をやらせたりするリモートコントロールマシン、ネットのリソースを操作するクラウドサービスマニピュレーター…というような内容になっている。
あのMacBookにスクリーンタッチをつけて、Finderを廃止し、すべてのアプリの起動はLaunchpadからやるようなOSに変更していくというのがMacの目指しているところなのかもしれない。
まさにキーボード付きのiPadという仕様だ。
Macそのものをハックしたりカスタマイズして使いやすくするような使用は制限されるが、LINEとツイッター、Youtube、SNSを楽しみたいという向きには安定していてつき合いやすいマシンになるだろう。
それは今に始まったことではなくもう何年も前から予兆のあることで、Appleはその流れに反対するどころかジョブズが生きていた頃からその流れを積極的にリードして推進してきた立場だし、そうなるとAppleの行き着く先は…
もはやユーザがハックする趣味のユーティリティーマシンのMacintoshではない。
実用的で多機能なiPadで十分ネットは楽しめる。
最後はMacを殺す
これしかないと思う。
どうやら9年前に書いた文章が本当に現実になってきていると思う。
カンブリア紀以降の世界の鎮静
10年後のPCなど個人用情報機器の世界なんてのを軽く予想してみた
ここまで書くのに本当に時間がかかった。
穏やかな夜に身を任せてはいけない
絶え行く光に向かって、怒れ!怒れ!
…そして死はその支配力を失う…
2015年10月10日
anchor
El Capitanでもことえり風のラ行をLで打つキー配列をRootlessにも引っかからないで実現する方法〜Karabinerを使えば簡単…というお知恵をいただいた<追記あり>
ことのおこりは先日あげた仮想環境でのEl Capitanのレビューで、システムファイルを書き換えてことえりキー配列を復元するTipsがEl Capitanでは実行できない(実行はできるがリスクも伴い、レスキューボリュームがない自家製FusionDriveではSIPの解除もできない)件を書いたこと。
ことえり風のキールールに変更するTipsはEl Capitanでは使えない…ていうか使えるが危険でお勧めしないが一応方法を書いとく〜Rootlessについて…カンブリア紀の終わりは近づき…
これに対してツイッターでMacの手書き説明書のヴェアダルさん、BBSでnya-0さんのお二人から
「Lキーでラ行を入力することえりキー配列を実現したいのならKarabinerを使えば簡単ですよ」
という旨のご指摘をいただいていた。
Karabinerは現在も私のMacBook Proのメニューバーに常駐しているので、お二人のおっしゃる通り導入は簡単だがキーカスタマイズのフィルタリング構文の書き方を考えるのがめんどいなぁ…そのうち時間があるときにじっくり考えよう…とか思っていたら、なんとnya-0さんがそのXMLを書いてBBSに投稿していただいた。
そのnya-0さんのKarabiner向けキーカスタマイズのプライベートXMLが以下の内容。
<?xml version="1.0"?>
<root>
<inputsourcedef>
<name>MY_Ja</name?>
<inputmodeid_equal>com.apple.inputmethod.Japanese</inputmodeid_equal>
</inputsourcedef>
<item>
<name>Old fashioned KOTOERI key</name>
<identifier>private.old_fashioned_kotoeri_key</identifier>
<inputsource_only?>MY_Ja</inputsource_only>
<autogen>__KeyToKey__ KeyCode::L, KeyCode::R</autogen>
</item>
</root>
フィルタリングをどう書いたらいいだろうかと思っていたが、こうなんですね。
ありがとうございます。
実際にYosemite環境で試そうとしてちょっと問題が起きた。
Yosemiteの日本語IM環境の設定ファイルをデフォルトに書き換えようとすると、「アクセス権がありません」と言われて拒否られてしまった。
ひょっとしてこの前のアップデートでYosemiteにも本格的にRootlessが取り入れられてしまったのか…とちょっとひやりとしたが、そうではなくて愛用のCotEditorが今回アップデートからApp Storeのみの配布になって、その条件としてSandboxに完全対応したためシステム領域のファイルの書き換えができなくなった…ということだった。
その解決法はキャプチャー参照。
ここでEl Capitanを導入するとどういうメリット・デメリットがあるかをついでに整理してみた。
El Capitanのメリット
1)思いつかない
El Capitanのデメリット
1)Yosemiteならシステム領域、UNIX領域をroot権限で書き換えができるが、El CapitanではRootlessの制限でSIP領域はほぼ編集不可能
2)cDockなど愛用しているアプリが一部機能していない
3)El Capitan起動中は冷却ファンが異常高回転するなど動作が不安定
4)日本語ライブ変換が使いにくい
と圧倒的にEl Capitanを入れない方向で考えていたが、
1)のrootlessは確かにYosemiteでは制限が少ないが、CotEditorのSandbox化のようにこれからアプリの方も制限がかかるようになる方向なのでアップデートしなくてもいろいろ不自由になっていくのは結局同じこと
とEl CapitanよりYosemiteの方がましともいえない状況なのでアップデートするかも…という非常にネガティブな比較論になってきた。
3)の異常回転についても解決法の情報をいただいているので、これもうまくいくか近日中にテストする。
テストして成果が上がったら、2)の機能しないアプリという積み残しもあるがEl Capitan本格導入ということになるかもしれない。
4)のライブ変換の使いにくさは、そのうち慣れるだろう…慣れなきゃオフにもできるし…
キーの役割を自由に変更できるメニューバーアプリKarabinerの環境設定画面を開く
Misc & Uninstallタブに入ってOpen private.xmlボタンをクリックする
するとFinderでxmlの場所が表示されるので、これをCotEditorなどのテキストエディタで開く
このxmlに上記の構文をコピペする
すでに何か入っている場合もその後ろに追記する形で良い
Karabinerの設定画面に戻ってChange Keyタブに移動する
右上のリロードボタンでXMLをリロードすると追記した名前の新項目が増えているはず
まずこれをYosemiteでテストしようと思って前回のTipsで
ことえり風に変更していた日本語入力をデフォルトに戻そうとした
ところが「アクセス権がありません」と警告が出て上書きができない
ひょっとしてこの前のアップデートでYosemiteにもRootlessベースの
SIP機能が追加されたのか…とちょっとヒヤッとしたがそうではなかった
問題はCotEditorの方で、今回アップデートからApp Storeのみの配布になって
旧バージョンがあまりに頻繁に落ちるのでCotEditorも最新版をApp Storeから入れ直していた
このバージョンはSandboxに対応してシステム領域のファイルの
書き換えができなくなっていたのが原因だった
そこで昔のインストーラのバックアップから2.0.3を引っ張り出してきた
2.0.3も頻繁に落ちるバージョンだが、テキスト一枚コピペして
上書き保存する間ぐらいは保ってくれてちゃんとシステムファイルの上書きもできた
あらためて旧バージョンもこういうときのために残しておかないとという教訓だ
こうしてなんとか保ってくれて再起動後、日本語入力はデフォルトにもどった
「LA、LI、LU、LE、LO」と入力すると「ぁぃぅぇぉ」と小文字で入力されるようになった
この状態でKarabinerの新規で追加された方のチェックを入れた
するとこちらは再起動もしないでいきなりキーに反映された
もちろん「アクセス権がありません」なんて無粋なポップアップも一切無しにだ
これなら元に戻したいときもワンクリックだしシステムファイル書き換えよりはるかにお手軽だ
同じことをEl Capitanでやるときも特に障害になりそうなところは何もない
といいことばかりは続かない
懸念した通りかなモードでShiftキーを押しながら全角アルファベットを
LRLRLRLRLRLRLR…と入力すると全部Rになってしまった
これは残念ながら「エル」と入力して変換するしかない
めったに使うことはないし何回もやっていたら変換候補の
上位に上がってくるだろうから大きな障害ではないが
Shift+Lキーをまた別キーに割り当てたらいいのかな?
そのうち考えてみよう…
<追記>
ここでことえり風のキールールをKarabinerで実現するとかな入力は問題ないが、アルファベット全角入力で問題が起きると書いたら、早速nya-0さんから改良版をBBSにいただいた。
素早いレスポンスありがとうございます。
「ModifierFlagというShiftなどのキーを含めたキーの判定をする部分を、Shiftキーがない状態で、という条件をつけるという方法です。これによって、Shiftキーを押して、Lを押す際の判定が通常の動作に戻るはずです。」
ということで<autogen?>で括った一行に上記条件を追記した改良版がこれ。
<?xml version="1.0"?>
<root>
<inputsourcedef>
<name>MY_Ja</name?>
<inputmodeid_equal>com.apple.inputmethod.Japanese</inputmodeid_equal>
</inputsourcedef>
<item>
<name>Old fashioned KOTOERI key</name>
<identifier>private.old_fashioned_kotoeri_key</identifier>
<inputsource_only?>MY_Ja</inputsource_only>
<autogen>__KeyToKey__ KeyCode::L, ModifierFlag::NONE, KeyCode::R</autogen>
</item>
</root>
これで全角アルファベットも問題なく入力できるようになった。
(あと昨日あげた元コードも一部写し間違えがあったので修正、ゴメンm(_ _)m)
いただいたautogenの行をprivate.xmlに上書き
この状態でXMLをリロードしてチェックを入れなおした
結果ひらがな入力のときにはLキーはラ行の入力になり、ShiftキーとコンビネーションだとLキーになる
何かのはずみで全角アルファベットを入力するときに舌打ちすることもなくなった
さっそくの改良ありがとうございます
2015年10月17日