LinuxのC言語でCLIの子プロセスを起動して標準入出力を使う

なんだかCLIの便利なプログラムがあって、でも一般人にシリアルコンソールをつかわせるわけにはいかないのでGUIのWrapperを作る必要が出てきた。こういうことよくありますよね。ないですか?

で、そんなのすぐ作れるはずだろと思って調べたんだけど出てこなかったんですよね。まず似たようなものに、標準Cライブラリにpopenという関数があって、こいつは子プロセスを実行して、その結果をFILE *で読み取れる超便利なやつ。手元にMacがあったので、「LinuxでもMacOSでも一緒だろ」と思ってMacOSで調べたら、popenに"r+"を指定すればFILE*に書き込めると。

macOSのpopenのman

macOSのpopenのman。"‘r+’ for reading and writing"とある

 

でもLinuxのpopenにはこれがなかったんです。

いろいろ調べて試行錯誤した結果、dup2とpipe2をつかってふにふにすればできるようでした。

 

void popen2(char *cmd, char *arg1, FILE **infp, FILE **outfp)
{
  static int infd[2];
  static int outfd[2];
  *infp = NULL;
  *outfp = NULL;

  if (pipe2(infd, O_NONBLOCK) == -1) {
    return; // pipe failed
  }
  if (pipe2(outfd, 0) == -1) {
    return; // pipe failed
  }
  int fork_result = fork();

  if (fork_result == -1) {
    printf("fork error %s\n", errno);
    return;
  } else if (fork_result == 0) { // 新しい方のプロセス
    // 入力される側(こちらにとってはSTDOUT)をつなぐ
    close(infd[0]);
    close(STDOUT_FILENO);
    dup2(infd[1], STDOUT_FILENO);
    // 出力されてくる側(こちらにとってはSTDIN)をつなぐ
    close(outfd[1]);
    close(STDIN_FILENO);
    dup2(outfd[0], STDIN_FILENO);

    // コマンドを起動する
    execl(cmd, cmd, arg1, (char*) NULL);
  } else { // 元のプロセス
    close(infd[1]);
    *infp = fdopen(infd[0], "r");

    close(outfd[0]);
    *outfp = fdopen(outfd[1], "a");
  }
}

 

こういうのは、学生時代にシステムプログラミングの講義の内容に含まれていたはずで、でも僕はその講義をサボって全然授業を聞いてなかったんですよね…もっと真面目に勉強しておいたらよかったなあと思ったのでした。

最近のモバイル系の製品

MacBook Pro

これは素晴しい。最近のノートPCに載っていたDDR4XではいまのTiger LakeやM1くらいのCPU/GPUにとってもメモリ帯域が厳しいように見えていた。デスクトップの内蔵GPUなんてずっとRAM帯域がボトルネックで性能が出ていない。だからM1以上にCPUもGPUもパワーアップさせるとRAM帯域がボトルネックになるのは当然で、それを解決するためにM1 PRO/MAXではちゃんとDRAMを統合チップのサブストレート上に実装して十分なメモリ帯域を確保してきた。統合によってRAM帯域のボトルネックが解消されててすごいと思うのはPS2のGraphics Synthesizer以来でありめちゃくちゃ正しい。Appleの、こういう、正しいことを正しくやるところはとても好きだ。

僕は買わないけど。

 

GPD Pocket 3

やっぱりキーボードがへちょいのとmicroPCやPocket2と比べて顕著に重くなっているのでこれは買えないなと思ってしまう。Pocket3の重量は725gで、GPD microPCの440gと比べると相当に重い。たとえば体重44kgの女性アイドルがかわいさで売っていたとして、その後継のアイドルが72.5kgだったとしたらどう思う? それはもう違うジャンルだろう?

 

BALMUDA Phone

これはNexus Sをつかっていた僕にはなつかしい感じの形である。でもそれだけだ…。

「最近のスマホには選択肢が少ない」と言っているが、Planet Computers があって、Unihertzがあって、各社から2つ折りとか2画面みたいな変態スマホが出ては消えしていて、という状況で、こいつの何が選択肢になるんだ??」と最初は思った。そりゃそうだ。

しかし「いまのスマホは画一的だ」というところを課題としつつ、イヤホンジャックがなくストラップホールもなく電池交換もできないという他のスマホと全く同じものを作ってきたというところ、たぶんそのへんは画一的でもよくて、デザインだけが重要、というような人に向けた端末なのだろうし、それはそれで別にいいんじゃないかという気がする。

とはいえ、僕がもしPixel4aを持ってなくて、次のちいさいAndroid端末を物色していたらこれを買ったか? と考えるとそれはないなと思う。たぶんMode1 Gripにしたはずだ。なんといっても性能は低いけどそれでも十分な性能だし、価格も4〜5分の1だ。Gripにはストラップホールもある。

【Hothotレビュー】2万2千円の細身スマホ「Mode1 GRIP」をレビュー。iPhone 13 miniよりも幅狭で持ちやすさ抜群 - PC Watch

キーボードの進化は確かに止まっている

anond.hatelabo.jp

 

 「なんで英語って100年近く進化してないの? いつまでも26文字の出現頻度に差がありすぎるし発音とスペルが直感的に対応してないし無駄に単語の文字数が多いせいで3文字略語がはびこるし思考停止しすぎじゃないか?」

というコメントを書いたのだが、日本語に関して言えば80年代にいろいろ出てきたキー配列とキーボードたちは面白かった。

 

親指シフトが出てきて、M式キーボードが提案されて

M式キーボード http://www.ykanda.jp/input/m/m.htm

そして新JIS配列が出てきて、

新JIS配列 - Wikipedia

とにかくローマ字入力よりも良い日本語入力環境をつくっていこうという機運に満ちていた。しかしこの新JISすら普及しないまま消滅してしまった。

 

 

1990年はキー配列ではなくキースイッチの構造で改良がつづいた時代だった。メンブレンがわりと使い物になるようになったのはこの頃だし、パンタグラフも静電容量もこの頃に出てきたんじゃないか。でもメンブレンというかラバードームはファミコンの丸ボタンで完成されたのかもしれない。どうなんだろう。そういう意味では21世紀に入ってからの進化はガラケー向けにメタルドームスイッチがめちゃくちゃ進化したのとタッチパネル以外は残念な感じ。フリック入力(=handSKK)も予測変換も2002年頃には出てるしな…

SL-A300 HandSKK

 

Appleがタッチバーで進化させようとしたじゃないか」みたいな話があるがあれを評価するなら沖電気のif800のファンクションキーも同じくらい評価されるべき。if800ではブラウン管の下側ベゼルにファンクションキーと等価な機能になるスイッチが10個配置されていて、当時のアプリケーションは通常、ファンクションキーの機能を画面下端に並べて表示していたので、機能が表示されたすぐ下のボタンを押すことでその機能が実行できるというものだった。

if800 model 30-Computer Museum

これは麻雀ゲーム機の捨牌ボタンと比べてどうだったのだろうかとか考えてしまう。

操作方法においても「ジャンピューター」は大きな成功を収めている。ゲーム中、それぞれの牌にはA〜Nまでのボタンが振り分けられていると共に、コントロールパネルにはリーチ、ロン等、麻雀を打つ上で必要な操作が全19個のボタンで全て振り分けられている。これはそれまでのレバーとボタンを中心としたビデオゲームの基本操作方法の概念を塗り替えた、まったく新しいアイデアである。

ジャンピューター - Wikipedia

レバーで対象を選ぶUIよりも、全部ボタンを用意するそっちが新しかったの? 本当かよ? じゃあ漢字を直接入力できるWD-3000みたいなのがもしかして斬新だったりするんすかね? ゲーム機の入力デバイスやUIとビジネス向けのUIを並べて歴史を論考している人は少ないような気がする。

定住生活が必要だって言ってるだろうが!

「定住生活が必要」というエントリを書いてから9年も経っていた。しかし僕らはまだ流浪の旅をつづけさせられている。

 

naoya2k.hatenablog.com

この9年で僕はGUIのプラットフォームを3つ作っているのを見た。1個の製品の寿命が3~4年くらいしかなくて毎回作りなおしているからだ。これは具体的には同じ機能を3回作りなおしているということだ。カレンダーが表示される機械だったらカレンダーの表示処理を3回作っている。日本やアメリカでは1週間は日曜日からはじまるけど欧州は月曜日はじまりで表示しないといけないんだぜとか週番号のはじまりの日が国によってちがうんだぜとかそういうことを毎回バグ指摘されて修正してをやっている。Bluetoothのペアリング機能がある機械でペアリングするときのUI (機器発見をやって一覧を表示して選んでもらって6ケタか4ケタの番号を交換して画面に表示してOKボタンを押してもらうやつ)を毎回つくっている。そんなところを新しくしてもエンドユーザにはなにもうれしくないので顧客価値には全くつながっていない。でも毎回新しいUIを作っているからバグが出て修正をするのに金がかかっている。

傭兵たちは無駄な作業でも賃金が貰えるので集まってくるが社会にインパクトを与えることができるような仕事ではないので儲からない。儲からないから生産性を上げろといいつつ単価を下げてオフショアとかに出したりショボい奴らを雇ったりしてダメなコードが量産されてしまいまた捨てることになる。一般的なソフト開発をやっている会社の場合ソフトは売りものだからすぐに売ってしまい自分たちの資産にするという考え方をしない。ソフトウェア開発の会社をいっぱい見てきました、みたいなコンサルなんかは完全にそういう考えかたで成功を収めてきた例ばかり見ていてプラットフォーム企業になるような方向性は打ち出さない。だからコンサルの言うとおりにするといつまで経っても失敗つづきになる。当然だ。

 

 

ソフトウェアをわかっていない偉い人は「なんでそんな基本的な機能を動かすのにこんなに金がかかるんだ」って言うけど、基本的な機能でも目を引く新機能でもソフトの開発工数はあんまりかわらないんだよ。AppleGoogleが新しいものを作れているのは彼等がAndroidiOSを延々と使いつづけているから、僕等が苦しんでいるような基本的な機能を作り直したりしていないからだよ。

どうして日本はハードウェアでは強かったのにソフトウェアは全然だめなのか?という質問がよく出てくるが、そりゃ当たりまえだ。モノを製造している会社は工場をそんなに頻繁に建て変えない。もちろん気合の入った新製品のために工場を拡張するとかそういうのはある。でも生産するものに合わせて毎回工場を全面刷新したりしない。しかし本邦のソフトウェア開発の教科書は違う。要件分析をしてそれに合わせて最適な部品やプラットフォームを選ぶのが正しいとかいう奴らが居る。でもそれは遊牧民族の生き方であって、それではいつまでたっても巨大な都市も荘厳な建築物もつくられず高度な文化が醸成されることもないのだ。

 

「全面刷新する」みたいなことが大好きなやつらが居るんだ。そのくせ「どうしてiOSAndroidのようなものが作れないのか」と聞いてくるのは本当に意味がわからない。iOSは12年間ずっと基本的な部分は変わってないんじゃないのか。僕等も全面刷新せずに12年間ソフトウェアを育て続けていれば、そしてそのソフトウェアとともに熟練技術者を抱えていればもっと状況は良かったはずじゃないか。それを何度も同じようなソフトを新しい開発者を雇って作りなおし、同じようなバグを出して金を浪費した結果がこの惨状だ。

 

ソフトウェアファーストと言う掛け声が好きな偉い人が居る。そのくせそいつがやろうとしていることは過去のソフトを捨ててまったく新しいソフトウェアプラットフォームをベースにしたなにかを作ることだ。ソフトウェアファーストというなら昔の会社の名前をひきづっている識別子がイヤだからぜんぶ書き換えていまの会社名にするとかそういう生産性のない作業をやるのもやめてほしいし、「xxのフレームワークは古くさいから最新のyyで書きなおしましょう」とかいうのもやめるべきだし、RenderScriptみたいな一時期の気の迷いみたいなやつを最近まで残していたAndroidを見習えと思うし、Appleを褒めるんならNEXTStepMacOSiOSの歴史をとりあえず舐めてからにしてほしい。

昔話といまの話

当時携帯電話のGUIの技術開発や実際の商品ソフト開発をやっていた僕が当時を振り返って下記のやつにコメントしたい。

 

anond.hatelabo.jp

 

    例えば、狙ったところを操作できるような、タッチパネルの進化。昔のタッチパネルって強く押さないと反応せず、操作しにくくなかっただろうか?あれは抵抗膜方式といわれる方式が使われていたからだが、それが静電気で反応する静電容量式が普及することで一気に操作性が上がった。

    後はCPUの処理性能。過去のLinux搭載の携帯端末なんかは処理速度が遅く、ストレスがすごくなかっただろうか?

    だけどiPhoneは最初からぬるぬる動いていた。そのレベルでストレスなく動かせるにはCPUの性能が上がる2010年代を待たなければいけなかった。

静電容量式は新しい技術ではなかった(券売機とかATMとか)が、当時細かい操作に向かなかった。むしろ抵抗膜&スタイラスの方が細かい操作が可能だったため、そこに固執してしまったが、静電容量式チューニング&GUIを工夫した事が正解だった。

 

 

iPhoneは静電容量式だったから操作性が高かったわけではないし、静電容量式を採用したからユーザーに受けいれられたわけではなかった。
タッチパネルをタッチしたりドラッグしたりしてから画面に反応が出てくるまでの遅延時間が短かかったことが、タッチパネルを使えるUIにできた最大の要因だった。

タッチパネルでドラッグやスワイプのような操作をさせるためには、遅くてもユーザが操作してから100ms以内に画面に反応が出ることが必要。しかし当時の携帯電話のGUIフレームワークはもっさりしていてユーザがボタンを押してから画面に反応が出るまで200msかかることが普通。画面切り替えのときは1秒かかるようなこともあった。
一部のメーカーはJavaアプリのために丁寧に設計された描画・表示ルーチンを用意してできるだけ低遅延に動作させるよう工夫していたが、それを使いこなせるのはJavaチームのメンバーなど一部の人たちだけだった。彼らはこれをベースにしたプラットフォームが作れればもっといいUIが実現できるとわかっていたものの、大人数で分担して作っているアプリを、特定のセンスのある技術者が仕切って全部作りなおすというような提案は、当時の雰囲気がそれを許さなかった。
そんな中で世間はiPhoneの操作性に関しては「静電容量のタッチパネルと、マルチタッチと、処理中にアニメーションさせることによって快適な操作性を実現している」というのが定説になってしまっていた。
だから「それらを用意してやる。それ以上の金はないがタッチ対応携帯電話を作れ」というような方針になっていて、そこで「いやそれだけではぜんぜんダメでほぼ全てのGUI部分のソフトを作りなおすようなことが必要だしそれに合わせてミドルウェアも…」という話にGoがかかるわけはなかった。それで静電容量タッチパネルのハードだけ搭載したもののロクでもないソフトが乗った端末が2008年夏〜2009年冬にかけてたくさん出てきた。ロクでもなかったがそれに開発リソースを取れられてAndroidへの移行が遅れたのかもしれない。


タッチパネルについて言うと、2004年末に発売されたNintendo DSがヒットしたときも混乱を招いていた。あれは抵抗膜方式だったがサクサク動いてペン操作がたのしかった。低遅延だったからというのと、UIがゲームの価値に直結していてそこに優秀なプログラマやデザイナが投入されたからだし、重厚なGUIライブラリではなくリアルタイムにぐりぐり動く画面を作るための薄い3Dライブラリだけを用いてプログラムが作り込まれていたからだ(そしてiPhoneがそれに匹敵するヌルヌル動くUIを実現できたのはベースとして既にOpenGLバックエンドでGUIアニメーションをぐりぐり動かしていたMacOSがあったから)。しかしその事実に気付いていなかった(あるいは気付いていていも解決策が見い出せなかった ー たとえばゲームプログラマ並にインタラクティブなUIをさくさく開発できる優秀なプログラマなんて家電メーカには殆ど居ないし、MacOSみたいな素性のいいベースソフトも持ってない)偉い人たちはこのように説明した。「あれは2画面だから良い感じに動作できているのです」「あれはゲーム機だからです。携帯のような制限の大きい製品では実現できません」
iPhoneが出てきてそれが静電容量式だったとき、それらの偉い人はこう説明した。「これまでの抵抗膜方式ではなく、静電容量方式だからあのようなUIが実現できたのです」


これは、「間違った分析を元に間違った戦略を立てると失敗する」という、あたりまえの話である。だがこれはUIの話でしかない。iPhoneの革新的な部分が、もしUIだけじゃなく豊富なネイティブアプリが集まったからだというのであれば、それはまた違った要因で違った対策が必要になる。具体的にはiOSのような開発環境もそうだしAppStoreのような中央集権的なアプリストアもそうだ(ドコモは中央集権的なアプリストアを直接的には許されていなかったためトラステッドアプリなどのややこしい仕組みで頑張ろうとしていたがうまくいかなかった)

 

ところで、当時、券売機もATMも静電容量式ではなかった。あれは赤外線マトリクスか表面弾性波方式だったのではないか?

 


Linux 搭載のガラケーIPhone 直前のモデルはそこまで遅くはなかったし、PDA 勢から見ても CPU 的には一足飛びに進化したわけではなかった。ただハードウェア・OSから作り込むことで、画面の描画やブラウザのカスタマイズで他より早く見せることが出来た。

初代 iphone 以前に要素はあったというか、言い換えると同じ要素が揃っていても、他のメーカーには iphone が作れなかった。(正解が見つけられなかった)

という方が近いのでは。

話の大意としては変わらないけど、要素技術が揃うだけではダメで、それを使った正解の形を見つける事も必要っていう。

 

何が正解かは世間の雰囲気で決まってしまうところがある。
iPhoneが出る前、NDSが大ヒットしてた頃は2画面タッチパネルが大正義だったし、その前、例えば日本ではザウルスはタッチパネルとペンだけだったけど北米では物理QWERTYキーボードがないと売れないんだと言われてた時期もあった。いまはiPhoneがヒットしてタッチパネルだけのものに皆が慣れてしまっていてそれが正解とされているけど本当に正解なのかどうかは個人的には未だに疑問だ。iPhoneはやっぱりiPodをあれだけヒットさせたAppleが本気を出して取り組んでいる、という本気度が伝わったからみんながあれを正解だと信じれたのだと思うし、テスラのEVについても最初は懐疑的だったが7〜8年過ぎたあたりからEVの未来をなんとか信じられる人が増えてきた。


欧州は一体となってBEVが未来だと印象付けようとしているしそういう政策を進めている。これは水面下で主要な欧州メーカーがEVの技術にほぼキャッチアップしてそれがモノにできそうになってきた(これで日本メーカに勝てる)ことが明確になった段階で、いまの形のBEVの進化形が正解だとして規制や社会のムードを変えて勝ちに来ている。少なくとも電力に関しては2050年にはカーボンニュートラルになるんだという前提で
自動車はひとつの車種を開発して発売までこぎつけるのにプラットフォームを流用した場合でも3年はかかる。新規の場合は6年ほどかけて開発されるだろう。欧州がここ数年で急速にBEV化を進めてきているがそれに合わせて各メーカから何車種もBEVが発売されているのは、周到に準備を進めた結果だろう。一方で日本の政府のロードマップは数年でころころ変わるし日本車メーカーもそれに合わせて右往左往しているように見えて不安だ。しかし欧州がそうだったように日本も水面下で調整が進んでいる可能性はある(期待薄だがこれに期待したい)。


とはいえ社会のムードがわりと急に変化する場合があり、それには迅速に対応しないと致命的なことになる。ガソリン車→EV車という転換について、欧州ではそれが少し前に発生したという感じなのだけど、日本とアメリカでそれがいつなのかはよくわからない。いまのトヨタは当時のAppleのようにジョブズのキーノート一発で世間を見方につけることができるほどのカリスマはないから、どんな未来が急に来てもそこそこ対応できるように体制を整えておくしかなくて、いまのようになっているんじゃないかという気がする。

小さいノートPCで良いのがない問題

GPD microPCのヒンジがぶっ壊れて以来、これに代わる小さいPCが出てこないかと物色しているがなかなか良いのが出てこない。そうこうするうちにCF-RZ8がディスコンになってしまった。もう10インチはしばらくは出てこないのではないかという気がしてしまう。

 

 

One Netbook A1かPocket3がおそらくまともに考えた場合の選択肢だと思う。でもどちらもキーボードが残念極まりないデザインとなっている。数字キーがフルキーの半分というのは許されるだろうか? こいつらはそれが許せる人向けのコンピュータだと思う。つまり僕のような人間向けではない。

Pocket3は8インチのディスプレイを搭載するという話だ。そうするとディスプレイの表示部分の大きさは172x108mm、PC全体の横幅は195mmくらいになると思う。だったらもうあと1cm横幅を広げればLibretto 50とか70のキー配列をつっこめるはずだし、エンジニア向けというならそうしてほしい。それが無理でもmicroPCのような配列にできるはずだと思うのに、なぜかアルファベットのキーを大きくすることに執心してキー数が少なくなっている。

One Netbook A1は550gだけどPocket3は600gを超えてくるのではないかと思う。650gになってしまうのであればキーボードの使い勝手なども考えてやっぱり微妙感が漂ってしまう。

そういえばCESで発表されたLAVIE MINIというものがあった。これはいろんな機能が満載されているのでとても高価になりそうだ。でもたとえばN5100やN6000をCPUに使って、RAMが8GBあって、あまり高価でないのであれば、この数字キーが虐げられていないキー配列は魅力的だと思う。

NEC PCが8型2in1「LAVIE MINI」投入、第11世代Coreでゲームも - PC Watch

新型iPad miniのjelly scroll現象はApple Pencilの遅延を小さくするためだと思う

今日家電量販店に行ったら新型iPad miniが置いてあり、噂のjelly scroll現象はどのようなものなのかを確認してみた。

普通にSafariを起動して最初にオススメされているYahoo! Japanのトップページで縦スクロールをするだけで発生した。縦に連続的にスクロールさせると画面の左右で1フレームズレたような表示になり画面が平行四辺形に歪んだように視認される。

実際には実物を見るまで「高フレームレートのカメラのせいなんじゃねーの?」とか思ってたんだけど普通に触ってすぐに視認できるものだったのでカメラのせいではないことは明らかだと思った。

 

画面は60Hzでしか更新されないディスプレイを使っているはずで、通常60Hzのディスプレイというのは画面の内容を1/60秒かけて(コンピュータ側の)フレームバッファから転送してもらうようなインタフェースになっている。この1画面の転送の途中にフレームバッファの内容が更新されるとそれまでに転送されたフレームとそこから転送されるフレームがズレてjelly scrollのような現象が発生する。これはティアリングと呼ばれる現象である。

このiPad miniでは画面の真ん中あたりでティアリングが発生するタイミングで画面のフレームバッファの更新が行なわれている。内部のフレームバッファは120Hzで更新されているのではないか。そう思う理由はこの現象を捉えた60fpsの動画を見たときに60fpsの1フレームで動いた量の半分以下のズレしか発生していないように見えたからだ。
(しかし実際のところ60Hzで画面の片方からもう片方に順次書き変わっていくこのiPad miniのディスプレイを、60fpsのCMOSカメラで撮影しても正しい状況は綺麗には撮影できないから、もっと高速なカメラで撮影しない限り推測が混ってしまうだろうと思う)。

 

Appleがこれに気づかなかったか、なにかとのトレードオフで敢えてこれを放置したかどちらなのかを考えるとおそらく後者。こんなことをする理由は遅延を減らすため。おそらくApple Pencilで描かれた軌跡を1msでも早く画面に反映させるために敢えて内部120Hz動作にしているのではないかという気がする。60Hzの場合には(上から下に向かって画面のリフレッシュが行われる場合には)画面の上半分と下半分で1/60秒=16ms近い遅延の時間差が発生する。120Hzでフレームバッファを更新しティアリングを辞さない場合にはそれが1/120秒=8msに軽減できる。画面表示に伴う遅延の平均値は8msから4msに縮まる。内部120Hzで、ディスプレイは60Hzで、ティアリングを許容することでApple Pencilの操作性が高まり、そして横画面ではあまり気にならないというのならこのようなセッティングにする判断はアリだと思う。

 

iFixitはディスプレイのリフレッシュ方向をこれまでの(iPadを縦向きにしたときの)縦方向から横方向にしたことがこのjelly scroll現象の原因だと推測しているようだが、それは間違っていて、Appleは、「この現象が縦画面のときに起こるのと、それとも横画面のときに起こるのとでどちらがマシか」を検討した結果、横画面のときに目立たないほうがマシだな、と考えて敢えてリフレッシュ方向を変更したんじゃないか。

 

とはいえそこまで低遅延でメリットを感じるのは、Apple Pencilを使う人やもしくはシビアなゲームをやる人だけなわけで、それ以外の人にとっては「単にスクロールしているだけで気持ち悪い視覚効果の生じる欠陥」としか思えないだろう。このややこしい話をユーザに理解してもらうのはわりと難しく、この現象が起こらないようになる設定を設定画面に追加し(フレームバッファの更新も60Hzにするというものだ)、その設定をonにするとApple Pencilの遅延が大きくなるとしたら、それはそれでこの原因が理解できないユーザには受け入れられないような気もする。これはAppleとユーザとの対話力が問われていると思う。